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.
I really enjoy following and participating in the discussion, and one comment I got today from Anthony Ellis (read it here) inspired me to write a follow-up article. So here it goes.
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.
Hi for us also it has been managed solution always. In my previous 5 years long project back in Microsoft,for one of our clients, we started our implementation from CRM 2013 and upgraded them to Dynamics 365 all with managed solution successfully. With Solution Patch and possibilities of selecting only specific components added, managed solution have become more flexible. Haven’t worked with unmanaged solution beyond development environment so can’t comment much on that. I am pretty sure if things are properly managed, unmanaged would also work equally well.
?
https://youtu.be/D-AUhLIB05Q?t=255
Thanks for the ongoing discussions. As an experienced software developer but newbie to Dynamics 365 CE I’m completed baffled as what to do for the best with the ALM for solutions. Would anyone be able to share pointers to something detailed stating how to use managed solutions as intended with an ongoing CRM development incrementally delivering changes from dev, through test, and in to production please?
There is unfortunately a void of clear procedures for setting up your ALM story for Dynamics 365 CE.
The closest I get when searching is this section in the docs:
https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/package-distribute-extensions-use-solutions
There are blogs, there is open sourced community tooling, there are lots of ideas. And Microsoft state their own opinion now and then, but I just can’t seem to find that written in any official channel.
The big thing though is that the tooling from Microsoft is still missing in this area. Let’s keep our fingers crossed this will change now with the strong focus on the Power Platform, when they probably feel even more pressure externally, and hopefully get a bigger chunk of the budget to implement it with the stronger focus internally.