Skip to content

Examples

Kevin Lee edited this page Apr 10, 2019 · 18 revisions

Examples

Contacts

The is a simple example of the configuration files for active Contacts.

  1. Schema File
<entities >
  <entity name="contact" displayname="Contact" etc="2" primaryidfield="contactid" primarynamefield="fullname" disableplugins="false">
    <fields>
       <field displayname="First Name" name="firstname" type="string" />
       <field displayname="Last Name" name="lastname" type="string" />
       <field displayname="Parent Contact" name="parentcontactid" type="entityreference" lookupType="contact" />
       <field displayname="Contact" name="contactid" type="guid" primaryKey="true" />
       <field displayname="Home Phone" name="telephone2" type="string" />
       <field displayname="Mobile Phone" name="mobilephone" type="string" />
    </fields>
    <relationships />
  </entity>
</entities>
  1. Export Config
   {
     "CrmMigrationToolSchemaPaths": [
        "ConfigDataSchema.xml"
     ],
     "CrmMigrationToolSchemaFilters": {
     },
     "PageSize": 1000,
     "BatchSize": 1000,
     "TopCount": 10000,
     "OnlyActiveRecords": false,
     "JsonFolderPath": "Extract",
     "OneEntityPerBatch": true,
     "FilePrefix": "EX0.1",
     "SeperateFilesPerEntity": true,
     "LookupMapping": {}
   }
  1. Import Config
   {
     "IgnoreStatuses": false,
     "IgnoreSystemFields": true,
     "MigrationConfig": {
     "ApplyAliasMapping": true,
     "SourceRootBUName": "Example1BU",
       "Mappings": {}
     },
     "SaveBatchSize": 200,
     "JsonFolderPath": "Extract",
     "DeactivateAllProcesses": false,
     "FilePrefix": "EX0.1",
     "PassOneReferences": [
     ]
   }

Teams and Queues

The is a example of the schema file for Team and Queues. The export and import config from the Contacts example can be used for this scenario.

  1. Schema File
<entities xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <entity name="queue" displayname="Queue" etc="2020" primaryidfield="queueid" primarynamefield="name" disableplugins="false">
    <fields>
      <field displayname="Incoming Email" name="emailaddress" type="string" primaryKey="false" customfield="false" />
      <field displayname="Type" name="queueviewtype" type="optionsetvalue" primaryKey="false" customfield="false" />
      <field displayname="Description" name="description" type="memo" primaryKey="false" customfield="false" />
      <field displayname="Queue" name="queueid" type="guid" primaryKey="true" customfield="false" />
      <field displayname="Convert To Email Activities" name="ignoreunsolicitedemail" type="bool" primaryKey="false" customfield="false" />
      <field displayname="Incoming Email Delivery Method" name="incomingemaildeliverymethod" type="optionsetvalue" primaryKey="false" customfield="false" />
      <field displayname="Convert Incoming Email To Activities" name="incomingemailfilteringmethod" type="optionsetvalue" primaryKey="false" customfield="false" />
      <field displayname="Name" name="name" type="string" primaryKey="false" customfield="false" />
      <field displayname="Business Unit" name="businessunitid" type="entityreference" primaryKey="false" lookupType="businessunit" customfield="false" />
    </fields>
    <relationships />
  </entity>
  <entity name="team" displayname="Team" etc="9" primaryidfield="teamid" primarynamefield="name" disableplugins="false">
    <fields>
      <field displayname="Description" name="description" type="memo" primaryKey="false" customfield="false" />
      <field displayname="Team" name="teamid" type="guid" primaryKey="true" customfield="false" />
      <field displayname="Team Name" name="name" type="string" primaryKey="false" customfield="false" />
      <field displayname="Business Unit" name="businessunitid" type="entityreference" primaryKey="false" lookupType="businessunit" customfield="false" />
      <field displayname="Email" name="emailaddress" type="string" primaryKey="false" customfield="false" />
      <field displayname="Team Type" name="teamtype" type="optionsetvalue" primaryKey="false" customfield="false" />
      <field displayname="Default Queue" name="queueid" type="entityreference" primaryKey="false" lookupType="queue" customfield="false" />
    </fields>
    <relationships>
      <relationship name="teamroles" manyToMany="true" isreflexive="false" relatedEntityName="teamroles" m2mTargetEntity="role" m2mTargetEntityPrimaryKey="roleid" />
    </relationships>
  </entity>
