If you have problems shifting gears in your car, you don’t call Volvo to say “Hey, I don’t like how this gear shifting thing works, so I’m just going to use reverse and drive backwards from now on.”
What you probably do is call them to say “I’m having trouble shifting, you need to fix the problems or show me how to use it properly.


Ever since Microsoft introduced the Solution platform with Dynamics CRM 2011, there has been an ongoing and never ending discussion about whether to deploy managed or unmanaged solutions.

I can’t say I can end the discussions or solve all problems. But I will try to convince you – there is no discussion.

The messaging from Microsoft has been clear from the beginning:

Use unmanaged in development.
Deploy managed to test and production.

To me, and I guess in theory to most, this has always made sense. Just like we compile our code before shipping, we “compose” our managed solutions, with the delta we want to apply to the target environment.

 Not only does this give us the possibility to surgically introduce our solutions in Dynamics environments without overwriting existing solutions and customizations, it also gives us the possibility to remove them by uninstalling our solutions.

Okay, I know, I know… “This all sounds good in theory, but the reality is so much more complex, and we’ve faced too many problems with dependency conflicts, we won’t do managed anymore.”

I have been lucky in this case. I have mostly worked on accelerators, utility sets and modules for business verticals. In our case, everything we did in these areas were enablers – just like the Dynamics platform itself – to create tailored customer solutions on top of.

So I have worked with managed solutions for almost eight years.

 

We don’t drive backwards

The car is designed to be driven forward, and over the years the use of the gears improve. We use reverse when we park, but we don’t drive backwards.

The real problem with Dynamics 365 solution management is not in the managed solutions.
The real problem is that we even have the possibility to deploy unmanaged solutions.

Driving backwards on the Dynamics platform has become too tempting, and a short term easy way out, just because you don’t like how the gear stick works.

 

There is no discussion

As I said above, the message from Microsoft has been clear all the way, and the platform is designed to follow their original statement. We can like it or dislike it all we want. But that does not change the design or the long term commitment from the Mothership up in Redmond.

The only reason we even have the possibility to export unmanaged solutions is to get backups of our customizations in development, and to support necessary ALM stories.

The only reason we can put the gear in reverse, is to back up on our driveway.

 

The real discussion

This is the platform we are working with. So can we please stop talking about if we should use it the way it was designed?

If we can focus on the real discussion, we will all save a lot of time, effort and money.

The real discussion should of course be about:

  • manifesting best practices for solution management
  • overcoming the obstacles we are still facing
  • helping Microsoft sort out remaining issues

Simply put: Let’s work together on this, towards the same goal.

 

The progress

We have come a long way since when I starting working with Dynamics CRM 4.0, shipping customizations.zip files that we manually manipulated during our long dark Nordic nights up here…

It’s been a bumpy ride at times, using the Solution concept. It’s been “Missing solution component with id {B1AB1A-347849-3728-B1AB1A}” and we’ve seen “Cannot delete due to dependencies I'm not gonna tell ya about” not to mention “LocalizedLabel has gone AWOL“.

But with the introduction of Clones, Patches and Upgrades, we got more options for updating our solutions in a more granular way, reducing the risk of seemingly irrelevant dependency issues.

The release of the Package Deployer tool, with both UI and scriptable execution, the road was paved even more for a Dynamics landscape where we ship managed solutions that are deployed as additions to the target environments, instead of the complete overwrites of unmanaged solution imports.

 

Microsoft practicing what they preach

With v9 Microsoft has finally taken the last step to practice themselves what they preach to us.

1st party solutions for Sales, Service, Marketing etc are now delivered as managed solutions. When we get updates in Dynamics 365 Online, we can see the updates in the solution import history in our organizations. Developers at Microsoft follow the same rules (almost) that we have to comply to.

Okay, there are still some mysterious internal stages for plugins and Subject is still a bit of a freak entity, but by large the 1st party solutions are deployed to the core CDS instance the same way any AppSource solution, ISV product or customer specific system is deployed.

 

Focus!

We have come so far, so please, let us focus on fixing any issues that may be left instead of debating if that eight year old design decision was the right one or not.

Use your gears! Drive forward!

Cover Image Credit: https://static.carthrottle.com/workspace/uploads/memes/stick-shift-54b1be11df7b9.jpg

The post Case closed: Managed or Unmanaged solutions in Microsoft Dynamics 365 / CRM appeared first on The Dynamics 365 Trenches.