Team Development & Release
Management for ISVs

Andrew Albert, salesforce.com
Jordan Baucke, BracketLabs
Eric Wilcox, FinancialForce
Safe harbor
 Safe harbor statement under the Private Securities Litigation Reform Act of 1995:

 This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if
 any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward-
 looking statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of
 product or service availability, subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of
 management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and
 customer contracts or use of our services.

 The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new functionality for our
 service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth,
 interruptions or delays in our Web hosting, breach of our security measures, the outcome of intellectual property and other litigation, risks associated with
 possible mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and
 motivate our employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non-
 salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial
 results of salesforce.com, inc. is included in our annual report on Form 10-Q for the most recent fiscal quarter ended July 31, 2012. This documents and
 others containing important disclosures are available on the SEC Filings section of the Investor Information section of our Web site.

 Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently available and may
 not be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently
 available. Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements.
Andrew Albert
Director, ISV Technical Enablement
aalbert@salesforce.com
Jordan Baucke
Developer/Architect
@jordanbaucke @bracketlabs
@readytalkgeeks
Eric Wilcox
Senior Developer/Architect
roc.wilcox@gmail.com
How to setup a new developer
Developer Toolset
 1                                        3




     salesforce Dev & Test Environments       Force.com Migration Tool

 2                                        4




              Force.com IDE                         Source Control
Setup environment & Check in
        4   Deploy to Server



                                                     Partner Developer Edition


                   3
                       Repository downloaded to machine


                                     5    git add

                                                                                  Source Code Repository
 Force.com IDE
 Force.com Migration Tool
 git



             1   Configure & Run Ant Script               2   git clone git@github/Project
Demo
Setting up a new environment
Compare & Contrast

Tip: API versioning
Continuous Builds & QA
FinancialForce’s Continuous Build Process

                   1      Checkout build



                                                           Source Code Repository




                                                                                                    Deploy to Server
Hudson Server                                                  Deploy to Server                     (with Check Only)
Force.com Migration Tool                                   3                                  4




               2       Run undeploy script



                                             Testing Org                            Packaging Org
Teardown – How to dynamically clean an org
      1   Ant Retrieve


          Clean
      2   Std Obj Layouts


                                         Target Org
      3   Build Package



      4   Deploy Layouts



      5   Build Destructive Changes



      6   Deploy
Demo
Undeploy Script
BracketLab’s QA Process
                    1       Checkout build



                                                                 Source Code
 Jenkins Server                                                  Repository
 Force.com Migration Tool

                                     2   Run Migration tool & deploy to all editions




           Partner Test Edition (EE)         Professional Edition                      Group Edition
Handling different editions and features?
      Group Edition              Professional Edition             Enterprise Edition




Know which edition-specific features your app requires: Record Types, Workflow, etc
Know which org-specific features your app requires: Chatter, Multi-Currency, Sharing, Profiles, etc

TIP: Test your app in the different editions!!!
Release Management
How to release an app (unmanaged -> managed)
                                                                                                     3
                         2   Run Namespacing script                                     Run Test Methods
                                                                                        Verify components
                                                                                        Run Code Scanners


    Hudson Server                                           Packaging DE org
    Force.com Migration Tool


                 1
             Get Build                                                         4      Create Managed-Beta

                               6
                                   Create Managed-Release
                                                                                        5
                                                                                   Install and Test Editions & Browsers

Source Code Repository
Namespace conversion script
                                                           Solved with Ruby script
                                                           (basically glorified find and
                                                           replace)
                                                           Find & Replace: /*NS*/-
                                                           MyNamespace.


                                                           https://github.com/
                                                           jordanbaucke/sfdc-
•  Javascript references to 'Web Service' methods          namespace-prefix
      o  Javascript Remoting, VF Ajax Toolkit, APEX REST
         Endpoints
•    Dynamic SOQL
•    VF Pages referenced in custom buttons
Don’t Forget to….
      1   Update Appexchange Listing


      2   Update Appexchange Test Drive


      3   Update Release Notes



      4   Update Installation Guide



      5   Update Trialforce Source orgs
How do you schedule your releases?
How do you test your app w/ each
      salesforce release?

      Partner Portal: http://p.force.com/releases
      Twitter: @partnerforce
Takeaways
   1   Setting up a new Developer demo:
       https://github.com/BracketLabs/AppExchange-Team-Development-on-Force.com-Platform-Demo


   2   Undeploy Script to Clean out a test org:
       https://github.com/financialforcedev/df12-deployment-tools


   3
       Find/Replace Ruby script to prepend namespace:
       https://github.com/jordanbaucke/sfdc-namespace-prefix


   4   Use the DF12 Session Chatter Group to collaborate

   5   Team Development articles on developer.force.com
