CRM Team Development: Application Lifecycle Management George Doubinski (Dynamics CRM MVP)[email protected]@georgedude
• Learn what is Dynamics CRM• Understand CRM development process• Discover CRM & ALM
The goal
• CRM Overview• CRM Solutions• Developing for CRM• ALM
Agenda
Quiz What is Microsoft Dynamics CRM? • SharePoint template• New version of Northwind database• Business Contact Manager for Office 365• Enterprise solution for call centres• Development platform• With customer relationship management functionality included out
of the box.
• Glamorised address book• Customer Relationship Management
system• xRM
What is CRM
Dynamics CRM 2011Update Rollup 15
CRM 2011
CRM 2011
CRM 2011
CRM 2011
DemoDynamics CRM 2013Online – RTWOnpremises – RC1
• Schema Entities, attributes, relationships, global option sets
• UI Forms, resources, sitemap, ribbons
• Analytics Dashboards, reports• Process/Code Processes, plugins• Templates Mail-merge, e-mail,
contract, article• Security Roles, field security profiles
Solution Components
• Unmanaged “Code”• Managed “Assembly”• System “OS”
Solution Types
Managed Solution != Managed Code
Intro to Solution Layers
• Only one unmanaged layer• Managed – last in wins• Merge vs overwrite• Changes are additive
Solution Layers
Demo
Solutions 101
Solution Layering (Vertical)Production CRM
Base Portals Solution
ContactEntity
WebsiteEntity
Web PageEntity
Content SnippetEntity
...
Customer Portal SolutionCase Access
SecurityEntity
KB ArticleEntity
CampaignEntity
CaseEntity
...
Partner Portal Solution
LeadEntity
OpportunityEntity
AccountEntity
ChannelSecurityEntity
...
System Layer
Solution Layering (Vertical) - DevelopmentBase Portals Dev CRM
ContactEntity
WebsiteEntity ...
Unmanaged Layer
System Layer
Customer Portal Dev CRM
CampaignEntity
CaseEntity ...
Unmanaged Layer
Base Portals Solution
Managed Layers
System Layer
Partner Portal Dev CRM
LeadEntity
OpportunityEntity ...
Unmanaged Layer
Customer Portal Solution
Managed Layers
System Layer
Base Portals Solution
Solution Layering (Composite)Customer A
Partner Portal Solution
System Layer
Base Portals Entities
ContactEntity
WebsiteEntity
Web PageEntity
Content SnippetEntity
...
Customer Portal Entities
Case AccessSecurity
Entity
KB ArticleEntity
CampaignEntity
CaseEntity
...
LeadEntity
OpportunityEntity
AccountEntity
ChannelSecurity
Entity...
Partner Portal Entities
Customer BCustomer Portal Solution
System Layer
Base Portals Entities
ContactEntity
WebsiteEntity
Web PageEntity
Content SnippetEntity
...
Customer Portal Entities
Case AccessSecurity
Entity
KB ArticleEntity
CampaignEntity
CaseEntity
...
Solution Layering (Composite) - Development
Base Portals Dev CRM
ContactEntity
WebsiteEntity ...
Unmanaged Layer
System Layer
Base Transport(unmanaged)
Portals Base(managed)
Customer Portal Dev CRM
CampaignEntity
CaseEntity ...
Unmanaged Layer
System Layer
ContactEntity
WebsiteEntity ...
Base Portal Entities
Customer Portal Entities
Customer Portal Transport(unmanaged)
Customer Portal(managed)
CampaignEntity
CaseEntity ...
Unmanaged Layer
System Layer
ContactEntity
WebsiteEntity ...
Base Portal Entities
Customer Portal Entities
LeadEntity
OpportunityEntity
Customer Portal Entities
...
Partner Portal(managed)
Partner Portal Dev CRM
Managed vs Unmanaged
• When to go managed• Need to uninstall• Ship software in marketplace• Ship repeatable solutions
• When to go unmanaged• Everywhere else
• IP protection does not exist in either
Managed vs Unmanaged
• No rollback• Can’t overwrite unmanaged changes• Less predictability in end result• Solution dependencies• Can’t return to unmanaged state• Inability to fix small issues easily• Challenges for deleting components
Managed Challenges
• Teams or individuals with specific skill sets• Reflect your team organization in solutions• Consider separating based on • Entity/schema/UI• Workflows / processes• Plugins• Reports• Security/Admin
Solutions & Team Development
Q&ASolutions
• Difficult to isolate the development• Easy to corrupt development CRM organization• No reliable & repeatable test environment• Lack of visibility of changes (both schema and data)• Hard to reproducing bugs• No ALM traits: source control, continuous integration, build
system, automated tests
Current Pain
There is no “Get Latest” in CRM
CRM DevelopmentWhat we have What we want
• Separate orgs on a shared CRM deployment• Good for non-developer personas (point-and-click people)• Efficient use of infrastructure• Good for demo / test / training / sprint environments• Requires looser security to have full automation
• Separate VMs on a shared Hyper-V Host• Requires more server resources• Cloud-friendly (you can use Azure for this)• Good for complete developer isolation• Doesn’t require monster laptops/workstations
• VMs on developer workstations• Requires high performance workstations with SSD and lots of RAM• Does not require any server resources• Works great in an offline environment or in a distributed team environment
Development Environment
Agile Team Structure & Environments
Project ManagerDeveloper End UserBusiness Analyst
Stable Dev Last Sprint ReviewTestIsolated Dev
Tester
CRM Environments
Users
ALM ProcessesCheck - in & Deploy Weekly Build
Nightly Build
• Not just for source code• Everything should be in the source control
system• Unmanaged solution files are CRM ‘source
code’• SolutionPackager tool in SDK
Source Control System
Branching Strategies
Enterprise
ISV
• Located in the /bin folder of the CRM SDK• Command-line tool that works with solution files• Breaks solution files into folders• Builds new solution file from folder content
• Key Benefits• Easier to see changes• Easier to merge
• Considerations• Changes are still done in CRM then exported• No automatic merge• Inherits structure and limitations of the solution system• Edit by hand with caution
Solution Packager
Demo
Solution Packager
• Non-upgradable schema changes• Dependencies creeping in• Going back to unmanaged
• Recommendation
Challenges
• ALM = Application Lifecycle Management• Components to an ALM environment• Source Control System• Agile Project Management Tools• Automated Build Environments• Automated Test Environments
• Attributes of a healthy ALM environment• Source Control is authoritative source• Developer Isolation• Branching strategies• Automated builds and tests (repeatable success)• Sprints / Iterations• Large teams working in unison• Sustainability & Supportability
ALM Basics
• Source control • Managed vs unmanaged• Data• Automated scripts
CRM in ALM
• Source control – the authority for everything
• Code • Solutions • Data• Use branching strategies
CRM in ALM: Source Control
• Unmanaged solutions are most common• Unmanaged solutions == solution source• Use packager and source control• External managed solutions
CRM in ALM: Solutions
• Types of data• Application data (lookup entities)• Test data (all customer scenarios)• Development data (all permutations)• Production data (not in source control)
• Data should be in source control• Application, test, and development data• Data differences can be seen / evaluated / rolled back
CRM in ALM: Data
• Creating isolated development environments
• Importing / exporting solutions• Importing / exporting data• Deploy to test and staging• Testing (smoke, integration, UAT)
CRM in ALM: Scripts
DemoAdxstudio ALM ToolkitSchema & Data Changes
• ALM for CRM 2011 - CRM Solution Lifecycle Management• http://www.microsoft.com/en-au/download/details.aspx?id=39044
• Adxstudio ALM Toolkit• http://www.adxstudio.com/adxstudio-alm-toolkit
• CRM UG• http://www.meetup.com/SydCRMUG/
Links
• Learn what is Dynamics CRM• Understand CRM development process• Discover CRM & ALM
The goal achieved
• Solution packager • CRM SDK -> Bin\solutionpackager.exe
• CRM Enterprise Academy• http://www.microsoft.com/dynamics/CRMEnterpriseAcademy/
• ALM Toolkit• http://community.adxstudio.com/
• Visual Studio / TFS• PowerShell• CRM Field Guide• http://www.crmfieldguide.com/
Resources