At this point of the book, we have completed building different components of the Airline Compensation Management System (ACM). Now we need to package the solution for deployment into other environments or the Dynamics Marketplace. Microsoft Dynamics CRM 2011 provides a framework upon which custom business applications can be built. It introduced the concept of a "solution" by providing full support for creating, trying, installing, upgrading, and deleting business applications that run on the Dynamics CRM 2011 framework. In this chapter, we are going to cover solutions in detail:
In the previous version of Dynamics CRM, we are faced with many challenges when we are going to package the final solution for deployment, such as overwriting customer changes, no dependency tracking, versioning, or separate deployment packages for the various artifacts. Most people are still having challenges moving the solution from a development environment to a staging environment, and from a staging environment to a production environment. The deployment story for CRM was poor. The traditional development paradigm, such as contiguous integration and build automation, cannot be used with Microsoft Dynamics CRM. With the previous version of CRM, most of the deployments are manual unless you write your own automatic deployment engine. The deployment steps are very trivial, and administrators have export and import customizations, and register plugins and workflow assemblies. It is a very time-consuming process.
Microsoft Dynamics CRM 2011 has improved the deployment story. However, it is still not perfect because its deployment is still not the same as the traditional .NET web application, where developers can build a single installation package for the deployment administrators to deploy. Microsoft Dynamics CRM 2011 introduced a new concept called a 'solution'. A solution is a container of components designated to provide specific business functionality, and that is authored, packaged, and maintained as a single unit of software. The goal it is trying to accomplish is that we build our solution once and deploy it everywhere it is needed, as indicated in the following screenshot:
What is a solution? Let's take a look at a solution in detail.
A solution is built using the Microsoft Dynamics CRM interfaces, and is hosted inside the CRM framework. It is also run inside the CRM framework. The valid components that can be included in the solution are the following:
A solution may contain a completely new vertical solution or enhancements to existing product functionality. A solution is the software unit that allows developers to create, transport, and maintain business solutions that run on top of the CRM framework. In addition to allowing you to group components, a solution also provides additional metadata to identify the functionality that you are providing. The following table identifies the key metadata attributes of a solution:
To create a solution, navigate to the Settings area and then click on Solutions under the Customization tab. Click on the New button to create a new solution, as shown in the following screenshot:
On the Solution form, populate the Display Name, Publisher, and Version fields, and then click the Save button to create the solution.
Each solution has a publisher associated with it. A solution publisher represents the author of a solution. The following table identifies the key metadata attribute of a Solution Publisher:
To create a publisher, navigate to the Settings area, click on Customizations under the Customization tab, and then click on Publishers. Click on the New button to create a new publisher, as shown in the following screenshot:
On the Publisher form, populate the Display Name, Prefix, and Option Value Prefix fields, and then click the Save button to create the Publisher.