</entities>

Teams and Team Roles

This example of the schema file are for Teams and Team Roles.

  1. Schema File
<entities xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <entity name="team" displayname="Team" etc="9" primaryidfield="teamid" primarynamefield="name" disableplugins="false">
    <fields>
      <field displayname="Team" name="teamid" type="guid" primaryKey="true" customfield="false" />
      <field displayname="Team Name" name="name" type="string" primaryKey="false" customfield="false" />
      <field displayname="Business Unit" name="businessunitid" type="entityreference" primaryKey="false" lookupType="businessunit" customfield="false" />
    </fields>
    <relationships>
      <relationship name="teamroles" manyToMany="true" isreflexive="false" relatedEntityName="teamroles" m2mTargetEntity="role" m2mTargetEntityPrimaryKey="roleid" />
    </relationships>
  </entity>
</entities>

User Setup

This example of the configuration files for allocating Business Units, Security Roles, Timezones and Formats for existing Users.

  1. Schema File
<entities xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <entity name="systemuser" displayname="User" etc="8" primaryidfield="systemuserid" primarynamefield="fullname" disableplugins="false">
    <fields>
      <field displayname="User Name" name="domainname" type="string" primaryKey="false" customfield="false" />
      <field displayname="Last Name" name="lastname" type="string" primaryKey="false" customfield="false" />
      <field displayname="First Name" name="firstname" type="string" primaryKey="false" customfield="false" />
      <field displayname="User" name="systemuserid" type="guid" primaryKey="true" customfield="false" />
      <field displayname="Access Mode" name="accessmode" type="optionsetvalue" primaryKey="false" customfield="false" />
      <field displayname="Business Unit" name="businessunitid" type="entityreference" primaryKey="false" lookupType="businessunit" customfield="false" />
    </fields>
     <relationships>
      <relationship name="systemuserprofiles" manyToMany="true" isreflexive="false" relatedEntityName="systemuserprofiles" m2mTargetEntity="fieldsecurityprofile" m2mTargetEntityPrimaryKey="fieldsecurityprofileid" />
      <relationship name="systemuserroles" manyToMany="true" isreflexive="false" relatedEntityName="systemuserroles" m2mTargetEntity="role" m2mTargetEntityPrimaryKey="roleid" />
      <relationship name="teammembership" manyToMany="true" isreflexive="false" relatedEntityName="teammembership" m2mTargetEntity="team" m2mTargetEntityPrimaryKey="teamid" />
    </relationships>
  </entity>
  <entity name="usersettings" displayname="User Settings" etc="150" primaryidfield="systemuserid" disableplugins="false">
    <fields>
      <field displayname="" name="dateseparator" type="string" primaryKey="false" customfield="false" />
      <field displayname="" name="systemuserid" type="guid" primaryKey="true" customfield="false" />
      <field displayname="" name="userprofile" type="string" primaryKey="false" customfield="false" />
      <field displayname="" name="dateformatstring" type="string" primaryKey="false" customfield="false" />
      <field displayname="" name="timeseparator" type="string" primaryKey="false" customfield="false" />
      <field displayname="" name="currencysymbol" type="string" primaryKey="false" customfield="false" />
      <field displayname="" name="decimalsymbol" type="string" primaryKey="false" customfield="false" />
      <field displayname="" name="timeformatstring" type="string" primaryKey="false" customfield="false" />
    </fields>
    <relationships />
  </entity>
 </entities>

Calendars

Customer service schedule and holiday schedule are stored in Calendar entity. There are four types of calendar in Microsoft Dynamics 365.

Calendar Type Description
Customer Service Schedule 1
Holiday Schedule 2
Inner Calendar -1 Inner calendars are used by other calendars
Default Calendar 0

Customer service calendar contain weekly schedules which are stored as inner calendars. So in order to migrate customer service schedule, we have to identify customer service calendar and their inner calendars. Calendar Rule is the entity which holds information about calendar and associated inner calendars. But we cannot directly read Calendar Rule entity. Below FetchXML query can be used to identify customer service calendar and related inner calendars.

