CRM 2011 New Features: Solutions

I’m still getting my head around Solutions and what best practice is going to be out there in the real world.   I want to leverage the rollback ability of managed solutions and want to enforce proper release process with changes migrating from DEV through to TEST and PROD.   And I can see we will build up a library of solutions over time that we will want to pick and choose from for each customer.

Here’s some early findings and preliminary thoughts.  My understanding is not where it needs to be yet though so expect this post to change over time…

  • You could potentially customise away in the default solution on your DEV server and ignore Solutions initially.
  • Then to deploy, create a Solution and then add to the Solution the components you wish to deploy, then export as Managed
  • You can then import the managed solution into your destination environment
  • You will now have components back in your DEV environment that sit under the default solution and under your new solution.   They actually exist only once and any changes are reflected under each Solution.  The Solutions are just 2 different groups that the single set of components are attached to.
  • If you make changes to one of these components and then re-export the Solution you created(having first manually incremented its version # to 1.1) and then import that into the same destination environment as before, the import process will detect that this is an update to an existing solution. 
  • You will get asked about how to handle any additional changes that might have been made in the destination environment to the components involved.  You can keep those changes and ignore any conflicting changes coming in the import.  Or you can indicate the import should win.  I’m not sure whether that second option specifically delete all changes made or only when there is a conflict.
  • Unmanaged solutions can be deleted but the delete just removes the solution wrapper, the components remain.
  • Managed solutions can be deleted and in this case the delete will remove the components of the solution.   Not sure what this means if the solution included changes to an existing entity, I assume those changes are undone.
  • If several versions of a managed solution are imported in the delete process removes all.  It is more like an ‘add remove programs’ action then a ‘rollback last service pack’ action.
  • I wonder if in a customer environment the process should be:
    • Customise in the default solution in DEV
    • Create a solution, add components, export as managed, import
    • Delete solution from dev
    • Make next set of changes in dev
    • Create a solution, add components, export as managed, import
    • Not sure whether we add all components, or just those that have changed since the last release
    • We end up with one managed solution per release this way.  We should be able to delete the last solution to roll it back (maybe)
  • Or should the process be:
    • Do not customise in the default solution in DEV
    • Instead, create a solution and add components to that solution before making changes
    • When ready to release, export as managed, import
    • For the next set of changes, continue as before, add items to your solution before you change them (if they are not already there)
    • When ready to release, export as managed, import
    • We end up with one managed solution this way
  • If we build up a library of corporate assets and store these as solutions how would these then fit into these deployment models?  I guess they would be imported into the DEV environment and then get added to the outbound solution that you will deploy.  This might mean your DEV environment has 10 little imported solutions and your TEST and PROD have a single managed solution.  It feels a little unnatural to have a Solution architecture in DEV that differs from TEST and PROD, but I guess that’s always been the way of custom development where you have source code and then compiled code, perhaps CRM is moving closer to that analogy?  Or more likely, I haven’t quite got my head around this quite right yet!

Comments please!  I’d love to hear the thoughts of others on this topic Smile

Advertisements

2 thoughts on “CRM 2011 New Features: Solutions

  1. Karan Sharma

    You mentioned the following in your post:
    “I wonder if in a customer environment the process should be:
    ◦Customise in the default solution in DEV
    ◦Create a solution, add components, export as managed, import
    ◦Delete solution from dev
    ◦Make next set of changes in dev

    My query is: Is it possible to delete solution from dev. Dev solution is generally unmanaged solution. So, if you delete it, as you said, it will delete only the wrapper and not the components inside.

    or in other words I can put it like this:

    . I customise account entity and included it in a solution
    . I exported it to customer env
    . I want my dev account entity to be reverted to original customisations by CRM.

    Is it possible?

    Awaiting your reply

    Thanks in advance

    Karan Sharma

    Reply
    1. Gareth Tucker Post author

      No that’s not possible. When it comes to entity schema changes 2011 is not really any different from 4. If you want to revert back to a ‘vanilla’ environment you need to restore your CRM db from a backup at the SQL level or create a new organization.

      Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s