Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Summary

This white paper provides an overview and a detailed view of pitfalls making painful a data migration related to Dynamics 365 or Dynamics CRM. Regardless the type of data migration (migration to Dynamics online or migration to Dynamics On-Premises), native and custom items could delay the data migration process. Those items should be categorized into 5 groups: data context, platform context, functional context, code context, architecture context.


Keywords

Data Migration, D365, Dynamics 365 On-Premises, Dynamics CRM On-Premises, Orchestration, Guide, Ordering, Prioritization, Grouping, Reporting, Logging, Tables, Attributes, Columns, Entities, Data Model, Customer Data Model, Activity Data Model, Custom Entities, System Entities, Core Data Model, Security Data Model, Internal System Process, Sequencies, Validation.

 

Confidentiality

The white paper does not provide any confidential client data related to data migration. All the code in this white paper is only related to the CRM SDK365 code.

INTRODUCTION: MIGRATION CONTEXT

Data Migration options

Without emphasizing the technical aspect of an option, in this case, whether it is a "Cloud" technology (cloud technology) or an "on Premise" technology, there are two execution contexts:

...

Even with the most thoroughly tested tools and procedures, we need to ask ourselves how to orchestrate a data migration, mainly from database to database.

1. PROBLEM: HOW TO ORCHESTRATE THE DATA MODEL

Here is the opportunity to orchestrate a data migration code related to Dynamics 365. So, we need to have a guide helping us to develop the right, accurate and structured code regarding the data model.

The questions raised by this problem could be challenging: How to group the entity model? What is the sequence of execution? How to prioritize the entities? How to exclude the unnecessary entities to migrate? Our guide could help to organize and structure the data migration and in so doing, we could establish the right requirements to fulfill.

2. REQUIREMENTS RELATED TO THE ORCHESTRATION

2.1 Requirements related to Database SQL as migration tool

...

Here is the opportunity to define our strategy and actions related to grouping, prioritizing and excluding entities in the process.

...

3. DATA PREPARATION: BEFORE DATA ORCHESTRATION

Here is the first steps to fulfill before migrating our data and orchestrating our data model management.

...

  1. Handle the indexes of the “target” database, executing a SQL command to disable the indexes.

  2. Logging the preparation in the database “CRM tool”.

  3. Create the backup of the preparation: “PREPARATION BEFORE DATA ORCHESTRATION”.

4. CORE MODEL DATA ORCHESTRATION: WAVE 0

Info

Implement a strategy of grouping and ordering the entities to orchestrate in order to  prioritize the last ones. It will help to accelerate the development, the deploiement and the validation of the migrated data.

...

SEQUENCE

ACTIONS

SEQUENCE 1

  1. Logging of the group 1: process has started.

  2. Preparing initial values: Organization and solution identifiers of the databases “source” and “target”; Organization name of the database “target”.

  3. Handling “Currency” entity if needed: Update “Organization” entity with the value of “currency”; Handle missing “Currency”.

  4. Handling “Owner” entity if needed: Handle the native service accounts “Integration” and “System”

  5. Generating report of the records.

  6. Logging of the group 1: process has ended.

  7. Creating the backing of the group 1.

SEQUENCE 2

  1. Logging of the group 2: process has started.

  2. Preparing initial values: Organization and solution identifiers of the database “target”.

  3. Handling “System User” entity.

  4. Handling “Business Unit” and “Business Unit Map” entities.

  5. Handling “Client update” entity, if needed.

  6. Handling “Connection” and “Connection Role”.

  7. Handling custom entities if necessary, only because of the relationships.

  8. Generating report of the records.

  9. Logging of the group 2: process has ended.

  10. Creating the backing of the group 2.

SEQUENCE 3

  1. Logging of the group 3: process has started.

  2. Preparing initial values: organization and solution identifiers of the database “target”.

  3. Handling entities related to the security model: “Role”, “Role Privilege”, “Internal Address”, including “User Settings” and “Business Unit”, “System User Business Unit Entity Map”, “System User Principals”, “System User Role”, “System User Profiles”, “Queue”, “Queue Membership”.

  4. Handling the other entities: “Mail Merge Template”, “Metric”. “Site” entity, if needed, “UoMSchedule”, “UoM”, “Territory”, “Calendar”, “Calendar Rule” if needed.

  5. Handling custom entities if necessary, only because of the relationships.

  6. Generating report of the records.

  7. Logging of the group 3: process has ended.

  8. Creating the backing of the group 3.

SEQUENCE 4

  1. Logging of the group 4: process has started.

  2. Preparing initial values: organization and solution identifiers of the database “target”.

  3. Handling entities related to “Calendar Rule” if not needed in sequence 3

  4. Handling custom entities if necessary, only because of the relationships.

  5. Generating report of the records.

  6. Logging of the group 4: process has ended.

  7. Creating the backing of the group 4.

SEQUENCE 5

  1. Logging of the group 5: process has started.

  2. Preparing initial values: organization and solution identifiers of the database “target”.

  3. Handling entities related to “User” entity: “User Settings”, “Team”, “Team Profiles”, “Team Membership”.

  4. Handling custom entities if necessary, only because of the relationships.

  5. Generating report of the records.

  6. Logging of the group 5: process has ended.

  7. Creating the backing of the group 5.

SEQUENCE 6

  1. Logging of the group 6: process has started.

  2. Preparing initial values: organization and solution identifiers of the database “target”.

  3. Handling entities related to the “User” entity: “User Query”, “User Query Visualization” if needed, “User Entity UI Settings” if needed.

  4. Handling custom entities if necessary, only because of the relationships.

  5. Generating report of the records.

  6. Logging of the group 6: process has ended.

  7. Creating the backing of the group 6.