Implementing Copado Branch Management

Updated 2 weeks ago by Copado Solutions

When implementing the Copado Branch Management application in a busy set of environments, there are 3 typical processes that you can follow:

Short Involvement (All Sandbox Refresh)

  1. Release all your pending changes in all sandboxes (UAT, integration, dev) to production. You can release the changes by using Copado's deployment functionality.
  2. Refresh all the sandboxes.
  3. Set up the Copado Branch Management flow and create all Git branches out of the master branch.
  4. Start working with Copado's Branch Management and Change Management process with user stories.

Intermediate Involvement (Middle Sandbox Refresh)

  1. Release all your pending changes of the middle environments (UAT, integration) to production (dev sandboxes with pending work should be left as they are).
  2. Refresh the middle sandboxes (UAT, integration). If there are dev sandboxes with little or no work in progress, refresh them too.
  3. Set up the Copado deployment flow and create all the branches out of master.
  4. Commit the pending work of the dev environments to user stories with changes that are not yet in integration.
  5. Compare the dev feature branches against the destination branch (with the pull request feature). 
    1. Be aware that the dev sandboxes can be out of sync, therefore, make sure the committed changes will not revert previous changes in integration. If in the pull request you identify that previous changes in integration are reverted, re-add them in the dev sandbox and recommit these components to their corresponding user stories.
  6. Continue promoting and deploying the user stories all the way to production with Copado's Branch Management and Change Management process.
During the first steps of the process, developers and admins can continue working on their sandboxes, but changes should not be deployed forward until after you have reached step 5.

Long Involvement (No Sandbox Refresh)

  1. Set up the flow with production and UAT environments and create the UAT branch out of master. 
  2. Commit UAT changes to one or more user stories that are not yet in production*.
  3. Include the integration environment and create the integration branch out of UAT (it will contain the UAT changes) in your flow.
  4. Commit the changes in integration to one or more user stories that are not yet in UAT*.
  5. Include the dev environments in the flow and create their branches out of the integration branch (the dev branches will contain integration changes + UAT changes).
  6. Commit the work pending in the dev environments to user stories with changes that are not yet in integration. 
  7. Compare the dev feature branches against the destination branches (with the pull request feature). 
    1. Be aware that the dev sandboxes can be out of sync, therefore, make sure the committed changes do not revert previous changes in integration. If previous changes are reverted, re-add them in the dev sandbox and recommit these components to their corresponding user stories.
  8. Continue promoting and deploying the user stories all the way to production with Copado's Branch Management and Change Management process.

*Exclude user stories created in UAT and integration from CBM, to avoid back porting them to the dev sandboxes. You can exclude them by checking the Exclude from CBM checkbox in the user story layout.

During the first steps of the process, developers and admins can continue working on their sandboxes, but changes should not be deployed forward until after you have reached step 7.

If there is no track of metadata changes in the different sandboxes, leverage Copado's Org Differences and Snapshot Differences features to compare the metadata differences between the production org and UAT/int/dev sandboxes.

Alternatively, the Git Snapshot feature lets you commit the metadata to all your environments to different branches of a Git repository. Once all the metadata in the different environments is committed to the branches, create pull requests between the branches to compare the differences.


How did we do?