Versioning Solutions and Patches

This post describes an example of naming solutions and patches (and their resulting unmanaged solutions) when deploying to the higher environments e.g. SIT, UAT & PROD. It describes how to do this manually and doesn’t discuss using tools such as the solution packager or Azure pipelines.

When initially developing a solution, there may potentially be many unmanaged package solution versions created and deployed to SIT. In this scenario, when creating the deployment package, simply incrementing the <revision> field is sufficient. This allows the developer to track what they’ve deployed.

Note: the solution version number standard format is as follows: <major>.<minor>.<build>.<revision>

Figure 1 represents a solution that is ready to be deployed to SIT. It references the Azure DevOps PBIs that have been implemented

Figure 1

If it’s a large development, the solution ‘CPL Clinical Trial’ could also become large. There is no point redeploying the unchanged components (from this solution) into SIT (& UAT). So, to avoid this, one option could be to create a second empty solution (e.g. ‘CPL Clinical Trial – Delta’) that simply includes changes from that point on.

Once all UAT testing is complete and the solution is ready to be deployed into PROD, the components from the delta solution are added into the base solution. The base solution is then updated to v1.0.0.0 and deployed to SIT, UAT and PROD.

Figure 2

Some time after the solution has been deployed into PROD, there could be a request to deploy enhancements or bug fixes into PROD. The recommended way to do this is via patches. Creating a patch off the base solution locks the base solution from further updates. It also creates an empty patch solution.

Figure 3

Once the relevant components have been added to the patch and it’s ready to be deployed, it’s recommended to change the release number to the current date.

Figure 4

More than one patch maybe required.

Figure 5

When it’s decided to merge the patches into the base solution and to create a new minor version, a ‘clone to solution’ is performed.

Figure 6

This will create a new version as shown in Figure 7 & 8

Figure 7

Figure 8