Microsoft Dynamics // Brain Teaser (solutions)
This post does not intend to introduce or discuss new features, but rather only aims to work your brain — or let you recall your memories — in 5 minutes.
I hope, that you have heard about solutions, in the context of the Dynamics world. If not, you should! LINK
As part of our daily routine, we may deal with one, two or more (my current project with 20+), mostly to move customization out of the development instance(s) and set it on a journey, which ends in a production instance. However, management of multiple solutions can introduce tricky situations, where seasoned developers may loose their sight, faith, hope or some hair…
Your organisation has two instances.
- In the first one, you have a custom form, which you export as part of a managed solution, and import into the second instance.
- In the second instance — as part of an urgent fix — someone makes changes to the layout of this form.
- Life goes on, new requirement comes to replace the urgent fix
- You make changes in the first instance to the layout of the form. You export again the containing solution as managed, and import it to the second instance.
Should YOU choose the
"Overwrite customizations" tickbox during import, making sure: the layout of the form appears for end users of the second instance the same, as your latest changes?
Now: Work that brain!
Your organisation has two instances.
- In the first instance, you create a custom view, with a
- You export it as part of a managed solution, and import it to the second instance.
- Someone makes changes to this view directly in the second instance: sets the column width to
- New requirement comes, so you change the column width to
150pxin the first instance.
- You export the containing solution again as managed, and import it to the second instance.
- You import the managed solution again to the second instance, but this time ticking the “Overwrite customization” box, as you have found out about the local changes, and you want to get rid of them.
- Now all end users of the second instance see “correctly” the column with a width of
- Time flies, new requirement rises (doh, clients…), and as your normal process, you change the width of the column in the first instance to
- You export the containing solution as managed, and import it to the second instance, without ticking the “Overwrite customization”, as now there are no local changes anymore - at least related to this view, but there may be changes related to other components..
After the import, what is the width of the column on the second instance for the end users? Why?
Invest time and get familiar with the files Microsoft Dynamics 365 produces. I did it, when I had to review changes to a form, made by another developer: we use source control for the generated XMLs, so I have seen "
solutionactiontype" tag changing many times, but unfortunately never got curious enough to check, what it is.
Don’t be like me. Don’t take the XML files for granted, and believe that “they are some internal magical Microsoft thing, shouldn’t be important for me to understand”.
Be curious, embrace it, if you don’t know something. Search and experiment: you never know, when this new knowledge will be useful. Some weeks later it saved me many hours while investigating a tricky “disappearing-reappearing customization” issue.
By the way, for the Warm UP! question: it does not matter, whether you tick the box. Import of a managed solution will never overwrite the unmanaged customization of a form in the target instance.
For the main question, well, let’s discuss your thoughts (answers?) and the implications in the comments or find me on LinkedIn! How does stage for upgrade come into play, if it does come at all?
MSFT’s introduction on solutions (CRM 2016 or older)
MSFT’s introduction on solutions (D365)
Form and SiteMap in a managed solutions
MSFT’s documentation on the customizations XML