The case is obviously not entirely closed.
My recent article Case closed: Managed or Unmanaged solutions in Microsoft Dynamics 365 / CRM received a lot of attention, and sparked writers, podcasters, tweeters and commenters around the world to give feedback, yell at me, agree with me, or simply continue the discussion both publicly and privately.
I have received virtual hugs and probably lost quite a few followers.
Thank you all for commenting and engaging in this topic!
It is always interesting to hear other opinions.
Of course I realize there are aspects and situations that speak for either approach, my previous article is aimed at raising the discussion (so why the “Case Closed” statement? well it did fuel the discussion 😉) and thus taking a very strict and intentionally somewhat oversimplified/naive standpoint.
The standpoint it does take though is not around which approach is best or where the problems lie with the different options, the standpoint here is that
Microsoft delivers a platform.
They intend it to be used in one way.
Many (perhaps most) use it another way.
Then of course there are interpretations of what Microsoft “intend”. For example, what does the word “distribute” mean if you just pull this sentence from the documentation?
Only export a solution as a managed solution when you intend to distribute it.
As Anthony points out and draws conclusions, this should mean that only ISVs (and Microsoft, in the case of first party solutions they are equivalent to an ISV) shall export managed solutions.
I would say that moving the contents of a solution from dev to test and prod is to distribute the solution.
Reversing that sentence tells me that we should only export unmanaged if it is not going anywhere other than for local backup and commit to source control.
Ok, I’m still splitting hairs here.
But if you look at the full statement in the docs, it reads like this:
A managed solution is a completed solution that is intended to be distributed and installed. An unmanaged solution is one that is still under development or isn’t intended to be distributed. When the unmanaged solution is complete and you want to distribute it, export it and package it as a managed solution.
This aligns with the long-term messaging from Microsoft, that to me has been quite clear from the beginning – they want us to move to managed solutions. That’s the way I have interpreted it over many sessions, calls and presentations since 2011. I fully admit I could simply be wrong in this interpretation.
I agree it can be cumbersome to get a fully managed approach working in some scenarios, but I simply disagree with statements like “managed solutions are incredibly difficult to work with“.
And there are really not “conflicts/delays every time you deploy“.
Those just does not reflect my own experience.
Yes I may come off as a Microsoft-branded, brainwashed Binging MVP, but if it is any comfort to anyone I can ensure you that the majority of the current MVPs are not entirely on my side in this, to say the least 😉
To sum it up (again), and actually to sum up quite many of the reactions I have had on the previous article:
I still like the concept of managed solutions, so my wish is that Microsoft (and we) focus on fixing what does not work, so we can drop this discussion once and for all, so we can “lock down” production environments from manual customization, so that we ensure there is a difference between work in progress and a true deliverable. Managed solutions alone would not solve all that, but it’s a good start.
Thanks to Jukka, Mark, Gus, Alex, Anthony, Scott, Neil, Joe, Ryan, Henry, Kelvin, Tom, Mike, Daryl, Lars, Peter, Seth, Nick, Aiden and Nadeeja for getting involved publicly, I know there are many more in threads I have not found and in internal channels, even at Avanade.