Tag Archives: solutions

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