One of the common problems using previous versions of Dynamics CRM was managing the various customisations throughout a project, particularly when thinking of developing reusable sets of customisations that could be deployed to multiple CRM Solutions.
The only method we had was to use a different customisation prefix (from the default new_) for different sets of customisations to manage the different fields and entities we may have wanted to re-use, followed by careful version management for exporting certain entities into separate XML files which could then be imported into other solutions as bite-size components. This could be done with enough attention and common sense, but made installing, and particularly uninstalling, reusable components into CRM deployments difficult.
CRM 2011 aims to resolve this problem through the use of Solutions that act to group different sets of customisations into individual components which can then be added or removed to a deployment of CRM 2011 through the customisation area. This article aims to detail an overview of Solutions in CRM 2011 and a basic example of how these could be used.
Defining a new Solution in CRM 2011
Our initial step is to browse to the Solutions section within the Settings area of 2011.
Here we can see the list of Solutions present in this deployment of CRM 2011, for most deployments this will initially be blank – however we can create a new Solution here that we can use to group new Attributes or Entities we want to add to CRM as a distinct unit.
We can then provide the Solution a Name, Publisher, Configuration Page and Version.
|Display Name||The real-world name for the Solution, with the Logical Name defaulting from this.|
|Name||The Logical or behind-the-scenes Name for the Solution.|
|Publisher||The Publisher defines who is authoring and distributing the CRM 2011 Solution. Initially each CRM 2011 Deployment defaults to a specific publisher for that Deployment, but this can be amended to define a specific Publisher record and description about the Publisher.|
|Configuration Page||Links to a Web Resource which will act as the Configuration Page for this Solution, such that the Solution has an area for Administrative Users of the Solution to detail any Settings or Connections that may be required for the Solution.|
|Version||The Version Number given for the Solution, useful when releasing different versions of the same Solution to Customers or Clients.|
After defining the Solution, we can then add new Attributes, Entities and other customisation areas to the deployment of CRM 2011 as part of the new Solution.
Adding Content to the Solution
Once the Solution has been added to CRM we can add different customisations, or components, as parts of the new solution:
Taking an example of a possible Solution format we could use, we could envisage the scenario where a business runs a number of Hotel Properties; each of which collects information about the standard of the Hotel and feedback on the level of service provided by the staff in the form of a Customer Questionnaire. This feedback is then collected in the form of a simple Spreadsheet with one row per Questionnaire, as shown below:
To visualise this scenario, we could create the following customisations as part of a new 2011 Solution to address these requirements:
- A Custom Option Set for describing the result of a Service Questionnaire Tick between Excellent, Good, Satisfactory and Poor.
- An additional CSQ Entity to represent a returned Questionnaire.
- An additional Property Entity to represent the property or location that a returned questionnaire refers to.
- Additional fields on the CSQ Entity for different ranking scores: Availability, Competence, Attention to Requirements and Overall Impression – each using the Custom Option Set defined.
- Additional fields on the CSQ Entity to describe the Date that the Questionnaire was returned.
- Additional N:1 relationship between the CSQ Entity and the Property entity to describe which returned questionnaires relate to which location.
- Additional N:1 relationship between the CSQ Entity and the Customer who returned the questionnaire. (potentially blank if the Customer completed the Questionnaire anonymously)
This list of customisations then fulfils our basic requirement to record these Feedback Questionnaires in CRM 2011 – we can then create a Datamap to meet the requirement to import the Questionnaire raw data into CRM without the need for manual entry:
The Data Import alongside the Solution Customisations then gives us a workable solution to the requirements to import and record the Questionnaire information in CRM 2011.
Using this example of a developed solution, we can then think about how we can Export, Import or Remove this Solution from our CRM 2011 Deployment.
Exporting a Solution as XML
From here we can then decide how the Solution can be used outside this deployment of CRM 2011, similar in respects to how we could export/import XML files when using CRM 3 or 4, but instead of exporting or importing whole deployments or individual entities here we can export just the solution we have developed itself.
Here we can export the XML describing the Solution we have created, either encompassing all aspects of the solution’s customisations or simply certain types of customisation or configuration for the solution.
The next step is either we want to export the Solution XML as a Managed or Unmanaged package which determines how the Solution can be used when imported into a CRM 2011 Deployment.
Once we finished the Export Solution Wizard, the XML file can then be downloaded and saved for future use either as a Managed Solution or an Unmanaged Solution.
Managed Solutions vs Unmanaged Solutions
The concept of Managed Solutions and Unmanged Solutions is a new option in CRM 2011 to allow us to export our Solution as either a set of flexible customisations that can be further changed or customised in the future when imported into other CRM 2011 Deployments, or as a set of fixed customisations that can only be customised to an extent controlled by the Solution’s original author.
|Unmanaged Solution||Managed Solution|
|Can be Deleted||By removing each Component individually.||Removing the Solution will automatically remove all the Components involved.|
|Can be Customised||Components can be customised.||Components can only be customised accordingly to predefined Managed Properties.|
|Can be Exported||Can be exported to XML files as either a Managed or Unmanaged Solution||Cannot be exported|
Therefore when authoring a new Solution, each area of customisation involved in a CRM 2011 Solution will have an option to alter the Managed Properties for that component:
This set of Managed Properties then affects the level of customisation or changes that can be made to the Solution when imported into a CRM 2011 Deployment as a Managed Solution.
Removing a Solution
The useful aspect about grouping sets of customisations as a Managed Solution is that the Solution can be removed from a CRM 2011 Deployment as a single action. (whereas Unmanaged Solutions or Customisations in CRM 3 or 4 would need to be deleted component by component)
Now when browse to the Service area of our CRM 2011 Deployment – both the CSQ and Properties entities have been removed, as both of these Entity Components were part of the Managed Solution that has been removed/uninstalled.
This process of development, export and then import gives us a Solution Development Lifecycle when using CRM 2011 that is similar to the traditional Software Development Lifecycle for developing custom applications – when we can think of the Unmanaged Solution XML as the core Code or Script, and the Managed Solution XML as the compiled production Code.
|Unmanaged Solution||Imported as a Managed Solution||Imported as a Managed Solution|
|Constructed by Development Team||Exported as a Managed Solution||Tested as a Managed Solution by the Testing Team||Used in Production|
The following two ZIP file downloads contain the XML for the Solution outlined in this post, both as a Managed version of the Solution and the Unmanaged version.
|Unmanaged Solution XML||Managed Solution XML|
This concept of Solutions goes a long way to resolve the problems that we encountered when building reusable sets of customisation in CRM 3 and 4 – allowing us to use and release almost ‘drag-and-drop’ extensions that we can add or remove into our CRM 2011 Deployments as managed extensions.
As Consultants and Developers, this gives us a more manageable method of releasing and installing Future Phase Releases or Issue Resolution Releases to our Customers; more generally this can also allow Dynamics Partners and Professionals to offer their solutions as new extended areas of functionality for general release via the Dynamics Marketplace built into the Settings area of CRM 2011.
Further information about PinPoint can be found here.