Nov 17th, 2021
Posted on Aug 11, 2021 Tools & Tips
If you’ve implemented the strategies in the previous sections, you’ve established a good governance framework that works for your organization and you’ve begun to craft the business backlog – the lists of ‘asks.’
It’s time to deliver! Following a thoughtful technical change management plan is how you do it.
Technical change management is the application of best practices for designing, implementing, improving, and managing software solutions. At its core, technical change management includes the following processes:
In this article, we discuss how to select and stick with a software development lifecycle that works for your Salesforce needs.
A Software Development Lifecycle (SDLC) defines the process of developing and testing a solution. It involves answering questions like Where will changes be developed? Where will changes be tested? How will changes be migrated and tracked?
Establishing an SDLC starts with a clear understanding of your current state. Take the time to document your current processes around managing change. What are some of the challenges you are facing? What is the complexity of your org and do you have the resources to support the change initiatives your implementation faces? A comprehensive understanding of your current state will allow you to identify areas to improve. That understanding will also help you avoid over-designing a process that is unrealistic to maintain.
After documenting your challenges, establishing an SDLC typically begins with defining a sandbox strategy. At a minimum, at least one sandbox should be provisioned for each phase in the development lifecycle. Each sandbox should be seeded with a recent copy of Salesforce production metadata, reflecting the most recent release.
Design and Development
Use a Developer or Developer Pro Sandbox
Use a Developer Pro or a Partial Sandbox
Use a Partial Sandbox or a Full Copy Sandbox
Use a Full Copy Sandbox
Your exact environment strategy will depend on the size of your org, the number of developers working in the environments and your release cadence. A longer list of deliverables with multiple initiatives and business processes will require more sandboxes, more testing, and more clearly defined processes. Salesforce Architect resources dives more in depth here. A helpful output is a flowchart or diagram that depicts how changes move through your environment. There are many tools to help build flow charts like the one below, such as LucidChart, Draw.io, or Visio.
In most cases, development is done in a developer sandbox, integration testing (testing the entire release) is done in a shared partial sandbox, and UAT is done in a full copy environment identical to production.
The key is adhering to a defined lifecycle process, relegating changes and activity to their respective environments. Substantial changes in functionality should always be done in a development sandbox. These can include schema changes like adding a custom object, or changes to automation using ProcessBuilder, Apex or other tools.
While we advise making all metadata changes in a developer sandbox and following the process each time, there may be a valid business, timing, or process reason not to do so. For example, a validation rule may be causing problems in production and need to be deactivated.
Besides the full sandbox, which is the same as Production, each sandbox has separate data and file storage limits.
When determining your sandbox strategy, refer to Salesforce documentation as some may not be available depending on your license.
The most time-consuming part of technical change management is the movement and tracking of changes. There are multiple ways to migrate changes between environments. They involve either using standard change sets, a third-party deployment or dev-ops tool, or managing changes in local environments and using tools such as VS Code and the Salesforce CLI (command line interface).
Salesforce’s out-of-the-box, declarative method to move metadata is through change sets. A change set is a grouping of custom metadata that can be moved between environments.
Outbound Change Set – A change set being sent from the source environment
Inbound Change Set – A change set being received and eventually deployed into the target environment
Building change sets allows you to use an easy, though limited, interface to identify and select metadata. You can also see dependencies based on the metadata selected. For example, if you choose a custom field on a custom object to deploy, the dependency will show the related custom object.
Keep in mind, change sets do not show you the differences between environments, nor do they contain a method to track what has changed. You’ll have to keep track of what has been changed in the dev sandbox in order to add it to an outbound change set. It is for this very reason that it is typical for the admin and/or developer to keep detailed notes (often in a spreadsheet) about the changes they’ve made in their development environment.
Be forewarned: change sets are notoriously slow. Not only is the process of locating and selecting the metadata to add to a change set time-consuming (due to limited list views), but the time required for an uploaded change set to surface in the target org is reminiscent of dial-up internet.
Some third-party tools are like change sets on steroids. Tools like ClickDeploy and Gearset allow you to connect Salesforce orgs to other source-control repositories like GitHub. Those tools enable you to quickly build a collection of metadata, validate against the target org, run Apex tests, deploy, and more.
With these third-party tools, you can also see and compare differences between environments and schedule continuous integration jobs.
One of the most valuable aspects of using these tools is that they are markedly faster and more robust than standard change sets, while only moderately more complicated to use.
Tools like the Salesforce extension for VS Code and the Salesforce CLI allow developers to use the Metadata API to retrieve metadata from a sandbox, make changes locally and deploy to a target org. In this method of deployment, the output is a collection of XML files containing metadata.
With most deployment models, it’s up to the admin or developer to manually track changes they make. This can be done in a spreadsheet or a notepad-type tool. The admin or developer then must refer to their list and add their changes to their deployment as well as take note of any configuration changes they’ve made that may have to be done manually in the target system. You can find sample templates online that provide example deployment plans. These are typically step-by-step instructions that list the components and configuration changes needed to deploy from one environment to another.
Many teams choose to use a source control repository like GitHub to track and manage changes. Regardless of your team’s technical skill, it is important to include source control in your deployment strategy. Since this can be intimidating for newer admins, we recommend the Git and GitHub Basics module on Trailhead.
Take some time to consider how your team should approach the Software Development Lifecycle. The output should answer the following questions:
Metadata Migration Process and Tools
It’s important to remember that you don’t have to take an all-or-nothing approach to any deployment strategy. It may be perfectly acceptable to use change sets for certain changes, and a more formal deployment methodology for others. Focus on defining your organization’s process and stick with it.
Author: Grant Ongstad, Senior Salesforce Consultant
EightCloud was fantastic to work with from start to finish on our project! Everything was done on time, great communication, and no surprises. Highly recommend!"
- Mindy Arnold, Custom Decorators, Inc. (CDI)
Partners and friends, we are proud to share the new EightCloud brand and website with you. Our transformation reflects our commitment to helping you achieve Salesforce excellence through a focus on efficiency, expertise and genuine partnership.
We wish you the best and look forward to connecting with you soon!