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  🙂

Continue reading “Understanding D365 CE solution Deployment – Patches – Part 1”

Understanding D365 CE solution Deployment – Part 2

In previous post we discussed about various ways of solution deployment and the types of solutions. Let us see how we do it actually.

Here we are looking at the manual solution deployment

In the source instance, go to solutions

Solution Deployment 1

Click on Create new solution

Solution Deployment 2

Enter the details like display Name, Name, Publisher and version.

Solution Deployment 3

Either we can select existing publisher or create a new publisher. Publisher defines the prefix for the customization which  is “new_” by default and we can change based on our strategy. In case we are ISVs and want to distribute this solution to multiple clients, we can define the prefix as per our decision. Even in multi vendor implementations, different vendors can create separate publishers or use common as per client’s guidelines.

To create a new publisher, go to settings, Customization and click on Publishers

publisher

Click on New

publisher1

Enter the required details, importantly prefix and save and close.

publisher2

After selecting the publisher, enter other details about the solution

Solution Deployment 4

Once the solution is created, we can either add new components or existing components  and do the customization  Solution Deployment 5

Finally we need to publish all customizations Solution Deployment 6

After the publishing the customizations, now we can export the solution

Solution Deployment 6.PNG7

When we export the solution, it again asks for publishing, we can click on Next button

Solution Deployment 8

We can select the export settings as mentioned below and click on Next button

Solution Deployment 9

Here it asks if we want export Managed or Unmanaged.  Unmanaged is by default selected and we have  to explicitly select Managed and click on Next button

Solution Deployment 10

It will download the zip file of the exported managed solution. Now we need to open the destination instance. Go to Advanced settingsSolution Deployment 11

Go to solutions, click on import

Solution Deployment 12

Browse and select the recently downloaded file solution zip file

Solution Deployment 13

Click on nextSolution Deployment 14

It will show import successful message. In case there are any errors, we can download the log file and verify

Solution Deployment 15

We can check in the destination instance if our customization is getting reflected.

After basic solution deployment, let us see patch deployment in further post.

Happy deploying !!

Continue reading “Understanding D365 CE solution Deployment – Part 2”