SlideShare a Scribd company logo
1 of 36
Data Migration Done Right for Microsoft
Dynamics 365/CRM
Daniel Cai
Principal Developer, KingswaySoft
Microsoft Business Solutions MVP
#CollaborateCanada
Meet the Presenter
Daniel Cai
9 Years of development experience with Microsoft Dynamics 365/CRM, with primary
interests in
• CRM SDK Programming
• Large-scale ETL development
• Performance Tuning
• Anything that makes integration easier and more approachable
About KingswaySoft
A leading provider of data integration solutions for Microsoft Dynamics 365 software and
beyond, with two primary focuses
• Connectivity
• Productivity
Disclaimer
Demo Code
Demo code is built on top of Microsoft Dynamics 365 SDK
• I assume some basic SDK knowledge and C# coding skills
• Credit goes to the community and the SDK team
Sample ETL Process
Sample ETL Process is built on top of SSIS Integration Toolkit for exhibition purpose
• The intention is to demonstrate the technical approach rather than advocating a particular
product
• More details of SSIS Integration Toolkit can be found at the following URL
http://www.kingswaysoft.com/products/ssis-integration-toolkit-for-microsoft-dynamics-365
• The approach demonstrated should be transferrable to any other third-party or home-grown
solutions in a similar fashion, as applicable
The Challenges
What are the challenges?
Complex data migration requirements
• Constantly evolving enterprise application landscape
• Disconnected data structure between the source and target systems
Stakes in the project management
Many moving targets to aim at
• Constantly evolving CRM application metadata
• Frequent changes to integration/migration requirements
Technical complexities
• Many intricate details when working with Microsoft Dynamics 365/CRM API
• Web Service Interfaces are generally slow, getting to the right performance level can be a significant challenge
Planning
Strategize, Identify, and Plan
Migrate vs. In-Place Upgrades
In-Place Upgrade
Benefits
• Usually the preferred upgrade methodology if upgrading from a previous version
• All historical trace is brought over, including the original createdby, createdon,
modifiedby, modifiedon, etc.
• All relationships are carried over, without having to work through the relationship
tree in the case of using a data migration approach
• No data migration required
Drawbacks
• The number of hops can be extraordinary (i.e. an upgrade from v3 to Dynamics
365)
CRM 3.0 -> CRM 4.0 -> CRM 2011 -> CRM 2011 Update Rollup 6 -> CRM Latest
UR -> CRM 2013 -> CRM 2013 SP1 -> CRM 2013 Latest SP -> CRM 2015 ->
CRM 2016 -> Dynamics 365 (v8.2)
• The downtime can be significant due to the number of hops to go through
• There are some db upgrades during the process which can take a very long time
due to the significant schema changes
• Currently only possible for on-premise
• Direct DB Import support might be possible in the future for Dynamics 365 Online.
• It is not guaranteed that every step will run successfully and smoothly (yes in
most cases)
Migration
Usage scenarios and benefits
• Support a completely remodeling/refactoring of
the application without having to be tied up to
the original designs that may be flawed
• Organization restructuring, merge/acquisition or
spinning off
• Can avoid the lengthy in-place upgrade
process which may not be always a guaranteed
success
• Maximum flexibility in designing the new
application model
Drawbacks
• It is a challenge to keep all the historical trace –
createdby, createdon, modifiedby, modifiedon
• The data load has to respect the relationship
dependency and migrate in a proper order
• A full-scale migration without a proper tool can
be extraordinarily difficult.
Writing to CRM database directly is simply not an option
Writing to CRM database can be very tempting, but it is very dangerous
• It can break data integrity.
• It can cause undesired application behaviors - such behaviors may not
surface right away.
• Breach your CRM data security model.
• Potentially expose your system to SQL injections.
• Void your product warranty with Microsoft.
Don’t ever try to write to CRM database directly at any time!
• It’s the law!
• Make sure that this is made clear to your new CRM developers.
What are the options?
Build your own
Custom migration/integration development using CRM SDK
Drawbacks
• Resource intensive
• Many intricate details to deal with
• Creating a solution that is scalable can be a challenge
• It is not guaranteed to be a cost effective solution (most likely not)
CRM Import Data Wizard
• Designed for self-served data import
• Comes with many limitations in the area of lookup reference, error handling, troubleshooting, scheduling, etc.
ETL Tool (Commercial or Free)
Options
• Informatica
• Scribe
• Microsoft SQL Server Integration Services (SSIS) along with a third-party connector
• Many other alternative ETL tools
Problems or drawbacks
• Learning curve
• Licensing cost (if any)
How to plan for a successful migration?
• Identify your data sources
• Identify key stakeholders
• Define the scope
• Start with documented
business requirements
• Look for opportunities to fix
legacy design issues
• Pre-migrate and test before the final
production run
• Make sure key stakeholders are
involved
• Ensure key milestones are clearly
communicated to the team including
the downtime planned
• Follow up with post-migration
validation focusing on user
experience
• Create a team with
competent technical
resources including support
from business stakeholders
• Choose the migration
software and technology
• Build a repeatable and
modular process
• Establish a baseline
infrastructure to support
the load
Plan
Prepare
Development Migrate
• Develop the mapping from source
to the target system
• Document the ETL process
• Fine-tune the performance
• Validate, validate, and validate
How to evaluate the solution to use?
Scalability
• How does the solution scale? Horizontally, Vertically?
• Does the solution support multi-threading? What about bulk data load API (ExecuteMultiple)? A combination of both?
• Can the solution fully leverage system resources available?
Flexibility and Easy of Use
• How easy to get started with the solution? What kind of learning curve does it require for a Business Analyst? A developer?
• Any support of dynamic runtime values?
• How easy is it to create a formula or expression?
Robustness and Feature-richness
• How does the solution handle error situations? Any centralized job execution log?
• Any strategies to work around intermittent errors?
• Does the solution handle all the special cases, statecode, statuscode, mulit-target lookup, support of using either integer value or label values for OptionSet fields?
• Does the solution support working with N:N relationship entities, principalobjectaccess? And support of close entities (opportunityclose, quoteclose, orderclose, incidentresolution) at the time when the primary
entity is closed?
• Support of record fidelity (createdby, modifiedby fields)?
• How easy is it to work with lookup fields? Any chance to pass in a text value and the solution figures out the ID to be used for the lookup fields?
Cost of Ownership
• One time fee or evenly distributed subscription model
• Subsequent maintenance for the perpetual license model
Support
• How easy to find an answer for a particular error of the solution?
• How responsive it is the team to respond to technical issues? Any presence of the team in social media channels (Dynamics Communities, MSDN Forum, Twitter, LinkedIn, Facebook)
• Any additional ticket based cost?
• What about data governance and privacy?
Data Integrity
Working with multi-target lookup fields
CRM lookup field value is made up of two parts
• The lookup entity’s name
• The lookup record’s primary key (GUID)
Missing one can cause the lookup to fail!
• SDK Code
• SSIS Mapping for ownerid field
Sorting out the relationship dependency
The problems
• CRM application is all about relationship.
• Many CRM entities have a circular reference.
• Writing to CRM without a proper sequence will make it inefficient and can
cause data integrity issue.
Giving an example
• account entity has a parentaccountid field that points to account entity itself
• account entity has a primarycontactid field that points to contact entity
• contact entity has a parentcustomerid field that can point to either account,
or contact entity
Solution: Use multiple passes in an efficient manner
• Migrate account entity without mapping the primarycontactid and parentaccountid fields
• Migrate contact entity
• For those contact records that has an empty parentcustomerid, or a parentcustomerid that points to account, migrate
with the parentcustomerid mapped
• For those contact records that has a parentcustomerid that points to contact entity itself, migrate without having the
parentcustomerid mapped, followed by an update task to update parentcustomerid field
• Update parentaccountid and primarycontactid for account if either of the fields is not empty.
Working with CRM lookup fields can be painful
The problems
• CRM stores all foreign keys with GUID values
• You don’t always have the GUID value for the lookup records
• Figuring out the GUID values based on an alternate business key values can be painful
Solution: Have an in-place lookup strategy
• The solution takes an input of the lookup business key values (usually text)
• The component should perform a lookup of the value and find out the corresponding record’s primary key (GUID) to
be used for the lookup field.
Avoid self-generated IDs
The problems
• CRM allows to use any primary key values (GUID) that you like
• When using self-generated IDs, they are fully randomized
• When the randomized GUIDs are saved, they can make the data storage very fragmented which can affect your CRM
application query performance down the road
Solution: Have an in-place lookup strategy
• Leave the ID generation to the platform.
• The only exception would be data migration – in which case you can carry over the IDs from your legacy CRM
system.
The Dangers of Guid.NewGuid();
• http://blogs.msdn.com/b/crminthefield/archive/2015/01/19/the-dangers-of-guid-newguid.aspx
Audit field carry over
The problems
CRM does not have a way to write to those audit fields directly
• createdby
• createdon
• modifiedby
• modifiedon
The solution
• To write to createdby, modifiedby fields, you will have to use
service proxy impersonation.
NOTE: Keep in mind, createdby can only be set at the time of creation, similarly modifiedby can only be set through UpdateRequest.
• To write to createdon, you can simply write to overriddencreatedon field.
• Writing to modifiedon field directly is not supported.
var serviceProxy = new OrganizationServiceProxy();
serviceProxy.CallerId = createByUserId;
serviceProxy.Execute(createRequest);
entity["overriddencreatedon"] = (DateTime)createOnValue;
Close CRM entity records with a reason
The problem:
• A few CRM entities have an associated close entity which can be used to record the reason why primary entity
records were disable/closed.
The Solution:
Primary entity Close entity
incident incidentresolution
opportunity opportunityclose
quote quoteclose
salesorder orderclose
TheProgrammaticapproach
var opportunityCloseEntity = new Entity("opportunityclose")
{
["opportunityid"] = new EntityReference("opportunity", opportuntityId),
["subject"] = (string)subject,
["actualrevenue"] = new Money((decimal)actualRevenue),
};
var winOpportunityRequest = new WinOpportunityRequest
{
OpportunityClose = opportunityCloseEntity,
Status = new OptionSetValue(newStatus),
};
serviceProxy.Execute(winOpportunityRequest);
TheETLapproach(SSIS)
Data Quality
Perfect timing for data quality assessment
The problems
• Poor data quality affects user adoption
• "Garbage in, garbage out“ stands well in most implementations
Recommendations
Data migration is the perfect timing for a deep review of the current system’s data quality.
• Fix them before bringing the data to the new system
• Sometimes you have to use some special techniques such as data normalization, in some cases, maybe de-
normalization if necessary.
It is also the perfect time for creating a set of rules or guidance to ensure future data quality going forward.
• User entered data
• Data brought in using a data integration software (ETL process)
Data Duplication
The problems:
• Duplicates happen and they can be a pain to deal with
• Duplicate data can significantly reduce team productivity
• Depending on the number of duplicates in the system, eliminating
the duplicates can be a significant effort without a productive tool
The solutions:
• In-App Duplicate Detection
• In CRM view, launch the Detect Duplicates function.
• Define the characteristics of the duplicate detection job and create the
job.
• Wait for the job to complete.
• Open the job details and work with the identified duplicates one at a time
(the top set)
• The ETL approach (SSIS)
Error Handling
All errors happen for a reason
Business logic errors:
• Usually caused by some server side business logics.
• Can be fixed by ensuring input data to satisfy the business logics (such as required fields – the input should not be empty).
Data errors:
• Usually caused by wrong data type or incorrect data length or range.
• Can be fixed by ensuring the right data type with correct data length and range.
Intermittent errors:
• Happens intermittently.
• Usually caused by temporary network glitches or temporary server outage.
• A retry of the same service call can be attempted to help recover from the
error without having to stop the job.
Authentication and permission errors
• Make sure the connection user can connect through web UI
• Make sure the user has right permissions in the system
Service timeout errors:
• When timeout error happens, there is a good chance that you have a design issue with your application (if the timeout setting is not too short)
• For reading, you would want to optimize your FetchXML query.
• For writing, you would want to use a smaller batch size. You would also want to
take cascading rules into consideration.
• Increase Timeout setting with the service proxy.
Unhandled platform errors:
• Such as
• Generic SQL error
• Unexpected error
• Internal Server Error
• The only way to troubleshoot unhandled platform errors is to turn on CRM trace log
orgServiceProxy.Timeout = timeout;
orgServiceProxy.ServiceConfiguration.CurrentServiceEndpoint.Binding.CloseTimeout = timeout;
orgServiceProxy.ServiceConfiguration.CurrentServiceEndpoint.Binding.OpenTimeout = timeout;
orgServiceProxy.ServiceConfiguration.CurrentServiceEndpoint.Binding.ReceiveTimeout = timeout;
orgServiceProxy.ServiceConfiguration.CurrentServiceEndpoint.Binding.SendTimeout = timeout;
Performance Tuning
Start with something but look at the big picture
Performance tuning is a complex topic
• There are many things that can affect your data migration/integration
performance
• Writing to CRM is slow due to the nature of web service operations
How to get it right?
All such optimizations are built-in for SSIS Integration Toolkit
Minimize the number of service calls
When creating
• When statecode/statuscode are involved, if the provided statecode is the default one, you can save a service call
• The ownerid can be posted with the same service call of the CreateRequest
• If the current user is the owner, you can drop the field, it will perform faster
When updating
using (var service = new OrganizationService(crmConnection))
{
Entity account = new Entity("account");
account["accountid"] = new Guid("xxxxx-xxxx");
account["name"] = "Adventure Works Inc.";
account["creditlimit"] = new Money(100000);
account["statecode"] = new OptionSetValue(1); //inactive
account["statuscode"] = new OptionSetValue(2); //inactive
account["ownerid"] = new EntityReference { LogicalName = "team", Id = new Guid(“xxxxx-xxxx") };
var request = new UpdateRequest() { Target = account };
var response = (UpdateResponse)service.Execute(request);
}
Use db indexes when necessary
Create db indexes when
• The migration job involves filtering query during the process
• This applies to the situation that you need to perform Update or Upsert based on a natural key
How?
• For CRM on-prem, db indexes can be created using SSMS directly
• Alternatively, there are a couple other options available if it needs
to be done within CRM application
• Create an alternate key (requires CRM 2015 Update 1 or above) –
this requires uniqueness
• Add the column to the entity’s Quick Find view’s Find Columns
• Use the Data Performance optimization wizard available by
going to Settings > Administration > Data Performance.
What else should I know about db indexes?
• Having too many DB indexes can slow down your database write operation, don’t overuse it
• For those in-app options, there is usually a delay before the index is actually being created
• When creating indexes through SSMS, make sure the index follows certain naming convention and have it
documented
• Avoid firing such events that might create db indexes during business hours – as it can bog down your system
Avoid submitting unchanged fields
Why?
• Smaller SOAP message, which in turn results in less networking time
• Can avoid firing unnecessary CRM plugins/workflows or auditing that are registered for the fields
How to achieve this?
Mind your network conditions
CRM Diagnostics Tool
• http://CrmServer/tools/diagnostics/diag.aspx
Ideally the latency should be as low
as possible
• Make sure the integration server (or workstation)
is close to the CRM Server
• A poor infrastructure can result in high network
latency, even the servers are close to each other
Performance Impact from Plugins/Workflows
The impact
• CRM plugins/workflows will have some performance impact depending on how they were designed.
How to minimize the impact?
• Disable Plugins/workflows for initial data migration if possible
• If using SSIS, enable "Ignore Unchanged Fields" option in CRM destination component
• Avoid any loop process within CRM plugins/workflows if possible at all
• When registering a plugin step, make sure to use Attribute Filtering option.
• Design plugins/workflows to run asynchronously
as much as possible, and have a capable
asynchronous processing server.
Leverage CRM Bulk Data API
CRM Bulk Data Load API
• Helps improve data migration/integration performance
• Particularly when the networking latency is high
• Instead of sending one request at a time, it sends multiple
requests within the same service call
• When working with attachment entities
(activitymimeattachment, annotation), you want to be a little
conservative (1 to be safe avoid potential server busy errors)
TheETLapproach(SSIS)
var requestPackage = new ExecuteMultipleRequest
{
Settings = new ExecuteMultipleSettings
{
ContinueOnError = false,
ReturnResponses = true
},
Requests = new OrganizationRequestCollection(new[] { createRequest1, createRequest2 })
};
var executeMultipleResults = (ExecuteMultipleResponse)_serviceProxy.Execute(requestPackage);
Load in Parallel ( Multi-threaded writing)
With a proper multi-threaded writing support, you can achieve a much greater performance with better flexibility
Choose the right combination of Batch Size and Multithreaded Writing
On-Premise
• The number of threads can be as high as your CRM/database server can sustain the load
• Start with 20 and watch the server resource utilization, then decide whether to increase or decrease the number
• The Batch Size can be 100-200 for typical CRM entities
• Use a smaller number if working with an attachment entity
CRM Online
ExecuteMultiple requests are throttled. At most 2 concurrent ExecuteMultiple requests allowed per
organization.
• Use a batch size of 100, and set the number of concurrent threads to 2.
• Use a batch size of 10 (or lower) and then use a relatively high number of concurrent threads (start from 20
and then decide to increase or decrease depending on how the performance goes
• Raise a request with Microsoft Dynamics 365 support team to have the throttling lifted, then you can use a
higher number of Batch Size along with the number of threads you have achieved a good result.
Multi-threaded vs. Single-threaded writing
Single Thread vs Multithreading
Writing to CRM 100,000 records, 100 batch size, using a
Create action with a total of 5 fields
Single Thread
100,000 records in 4761 seconds
21 records/second
Multithreading (20x threads)
100,000 records in 425 seconds
235 records/second
11 times faster when using multithreaded writing
The performance testing was done in a laptop with everything installed in the same box, the processor was heavily
throttled, it should perform a lot better with a real production system
It does not have to be one big BANG
There are many risks with the Big-Bang approach
• Limited time window
• Lack of thorough validations
What are the options?
Create a migration process
that can bring in changes
incrementally
Pilot run
Run legacy system
in parallel and bring
in more changes as
needed
Final delta run
Design the package to
use Upsert operation
with "Ignore Unchanged
Fields" option enabled
Do a pilot run to get the
majority data in to the
target system – which
probably takes the most
time
• Run the legacy system and
new system in parallel and
validate the data in new
system
• As the validation
processes, do one (or
more) delta run to get
incremental changes in the
new system
Once the validation is
done, do a final delta run
to get all the delta
changes into the final
production system
Resources
• White Papers
• Performance Benchmark for Microsoft Dynamics CRM Online 2016 Update 1
• http://download.microsoft.com/download/D/6/6/D66E61BA-3D18-49E8-B042-8434E64FAFCA/PerformanceBenchmarkforCRMOnline2016Update1.pdf
• Microsoft Dynamics CRM 2016 Service Pack 1 Performance Benchmark on Azure Infrastructure as a Service (IaaS)
• https://community.dynamics.com/enterprise/b/365teamblog/archive/2016/11/03/white-paper-microsoft-dynamics-crm-2016-service-pack-1-performance-benchmark-on-azure-
infrastructure-as-a-service-iaas
• Microsoft Dynamics CRM 2015 White Papers & Technical Documentation
• http://blogs.msdn.com/b/crminthefield/archive/2015/01/05/microsoft-dynamics-crm-2015-white-papers-amp-technical-documentation.aspx
• Optimizing and maintaining the performance of a Microsoft Dynamics CRM 2011 server infrastructure
• http://www.microsoft.com/en-ca/download/details.aspx?id=27139
• Sample Migration Package
• Migration Starter Pack (based on SSIS Integration Toolkit for Microsoft Dynamics 365)
• http://www.kingswaysoft.com/blog/2016/09/16/Announcing-Migration-Starter-Pack-for-CRM-Online-and-CRM-On-Premise
• Blog Posts
• http://www.kingswaysoft.com/blog/2016/09/16/Migrating-CRM-Activity-Entities-Properly
• http://www.kingswaysoft.com/blog/2017/03/31/Migrate-CRM-close-or-resolution-entity-records-in-your-ETL-process
• http://www.kingswaysoft.com/blog/2016/11/04/Find-and-Merge-CRM-Duplicates-With-Ease-Using-SSIS-Productivity-Pack
• Best Practices
• Best practices for developing with Microsoft Dynamics 365
• https://msdn.microsoft.com/en-us/library/gg509027.aspx

More Related Content

What's hot

Data Migration Steps PowerPoint Presentation Slides
Data Migration Steps PowerPoint Presentation Slides Data Migration Steps PowerPoint Presentation Slides
Data Migration Steps PowerPoint Presentation Slides SlideTeam
 
Release Management
Release Management Release Management
Release Management Vyom Labs
 
Hypercare Support Model.pptx
Hypercare Support Model.pptxHypercare Support Model.pptx
Hypercare Support Model.pptxUrielUgalde2
 
Getting data into microsoft dynamics crm faster
Getting data into microsoft dynamics crm fasterGetting data into microsoft dynamics crm faster
Getting data into microsoft dynamics crm fasterDaniel Cai
 
Understanding Multitenancy and the Architecture of the Salesforce Platform
Understanding Multitenancy and the Architecture of the Salesforce PlatformUnderstanding Multitenancy and the Architecture of the Salesforce Platform
Understanding Multitenancy and the Architecture of the Salesforce PlatformSalesforce Developers
 
Salesforce API: Salesforce Console Deep Dive
Salesforce API: Salesforce Console Deep DiveSalesforce API: Salesforce Console Deep Dive
Salesforce API: Salesforce Console Deep DiveSalesforce Developers
 
Dreamforce14 Multi Org Collaboration Architecture
Dreamforce14  Multi Org Collaboration ArchitectureDreamforce14  Multi Org Collaboration Architecture
Dreamforce14 Multi Org Collaboration ArchitectureRichard Clark
 
Importance of Solution Architecture in Automation
Importance of Solution Architecture in AutomationImportance of Solution Architecture in Automation
Importance of Solution Architecture in AutomationCristina Vidu
 
Checklist for successful salesforce implementation
Checklist for successful salesforce implementationChecklist for successful salesforce implementation
Checklist for successful salesforce implementationCloud Analogy
 
UiPath Test Manager Connect Webinar UiPath Planview.pptx
UiPath Test Manager Connect Webinar UiPath Planview.pptxUiPath Test Manager Connect Webinar UiPath Planview.pptx
UiPath Test Manager Connect Webinar UiPath Planview.pptxRohit Radhakrishnan
 
Data Migration Strategies PowerPoint Presentation Slides
Data Migration Strategies PowerPoint Presentation SlidesData Migration Strategies PowerPoint Presentation Slides
Data Migration Strategies PowerPoint Presentation SlidesSlideTeam
 
Agile Testing Strategy
Agile Testing StrategyAgile Testing Strategy
Agile Testing Strategytharindakasun
 
First Steps to Salesforce Release Management & DevOps [Salesforce User Group,...
First Steps to Salesforce Release Management & DevOps [Salesforce User Group,...First Steps to Salesforce Release Management & DevOps [Salesforce User Group,...
First Steps to Salesforce Release Management & DevOps [Salesforce User Group,...Anna Loughnan Colquhoun
 
Testing capability ppt
Testing capability pptTesting capability ppt
Testing capability pptanilreddyqa
 
“Salesforce Multi-tenant architecture”,
“Salesforce Multi-tenant architecture”,“Salesforce Multi-tenant architecture”,
“Salesforce Multi-tenant architecture”,Manik Singh
 
15 Tips on Salesforce Data Migration - Naveen Gabrani & Jonathan Osgood
15 Tips on Salesforce Data Migration - Naveen Gabrani & Jonathan Osgood15 Tips on Salesforce Data Migration - Naveen Gabrani & Jonathan Osgood
15 Tips on Salesforce Data Migration - Naveen Gabrani & Jonathan OsgoodSalesforce Admins
 

What's hot (20)

Data Migration Steps PowerPoint Presentation Slides
Data Migration Steps PowerPoint Presentation Slides Data Migration Steps PowerPoint Presentation Slides
Data Migration Steps PowerPoint Presentation Slides
 
Testing Centre Of Excellence From AppLabs
Testing Centre Of Excellence From AppLabsTesting Centre Of Excellence From AppLabs
Testing Centre Of Excellence From AppLabs
 
Release Management
Release Management Release Management
Release Management
 
Hypercare Support Model.pptx
Hypercare Support Model.pptxHypercare Support Model.pptx
Hypercare Support Model.pptx
 
Tosca explained
Tosca explainedTosca explained
Tosca explained
 
Getting data into microsoft dynamics crm faster
Getting data into microsoft dynamics crm fasterGetting data into microsoft dynamics crm faster
Getting data into microsoft dynamics crm faster
 
UiPath Devops.pptx
UiPath Devops.pptxUiPath Devops.pptx
UiPath Devops.pptx
 
Understanding Multitenancy and the Architecture of the Salesforce Platform
Understanding Multitenancy and the Architecture of the Salesforce PlatformUnderstanding Multitenancy and the Architecture of the Salesforce Platform
Understanding Multitenancy and the Architecture of the Salesforce Platform
 
Salesforce API: Salesforce Console Deep Dive
Salesforce API: Salesforce Console Deep DiveSalesforce API: Salesforce Console Deep Dive
Salesforce API: Salesforce Console Deep Dive
 
Dreamforce14 Multi Org Collaboration Architecture
Dreamforce14  Multi Org Collaboration ArchitectureDreamforce14  Multi Org Collaboration Architecture
Dreamforce14 Multi Org Collaboration Architecture
 
Importance of Solution Architecture in Automation
Importance of Solution Architecture in AutomationImportance of Solution Architecture in Automation
Importance of Solution Architecture in Automation
 
Checklist for successful salesforce implementation
Checklist for successful salesforce implementationChecklist for successful salesforce implementation
Checklist for successful salesforce implementation
 
UiPath Test Manager Connect Webinar UiPath Planview.pptx
UiPath Test Manager Connect Webinar UiPath Planview.pptxUiPath Test Manager Connect Webinar UiPath Planview.pptx
UiPath Test Manager Connect Webinar UiPath Planview.pptx
 
Data Migration Strategies PowerPoint Presentation Slides
Data Migration Strategies PowerPoint Presentation SlidesData Migration Strategies PowerPoint Presentation Slides
Data Migration Strategies PowerPoint Presentation Slides
 
RPA in a Day
RPA in a Day RPA in a Day
RPA in a Day
 
Agile Testing Strategy
Agile Testing StrategyAgile Testing Strategy
Agile Testing Strategy
 
First Steps to Salesforce Release Management & DevOps [Salesforce User Group,...
First Steps to Salesforce Release Management & DevOps [Salesforce User Group,...First Steps to Salesforce Release Management & DevOps [Salesforce User Group,...
First Steps to Salesforce Release Management & DevOps [Salesforce User Group,...
 
Testing capability ppt
Testing capability pptTesting capability ppt
Testing capability ppt
 
“Salesforce Multi-tenant architecture”,
“Salesforce Multi-tenant architecture”,“Salesforce Multi-tenant architecture”,
“Salesforce Multi-tenant architecture”,
 
15 Tips on Salesforce Data Migration - Naveen Gabrani & Jonathan Osgood
15 Tips on Salesforce Data Migration - Naveen Gabrani & Jonathan Osgood15 Tips on Salesforce Data Migration - Naveen Gabrani & Jonathan Osgood
15 Tips on Salesforce Data Migration - Naveen Gabrani & Jonathan Osgood
 

Similar to Data Migration Done Right for Microsoft Dynamics 365/CRM

Jean-René Roy: Integrate Legacy App with Dynamic CRM
Jean-René Roy: Integrate Legacy App with Dynamic CRMJean-René Roy: Integrate Legacy App with Dynamic CRM
Jean-René Roy: Integrate Legacy App with Dynamic CRMMSDEVMTL
 
Enterprise Data Integration for Microsoft Dynamics CRM
Enterprise Data Integration for Microsoft Dynamics CRMEnterprise Data Integration for Microsoft Dynamics CRM
Enterprise Data Integration for Microsoft Dynamics CRMDaniel Cai
 
Webinar: Successful Data Migration to Microsoft Dynamics 365 CRM | InSync
Webinar: Successful Data Migration to Microsoft Dynamics 365 CRM | InSyncWebinar: Successful Data Migration to Microsoft Dynamics 365 CRM | InSync
Webinar: Successful Data Migration to Microsoft Dynamics 365 CRM | InSyncAPPSeCONNECT
 
CRM Integration Options–Scribe, SmartConnect, Microsoft Connector. What's the...
CRM Integration Options–Scribe, SmartConnect, Microsoft Connector. What's the...CRM Integration Options–Scribe, SmartConnect, Microsoft Connector. What's the...
CRM Integration Options–Scribe, SmartConnect, Microsoft Connector. What's the...BDO IT Solutions
 
Pairing DNN with a Microsoft ERP for Maximum Business Impact
Pairing DNN with a Microsoft ERP for Maximum Business ImpactPairing DNN with a Microsoft ERP for Maximum Business Impact
Pairing DNN with a Microsoft ERP for Maximum Business ImpactDrew Skwiers-Koballa
 
SPSChicagoBurbs 2019 - What is CDM and CDS?
SPSChicagoBurbs 2019 - What is CDM and CDS?SPSChicagoBurbs 2019 - What is CDM and CDS?
SPSChicagoBurbs 2019 - What is CDM and CDS?Nicolas Georgeault
 
Best Practices for a Successful SharePoint Migration or Upgrade to the Cloud
Best Practices for a Successful SharePoint Migration or Upgrade to the CloudBest Practices for a Successful SharePoint Migration or Upgrade to the Cloud
Best Practices for a Successful SharePoint Migration or Upgrade to the CloudPerficient, Inc.
 
Leading CRM Solutions – An Overview and Comparison
Leading CRM Solutions – An Overview and ComparisonLeading CRM Solutions – An Overview and Comparison
Leading CRM Solutions – An Overview and ComparisonNet at Work
 
Productionising Machine Learning Models
Productionising Machine Learning ModelsProductionising Machine Learning Models
Productionising Machine Learning ModelsTash Bickley
 
Webinar: 5 Clear Steps to Get Your Nonprofit Cloud Ready - 2018-5-31
Webinar: 5 Clear Steps to Get Your Nonprofit Cloud Ready - 2018-5-31Webinar: 5 Clear Steps to Get Your Nonprofit Cloud Ready - 2018-5-31
Webinar: 5 Clear Steps to Get Your Nonprofit Cloud Ready - 2018-5-31TechSoup
 
Are we there Yet?? (The long journey of Migrating from close source to opens...
Are we there Yet?? (The long journey of Migrating from close source to opens...Are we there Yet?? (The long journey of Migrating from close source to opens...
Are we there Yet?? (The long journey of Migrating from close source to opens...Marco Tusa
 
Microsoft Dynamics CRM Technical Training for Dicker Data Resellers
Microsoft Dynamics CRM Technical Training for Dicker Data ResellersMicrosoft Dynamics CRM Technical Training for Dicker Data Resellers
Microsoft Dynamics CRM Technical Training for Dicker Data ResellersDavid Blumentals
 
Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.
Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.
Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.Microsoft Décideurs IT
 
Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.
Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.
Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.Microsoft Technet France
 
How to Manage Data Integration within Microsoft Dynamics
How to Manage Data Integration within Microsoft DynamicsHow to Manage Data Integration within Microsoft Dynamics
How to Manage Data Integration within Microsoft DynamicsGlobalLogic Ukraine
 
Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013
Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013
Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013Emtec Inc.
 
Melb nov17 Virtual Entity and auto number
Melb nov17 Virtual Entity and auto numberMelb nov17 Virtual Entity and auto number
Melb nov17 Virtual Entity and auto numberAndre Margono
 
Architecture of Dynamics CRM with Office 365 and Azure
Architecture of Dynamics CRM with Office 365 and AzureArchitecture of Dynamics CRM with Office 365 and Azure
Architecture of Dynamics CRM with Office 365 and AzurePedro Azevedo
 
Choosing the Right Business Intelligence Tools for Your Data and Architectura...
Choosing the Right Business Intelligence Tools for Your Data and Architectura...Choosing the Right Business Intelligence Tools for Your Data and Architectura...
Choosing the Right Business Intelligence Tools for Your Data and Architectura...Victor Holman
 
VMworld 2013: Building the Management Stack for Your Software Defined Data Ce...
VMworld 2013: Building the Management Stack for Your Software Defined Data Ce...VMworld 2013: Building the Management Stack for Your Software Defined Data Ce...
VMworld 2013: Building the Management Stack for Your Software Defined Data Ce...VMworld
 

Similar to Data Migration Done Right for Microsoft Dynamics 365/CRM (20)

Jean-René Roy: Integrate Legacy App with Dynamic CRM
Jean-René Roy: Integrate Legacy App with Dynamic CRMJean-René Roy: Integrate Legacy App with Dynamic CRM
Jean-René Roy: Integrate Legacy App with Dynamic CRM
 
Enterprise Data Integration for Microsoft Dynamics CRM
Enterprise Data Integration for Microsoft Dynamics CRMEnterprise Data Integration for Microsoft Dynamics CRM
Enterprise Data Integration for Microsoft Dynamics CRM
 
Webinar: Successful Data Migration to Microsoft Dynamics 365 CRM | InSync
Webinar: Successful Data Migration to Microsoft Dynamics 365 CRM | InSyncWebinar: Successful Data Migration to Microsoft Dynamics 365 CRM | InSync
Webinar: Successful Data Migration to Microsoft Dynamics 365 CRM | InSync
 
CRM Integration Options–Scribe, SmartConnect, Microsoft Connector. What's the...
CRM Integration Options–Scribe, SmartConnect, Microsoft Connector. What's the...CRM Integration Options–Scribe, SmartConnect, Microsoft Connector. What's the...
CRM Integration Options–Scribe, SmartConnect, Microsoft Connector. What's the...
 
Pairing DNN with a Microsoft ERP for Maximum Business Impact
Pairing DNN with a Microsoft ERP for Maximum Business ImpactPairing DNN with a Microsoft ERP for Maximum Business Impact
Pairing DNN with a Microsoft ERP for Maximum Business Impact
 
SPSChicagoBurbs 2019 - What is CDM and CDS?
SPSChicagoBurbs 2019 - What is CDM and CDS?SPSChicagoBurbs 2019 - What is CDM and CDS?
SPSChicagoBurbs 2019 - What is CDM and CDS?
 
Best Practices for a Successful SharePoint Migration or Upgrade to the Cloud
Best Practices for a Successful SharePoint Migration or Upgrade to the CloudBest Practices for a Successful SharePoint Migration or Upgrade to the Cloud
Best Practices for a Successful SharePoint Migration or Upgrade to the Cloud
 
Leading CRM Solutions – An Overview and Comparison
Leading CRM Solutions – An Overview and ComparisonLeading CRM Solutions – An Overview and Comparison
Leading CRM Solutions – An Overview and Comparison
 
Productionising Machine Learning Models
Productionising Machine Learning ModelsProductionising Machine Learning Models
Productionising Machine Learning Models
 
Webinar: 5 Clear Steps to Get Your Nonprofit Cloud Ready - 2018-5-31
Webinar: 5 Clear Steps to Get Your Nonprofit Cloud Ready - 2018-5-31Webinar: 5 Clear Steps to Get Your Nonprofit Cloud Ready - 2018-5-31
Webinar: 5 Clear Steps to Get Your Nonprofit Cloud Ready - 2018-5-31
 
Are we there Yet?? (The long journey of Migrating from close source to opens...
Are we there Yet?? (The long journey of Migrating from close source to opens...Are we there Yet?? (The long journey of Migrating from close source to opens...
Are we there Yet?? (The long journey of Migrating from close source to opens...
 
Microsoft Dynamics CRM Technical Training for Dicker Data Resellers
Microsoft Dynamics CRM Technical Training for Dicker Data ResellersMicrosoft Dynamics CRM Technical Training for Dicker Data Resellers
Microsoft Dynamics CRM Technical Training for Dicker Data Resellers
 
Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.
Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.
Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.
 
Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.
Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.
Des serveurs créés pour vos usages specifiques, vous en avez reve HP l'a fait.
 
How to Manage Data Integration within Microsoft Dynamics
How to Manage Data Integration within Microsoft DynamicsHow to Manage Data Integration within Microsoft Dynamics
How to Manage Data Integration within Microsoft Dynamics
 
Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013
Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013
Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013
 
Melb nov17 Virtual Entity and auto number
Melb nov17 Virtual Entity and auto numberMelb nov17 Virtual Entity and auto number
Melb nov17 Virtual Entity and auto number
 
Architecture of Dynamics CRM with Office 365 and Azure
Architecture of Dynamics CRM with Office 365 and AzureArchitecture of Dynamics CRM with Office 365 and Azure
Architecture of Dynamics CRM with Office 365 and Azure
 
Choosing the Right Business Intelligence Tools for Your Data and Architectura...
Choosing the Right Business Intelligence Tools for Your Data and Architectura...Choosing the Right Business Intelligence Tools for Your Data and Architectura...
Choosing the Right Business Intelligence Tools for Your Data and Architectura...
 
VMworld 2013: Building the Management Stack for Your Software Defined Data Ce...
VMworld 2013: Building the Management Stack for Your Software Defined Data Ce...VMworld 2013: Building the Management Stack for Your Software Defined Data Ce...
VMworld 2013: Building the Management Stack for Your Software Defined Data Ce...
 

Recently uploaded

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 

Recently uploaded (20)

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 

Data Migration Done Right for Microsoft Dynamics 365/CRM

  • 1. Data Migration Done Right for Microsoft Dynamics 365/CRM Daniel Cai Principal Developer, KingswaySoft Microsoft Business Solutions MVP #CollaborateCanada
  • 2. Meet the Presenter Daniel Cai 9 Years of development experience with Microsoft Dynamics 365/CRM, with primary interests in • CRM SDK Programming • Large-scale ETL development • Performance Tuning • Anything that makes integration easier and more approachable About KingswaySoft A leading provider of data integration solutions for Microsoft Dynamics 365 software and beyond, with two primary focuses • Connectivity • Productivity
  • 3. Disclaimer Demo Code Demo code is built on top of Microsoft Dynamics 365 SDK • I assume some basic SDK knowledge and C# coding skills • Credit goes to the community and the SDK team Sample ETL Process Sample ETL Process is built on top of SSIS Integration Toolkit for exhibition purpose • The intention is to demonstrate the technical approach rather than advocating a particular product • More details of SSIS Integration Toolkit can be found at the following URL http://www.kingswaysoft.com/products/ssis-integration-toolkit-for-microsoft-dynamics-365 • The approach demonstrated should be transferrable to any other third-party or home-grown solutions in a similar fashion, as applicable
  • 5. What are the challenges? Complex data migration requirements • Constantly evolving enterprise application landscape • Disconnected data structure between the source and target systems Stakes in the project management Many moving targets to aim at • Constantly evolving CRM application metadata • Frequent changes to integration/migration requirements Technical complexities • Many intricate details when working with Microsoft Dynamics 365/CRM API • Web Service Interfaces are generally slow, getting to the right performance level can be a significant challenge
  • 7. Migrate vs. In-Place Upgrades In-Place Upgrade Benefits • Usually the preferred upgrade methodology if upgrading from a previous version • All historical trace is brought over, including the original createdby, createdon, modifiedby, modifiedon, etc. • All relationships are carried over, without having to work through the relationship tree in the case of using a data migration approach • No data migration required Drawbacks • The number of hops can be extraordinary (i.e. an upgrade from v3 to Dynamics 365) CRM 3.0 -> CRM 4.0 -> CRM 2011 -> CRM 2011 Update Rollup 6 -> CRM Latest UR -> CRM 2013 -> CRM 2013 SP1 -> CRM 2013 Latest SP -> CRM 2015 -> CRM 2016 -> Dynamics 365 (v8.2) • The downtime can be significant due to the number of hops to go through • There are some db upgrades during the process which can take a very long time due to the significant schema changes • Currently only possible for on-premise • Direct DB Import support might be possible in the future for Dynamics 365 Online. • It is not guaranteed that every step will run successfully and smoothly (yes in most cases) Migration Usage scenarios and benefits • Support a completely remodeling/refactoring of the application without having to be tied up to the original designs that may be flawed • Organization restructuring, merge/acquisition or spinning off • Can avoid the lengthy in-place upgrade process which may not be always a guaranteed success • Maximum flexibility in designing the new application model Drawbacks • It is a challenge to keep all the historical trace – createdby, createdon, modifiedby, modifiedon • The data load has to respect the relationship dependency and migrate in a proper order • A full-scale migration without a proper tool can be extraordinarily difficult.
  • 8. Writing to CRM database directly is simply not an option Writing to CRM database can be very tempting, but it is very dangerous • It can break data integrity. • It can cause undesired application behaviors - such behaviors may not surface right away. • Breach your CRM data security model. • Potentially expose your system to SQL injections. • Void your product warranty with Microsoft. Don’t ever try to write to CRM database directly at any time! • It’s the law! • Make sure that this is made clear to your new CRM developers.
  • 9. What are the options? Build your own Custom migration/integration development using CRM SDK Drawbacks • Resource intensive • Many intricate details to deal with • Creating a solution that is scalable can be a challenge • It is not guaranteed to be a cost effective solution (most likely not) CRM Import Data Wizard • Designed for self-served data import • Comes with many limitations in the area of lookup reference, error handling, troubleshooting, scheduling, etc. ETL Tool (Commercial or Free) Options • Informatica • Scribe • Microsoft SQL Server Integration Services (SSIS) along with a third-party connector • Many other alternative ETL tools Problems or drawbacks • Learning curve • Licensing cost (if any)
  • 10. How to plan for a successful migration? • Identify your data sources • Identify key stakeholders • Define the scope • Start with documented business requirements • Look for opportunities to fix legacy design issues • Pre-migrate and test before the final production run • Make sure key stakeholders are involved • Ensure key milestones are clearly communicated to the team including the downtime planned • Follow up with post-migration validation focusing on user experience • Create a team with competent technical resources including support from business stakeholders • Choose the migration software and technology • Build a repeatable and modular process • Establish a baseline infrastructure to support the load Plan Prepare Development Migrate • Develop the mapping from source to the target system • Document the ETL process • Fine-tune the performance • Validate, validate, and validate
  • 11. How to evaluate the solution to use? Scalability • How does the solution scale? Horizontally, Vertically? • Does the solution support multi-threading? What about bulk data load API (ExecuteMultiple)? A combination of both? • Can the solution fully leverage system resources available? Flexibility and Easy of Use • How easy to get started with the solution? What kind of learning curve does it require for a Business Analyst? A developer? • Any support of dynamic runtime values? • How easy is it to create a formula or expression? Robustness and Feature-richness • How does the solution handle error situations? Any centralized job execution log? • Any strategies to work around intermittent errors? • Does the solution handle all the special cases, statecode, statuscode, mulit-target lookup, support of using either integer value or label values for OptionSet fields? • Does the solution support working with N:N relationship entities, principalobjectaccess? And support of close entities (opportunityclose, quoteclose, orderclose, incidentresolution) at the time when the primary entity is closed? • Support of record fidelity (createdby, modifiedby fields)? • How easy is it to work with lookup fields? Any chance to pass in a text value and the solution figures out the ID to be used for the lookup fields? Cost of Ownership • One time fee or evenly distributed subscription model • Subsequent maintenance for the perpetual license model Support • How easy to find an answer for a particular error of the solution? • How responsive it is the team to respond to technical issues? Any presence of the team in social media channels (Dynamics Communities, MSDN Forum, Twitter, LinkedIn, Facebook) • Any additional ticket based cost? • What about data governance and privacy?
  • 13. Working with multi-target lookup fields CRM lookup field value is made up of two parts • The lookup entity’s name • The lookup record’s primary key (GUID) Missing one can cause the lookup to fail! • SDK Code • SSIS Mapping for ownerid field
  • 14. Sorting out the relationship dependency The problems • CRM application is all about relationship. • Many CRM entities have a circular reference. • Writing to CRM without a proper sequence will make it inefficient and can cause data integrity issue. Giving an example • account entity has a parentaccountid field that points to account entity itself • account entity has a primarycontactid field that points to contact entity • contact entity has a parentcustomerid field that can point to either account, or contact entity Solution: Use multiple passes in an efficient manner • Migrate account entity without mapping the primarycontactid and parentaccountid fields • Migrate contact entity • For those contact records that has an empty parentcustomerid, or a parentcustomerid that points to account, migrate with the parentcustomerid mapped • For those contact records that has a parentcustomerid that points to contact entity itself, migrate without having the parentcustomerid mapped, followed by an update task to update parentcustomerid field • Update parentaccountid and primarycontactid for account if either of the fields is not empty.
  • 15. Working with CRM lookup fields can be painful The problems • CRM stores all foreign keys with GUID values • You don’t always have the GUID value for the lookup records • Figuring out the GUID values based on an alternate business key values can be painful Solution: Have an in-place lookup strategy • The solution takes an input of the lookup business key values (usually text) • The component should perform a lookup of the value and find out the corresponding record’s primary key (GUID) to be used for the lookup field.
  • 16. Avoid self-generated IDs The problems • CRM allows to use any primary key values (GUID) that you like • When using self-generated IDs, they are fully randomized • When the randomized GUIDs are saved, they can make the data storage very fragmented which can affect your CRM application query performance down the road Solution: Have an in-place lookup strategy • Leave the ID generation to the platform. • The only exception would be data migration – in which case you can carry over the IDs from your legacy CRM system. The Dangers of Guid.NewGuid(); • http://blogs.msdn.com/b/crminthefield/archive/2015/01/19/the-dangers-of-guid-newguid.aspx
  • 17. Audit field carry over The problems CRM does not have a way to write to those audit fields directly • createdby • createdon • modifiedby • modifiedon The solution • To write to createdby, modifiedby fields, you will have to use service proxy impersonation. NOTE: Keep in mind, createdby can only be set at the time of creation, similarly modifiedby can only be set through UpdateRequest. • To write to createdon, you can simply write to overriddencreatedon field. • Writing to modifiedon field directly is not supported. var serviceProxy = new OrganizationServiceProxy(); serviceProxy.CallerId = createByUserId; serviceProxy.Execute(createRequest); entity["overriddencreatedon"] = (DateTime)createOnValue;
  • 18. Close CRM entity records with a reason The problem: • A few CRM entities have an associated close entity which can be used to record the reason why primary entity records were disable/closed. The Solution: Primary entity Close entity incident incidentresolution opportunity opportunityclose quote quoteclose salesorder orderclose TheProgrammaticapproach var opportunityCloseEntity = new Entity("opportunityclose") { ["opportunityid"] = new EntityReference("opportunity", opportuntityId), ["subject"] = (string)subject, ["actualrevenue"] = new Money((decimal)actualRevenue), }; var winOpportunityRequest = new WinOpportunityRequest { OpportunityClose = opportunityCloseEntity, Status = new OptionSetValue(newStatus), }; serviceProxy.Execute(winOpportunityRequest); TheETLapproach(SSIS)
  • 20. Perfect timing for data quality assessment The problems • Poor data quality affects user adoption • "Garbage in, garbage out“ stands well in most implementations Recommendations Data migration is the perfect timing for a deep review of the current system’s data quality. • Fix them before bringing the data to the new system • Sometimes you have to use some special techniques such as data normalization, in some cases, maybe de- normalization if necessary. It is also the perfect time for creating a set of rules or guidance to ensure future data quality going forward. • User entered data • Data brought in using a data integration software (ETL process)
  • 21. Data Duplication The problems: • Duplicates happen and they can be a pain to deal with • Duplicate data can significantly reduce team productivity • Depending on the number of duplicates in the system, eliminating the duplicates can be a significant effort without a productive tool The solutions: • In-App Duplicate Detection • In CRM view, launch the Detect Duplicates function. • Define the characteristics of the duplicate detection job and create the job. • Wait for the job to complete. • Open the job details and work with the identified duplicates one at a time (the top set) • The ETL approach (SSIS)
  • 23. All errors happen for a reason Business logic errors: • Usually caused by some server side business logics. • Can be fixed by ensuring input data to satisfy the business logics (such as required fields – the input should not be empty). Data errors: • Usually caused by wrong data type or incorrect data length or range. • Can be fixed by ensuring the right data type with correct data length and range. Intermittent errors: • Happens intermittently. • Usually caused by temporary network glitches or temporary server outage. • A retry of the same service call can be attempted to help recover from the error without having to stop the job. Authentication and permission errors • Make sure the connection user can connect through web UI • Make sure the user has right permissions in the system Service timeout errors: • When timeout error happens, there is a good chance that you have a design issue with your application (if the timeout setting is not too short) • For reading, you would want to optimize your FetchXML query. • For writing, you would want to use a smaller batch size. You would also want to take cascading rules into consideration. • Increase Timeout setting with the service proxy. Unhandled platform errors: • Such as • Generic SQL error • Unexpected error • Internal Server Error • The only way to troubleshoot unhandled platform errors is to turn on CRM trace log orgServiceProxy.Timeout = timeout; orgServiceProxy.ServiceConfiguration.CurrentServiceEndpoint.Binding.CloseTimeout = timeout; orgServiceProxy.ServiceConfiguration.CurrentServiceEndpoint.Binding.OpenTimeout = timeout; orgServiceProxy.ServiceConfiguration.CurrentServiceEndpoint.Binding.ReceiveTimeout = timeout; orgServiceProxy.ServiceConfiguration.CurrentServiceEndpoint.Binding.SendTimeout = timeout;
  • 25. Start with something but look at the big picture Performance tuning is a complex topic • There are many things that can affect your data migration/integration performance • Writing to CRM is slow due to the nature of web service operations How to get it right?
  • 26. All such optimizations are built-in for SSIS Integration Toolkit Minimize the number of service calls When creating • When statecode/statuscode are involved, if the provided statecode is the default one, you can save a service call • The ownerid can be posted with the same service call of the CreateRequest • If the current user is the owner, you can drop the field, it will perform faster When updating using (var service = new OrganizationService(crmConnection)) { Entity account = new Entity("account"); account["accountid"] = new Guid("xxxxx-xxxx"); account["name"] = "Adventure Works Inc."; account["creditlimit"] = new Money(100000); account["statecode"] = new OptionSetValue(1); //inactive account["statuscode"] = new OptionSetValue(2); //inactive account["ownerid"] = new EntityReference { LogicalName = "team", Id = new Guid(“xxxxx-xxxx") }; var request = new UpdateRequest() { Target = account }; var response = (UpdateResponse)service.Execute(request); }
  • 27. Use db indexes when necessary Create db indexes when • The migration job involves filtering query during the process • This applies to the situation that you need to perform Update or Upsert based on a natural key How? • For CRM on-prem, db indexes can be created using SSMS directly • Alternatively, there are a couple other options available if it needs to be done within CRM application • Create an alternate key (requires CRM 2015 Update 1 or above) – this requires uniqueness • Add the column to the entity’s Quick Find view’s Find Columns • Use the Data Performance optimization wizard available by going to Settings > Administration > Data Performance. What else should I know about db indexes? • Having too many DB indexes can slow down your database write operation, don’t overuse it • For those in-app options, there is usually a delay before the index is actually being created • When creating indexes through SSMS, make sure the index follows certain naming convention and have it documented • Avoid firing such events that might create db indexes during business hours – as it can bog down your system
  • 28. Avoid submitting unchanged fields Why? • Smaller SOAP message, which in turn results in less networking time • Can avoid firing unnecessary CRM plugins/workflows or auditing that are registered for the fields How to achieve this?
  • 29. Mind your network conditions CRM Diagnostics Tool • http://CrmServer/tools/diagnostics/diag.aspx Ideally the latency should be as low as possible • Make sure the integration server (or workstation) is close to the CRM Server • A poor infrastructure can result in high network latency, even the servers are close to each other
  • 30. Performance Impact from Plugins/Workflows The impact • CRM plugins/workflows will have some performance impact depending on how they were designed. How to minimize the impact? • Disable Plugins/workflows for initial data migration if possible • If using SSIS, enable "Ignore Unchanged Fields" option in CRM destination component • Avoid any loop process within CRM plugins/workflows if possible at all • When registering a plugin step, make sure to use Attribute Filtering option. • Design plugins/workflows to run asynchronously as much as possible, and have a capable asynchronous processing server.
  • 31. Leverage CRM Bulk Data API CRM Bulk Data Load API • Helps improve data migration/integration performance • Particularly when the networking latency is high • Instead of sending one request at a time, it sends multiple requests within the same service call • When working with attachment entities (activitymimeattachment, annotation), you want to be a little conservative (1 to be safe avoid potential server busy errors) TheETLapproach(SSIS) var requestPackage = new ExecuteMultipleRequest { Settings = new ExecuteMultipleSettings { ContinueOnError = false, ReturnResponses = true }, Requests = new OrganizationRequestCollection(new[] { createRequest1, createRequest2 }) }; var executeMultipleResults = (ExecuteMultipleResponse)_serviceProxy.Execute(requestPackage);
  • 32. Load in Parallel ( Multi-threaded writing) With a proper multi-threaded writing support, you can achieve a much greater performance with better flexibility
  • 33. Choose the right combination of Batch Size and Multithreaded Writing On-Premise • The number of threads can be as high as your CRM/database server can sustain the load • Start with 20 and watch the server resource utilization, then decide whether to increase or decrease the number • The Batch Size can be 100-200 for typical CRM entities • Use a smaller number if working with an attachment entity CRM Online ExecuteMultiple requests are throttled. At most 2 concurrent ExecuteMultiple requests allowed per organization. • Use a batch size of 100, and set the number of concurrent threads to 2. • Use a batch size of 10 (or lower) and then use a relatively high number of concurrent threads (start from 20 and then decide to increase or decrease depending on how the performance goes • Raise a request with Microsoft Dynamics 365 support team to have the throttling lifted, then you can use a higher number of Batch Size along with the number of threads you have achieved a good result.
  • 34. Multi-threaded vs. Single-threaded writing Single Thread vs Multithreading Writing to CRM 100,000 records, 100 batch size, using a Create action with a total of 5 fields Single Thread 100,000 records in 4761 seconds 21 records/second Multithreading (20x threads) 100,000 records in 425 seconds 235 records/second 11 times faster when using multithreaded writing The performance testing was done in a laptop with everything installed in the same box, the processor was heavily throttled, it should perform a lot better with a real production system
  • 35. It does not have to be one big BANG There are many risks with the Big-Bang approach • Limited time window • Lack of thorough validations What are the options? Create a migration process that can bring in changes incrementally Pilot run Run legacy system in parallel and bring in more changes as needed Final delta run Design the package to use Upsert operation with "Ignore Unchanged Fields" option enabled Do a pilot run to get the majority data in to the target system – which probably takes the most time • Run the legacy system and new system in parallel and validate the data in new system • As the validation processes, do one (or more) delta run to get incremental changes in the new system Once the validation is done, do a final delta run to get all the delta changes into the final production system
  • 36. Resources • White Papers • Performance Benchmark for Microsoft Dynamics CRM Online 2016 Update 1 • http://download.microsoft.com/download/D/6/6/D66E61BA-3D18-49E8-B042-8434E64FAFCA/PerformanceBenchmarkforCRMOnline2016Update1.pdf • Microsoft Dynamics CRM 2016 Service Pack 1 Performance Benchmark on Azure Infrastructure as a Service (IaaS) • https://community.dynamics.com/enterprise/b/365teamblog/archive/2016/11/03/white-paper-microsoft-dynamics-crm-2016-service-pack-1-performance-benchmark-on-azure- infrastructure-as-a-service-iaas • Microsoft Dynamics CRM 2015 White Papers & Technical Documentation • http://blogs.msdn.com/b/crminthefield/archive/2015/01/05/microsoft-dynamics-crm-2015-white-papers-amp-technical-documentation.aspx • Optimizing and maintaining the performance of a Microsoft Dynamics CRM 2011 server infrastructure • http://www.microsoft.com/en-ca/download/details.aspx?id=27139 • Sample Migration Package • Migration Starter Pack (based on SSIS Integration Toolkit for Microsoft Dynamics 365) • http://www.kingswaysoft.com/blog/2016/09/16/Announcing-Migration-Starter-Pack-for-CRM-Online-and-CRM-On-Premise • Blog Posts • http://www.kingswaysoft.com/blog/2016/09/16/Migrating-CRM-Activity-Entities-Properly • http://www.kingswaysoft.com/blog/2017/03/31/Migrate-CRM-close-or-resolution-entity-records-in-your-ETL-process • http://www.kingswaysoft.com/blog/2016/11/04/Find-and-Merge-CRM-Duplicates-With-Ease-Using-SSIS-Productivity-Pack • Best Practices • Best practices for developing with Microsoft Dynamics 365 • https://msdn.microsoft.com/en-us/library/gg509027.aspx