What are change sets?
Change sets is one of the tools provided by Salesforce for migrating metadata changes between orgs. It provides a process to synchronize the metadata between a source org and a target org.
Change sets are supported by Enterprise and Unlimited Edition environments. It's a point and click tool which does not require installation of specific software and does not require the downloading and uploading of files. Certain levels of dependencies are analyzed and cloning change sets is a helpful way to iteratively build packages within a project.
How do change sets work?
This tool is available via the Salesforce UI. Two organizations are configured so that they can send and receive changes between each other. These orgs must first be linked via a relationship to a shared production instance - for example a sandbox and a developer environment, both initially created from the same production org.
Change sets are built by selecting components from the org and adding them into a change set to build up a list of changes to be released. This is done via the UI in the source org. Once the change set has been built, it’s deployed and staged in the target org, where the changes can then be accepted and applied. The two organizations will then have the same specific metadata described by the change set, and the deployment is complete.
You can see a live example in this video by Elie Rodrigue, Force.com Developer at Nubik:
Benefits of change sets
The change set workflow is good for quick changes and for smaller organizations, and many companies begin with it at the heart of their development process:
The graphical user interface (GUI) makes change sets accessible to a wide range of users, which is useful if non-developers need to implement changes
It's quick to learn and get started without introducing complex process
Selecting a small number of components to deploy is quick and efficient, through a few simple checkboxes
Change sets are included within the price of the Salesforce subscription, so there is no additional cost to using them
Challenges of change sets
Change sets have a number of drawbacks which can cause teams headaches:
Many metadata object types are not supported in change sets. Deployment teams often spend many hours running manual post-deployment steps to finish a release, adding components that they could not include in a change set. This is cumbersome and error-prone.
Deploying changes to profiles and permissions is complex, manual, and slow.
Change sets can be hard to scale when a team has many developers working on a team or many environments to manage, as there is no support for version or source control, and accidental overwriting of changes made by other developers is common.
Destructive changes aren’t supported (users can't delete anything via a change set).
While it does offer a basic dependency analysis, this can be unreliable, often flagging up false positives and making it cumbersome for larger deployments.
Change sets don't support any kind of governance control and there’s no way to track who has made changes to the organization, which limits how useful it is for auditing and reporting.
Change sets are not easily reproducible. Repeating the same release is often entirely manual and can take hours.
Is there a better way than change sets?
Yes! Gearset was specifically designed to replace change sets and provide admins with a more powerful, yet easy-to-use tool to manage their releases. You can find out more here.