locked
CRM 2011: Best use of solutions RRS feed

  • Question

  • [Posting it to the right forum as its a deployment question (previously posted in CRM forum)]

    Purpose: We are developing two modules in CRM 2011 says Retail module and Hospital module. We want to release the two modules at different times. Say entities, left navigation and ribbons buttons related to Retail will be released in Apr 2011 and customizations related to Hospital should not be released earlier than June 2011

    Scenario - Lets understand it like this. Say account can have linked retail centers and hospitals. So account : new_retailEntity is 1:N and account : new_hospitalEntity is 1:N. Account form has two buttons on the toolbar each specific to retail and hospital. Account Form has retail subgird and hospitals subgrid. Account has two associated views, 2 left navigation links for each of them.

    Problem - We have already done lot of development and all the customizations are in  a single org in the Dev. Now we want to release like this - In Apr 2011 release only customizations linked to Retail should go. This means Account should have only 1 subgrid (retail), 1 toolbar button, etc etc.. But users should not see hospitals specific customizations earlier than June 2011

    Challenge - Even though new_retailEntity has no direct relationship to new_hospitalEntity entity. When we add new_retailEntity to the solution, it automatically pulls new_hospitalEntity through  dependencies (which is defeating the purpose). What options does CRM 2011 provide in this scenario and how should it be tackled.


    If this post answers your question, please click "Mark As Answer"
    Monday, March 28, 2011 11:36 AM

Answers

  • Hi

     

    Solutions helps with merging code, but not so great with unmerging them. So, for example, you have built out a retail solution. then you can import this solution as a managed solution and then create the hospital solution on top of this andthen export the hostial solution as maanged. But since the hospital solution was built on top of the retial one, you would first have to install the retail solution and then install the hospital solution.

    Right now, your issues look a bit daunting, but let's try to address the issues:

    1. Synchronize thecustomizations to the base entities. If you have two separate solutions and you are modifying both the solutions with respect to the base entities, and you install both the solutions, then the solution installed last merges with the earlier solution and if there are any common stuff, overwrites the earlier solution. So for example, in retial, you have added two new fields to account, but also renamed account to "Store" and in hospital you have also added two new fields but have renamed the account to "Patient". If you install retail first and then install hospital, you will end up with 4 new fields on acount, but the account name will be "Hospital". For synchronizing, you would have to copy over code to both the organizations.

    2. see 1

    3. If you need to release the solutions separately, you would need to do it anyways, else you have codethat is going to run on hospital entities, which do not exist in Retail

     

    Anyways, are the solutions supposed to co-exist, ie do you want to install both retail and hospital on the same org? or are they two separate solutions? Is hospital goign to enhance the functionality of retail? Another thing to keep in mind is, if you have installed unmanaged solution, then there is no way of rolling back. If you delete the unmanged solution, it just deleted the solution object and not the underlying entities or customizations. Only in the case of the managed solutions, does it roll back eveything.

    Hope this helps

    Thanks and Regards
    AniMandal
    http://xrmadventures.wordpress.com/


    • Edited by AniMandal Tuesday, March 29, 2011 2:53 PM correction
    • Marked as answer by Manny Grewal Tuesday, March 29, 2011 10:11 PM
    Tuesday, March 29, 2011 2:53 PM

All replies

  • Hi

     

    What you should have done, is of course have two separate org to develop the two functionality. Even having two solutions does not help, if you do simultaneous development, as all solutions under development are unmanaged - so, it goes on to build dependency. Since you do not have separate managed solutions, all entities linked with Account will show up as dependencies if you include accounts.

     

    Unfortunately solutions do not work too well at segregating things under development - their strength is after you have released then as managed. What you can possibly do is create two separate organizations. Import the entire customization as unmanaged and selective remove the retail customizations and the hospital customizations. You would have to conduct individual testing on each solutions anyways - this way you can also eliminate hidden connections / dependencies there is.

     

    Unfortunately using solutions require a lot of planning before you even start.

     

    Thanks and Regards

    AniMandal

    http://xrmadventures.wordpress.com/

    • Proposed as answer by AniMandal Tuesday, March 29, 2011 12:23 AM
    Tuesday, March 29, 2011 12:23 AM
  • If you go with two-org approach - how will you manage changes made on base entities like Account, Contact, Activities, etc as they are shared across the two modules. We need to make changes to these base entities from both Retail and Hospital perspective.

    1. How to synchronize the customizations made to base entities automatically between the two orgs

    2. How will be ensure that once the solutions are combined, changes made in independent organizations will cope with one another.

    3. The plugins for base entities need to be deployed in two separate places..this means stripping out module specific code from the plugins and distribute it between orgs (which doesn't seem workable)

    Isn't keeping things separate inviting more trouble because you need to write more ad-hoc code to make two orgs self-sustainable. Then when you merge them you need to resolve lot of conflicts. Unfortunately, this approach will certainly blow out our project timelines

     


    If this post answers your question, please click "Mark As Answer"
    Tuesday, March 29, 2011 11:39 AM
  • Hi

     

    Solutions helps with merging code, but not so great with unmerging them. So, for example, you have built out a retail solution. then you can import this solution as a managed solution and then create the hospital solution on top of this andthen export the hostial solution as maanged. But since the hospital solution was built on top of the retial one, you would first have to install the retail solution and then install the hospital solution.

    Right now, your issues look a bit daunting, but let's try to address the issues:

    1. Synchronize thecustomizations to the base entities. If you have two separate solutions and you are modifying both the solutions with respect to the base entities, and you install both the solutions, then the solution installed last merges with the earlier solution and if there are any common stuff, overwrites the earlier solution. So for example, in retial, you have added two new fields to account, but also renamed account to "Store" and in hospital you have also added two new fields but have renamed the account to "Patient". If you install retail first and then install hospital, you will end up with 4 new fields on acount, but the account name will be "Hospital". For synchronizing, you would have to copy over code to both the organizations.

    2. see 1

    3. If you need to release the solutions separately, you would need to do it anyways, else you have codethat is going to run on hospital entities, which do not exist in Retail

     

    Anyways, are the solutions supposed to co-exist, ie do you want to install both retail and hospital on the same org? or are they two separate solutions? Is hospital goign to enhance the functionality of retail? Another thing to keep in mind is, if you have installed unmanaged solution, then there is no way of rolling back. If you delete the unmanged solution, it just deleted the solution object and not the underlying entities or customizations. Only in the case of the managed solutions, does it roll back eveything.

    Hope this helps

    Thanks and Regards
    AniMandal
    http://xrmadventures.wordpress.com/


    • Edited by AniMandal Tuesday, March 29, 2011 2:53 PM correction
    • Marked as answer by Manny Grewal Tuesday, March 29, 2011 10:11 PM
    Tuesday, March 29, 2011 2:53 PM
  • Yes the solutions are supposed to co-exist into the production server, its only that some bits need to be released first and others later. It seems keeping things in different orgs is easier from deployment perspective and difficult when it comes to merging and managing simeltaneous changes made independently in both soutions. There is always a fear factor "It works fine in the Hospital org but will it work when you deploy it to the combined Org in the prod which contains bits of Retail also".

    Its a 'release benefits' Vs 'Extra management' tradeoff we need to decide. Thanks for the suggestions. 

     


    If this post answers your question, please click "Mark As Answer"
    Tuesday, March 29, 2011 10:11 PM