Introduction to Solutions
Solutions are how customizers and developers author, package, and maintain units of software that extend Microsoft Dynamics CRM 2011. Customizers and developers distribute solutions so that organizations can use Microsoft Dynamics CRM to install and uninstall the business functionality defined by the solution.
In This Topic
Use solutions to extend the capability of Microsoft Dynamics CRM. For software that operates outside the application, use traditional methods to package and install your application.
If your application consists only of Microsoft Dynamics CRM solution components, it can be imported. You will not have to create an installer program.
However, if your extensions include a combination of Microsoft Dynamics CRM solution components and external components, which are not Microsoft Dynamics CRM solution components, you will need an installer.
For example, you may create a .NET Framework application that manages data stored in custom Microsoft Dynamics CRM entities using the Web Service APIs. People who install your application may install a Microsoft Dynamics CRM solution to create the custom entities and then install your application separately by using an installer. Or, you may want to include the installation of the Microsoft Dynamics CRM solution into the installer you create for your application.
Solution components are created by using the customization tools or APIs included in Microsoft Dynamics CRM and are fully hosted in the application. The following diagram shows the types of solution components.
When you define a Microsoft Dynamics CRM solution you create a group of solution components that can be managed together.
|Solutions can only add new solution components or overwrite existing solution components. Solutions cannot be used to delete solution components.|
Unmanaged and Managed Solutions
There are two types of Microsoft Dynamics CRM solutions: Unmanaged and Managed. 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 is not intended to be distributed. When the unmanaged solution is complete and you want to distribute it, export the unmanaged solution and select the option to package it as a managed solution.
The following diagram introduces how managed and unmanaged solutions interact with the system solution to control application behavior.
- System Solution
- The system solution represents the solution components defined within Microsoft Dynamics CRM. Without any managed solutions or customizations, the system solution defines the default application behavior. Many of the components in the system solution are customizable and can be used within managed solutions or unmanaged customizations.
- Managed Solutions
- Managed solutions are installed on top of the system solution and can modify any customizable solution components or add more solution components. Managed solutions can also be layered on top of other managed solutions. As long as a managed solution enables customization of solution components within it, other managed solutions may be installed on top of it and modify any customizable solution components that it provides.
- Unmanaged Customizations
- All customizable solution components provided by the system solution or any managed solutions can be customized in the unmanaged customizations.
- Unmanaged Solutions
- Unmanaged solutions are groups of unmanaged customizations. Any unmanaged customized solution component can be associated with any number of unmanaged solutions. You create a managed solution by exporting an unmanaged solution and selecting to package it as a managed solution.
- Application Behavior
- The ultimate behavior of an instance of Microsoft Dynamics CRM for a specific organization is the culmination of the system solution, any managed solutions and any unmanaged customizations.
When a solution is unmanaged, you can perform the following actions:
Delete components that allow for deletion.
Export and import the unmanaged solution.
Export the solution as a managed solution.
|For more information about the specific tasks you can perform with unmanaged solutions, see Create, Export, or Import an Unmanaged Solution.|
An unmanaged solution is roughly equivalent to customizations performed by using Microsoft Dynamics CRM 4.0. However, in Microsoft Dynamics CRM 4.0 you couldn’t create a group of items you wanted to export separately. In Microsoft Dynamics CRM 2011, you can include a solution component in as many groups as you want.
Importing Unmanaged Solutions
When you import an unmanaged solution, you can edit its components in the new organization.
|When you import an unmanaged solution, the definitions of any solution components that already are in the organization will be overwritten. You cannot ‘undo’ this action. This is the same behavior used in Microsoft Dynamics CRM 4.0.|
Each Microsoft Dynamics CRM organization contains customizable solution components. Together, all of these solution components are called the default solution. This is the solution you edit when you select Customize the System in the application. You can export this solution and the customizations within it in just like an unmanaged solution. However, you cannot export the default solution as a managed solution.
Create an Unmanaged Solution
If you do not intend to generate a managed solution, you do not have to create an unmanaged solution. You can customize the system directly. Organizations that just want to be able to edit, backup, and transport their customizations do not have to use the more advanced capabilities of the Microsoft Dynamics CRM solutions framework.
When you create an unmanaged solution, you create a way to group a subset of the available customizable solution components. The solution components in an unmanaged solution are references to customizable solution components in the organization.
After you create an unmanaged solution you can add solution components to it. By using this smaller set of components you can decide to only include those solution components that are relevant to a particular functionality. This allows for a smaller size package when you export your solution and makes a more manageable set of components.
Any components you add to your unmanaged solution are included in the customizable solution components for the system. Unmanaged solution components can be added to multiple unmanaged solutions.
|Because each unmanaged solution contains a reference to the shared group of solutions, changes you make to solution components in one solution are also applied for all unmanaged solutions that include reference to those solution components.|
|You can also create unmanaged solutions just to provide convenient access to specific solution components. For example, you may use lots of HTML Web resources but only some of them represent top-level user interface elements in your solution. You may want to create an unmanaged solution that includes only those top-level user interface components so that you can locate and open them easily.|
Solution Publisher for Unmanaged Solutions
Each solution requires a solution publisher. For an unmanaged solution, the solution publisher provides a common customization prefix and option value prefix. For more information, see Create a Solution Publisher.
Many solutions can be associated with a single solution publisher. Each organization will have a solution publisher called “Default Publisher for <OrganizationUniqueName>”. If you want all your unmanaged solutions to share the same customization prefix and option value prefix, we recommend that you just associate your unmanaged solutions with the default publisher for your organization.
|The solution publisher controls how managed solutions can be updated. When you install a managed solution, the publisher is visible but you cannot associate an unmanaged solution with it. If you intend to distribute a managed solution, see Solution Publisher for managed solutions.|
Delete an Unmanaged Solution
If you delete an unmanaged solution, you are just deleting the group used to contain references to solution components. The solution components in an unmanaged solution remain in the system but they are no longer associated with the unmanaged solution you delete.
|If you delete a solution component in an unmanaged solution, it is deleted from the system and is no longer available from any other unmanaged solution. Use “remove” instead of “delete” if you just want to remove a solution component from an unmanaged solution.|
If you intend to distribute your solution as a managed solution, export your unmanaged solution and select the Managed option in the Package Type dialog box.
|After you generate a managed solution, you cannot install it in the same Microsoft Dynamics CRM organization that contains the unmanaged solution used to create it. It must be installed in a different organization.|
After you install a managed solution, the following applies:
You cannot add or remove solution components in a managed solution.
You cannot export a managed solution.
Deleting a managed solution uninstalls all the solution components within it.
For more information about the specific tasks you can perform with managed solutions, see Create, Install, and Update a Managed Solution.
After you install a managed solution you may be able to customize the solution components if the creator of the managed solution has configured the managed solution to enable it. You must access the customizable solution components using Customize the System instead of through the managed solution itself.
Whether a solution component is customizable and what specific customization actions are enabled is controlled by using Managed Properties.
Solution Publisher for managed solutions
When you intend to distribute managed solutions, the solution publisher record associated with your managed solution is created in each organization that installs your solution. Use the solution publisher to provide information about how people who install your solution can contact you.
The solution publisher for a managed solution is also important if you want to release an update to your managed solution. If you use the same solution publisher you can create a new managed solution with the ability to update a managed solution you previously released. For more information, see Maintain Managed Solutions.
Using managed properties, the creator of a managed solution can control whether a solution component is customizable and which specific parts of it can be customized.
|Managed properties must be set in an unmanaged solution. The managed property settings are only applied after the managed solution has been packaged and installed.|
The exact managed properties available depend on the type of solution component. The following screenshot shows the managed properties for a custom entity.
By default, the managed property settings assume that any kind of solution component is fully customizable. Solution developers are encouraged to enable solution components in their solutions to be customizable. However, there are situations where the definition of a solution component must be ”locked down” to avoid potential breaking changes or to make future maintenance of the solution component easier.
For more information, see Use Managed Properties.
When two or more solutions define solution components differently, Microsoft Dynamics CRM resolves the conflict using two strategies, Merge and Top Wins. The following diagram illustrates the differences.
- User interface components (ribbons, forms, and site map) are merged. This means that the solution components are re-calculated from the lowest level to the highest so that the organization’s unmanaged customizations are the last to be applied.
- Top Wins
- For all other solution components any conflict is calculated in favor of the customization that is applied last. For managed solutions this usually means that the last solution installed is applied. However, there is a special case when an update to a managed solution is installed.
Conflict resolution on the update of a managed solution
Because unmanaged customizations are considered ”above” any managed solution in terms of conflict resolution, organizations installing an update to a managed solution may not see their changes applied because of unmanaged modifications. An option exists to make sure that changes applied by an update to a managed solution are available.
When you release an update to a managed solution, the organization installing the update can select:
To preserve any customizations they have applied on top of your managed solution.
To overwrite any customizations they have applied on top of your managed solution.
Organizations installing an update to a managed solution should work with the managed solution creator to evaluate which option is best.
|Changes to entity forms and the sitemap will not be overwritten even when the overwrite options is selected. Refer to Merge Form Customizations and Merge Navigation (SiteMap) Customizations for guidance about managing changes. Some manual customization may be required to merge unmanaged customizations into changes included in an update to a managed solution.|
The solutions framework automatically tracks dependencies for solution components. Every operation on a solution component automatically calculates any dependencies to other components in the system. The dependency information is used to maintain the integrity of the system and prevent operations that would lead to an inconsistent state.
As a result of dependency tracking the following behaviors are enforced:
Deleting a component is prevented if another component in the system depends on it.
Exporting a solution warns the user if there are any missing components that could potentially cause failure when importing that solution in another system.
Warnings during export can be ignored if the solution developer intends that the solution is only to be installed in an organization where dependent components are expected to exist. For example, when you are creating a solution that is designed to be installed over a pre-installed “base” solution.
Importing solution fails if all required components are not included in the solution and also do not exist in the target system.
Additionally, when importing a managed solution all required components must match the package type of the solution. A component in a managed solution can only depend on another managed component.
- Additionally, when importing a managed solution all required components must match the package type of the solution. A component in a managed solution can only depend on another managed component.
For more information, see Dependency Tracking for Solution Components.
Support for Multiple Languages
Microsoft Dynamics CRM 2011 natively supports multiple languages. Whenever a language pack (sometimes referred to as a ”MUI pack”) is installed, user interface elements of Microsoft Dynamics CRM can be displayed in a different language.
There are a number of different tactics you should apply based on the type of solution components included in your solution. For more information, see Create Solutions That Support Multiple Languages.
Using Microsoft Dynamics CRM Online as Your Environment to Develop Solutions
When possible we recommend that you use an on-premises deployment of Microsoft Dynamics CRM 2011 when developing solutions to distribute. With the Microsoft Dynamics CRM December 2012 Service Update, new system solution components are added to support new capabilities that are available only when using Microsoft Dynamics CRM Online. If a managed solution is exported from a Microsoft Dynamics CRM Online organization with the product updates from the Microsoft Dynamics CRM December 2012 Service Update installed, or if the Microsoft Dynamics CRM Online organization subscription started after December 2012, the solution may contain dependencies on solution components that will not be present in an on-premises deployment of Microsoft Dynamics CRM 2011 or a Microsoft Dynamics CRM Online organization that chose not to install the product updates.
Because these dependencies are known, the process to import a managed solution is aware of them and people installing a solution will be given the option to install the solution anyway. People installing the solution into an organization without the product updates will see a message advising them that they can proceed with the installation, but that it may not work as intended.
If your solution extends or customizes features that are part of the product updates, any extensions or customizations that depend on those solution components will not work as intended when installed in an organization without the product updates installed. For more information, see Choose Your Solution Development Environment.
|If your organization has been updated to Microsoft Dynamics CRM Online Fall ’13, please use the latest version of the SDK. Download the updated SDK package for Microsoft Dynamics CRM 2013 and CRM Online Fall ‘13.|
Enterprise Solution Lifecycle Management
The ALM for Microsoft Dynamics CRM 2011: CRM Solution Lifecycle Management white paper provides a definitive and full lifecycle approach to enterprise development for Microsoft Dynamics CRM.
TasksSample: Work with Solutions
Sample: Detect Solution Dependencies
ConceptsDependency Tracking for Solution Components
Create, Export, or Import an Unmanaged Solution
Create, Install, and Update a Managed Solution
Uninstall or Delete a Solution
Create Solutions That Support Multiple Languages
Work with Solutions
Other ResourcesPackage and Distribute Extensions
Plan For Solution Development
Microsoft Dynamics CRM 2011
Send comments about this topic to Microsoft.
© 2013 Microsoft Corporation. All rights reserved.