You may have managed to put in an unmanaged change in production where you have agreed to use managed solutions only, and it may look like you are doing fine, nobody noticed.. So it’s all good until, suddenly, something starts going wrong!
Here is one scenario that does not seem to work well when you start mixing managed and unmanaged customizations.
Let’s say you have an application in your solution, and there is an entity added to that application.
You’ve exported that as a managed solution, then you’ve imported it into another instance.
Everything is going well, and, then, some sneaky person (like the one above.. whose picture I’ve found here ) decides to remove that entity from the application directly in the target environment through the default solution:
That plan ends up being a huge success – the entity is gone, it’s not in the application anymore!
But, as it turns out later, there is just no way to add it back through a solution import. You can update solution version numbers, you can try using “overwrite unmanaged customizations” option while importing.. it just does not work – that entity is not coming back to your application. Well, I did not try voodoo magic in my tests.
The only way to fix it is to go to the default solution in the target environment, open the application, and re-add the entity there. After that, you can continue to use managed solution imports whenever you want to remove or add that entity to the application.
So. Dynamics is doing a great job when layering the solutions, when merging them, etc. Do not interfere with this process – if you are relying on the managed solutions in your ALM, don’t do unmanaged customizations in production.