Dynamics 365 – Solutions and stage for upgrade

Courage is fear holding on a minute longer. George S. Patton

Don’t try to avoid failure, make sure you recover #HoskWisdom

Stage for upgrade is useful functionality which allows you delete customisations and components from managed solutions, this post talks about solutions, holding solutions, stage for upgrade and bugs

Solutions

Before you can understand holding solutions and stage for upgrade you need to understand solutions. start with these posts

Microsoft Dynamics 365 uses managed solutions to copy customizations from one Dynamics 365 environment to another (e.g. Development –>Test –> SIT –> UAT –> production).  Managed solutions make  customizations non editable in the target Dynamics 365 environment.

key points

  • Solution is they are additive and they can only add customisations.
  • When you delete a solution it removes the data too.

below are some interesting post I have written on solutions, best practices and problems

Holding solutions

To remove unwanted customisations you needed to use a holding solution to temporarily hold customisations whilst you deleted one solution, an updated solution is imported the customisations removed.

This post walks through the process How to – Delete Components from Managed Solution in Dynamics CRM 2016 without using Holding Solution

Microsoft has simplified this process by automating the holding solution process and having a stage for upgrade checkbox (which uses a holding solution in the background), read this post for more details

This post covers stage for upgrade and patching – Solution Patching in Microsoft Dynamics CRM 2016

Microsoft documentation – Create patches to simplify solution updates

Problems

There is a bug in the stage for upgrade functionality/holding solution process which fails to import the solution or fails to apply the solution upgrade.  The error happens during the import of the solution and you can’t import a solution into the environment.  We can consistently recreate this if any of the entities has an SLA enabled.

There have been other problems with stage for upgrade and removing customisations but we can’t work out what the problem is because we can’t see the SQL environment.

You can reset the Dynamics 365 CRM instance, import  solutions and data on a clean Dynamics 365 CRM instance.  The Capgemini Dynamics team store code and CRM customisations in source control, giving the ability to create solutions with the latest customisation and deploy solutions into an environment.  The deployment scripts can import configuration data with different data for sprint and dev environments.

This approach is OK for sandbox environments (DEV, test, etc) but if this happened in production it causes major problems because the environment cannot be reset without loosing all the data.

Resetting Dynamics 365 environments

We have problems resetting sandbox environments it becomes stuck and the only way to resolve the problem is wait for Microsoft to run an SQL script (which they do around midnight) which fixes the environment.  It’s frustrating we have to wait a whole day, particularly when we have had it twice on one day.

If Microsoft wants to promote Dynamics 365 online and enterprise projects (which use multiple Dynamics 365 instances) then it must provide the tools necessary to manage multiple environments and allow enterprise projects to be delivered using Dynamics 365.

picture from here