Let us start from the scenario that the enterprise has decided to use Microsoft Dynamics CRM /365 CE as a preferred customer relationship solution for their organization.
For a large enterprise and/or having multiple different departments, the first question that comes up is, do they need to have a single instance or organization or multiple instance or organization. Well, that decision is not that easy but one thing is for sure the decision should be made as early as possible in the project.
Well you could refer to these posts that could help us to make the decision
Now suppose we have made the decision to go with the single instance \ organization, so what are some of the key points we need to consider.
There could be multiple ways of implementing and defining the segregation layer as well as what needs to be shared from data and customization perspective among the different business units, the most important being the security model and the business unit structure being one of the key components of it.
Check out the below Webinar –
also listen to the below podcast to get some guidance around the setting up the security model
In one of our projects, the way we segregated different departments, after defining the appropriate business unit structure, was by having the Business Unit lookup (custom field) in all the common entities that were being shared by the departments and populating that field accordingly, every time record is created either through User Interface or through code and to refer the same field in the customizations (plugin, workflow etc.) as and when applicable.
In the other project, we were referring to the Business Unit lookup field in the System User / Team Entity.
Well there could be multiple ways of doing the same with its own pros and cons.
But what if you have already implemented for one of the units and didn’t consider that the same instance would need to be extended to accommodate the different business unit(s).
Well, then it is time to modify a couple of things to make the Business Unit structure scalable (if it is not).
Let us go through the each of the main components one by one and how they can be segregated among different business units.
Wrong root business unit name?
Set Parent Business Unit lookup field as optional, open the Business Unit record and rename it.
Need to rename the organization?
For Online à
Navigate to Admin Portal, select the instance and click on edit and update the organization name and if required the URL as well as shown below.
For On-Premise à
Create separate new Main forms for different business units.
Enable appropriate security roles for the Form.
Reuse the fields that are common instead of ending up creating a large number of fields.
Field security profiles can also be used if required when certain entity’s records are shared across the business unit and we want to hide the sensitive information.
Business rule can be configured to run on the scope of Form instead of the Entity.
For Dashboards, we can enable the security roles.
Have a field in the records to identify to which Business Unit it belongs to and check for this field as the first thing in the plugin or check for the Business Unit of the user under whose context the plugin is getting fired or use the secure \ unsecure configuration etc. it purely depends upon the way the segregation logic has been implemented.
Use SLA lookup field to apply the SLA dynamically through plugin or workflow.
Business Process Flow
If there are multiple business process flow, make sure appropriate one is applied
Apply business process flow while creating an entity record.
There would be multiple other key points to be considered apart from the one listed above specific to each implementation; the above points are some of the things that can be taken as guidelines.
Lastly we must consider creating different apps for different department \ teams\ users and add required solution components to it.
Please feel free to add comments and share your thoughts.
Hope it helps..