building an app exchange app
Upcoming SlideShare
Loading in...5

building an app exchange app






Total Views
Views on SlideShare
Embed Views



0 Embeds 0

No embeds



Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

building an app exchange app building an app exchange app Presentation Transcript

  • Building An AppExchangeAppJames Architect Atlanta • San Francisco
  • Agenda• Intro• Goals• AppExchange Overview• Building An App• Packaging An App• Upgrading An App• Lessons Learned• Conclusion
  • About Me• From Java to Salesforce• 3 years of intensive development• Salesforce Certified Developer• 4 AppExchange Apps completed, with more underway • Skoodat • Constant Contact for Salesforce • Glance for Salesforce • BlueHornet for Salesforce
  • Goals• A balanced presentation with equal interest for business people and technical people • Overview of what an App is • Details about the steps that go into building and packaging an App• Share lessons learned and best practices • Limitations and workarounds
  • AppExchange Overview• What is the AppExchange? • Distribution platform for Apps • Both free and fee-based Apps• App Availability Edition Apps Notes Contact Manager 1 Can’t actually install an App apparently Group 1 Limited functionality and problematic to target Apps for Professional 5 Limited functionality and problematic to target Apps for Enterprise 10 The first real org that can accept all Apps Unlimited Unlimited The sky’s the limit…
  • 3 Primary Types of Apps• Integration • Sync data between systems • Examples: Constant Contact for Salesforce, Glance for Salesforce• Augmented Functionality • Add features and functionality to Salesforce • Examples: EchoSign, MyFax, GeoPointe (Google Maps for Salesforce)• Platform Solutions • Provide independent business applications • Examples: Skoodat, ServiceMax (field service), DreamTeam Project Management, FinancialForce (accounting)
  • What Is An App?• In a nutshell: a deployable grouping of config and code• Data model customizations • Additional objects, fields, validation rules• User Interface customizations • Additional page layouts, tabs, VisualForce pages & components• Custom Code • Apex classes & triggers• Workflow• Reports & Dashboards
  • Building An App• Setting up a development org • Developer (anyone, free) • Partner Developer (super-sized, requires registration)• Develop the App components• Creating a package • Managed vs. Unmanaged • Selecting a namespace (e.g., G4S = Glance for Salesforce)
  • Managed vs. Unmanaged• Managed • IP protection (no source code) • Support for upgrades (push patches) • LMA (License Management & Administration) • Setup trials • Track installs and licenses • Extend, activate, suspend and expire licenses • Aloha compatibility (Group & Professional)
  • Managed vs. Unmanaged• Unmanaged • Limited to certain editions (no Group / Professional) • Source code visible • Good for distributing open source code as an installable, cohesive unit • Several free available from Salesforce and others • Lead Scoring • Many “starter” and “example” Apps for new or advanced features
  • Packaging An App• Beta Package • Can test before releasing • Still able to add / subtract objects, fields, code, etc.• Security Review • Run security scanner first • Only scans code in package • XSS (Cross Site Scripting)• Publishing to the AppExchange • Release package
  • Distributing An App• AppExchange for CRM• TrialForce otherwise
  • Upgrading An App• Major vs. minor upgrade• Minor • Edits to existing code (Apex, VisualForce) • Cannot add objects or fields • Creating a patch org • Push upgrade• Major • Can change anything • Can’t remove objects, fields, classes, triggers (just deprecate)
  • Lessons Learned• Not all org editions have the same features • Standard object availability • Chatter availability • Exposing web services • Primarily have to worry about Group and Professional
  • Lessons Learned• Governor limits • Optimize APIs for syncing data • Beware of number of requests • Beware of payload sizes • Beware of executed scripts to parse data • Utilize batch and scheduled jobs • Create custom objects to stage data • Chain batch jobs to process large volumes of data on different objects
  • Lessons Learned• Beware of required fields and custom validations • Code defensively for all inserts / updates to standard objects • Can perform check during install and warn
  • Lessons Learned• Keep the interface native • Less jarring for users • More seamless experience • Familiar navigation and UI idioms • Refrain from custom UI widgets and graphics that don’t match Salesforce
  • Lessons Learned• Exception emails • Sent anytime an exception occurs • Very little context of problem to work with • Setup a group email
  • Questions?Thank you!James