Solutions & Release Management

Today’s guest blogger is CRM MVP Ayaz Ahmad who is a CRM Architect and Senior Consultant for CSG Services Pty Ltd, the largest Australian owned and leading publicly listed ICT provider in the country. He is also the owner of the MSCRM User Group in Pakistan.

Microsoft Dynamics CRM 2011 comes with a brand new concept of solutions. Solutions are how customizers and developers author, package, and maintain units of software that extend Microsoft Dynamics CRM 2011. In this post I will be focusing on development of enterprise CRM implementations and utilization of solutions.

In enterprise CRM implementations, many processes/iterations are running in parallel which result in many product releases in parallel. So development, testing and rollout of all releases in parallel with no interference with work in progress are massive challenges.

For example, your CRM implementation is comprised of N release as shown below and you want to utilize Microsoft Dynamics CRM 2011 solution concept to fulfill following goals:

1. Development of releases in parallel

2. Multiple teams working on multiple releases

3. Testing of releases in parallel to development

4. Release based rollout to production

5. Install or uninstall releases from test or production

6. Post production support (Patch/hotfix)


I am expecting that you are familiar with managed/unmanaged solution concepts. So in order to implement above scenario, you need to design your organization and solution structure for CRM 2011 accordingly as given below:

1. Create a base organization and a base unmanaged solution in it

a. This solution will carry generic customization i.e. account and contact entity customization

b. Any generic plugins i.e. creation of counter/auto numbers on custom entities

c. Configuration entities and plugins

d. Add common security roles

e. Add core JavaScript libraries


2. Create another organization for each release with one unmanaged solution per release

a. Install base solution as managed in this org i.e. very similar to solution library concept.

b. Add all release 1 specific components to release 1 unmanaged solution


Similarly, for all other release, use rest of all released as managed solution (reference).


Now, if something is changed in release 1 or base solution, you can use managed solution update feature. Just export new version of base/release 1 solution as managed and install it to release 2 organization by using overwrite or merge option.


CRM MVP Ayaz Ahmad

Comments (3)

  1. wendell says:

    Is the recommendation that every release is built on a new Org in a production environment? How is that practical? wouldn't you update the main production org (after testing etc)?

  2. Ayaz says:

    Hi Wendell,

    A release is a functional boundary/module i.e Employer Management, Candidate Management etc. one Org per module will be created in development environment. For example in release 1 org, there will be one Release 1 solution as unmanaged and base solution as managed (reference solution).

    You will have one testing ORG in test environment and you will install releases/modules as managed whenever they are ready to be tested. In this way, you can easily unplug a module/update a module after fixing bugs.

    You Test/production org will very much look like as first picture in this post where all solutions are stacked.

  3. Dave says:

    So every time you do a release you would need to copy data to a new org?

Skip to main content