Microsoft Dynamics 365 (formerly Dynamics CRM) allows a developer to package a number of customizations as a solution so they may be installed and managed as a unit rather than individually. For instance, you could put all your custom entities and attributes as well as reports in a solution. The solution may be installed into an instance of Dynamics 365 -- online or on premises.
Managed solutions are a type of solution which prevents unintentional changes to the customizations. You must start by creating an unmanaged solution and then deploy it as a managed solution in another instance of Dynamics 365.
There are many approaches to defining solutions. One extreme is to put all customizations in a single solution. The other extreme is to use dozens of solutions.
For Microsoft Grants Manager, we would use one solution for the standard Grants Manager Plus customizations, and another which contains customizations unique to a particular agency. A third solution is used for the customizations that relate to the PortVue portal.
Be careful about dependencies among solutions, because this can complicate deployment. If you end up with proliferation of too many solutions, you may want to re-examine them and determine whether some should be merged into fewer solutions.
Solutions are not designed as a tool for managing a multi-developer project. There are better ways of coordinating coding than to have a solution for each developer.
You need to consider maintenance implications of Dynamics 365 solutions. For instance, today we were updating a client's CRM to a new version, only to find that a managed solution was installed that no one recognized.
Solutions are not backwards compatible to earlier versions of Dynamics CRM, as shown in the following figure:
|Source: Microsoft https://msdn.microsoft.com/en-us/library/gg328109.aspx|