Andrew Albert          Jordan Baucke               Eric Wilcox
     salesforce.com           BracketLabs             FinancialForce
ISV Technical Enablement   Developer/Architect   Senior Developer/Architect
Team Development and Release Management

Team Development and Release Management

  • 1.
    Team Development &Release Management for ISVs Andrew Albert, salesforce.com Jordan Baucke, BracketLabs Eric Wilcox, FinancialForce
  • 2.
    Safe harbor Safeharbor statement under the Private Securities Litigation Reform Act of 1995: This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward- looking statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of product or service availability, subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services. The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of intellectual property and other litigation, risks associated with possible mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non- salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is included in our annual report on Form 10-Q for the most recent fiscal quarter ended July 31, 2012. This documents and others containing important disclosures are available on the SEC Filings section of the Investor Information section of our Web site. Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently available and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements.
  • 3.
    Andrew Albert Director, ISVTechnical Enablement aalbert@salesforce.com
  • 4.
  • 5.
  • 6.
    How to setupa new developer
  • 7.
    Developer Toolset 1 3 salesforce Dev & Test Environments Force.com Migration Tool 2 4 Force.com IDE Source Control
  • 8.
    Setup environment &Check in 4 Deploy to Server Partner Developer Edition 3 Repository downloaded to machine 5 git add Source Code Repository Force.com IDE Force.com Migration Tool git 1 Configure & Run Ant Script 2 git clone git@github/Project
  • 9.
    Demo Setting up anew environment
  • 10.
  • 11.
  • 12.
    FinancialForce’s Continuous BuildProcess 1 Checkout build Source Code Repository Deploy to Server Hudson Server Deploy to Server (with Check Only) Force.com Migration Tool 3 4 2 Run undeploy script Testing Org Packaging Org
  • 13.
    Teardown – Howto dynamically clean an org 1 Ant Retrieve Clean 2 Std Obj Layouts Target Org 3 Build Package 4 Deploy Layouts 5 Build Destructive Changes 6 Deploy
  • 14.
  • 15.
    BracketLab’s QA Process 1 Checkout build Source Code Jenkins Server Repository Force.com Migration Tool 2 Run Migration tool & deploy to all editions Partner Test Edition (EE) Professional Edition Group Edition
  • 16.
    Handling different editionsand features? Group Edition Professional Edition Enterprise Edition Know which edition-specific features your app requires: Record Types, Workflow, etc Know which org-specific features your app requires: Chatter, Multi-Currency, Sharing, Profiles, etc TIP: Test your app in the different editions!!!
  • 17.
  • 18.
    How to releasean app (unmanaged -> managed) 3 2 Run Namespacing script Run Test Methods Verify components Run Code Scanners Hudson Server Packaging DE org Force.com Migration Tool 1 Get Build 4 Create Managed-Beta 6 Create Managed-Release 5 Install and Test Editions & Browsers Source Code Repository
  • 19.
    Namespace conversion script Solved with Ruby script (basically glorified find and replace) Find & Replace: /*NS*/- MyNamespace. https://github.com/ jordanbaucke/sfdc- •  Javascript references to 'Web Service' methods namespace-prefix o  Javascript Remoting, VF Ajax Toolkit, APEX REST Endpoints •  Dynamic SOQL •  VF Pages referenced in custom buttons
  • 20.
    Don’t Forget to…. 1 Update Appexchange Listing 2 Update Appexchange Test Drive 3 Update Release Notes 4 Update Installation Guide 5 Update Trialforce Source orgs
  • 21.
    How do youschedule your releases?
  • 22.
    How do youtest your app w/ each salesforce release? Partner Portal: http://p.force.com/releases Twitter: @partnerforce
  • 23.
    Takeaways 1 Setting up a new Developer demo: https://github.com/BracketLabs/AppExchange-Team-Development-on-Force.com-Platform-Demo 2 Undeploy Script to Clean out a test org: https://github.com/financialforcedev/df12-deployment-tools 3 Find/Replace Ruby script to prepend namespace: https://github.com/jordanbaucke/sfdc-namespace-prefix 4 Use the DF12 Session Chatter Group to collaborate 5 Team Development articles on developer.force.com
  • 24.
    Andrew Albert Jordan Baucke Eric Wilcox salesforce.com BracketLabs FinancialForce ISV Technical Enablement Developer/Architect Senior Developer/Architect