Professional Documents
Culture Documents
Multiple Parallel Releases: There can be minor releases (config changes), major releases
(typically released once every quarter) and hotfix releases (for any business-critical issues that happen
simultaneously). Ensuring that the development and release environments are in sync constantly
across these releases is a challenge.
Complex Salesforce Orgs and Heavy Deployments: Salesforce environments are large and complex with large custom objects, profiles and
permission sets, and typical deployments contain a few thousands of members.
Environments Out-of-Sync and Challenges with Refresh: Since changes happen directly on Salesforce environments during releases, and
some of the BRs may not go-live to production – being rejected in the UAT/Stage – it causes the developer sandboxes, release environments and
production orgs to go out-of-sync. Frequent refresh causes developers to lose their work-in-progress as well as induces a lot of manual steps for
development teams.
Lack of Version Control: Since multiple development tracks happen in parallel, changes happen to shared metadata members, such as Custom
Objects and Profiles, often resulting in overwriting of code. It is not possible to maintain versions of changes, track them, and roll them back in the
Salesforce environment.
Setting up Continuous Integration ensures that developers integrate their code as often as possible, which serves as an “early warning” system in case
of integration issues, so that issues are addressed at the time of the development stages itself.
1
® www.autorabit.com | info@autorabit.com Copyright © 2016 AutoRABIT
Modelling the Deployments Across Your Release Environments
It is the key to strategizing your deployment/Code Migration Plan across various release environments. Drawing release automation blueprint on how the
code will flow from Development to Production, where and to what extent version control is involved and what steps are automation driven enables
streamlined Release Management.
2
® www.autorabit.com | info@autorabit.com Copyright © 2016 AutoRABIT
Best Practices for Version Control
There should be a single repository for applications with individual branches for
various Project/Developer Orgs and Release Sandboxes.
Need to have separate developer branches for minor and major releases.
Restricted access to Release Sandboxes, with all changes getting deployed from
Version Control for better governance and auditability.
No multiple entry points to Production Org (like deployments from master, as well
direct hotfix changes happening in Production). It can cause over-writing of
changes and hamper the efforts of the governance team.
Merge small, merge often. It is better to have one directional merge to reduce
frequency conflicts. Always merge instead of re-base.
Develop a maturity model that can drive towards Continuous Delivery of application
with Version Control, Deployment Automation, Data Migration Automation and Test
Automation to be able to spin up high quality environments at a button-click.
Automate deployment.
Validate your components before deploying them by performing a deployment validation. A deployment validation is a deployment that is used only
to check the results of deploying components and is rolled back. A validation doesn't save any deployed components or change the organization in
any way.
Use recent validations that were successful in the past four days to perform quick deployments. Quick deployments are deployment of validations
that don’t run tests and help shorten deployment time to production.
Specify the tests to run by using the RunSpecifiedTests test level. This option enables you to run a subset of tests instead of running all tests in the
Org, cutting down on total test execution time.
3
® www.autorabit.com | info@autorabit.com Copyright © 2016 AutoRABIT
Best Practices for Production Deployment
Announce a maintenance window.
Ensure that planned Salesforce releases don’t impact your release. Schedule your release around Salesforce upgrades.
Plan for the Salesforce Sandbox Preview. One month before every major release, Salesforce upgrades a set of its sandbox instances. All the
sandbox organizations that reside on these instances will have access to the upcoming Salesforce release. Use these sandboxes for regression
testing or trying out new functionality.
During a deployment window, you can use profiles to limit end-user access to the production organization.
Alert all active users about the maintenance window using email wizard. From setup, enter ‘Mass Email Users’ in the Quick Find box, then select
‘Mass Email Users’.
Create a profile to lock users out during the maintenance window by editing the login hours. Be sure that system administrators or integration
users have access, if they need it.
Roll out objects, tabs, and apps to different user profiles, if you want to allow some users’ access for acceptance testing.
References:
1. Release Management from Salesforce Community :
https://developer.salesforce.com/docs/atlas.en-us.200.0.dev_lifecycle.meta/dev_lifecycle/lifecycle.htm
2. Salesforce Limits :
https://developer.salesforce.com/docs/atlas.en-
us.salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_overview.htm
3. AutoRABIT CI :
http://www.autorabit.com/powerful-salesforce-continuous-integration-with-autorabit/
4. AutoRABIT DataSheet :
http://www.autorabit.com/wp-content/uploads/2016/05/Datasheet-2.pdf
4
® www.autorabit.com | info@autorabit.com Copyright © 2016 AutoRABIT