Can anyone tell me what happens if you delete a managed solution where the components are all present in another managed solution? I'm hoping the answer is it will delete the solution without deleting any of the data or customised components that are referenced by the other managed solution. My testing suggests this is true!
Background to the issue:
We are currently in a situation where we get a conflict tab on a customised entity form in production and have to edit it to hide the tab from users, following our last release.
The source of the conflict appears to be a managed solution that was released into production over a year ago when we used 3rd party developers. All components (entities, plugins, webresources, etc) of the 3rd party solution are present in our main solution (which we use for all releases).
It appears that the developers created the unmanaged solution outside of our development instance and never bothered to incorporate it into our main dev instance. Consequently we have a managed solution in production without the corresponding unmanaged solution in dev.
I did manage to get hold of the unmanaged solution zip file as they stored it on a network folder and have been experimenting with how to resolve the issue.
I've only been CRM'ing for 9 months now so you'll have to forgive anything that appears daft!
My first thought was to try and import the unmanaged zip file into a copy of our dev instance. Of course I then discovered this overwrites customisations done in our main solution and sets things back as they were months ago. I then tried to reimport our main unmanaged solution back into the dev copy instance thinking that would set things back correctly. I didn't bank on the odd behaviour where reimporting an unmanaged solution started complaining about an invalid subject field length for the Recurring Appointment entity. The only fix to this seemed to be to increase the field length which seems bizarre given that I was just reimporting an identical unmanaged solution.
I abandoned that line of investigation and tested just creating an unmanaged solution in the dev copy instance with the same name and publisher as the 3rd party managed production solution. I created it with zero components and used the clone solution option and exported it as managed. My logic is that if all components of the solution are present in another then we don't need to keep it (hence recreating it as empty in order to remove all components from the 3rd party managed solution).
I imported this empty clone solution into a copy of production, using stage as upgrade and then applied the solution upgrade. This happily worked and completely replaced the 3rd party solution with my empty one.
For my final bout of testing I took another copy of production and this time just deleted the 3rd party managed solution. This also worked and seems to be the easiest resolution to the problem. I imported our main solution in as managed and this time there were no conflicts raised in the form (since the 3rd party solution no longer existed).
I performed a comparison between default solutions in production and my production copy and they both contained exactly the same number of components.
I then drilled down into the actual entities that were part of the 3rd party solution and compared field counts, view counts, etc and they all matched.
I also compared actual option set values for the entity and couldn't find any differences between the two systems.
I did raise a ticket with Microsoft and the support engineer seemed to think my assumption is probably correct. However, I'd like some solid confirmation before I do anything to our production environment!
*This post is locked for comments