This document discusses application lifecycle management (ALM) processes and environments for customer relationship management (CRM) systems. It outlines the components of an ALM environment including source control, managed vs unmanaged code, data, and automated scripts. A healthy ALM environment has source control as the single authority, and stores all data in source control. The document also provides examples of ALM tools and resources for CRM systems.
17. Production CRM
Partner Portal Solution
Lead
Entity
Opportunity
Entity
Account
Entity
...
Channel
Security
Entity
Customer Portal Solution
Case Access
Security
Entity
KB Article
Entity
Campaign
Entity
...
Case
Entity
Base Portals Solution
Contact
Entity
Website
Entity
Web Page
Entity
System Layer
...
Content
Snippet
Entity
18. Base Portals Dev CRM
Customer Portal Dev CRM
Partner Portal Dev CRM
Unmanaged Layer
Unmanaged Layer
Unmanaged Layer
Contact
Entity
Website
Entity
System Layer
...
Campaign
Entity
Case
Entity
...
Lead
Entity
Opportunity
Entity
Managed Layers
Managed Layers
Base Portals Solution
Customer Portal Solution
System Layer
Base Portals Solution
System Layer
...
19. Customer A
Partner Portal Solution
Customer Portal Solution
Partner Portal Entities
Lead
Entity
Customer B
Customer Portal Entities
Opportunity
Entity
Account
Entity
...
Channel
Security
Entity
Case Access
Security
Entity
KB Article
Entity
Campaign
Entity
...
Case
Entity
Base Portals Entities
Contact
Entity
Website
Entity
Web Page
Entity
System Layer
Campaign
Entity
...
Case
Entity
...
Content
Snippet
Entity
Base Portals Entities
Customer Portal Entities
Case Access
Security
Entity
KB Article
Entity
Contact
Entity
Website
Entity
Web Page
Entity
System Layer
...
Content
Snippet
Entity
20. Base Portals Dev CRM
Customer Portal Dev CRM
Partner Portal Dev CRM
Unmanaged Layer
Unmanaged Layer
Base Portal Entities
Unmanaged Layer
Base Portal Entities
Contact
Entity
Website
Entity
System Layer
...
Contact
Entity
Website
Entity
Customer Portal Entities
Campaign
Entity
Base Transport
(unmanaged)
Portals Base
(managed)
...
Case
Entity
System Layer
Customer Portal Transport
(unmanaged)
Contact
Entity
Website
Entity
Customer Portal Entities
...
Campaign
Entity
Case
Entity
...
Customer Portal Entities
Lead
Entity
Opportunity
Entity
System Layer
Customer Portal
(managed)
...
Partner Portal
(managed)
...
29. Check -in & Deploy
ALM Processes
Weekly Build
Nightly Build
Isolated Dev
Test
Developer
Tester
Stable Dev
Last Sprint Review
CRM
Environments
Users
Business Analyst
Project Manager
End User
Talk about dependency of next on previousAdvantage: single point modificationDisadvantage: installation sequence
Difficult to manage development: how to distribute modificationsEasy to deployAs long as publisher stays the same, you can have both solutions on one system
Projects are frequently divided to teams or particular people with specific skill sets.Desire is to separate solution management to reflect your team organizationSize does matter – there are limitations on solution size and SQL timeout is common
Make shorter: CRM devs do not have “get latest”
Source Control Systems are useful for more than just source codeEverything in your CRM should be checked into source controlUnmanaged solution files are like your configuration ‘source code’SolutionPackager tool in SDK
Located in the /bin folder of the CRM SDKCommand-line tool that works with solution filesBreaks solution files into foldersBuilds new solution file from folder contentsKey BenefitsMakes it easier to see changesMakes it easier to merge your changes to solutionsConsiderationsChanges still have to be made first in CRM then exportedIt doesn’t automatically merge changesIt is still tied to the structure (and limitations) of the solution systemHand-editing files still has to be done very carefully
Non-upgradable schema changesChanging naming conventionsDeleting of Entities and componentsOwnership of Workflows and DialogsDependencies creeping inKeep your development environments nakedAvoid using the include-all-dependencies buttonGoing back to unmanagedOnly way is to create a new environment and migrate the unmanaged customizations and data to it.Will demonstrate the tools for this later.Really consider carefully before you use managed solutions in production.Recommendation:Script the upgradeUse PowerShellDetect if old version or skipDelete componentsChange workflow and dialog ownership
Source control must be the authoritative source for everythingCode, solutions, and dataUse branching strategiesManaged versus unmanagedMost customers use unmanaged solutions in their ALM environmentUnmanaged solutions == solution sourceCheck in your solution files into source controlDataTest data (for all scenarios)Lookup DataData should be checked into source controlAutomated scriptsCreating isolated development environmentsImporting / exporting solutionsImporting / exporting dataDeployment scripts for test or staging environmentsTesting (integration tests – end to end testing)
Source control must be the authoritative source for everythingCode, solutions, and dataUse branching strategiesManaged versus unmanagedMost customers use unmanaged solutions in their ALM environmentUnmanaged solutions == solution sourceCheck in your solution files into source controlDataTest data (for all scenarios)Lookup DataData should be checked into source controlAutomated scriptsCreating isolated development environmentsImporting / exporting solutionsImporting / exporting dataDeployment scripts for test or staging environmentsTesting (integration tests – end to end testing)
If 3rd party managed solutions are used in production it’s not uncommon to bring them into dev to manage dependenciesBut best avoided