Recently I’ve had a number of conversations regarding ALM (application lifecylce management) and solution management with Microsoft CRM 2013. The debates over Managed solutions vs UnManaged is alive and well! Like many I have my own view. There is no wrong or right answer but in principal I would advise working unmanaged in development and managed in test/uat/ production. For this weeks article I thought I would share how I have managed my own “product” FinDemo and share some of the rationale for the decisions I have made. The solution structure, tenant organisations requires a high degree of discipline but if you follow the prinipals below it will serve you very well and will avoid any solution conflict hell.
To give you some confidence the principals below are derived from many years of product development on Microsoft CRM with a heavily customised product delivered to over 100 + customers (000’s of users) and where each customer was able to have their own tailored customised on top of the base platform. Customers have the benefit of taking updates to the core product without fear of losing their own changes.
Regarding FinDemo the structure below enables multiple developers to work concurrently and also enables people on the field to customise their own solutions on top of FinDemo whilst taking advantage of any changes we make to the base FinDemo solution.
FinDemo Template Overview
FinDemo is a financial services template / accelerator that consists of a number of sub industry templates:
- Asset & Wealth Management
- Corporate & Investment Banking
- Commercial Banking
- Insurance
- Retail Banking
Each sub industry templates has been configured to provide industry relevant demo’s that consist of dashboards, forms, processes and data. The Solution for each sub industry template consists of the following type of “solution”
A. FinDemo Core Solutions
B. FinDemo Sub Industry Solutions
C. Third party, ISV or standalone solutions
D. FinDemo ISV Changes
Category A, the first category (FinDemo Common Solution(s) is relatively simple and this solutions includes items such as:
- FinDemo – All data model items goes in here
- FinDemoProcesses – All common workflow process go in here
- FinDemoBusinessProcesses – All common business process go in here
- FinDemoBaseDashboards – All common dashboards go in here
Category B, the second category (Findemo Sub Vertical Solution(s)) includes specific customisation only to the sub I industry template such as
- FinDemoRetail BankingDashboards – All dashboards related to Retail Banking
- FinDemoAssetManagementDashboards – All specific Asset Management dashboards go in here
- FinDemoInsuranceDashboards – All specific Insurance dashboards go in here
- FinDemoSupplierManagementDashboards – All specific Insurance dashboards go in here
Category C, the third category (ISV or standalone Solution) are all standalone solutions or solutions that are provided by third parties such as:
- Single View (Client 360)
- N52 Formula Manager
- InsideView
- Customer Portal
Category D, the fourth category (FinDemo ISV Changes) are solutions that enable me to customise Category C solutions in a controlled and easily deployable manor. As ISV, third party or standalone solutions may include changes to field names, forms layouts etc I use Category D solutions to override these changes. A Category D solution always sits on top of a Category C Solution.
For example. On FinDemo I rename the Account entity to “Company”. If I then install the customer portal then the Account entity gets renamed to “Account”. To resolve this I have a managed solution that I apply on top of the third part that retains my original changes.
E.g.
- I install FinDemo (Account gets renamed to Company)
- I install Client Portal (Company gets renamed to Account)
- I Install FinDemoClientPortal (Account gets renamed back to Company)
In order to do this, in my development environment I have a separate org for each third part component (Category D solution, that looks a like this:
- FinDemo [Managed Solution]
- Third Party [Managed Solution]
- FinDemoThirdParty [UnManaged Solution]
I then make the changes I need on the unmanaged layer (renaming, form layout changes etc and I export FinDemoThirdParty and deploy to my target system. The diagram “development tenants structure” in the next section provides an overview of what my development environment and tenant structure looks like.
Organisation / Tenant Management
For ease of development and deployment the FinDemo development environment has been split into multiple solutions & tenants. The details of each solution is outlined in the following section and includes the rationale for the split.
FinDemo Base Dev
- Base Development Environment
FinDemo Dev is used for all Fin Demo customisations and development. It contains the following solutions:
- FinDemo [UnManaged]
- FinDemoProcesses [UnManaged]
- FinDemoBaseDashboards [UnManaged]
- FinDemoInsuranceDashboards [UnManaged]
- FinDemoSupplierManagementDashboards [UnManaged]
FinDemo Asset Management
- Asset Management Development Environment
FinDemo Asset Management is used for all customisation and development specific to Asset Management (financial services). It contains the following solutions:
- FinDemo [Managed]
- FinDemoBaseDashboards [Managed]
- FinDemoAssetManagementDashboards [UnManaged]
FinDemo Corporate & Investment Banking
- Corporate & Investment Banking Environment
FinDemo Corporate & Investment Banking is used for all customisation and development specific to Corporate & Investment Banking. It contains the following solutions:
- FinDemo [Managed]
- FinDemoBaseDashboards [Managed]
- FinDemoCorpDashboards [UnManaged]
FinDemo Commercial
- Commercial Banking Environment
FinDemo Commercial Banking is used for all customisation and development specific to Commercial Banking. It contains the following solutions:
- FinDemo [Managed]
- FinDemoBaseDashboards [Managed]
- FinDemoCommercialDashboards [UnManaged]
FinDemo Retail Banking
- Retail Banking Environment
CRMFin Demo Retail Banking is used for all customisation and development specific to Retail Banking. It contains the following solutions:
- FinDemo [Managed]
- FinDemoBaseDashboards [Managed]
- FinDemoRetailBankingDashboardss [UnManaged]
CRM Fin Demo Insurance
- Insurance Environment
CRM Fin Demo Insurance is used for all customisation and development specific to Insurance. It contains the following solutions:
- FinDemo [Managed]
- FinDemoBaseDashboards [Managed]
- FinDemoInsuranceDasboards [UnManaged]
Single View
- Client360 / SingleView Environment
FinDemo Client360 is used for all configurations to SinglView for FinDemo. It is used to provide the form layouts It contains the following solutions:
- FinDemo [Managed]
- SingleViewConfiguration [Managed]
- SingleViewIconLibrary [Managed]
- FinDemoClient360 [UnManaged]
Timeline
Timeline Environment
The FinDemoXRMC Timeline solution is used for all configurations to the Timeline solution for FinDemo. It is used to provide the form layouts It contains the following solutions:
- FinDemo [Managed]
- Timeline [Managed]
- FinDemoXRMCTimeline [UnManaged]
InsideView
- InsideView / Social Insights Environment
The FinDemoSocialInsights solution is used for all configurations to the Insideview solition for FinDemo. It is used to provide the form layouts It contains the following solutions:
- FinDemo [Managed]
- Insideview [Managed]
- FinDemoSocialInsights [UnManaged]
Solution Management
For ease of development and deployment I have split the development into distinct functional and/or vertical solutions. The details of each solution is outlined in the following section and includes the rationale for the split.
FinDemo Base Solution
Solution contains customisations for the base customisation for CRM Fin Demo.
The solution includes:
- Entity & Data Model Customisations for everything
- Forms
- Views
- Web Resources
- Ribbon Changes & Sitemap
The solution does NOT include:
- Workflows
- Dashboards & Reports
- 3rd Party components
FinDemo Process Solution
Solution contains workflows (processes) for CRM Fin Demo.
The solution includes:
- Workflows
Workflows have been separated into their own solution to simplify deployment. In the scenario where a workflow references a record (e.g. looks for a user or reference data), then the workflows will not automatically publish on the target system if this information does not exist.
At the time of writing there are a number of workflows that reference specific records (such as queues). For good practise I have separated the workflows.
Where workflows reference specific GUID, this record are available to import
FinDemo Business Process Solution
Solution contains Business Processes for CRM Fin Demo.
The solution includes:
- Business Processes
Workflows have been separated into their own solution to simplify deployment.
FinDemo Base Dashboards and Reports Solution
Solution contains customisations for the CRM Fin Demo Dashboards and reports.
The solution includes:
- Dashboards
Similar to the above solutions, dashboards have been taken out the main solution so that front end changes can be deployed without increasing risk. Note that some dashboard changes may require view or chart changes in which case those changes should be made to the data model on the base solution.
FinDemo ISV Changes Solution(s)
Solution contains customisations any ISV or standalone Solution.
This solution should only ever include:
- Form layout changes
- Attribute name changes
Do not make any data model changes
These solutions are used to integrate or customise third party solution into FinDemo
These solutions ensure that the CRM Fin Demo forms, attributes and layouts are not overwritten by the ISV or third party solutions.
This solution solution should always be the installed on top of the ISV solution so that the solution overrides any solution underneath it. Therefore it might be necessary to uninstall the solution and re install the solution. Consider the following scenario:
1. Production has :
a. Solution A with CRM Fin Demo base customisation (renames contact to customer)
b. Solution B with Postcode anywhere (which renames the contact record from customer to contact)
c. Solution C with FinDemoPostcodeanywherechanges (which renames the contact record back to customer)
2. You deploy a third party tool that has the contact entity in the solution
a. Deploying Solution D would override Solution C renaming customer to contact
To resolve the above scenario you would:
1. Uninstall Solution C
2. Re Install Solution C – This places Solution C on top of D thereby renaming contact to Customer
Customising FinDemo
If you want to customise Fin Demo then I recommend that you follow the process below:
- Install Fin Demo (and related solutions) on you own development / staging environment
- Create your own (unmanaged) solution (add only components you want to customise)
- Make the changes you need
- Export you solution as managed and deploy on the target system
The benefit of this is that your solution will be on top and will always override my changes. You can also benefit by applying future updates of FinDemo knowing that my changes won’t revert (many) customisations you have made.
This post was originally published on https://markmargolis.wordpress.com. This posting is provided “AS IS” with no warranties, and confers no rights.