<fetch top="50" >
  <entity name="calendar" >
    <attribute name="name" />
    <filter type="or" >
      <condition attribute="type" operator="eq" value="1" />
    </filter>
    <link-entity name="calendarrule" from="calendarid" to="calendarid" alias="CalRule" >
      <attribute name="innercalendarid" />
      <attribute name="calendarid" />
    </link-entity>
  </entity>
</fetch>

Once we identified calendar and their inner calendar GUIDs. We can apply filtering in export configuration file of the Data Migration Tool.

<filter type="or" >
<condition attribute="type" operator="eq" value="1" />
<condition attribute="calendarid" operator="eq" value="<<Inner Calendar ID 1>>" />
<condition attribute="calendarid" operator="eq" value="<<Inner Calendar ID 2>>" />
</filter>

If you also would like to migrate Holiday schedule then we can simply extend above filter to include an additional condition.

<filter type="or" >
<condition attribute="type" operator="eq" value="1" />
<condition attribute="type" operator="eq" value="2" />
<condition attribute="calendarid" operator="eq" value="<<Inner Calendar ID 1>>" />
<condition attribute="calendarid" operator="eq" value="<<Inner Calendar ID 2>>" />
</filter>

Schema used:

  <entity name="calendar" displayname="Callendar" etc="4201" primaryidfield="calendarid" primarynamefield="CalendarId" disableplugins="false">
    <fields>
      <field displayname="CalendarId" name="calendarid" type="guid" primaryKey="true" />
      <field displayname="HolidayScheduleCalendarid" name="holidayschedulecalendarid" type="entityreference" lookupType="calendar" />
      <field displayname="BusinessUnitId" name="businessunitid" type="entityreference" lookupType="businessunit" />
      <field displayname="Callendar Type" name="type" type="optionsetvalue" />
      <field displayname="Description" name="description" type="string" />
      <field displayname="Name" name="name" type="string" />
      <field displayname="ISShared" name="isshared" type="boolean" />
    </fields>
  </entity>

Many to Many

This is an example of the configuration files for many to many relationships.

  1. Schema File
<entities >
  <entity name="opportunity" displayname="Opportunity" etc="3" primaryidfield="opportunityid" primarynamefield="name" disableplugins="false">
    <fields>
      <field displayname="Opportunity" name="opportunityid" type="guid" primaryKey="true" />
      <field displayname="Topic" name="name" type="string" />
    </fields>
    <relationships>
      <relationship name="opportunitycompetitors" manyToMany="true" isreflexive="false" relatedEntityName="opportunitycompetitors" m2mTargetEntity="competitor" m2mTargetEntityPrimaryKey="competitorid" />
    </relationships>
  </entity>
  <entity name="competitor" displayname="Competitor" etc="123" primaryidfield="competitorid" primarynamefield="name" disableplugins="false">
    <fields>
      <field displayname="Competitor " name="competitorid" type="guid" primaryKey="true" />
      <field displayname="Name" name="name" type="string" />
    </fields>
    <relationships>
    </relationships>
  </entity>
</entities>
  1. Export Config
   {
     "CrmMigrationToolSchemaPaths": [
        "ConfigDataSchema.xml"
     ],
     "CrmMigrationToolSchemaFilters": {
     },
     "PageSize": 1000,
     "BatchSize": 1000,
     "TopCount": 10000,
     "OnlyActiveRecords": false,
     "JsonFolderPath": "Extract",
     "OneEntityPerBatch": true,
     "FilePrefix": "EX0.1",
     "SeperateFilesPerEntity": true,
     "LookupMapping": {}
   }
  1. Import Config
   {
     "IgnoreStatuses": false,
     "IgnoreSystemFields": true,
     "MigrationConfig": {
     "ApplyAliasMapping": true,
     "SourceRootBUName": "Example1BU",
       "Mappings": {}
     },
     "SaveBatchSize": 200,
     "JsonFolderPath": "Extract",
     "DeactivateAllProcesses": false,
     "FilePrefix": "EX0.1",
     "PassOneReferences": [
     ]
   }

