The question was asked again and again over the years. “Should we use Managed or Unmanaged solutions in the Production environment?”. Many articles were written with different opinions. Many discussions have taken place in forums and social media. Yet, we continue to get the same questions again and again and we will in future. I decided to document my answer to the question, that way, next time I can simply share the link to this blog post 🙂.
What is my answer? My answer is “It’s your choice!”. There’s nothing wrong with either. There are pros and cons of both. I’ve used both in the past. The decision depends on the circumstances and the true maturity of the organisation. How much effort is an organisation is willing to commit when deploying solutions?
Independent Software Vendors (ISV)
If you are an ISV, building a product, you MUST use Managed solutions when shipping the product. You would want to have full control over your software. You may or may not allow customisation of the components in your solution but you should be able to easily remove and patch your solutions. Managed solutions allow Intellectual Property protection to a certain degree. It’s in the best interest of the ISV to restrict customisation and control their solutions.
Managing Your Own System
You need to think about the maturity of your organisation. Answer these questions honestly, to evaluate the maturity of your organisation.
- Do you have the right people with the right skills in-house (Developers, Architects, Functional Consultants)?
- Do you have a well documented, standardised release and change management processes?
- Do you have a Release Manager?
- Do you have a minimum of 5 or 6 Dynamics 365 instances (Development, Test, SIT, UAT, Pre-Production, Production)?
- Do you have additional sets (Development, Test, SIT) of instances for each project team?
- Are you willing to invest time and effort to get the solution management right?
If you can honestly say “Yes” to all or most of the above questions, then you are truly a mature organisation.
If you are a mature organisation;
- follow strict security processes and procedures restricting access to the production environment
- provide adequate training for your IT Administrators and Business Super Users
- Make sure no customisations are performed directly on the production instance
If you have all of the above in place, then use Managed solutions in your production environment.
If not, you may use Unmanaged solutions. Highly agile, small to medium organisations with limited resources will benefit from having unmanaged solutions. Unmanaged solutions are more forgiving to human errors. Deleting Unmanaged solutions will not delete the components, customisations, or data. Yes, agree that if you ever need to roll back the changes, you will have to remove the components manually from the default solution. But chances are in an agile environment, single deployment will only have limited customisations and manual rollback would not require significant effort. It’s recommended to back up the system prior to any deployment.
Partner Building Solutions for Your Customers
If you are partner building solutions for your customers, then there are multiple aspects to consider.
If you are providing Starter Kits or your own addon solutions, it makes sense to treat your products similar to ISV products. Therefore, use Managed solutions for those products. The customer expects you to manage these solutions.
If you are building products for a customer who would then sell these products to other customers, again, treat it similar to an ISV product. Use Managed solutions. The customer should be managing these solutions either internally or with the support from a partner.
If you are building a solution for a customer to use internally, do the above test to evaluate if the organisation is truly a mature organisation from IT System Management perspective. If yes, then use Managed solutions.
If your customer is not one of the above, you may use Unmanaged solutions. Using Managed solutions doesn’t mean the components in the solution can’t be customised. The components in a Managed solution can’t be customised using the same solution but they can be customised using another solution. Unmanaged solution import will overwrite the existing customisations of components. It’s simpler to understand since there’s only one version of a component. The Managed solutions include a layering process. It’s not straightforward to figure out what is the impact of the removal of a solution. The component will behave as per the previous state. If you have multiple Managed solutions customising the same component, you need to follow LIFO (last in first out) process to remove components. With Unmanaged, you can simply delete the component from the system. Depend on the lens you are looking through, this can be a good thing or bad thing.
One might argue, “Microsoft recommends using Manage solutions in Production environments. Therefore, we must follow their recommendation”. Theoretically, if you want to rollback the solution, you can, with a Managed solution. With unmanaged, you have to remove one at a time manually. If you have tried to remove a Managed solution with complex dependencies, you’ll realise why I said “Theoretically”. Try removing the Dynamics 365 Portal or Field Service solution. You’ll understand what I mean. Not as easy as they claim.
Most small to medium size organisations do not have the resources (people, time, or budget) to get the release management process perfect. Time to market and agility often have priority over processes and procedures. There are always other important things to spend your money on. Not saying it’s necessarily a good thing or bad thing but that’s the reality.
The first deployment is always easy with Managed or Unmanaged solutions. The second, third, .. forty-fifth deployment will give you a lot of pain when you try to import a Managed solution to an environment where release management processes were not adequately implemented.
If you are an ISV, or have built a product that you would need to manage, use Managed solutions to ship your product.
Please do a reality check and evaluate the capabilities and maturity of your organisation. If you are convinced you to have the people, processes, time, and budget to adequately maintain Managed solutions, then you are welcome to use Managed solutions.
Everyone else may use Unmanaged solutions in the production environment. It is a supported and perfectly valid way of deploying a solution to a production environment. I have never heard of an instance where an organisation was negatively impacted due to the use of Unmanaged solutions. I have heard many instances where Managed solutions causing grief due to human errors and lack of maturity of the organisation. Unmanaged solutions are more forgiving than Managed solutions when importing solutions. You can absolutely use Managed solutions in your production environment if you prefer but please be prepared to deal with the complexities that come with it.
Regardless, if you use Managed or Unmanaged solutions, it’s highly recommended to take a backup of your system before importing a solution to a production environment. Never.. ever.. ever.. directly make changes to components in a Production environment. Always use solutions.
Thank you for visiting Dyn365Apps.com.
Follow me on Twitter to get the latest news, tips and tricks and more …
Until next time…
About the Author
Nadeeja Bomiriya is a Microsoft MVP, Chapter Lead – Dynamics 365 Saturday – Australia, President – Melbourne Dynamics 365 User Group, Technical Architect, and Dynamics 365 Practice Lead who lives in Melbourne, Australia.