Understanding D365 CE solution Deployment – Patches – Part 1

In previous post we saw how to  deploy the solution using manual export and import method.

Let us discuss a scenario where we have frozen the solution,  have the sign offs on the SIT and there is one critical CR or a bug which is to be resolved. Assume that the change really small and is required to be done in an entity. However if we do the changes in our solution and export the solution, all entities and related assets will get exported and there are chances that any unnecessary changes might getting imported in the target solution. To avoid such situation, we can use patches in Solution deployment

Let us understand patches in details

Unlike the solutions, patches include only changes related to the entity and related entity assets. It does not contain any non customized system components or any relationships on which it is dependent on as this would be already included in the original solution, deployed in the target system.

Few important facts about Patches:

  • Patches can only be created from a parent solution and hence we can not create a patch based on any patch
  • Patches can only have one parent solution.
  • A patch creates a dependency (at the solution level) on its parent solution.
  • You can only install a patch if the parent solution is present in the target instance and its major and minor number are matching with the major and minor number of patch. Additionally the patch should have higher release and build number than the original solution in target instance
  • The rule is that patch protection (managed or unmanaged) must match its parent.
  • If a solution has patches, subsequent patches must have a numerically higher version number than any existing patch for that solution.
  • Patches support the same operations as solutions, such as additive update, but not removal. You cannot remove components from a solution using a patch. To remove components from a solution perform an upgrade
  • For managed solutions, when we uninstall the original solution, all related patches would get uninstalled automatically, however for unmanaged solutions, we have to first we need to uninstall all the patches in reverse order based on the version and then we will be allowed to uninstall the based solution

Let us now see how to create patches. As we saw in the last post we have two CRM instances and we have a solution named deployment already deployed from source to target. Let us consider one requirement where I have to add few fields in the account entity

To learn the patch deployment, let us follow below steps

  1. Create solution in source instance and export
  2. Import the solution in the target instance
  3. Create first patch in source instance and export the patch
  4. Import the first patch in target instance
  5. Create second patch in source instance and export
  6. Import the second patch in the target instance
  7. Delete the second patch from target instance
  8. Merge the patches to original solution in source instance
  9. Export the merged solution from source instance
  10. Import the merged solution in target instance (target solution has first patch already)

All above steps would help us to make the concepts of patch deployment clear. Let us start following the steps one by one


  1. Create solution in source instance and export

In this step let us create new solution,

  • Add existing Accounts entity to the solution and do the changes in the Description field’s max length
  • Create new entity named project and do the changes in the description field’s max length
  • Publish the customization
  • Export the newly created solution

Kindly refer to previous post for creating new solution and export. I am using the same solutions from last post

Click Add existing and select Entity

Patch4

Select the Account Entity

Patch5

Let us add new Component, select Entity and add Entity Details Patch8

Let us add new field to it as DescriptionPatch9

Kindly note that the field length is 100Patch10

Finally we have two entities in the newly created solution

Patch11

Once the solution is published, let us export the solution as managed.

Patch12

Now we have the zip file downloaded of the managed solution.


2.  Import the solution in the target instance 

In this step, let us import the solution in the target instance.

Go the setting- solutions – click on Import as we seen in the previous post

Patchtarget1

Now we have first solution deployed in the target instance.


3. Create first patch in source instance and export the patch 

As discussed above, let us consider a requirement comes where we just need to change the length of Description fields of both the entities Project and Account.  I am giving a simple example, but the original solution might be quite complex and large solution and changes required can be unique. Hence we would create a patch and only add those particular fields in the patch and do the changes as depicted in below stage.

Again go to the settings-solutions, select the original solution and click clone the patch

clone1

Make a note here that we are allowed to change the build and release number of the version

Clone2

Once saved, we can see the patch solution is available under solutions

Clone4

Now we can do add our changes in the patch solution.We we try to do any changes in the original solution, its not allowed as depicted in below snippet

Clone3

Let us open the patch solution and do required changes. Add Account entity and select only description field to be added in the patch solution

clone5

Also select the custom entity Project and add its description field as well.

clone6clone7

Let us change the description fields of both Account and Project entities as required

Project’s description field’s max length is set as 50

clone13

Account’s description field’s max length is set as 1000

clone14

Let us publish the customization

clone9

Once published, let us export the patch solution by clicking Export button

clone10

We might not include the missing components as those would be already present in the original solution.

clone11

We have to make sure that we select Managed while export as the original solution was exported and imported as Managed

clone12

We have downloaded the zip file of exported managed solution patch.


4. Import the first patch in target instance 

Let us import patch to the target instance.

Go to Settings, Solutions, click on Import button

Patchtarget1

Select the exported solution and click on Import button

Patchtarget3

Patchtarget4

Patchtarget5

Once the solution is imported successfully, we can verify and see if the max length of the description field is changed

Patchtarget9

We have followed first four steps in this blog. Please check next blog for for rest of the steps.

Happy deploying and patching  🙂

Why would you use “Stage for Upgrade” with managed solutions?

Solution Patching in Microsoft Dynamics CRM 2016

Microsoft Docs- Patch Deployment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.