Organisation Hierarchy

This is a complex example of the configuration files for extracting and loading ??????????????????/.

  1. Schema File
<entities >
  <entity name="businessunit" displayname="Business Unit" etc="10" primaryidfield="businessunitid" primarynamefield="name" disableplugins="false">
    <fields>
      <field displayname="Business Unit" name="businessunitid" type="guid" primaryKey="true" />
      <field displayname="Email" name="emailaddress" type="string" />
      <field displayname="Name" name="name" type="string" />
      <field displayname="Parent Business" name="parentbusinessunitid" type="entityreference" lookupType="businessunit" />
      <field displayname="Website" name="websiteurl" type="string" />
    </fields>
  </entity>
  <entity name="team" displayname="Team" etc="9" primaryidfield="teamid" primarynamefield="name" disableplugins="false">
    <fields>
      <field displayname="Team" name="teamid" type="guid" primaryKey="true" />
      <field displayname="Team Name" name="name" type="string" />
      <field displayname="Team Type" name="teamtype" type="optionsetvalue" />
      <field displayname="Business Unit" name="businessunitid" type="entityreference" lookupType="businessunit" />
      <field displayname="Description" name="description" type="string" />
      <field displayname="Email" name="emailaddress" type="string" />
    </fields>
    <relationships>
      <relationship name="teamroles" manyToMany="true" isreflexive="false" relatedEntityName="teamroles" m2mTargetEntity="role" m2mTargetEntityPrimaryKey="roleid" />
    </relationships>
  </entity>
  <entity name="queue" displayname="Queue" etc="2020" primaryidfield="queueid" primarynamefield="name" disableplugins="false">
    <fields>
      <field displayname="Queue Type" name="queuetypecode" type="optionsetvalue" />
      <field displayname="Queue" name="queueid" type="guid" primaryKey="true" />
      <field displayname="Type" name="queueviewtype" type="optionsetvalue" />
      <field displayname="Business Unit" name="businessunitid" type="entityreference" lookupType="businessunit" />
      <field displayname="Description" name="description" type="string" />
      <field displayname="Name" name="name" type="string" />
    </fields>
  </entity>
</entities>
  1. Export Config
   {
     "CrmMigrationToolSchemaPaths": [
       "GetAutomatically"
     ],
     "JsonFolderPath": "GetAutomatically",
     "PageSize": 500,
     "BatchSize": 1000,
     "TopCount": 10000,
     "OnlyActiveRecords": false,
     "OneEntityPerBatch": true,
     "FilePrefix": "DemoOrganizationHierarchy",
     "SeperateFilesPerEntity": true,
     "CrmMigrationToolSchemaFilters": {
       "team": " <filter> <condition attribute=\"name\" operator=\"neq\" value=\"capgeminitest\" /> </filter>",
       "queue": "<filter> <condition attribute=\"name\" operator=\"not-begin-with\" value=\"&lt;\" /> </filter>",
       "businessunit": "<filter> <condition attribute=\"parentbusinessunitid\" operator=\"not-null\" /> </filter>"
     },
     "LookupMapping": {
       "team": {
         "businessunitid": [
           "name"
         ],
         "teamid": [
           "name",
           "businessunitid"
         ]
       },
       "queue": {
         "businessunitid": [
           "name"
         ],
         "queueid": [
           "name"
         ]
       },
       "teamroles": {
         "roleid": [
           "name",
           "businessunitid"
         ],
         "teamid": [
           "name",
           "businessunitid"
         ]
       }
     }
   }
  1. Import Config
   {
     "JsonFolderPath": "GetAutomatically",
     "IgnoreStatuses": true,
     "IgnoreSystemFields": true,
     "SaveBatchSize": 50,
     "DeactivateAllProcesses": false,
     "FilePrefix": "DemoOrganizationHierarchy",
     "PassOneReferences": [
       "businessunit",
       "uom",
       "uomschedule",
       "queue"
     ],
     "MigrationConfig": {
       "ApplyAliasMapping": true,
       "SourceRootBUName": "capgeminitest"
     }
   }
Clone this wiki locally