編集

次の方法で共有


Migrate configurations for record routing using solutions

Applies to: Dynamics 365 Contact Center—embedded, Dynamics 365 Contact Center—standalone, and Dynamics 365 Customer Service

Use solutions and the Configuration Migration tool to migrate the configurations from the source environment to the target environment for record routing.

For information on how to use solutions or the Configuration Migration tool, go to Overview of tools and apps used for ALM in Power Platform.

Prerequisites

The following prerequisites must be met:

  • Make sure that the user who performs the channel configuration migration has the following privileges:
    • To export solutions from the source environment.
    • To import solutions to the destination environment.
    • Read permission on all tables migrated from the source environment using the Configuration Migration tool.
    • Full permission on all tables migrated to the destination environment using the Configuration Migration tool.
  • In the source environment, if any table or column refers to the following, then make sure that they exist in the target environment before you proceed with the migration:
    • Custom tables (entities)
    • Columns (attributes)
    • Relationships
    • Choices (option sets)
    • Lookup values

Record routing configuration migration steps

You must perform the steps in the order they're listed to migrate your configuration data successfully:

  1. Migrate configuration for session templates and notification templates.
  2. Migrate configuration for skill-based routing rulesets.
  3. Migrate configuration for new capacity profiles.
  4. Migrate configuration for queues.
  5. Migrate configuration for intake rules and workstreams.

Migrate configuration for session templates and notification templates

If the following components are available in your setup, add them to a solution, then export and import the solution into the target environment:

  1. Add the following components to a solution and export it from the source environment:

    • Agent Script (msdyn_productivityagentscripts)
    • Agent Script Step (msdyn_productivityagentscriptsteps)
    • Application Tab Template (msdyn_applicationtabtemplates)
    • Notification Field (msdyn_notificationfields)
    • Notification Template (msdyn_notificationtemplates)
    • Macro (processes)
    • Session Templates (msdyn_sessiontemplates)
    • Template Parameter (msdyn_templateparameters)
  2. Import the solution into the target environment.

For more information on solutions go to Solutions in Power Apps.

Migrate configuration for skill-based routing rulesets

If skill-based routing rulesets are used in your unified routing setup, perform the steps to migrate the corresponding configuration.

For sample schema to get all the required records, see Sample schema for skill-based routing configuration.

  1. Use the Configuration Migration tool to create the schema and export data from the source organization for skill-based routing configuration.

    • Entity display name: When you create the schema, select the entities in the sequence that's mentioned in the table.
    • Attribute display name: We recommend that you select the attributes defined in the following table. You don't need to select the out-of-the-box system-defined attributes like Created By, Created On, Modified By, Modified On, and Owner. You can select custom attributes if necessary.

    Important

    You must manually create bookableresourcecharacteristictype (Global option set value) in the target organization, if necessary.

    Entity display name (Logical name) Attribute display name (Logical name) Use FetchXML to filter records
    Characteristic (characteristic)
    • Characteristic Type (characteristictype)
    • Characteristic (characteristicid)
    • Description (description)
    • Name (name)
    Rating Model (ratingmodel)
    • Max Rating Value (maxratingvalue)
    • Min Rating Value (minratingvalue)
    • Name (name)
    • Rating Model (ratingmodelid)
    Rating Value (ratingvalue)
    • Name (name)
    • Rating Model (ratingmodel)
    • Rating Value (ratingvalueid)
    • Value (value)
  2. Generate the schema and save it.

  3. Export the data and generate the compressed (zip) file.

  4. Use the Configuration Migration tool, and select the option to import data into the target organization using the compressed file.

Migrate configuration for capacity profiles

If you have configured capacity profiles in your unified routing setup, perform the steps to migrate the corresponding configuration.

For sample schema to get all the required records, see Sample schema for capacity profiles.

  1. Use the Configuration Migration tool to create the schema and export data in source organization for capacity profiles configuration.

    • Entity display name: When you create the schema, select the entities in the same sequence as mentioned in the table.
    • Attribute display name: We recommend that you select the attributes defined in the following table. You don't need to select the out-of-the-box system defined attributes like Created By, Created On, Modified By, Modified On, and Owner. You can select custom attributes, if necessary.
    • Use FetchXML to filter records: For each entity, use the appropriate FetchXML query that's mentioned in the following table to get single, multiple, or all records based on your requirement. For single or multiple records, you need to use source organization to get the correct name in uiname and GUID in value. If required, you can use the ADVANCED FIND menu item to construct the appropriate FetchXML query.
    • Configure import settings:
      • For the Decision contract entity, ensure that you select the Do not update existing records checkbox.

      • For every entity, including the Decision contract entity, ensure that you select the primary key field of the entity to be used as a field to compare on update. An example for Account is as follows.

        Example of an entity to compare on update.

    Note

    The sample query listed in the following table gets single or multiple records. The query has considered the entity as incident and task. Based on your requirements, ensure that you update the entity logical name in the FetchXML query.

    The following table summarizes the entities and corresponding FetchXML samples.

    Entity display name (Logical name) Attribute display name (Logical name) Use FetchXML to filter records
    Capacity Profile (msdyn_capacityprofile)
    • Block Assignment (msdyn_blockassignment)
    • Capacity Profile (msdyn_capacityprofileid)
    • Default Max Units (msdyn_defaultmaxunits)
    • Name (msdyn_name)
    • Reset Duration(msdyn_resetduration)
    • Unique Name (msdyn_uniquename)
    Sample 1: For all capacity profile records
    <fetch>
    <entity name="msdyn_capacityprofile">
    <filter type="and">
    <condition attribute="ismanaged" operator="eq" value="0" />
    </filter>
    </entity>
    </fetch>

    Sample 2: For a single capacity profile record
    <fetch>
    <entity name="msdyn_capacityprofile">
    <filter type="and">
    <condition attribute="msdyn_capacityprofileid" operator="eq" uiname="Demo Capacity Profile 1" uitype="msdyn_capacityprofile" value="{F57CFE3C-14BD-D53E-F423-A1E7F9749DFB}" />
    </filter>
    </entity>
    </fetch>

    Sample 3: For multiple capacity profile records
    <fetch>
    <entity name="msdyn_capacityprofile">
    <filter type="and">
    <condition attribute="msdyn_capacityprofileid" operator="in">
    <value uiname="Demo Capacity Profile 1" uitype="msdyn_capacityprofile">{F57CFE3C-14BD-D53E-F423-A1E7F9749DFB}</value>
    <value uiname="Demo Capacity Profile 2" uitype="msdyn_capacityprofile">{D0B8ABFB-4A9F-0B1F-6FF4-8003E29A623C}</value>
    </condition>
    </filter>
    </entity>
    </fetch>
  2. Generate the schema and save it.

  3. Export the data and generate the compressed (zip) file.

  4. Use the Configuration Migration tool, and select the option to import data into the target organization.

Migrate configuration for record queues

Use the Configuration Migration tool to create the schema and export data from the source organization for the record queues configuration.

  • Entity display name: When you create the schema, select the entities in the same sequence as mentioned in the table.
  • Attribute display name: We recommend that you select the attributes defined in the following table. You don't need to select the out-of-the-box system defined attributes like Created By, Created On, Modified By, Modified On, and Owner. You can select custom attributes, if necessary.
  • Use FetchXML to filter records: For each entity, use the appropriate FetchXML query that's mentioned in the following table to get single, multiple, or all records based on your requirement. For single or multiple records, you need to use source organization to get the correct name in uiname and GUID in value. If required, you can use the ADVANCED FIND menu item to construct the appropriate FetchXML query.
  • Configure import settings:
    • For the Decision contract entity, ensure that you select the Do not update existing records checkbox.

    • For every entity, including the Decision contract entity, ensure that you select the primary key field of the entity to be used as a field to compare on update. An example for Account is as follows.

      Example of an entity to compare on update.

Note

The sample query listed in the following table gets single or multiple records. The query has considered the entity as incident and task. Based on your requirements, ensure that you update the entity logical name in the FetchXML query.

If you're using the out-of-the-box assignment methods for queues, such as highest capacity and round robin, skip the following entities:

  • Decision rule set
  • Assignment configuration
  • Assignment configuration step

The assignment rulesets must be available in the system before the Configuration Migration tool imports the selection criteria. Hence, you need to perform the following steps in the specified order to migrate configuration for record queues:

Important

  • For every import of queue records, you must create new queue records or update existing queue records. Don't mix the actions in the same data import.
  • When all records in the data.xml of the queue table are for creation, make sure that the following line is present in the schema.xml: <field displayname="Queue type" name="msdyn_queuetype" type="optionsetvalue" customfield="true"/>, and the corresponding data will also have the field for msdyn_queuetype.
  • When all records in the data.xml of queue table are for an update, ensure that you remove the following line in the schema.xml: <field displayname="Queue type" name="msdyn_queuetype" type="optionsetvalue" customfield="true"/>, and the corresponding data also won't have that field for msdyn_queuetype.
  • When the queue that you want to migrate has an overflow condition set, then you must export and import the decision ruleset first. The migration sequence should look as follows:
    • Decision contract
    • Decision ruleset
    • Queue
    • Assignment Configuration
    • Assignment Configuration Step without selection criteria
    • Operating Hour
    • Overflow Action
  • You can't migrate the Calendar item associated with the Operating Hour table. You'll need to set it correctly after you import the Operating Hour table into the target environment.

Step 1: Export and import rulesets without selection criteria

The following table summarizes the entities and corresponding FetchXML samples.

Entity display name (Logical name) Attribute display name (Logical name) Use FetchXML to filter records
Queue (queue)
  • Assignment Input Contract Id (msdyn_assignmentinputcontractid)
  • Assignment Strategy (msdyn_assignmentstrategy)
  • Description (description)
  • Is Default Queue (msdyn_isdefaultqueue)
  • Is Omnichannel queue (msdyn_isomnichannelqueue)
  • Name (name)
  • Priority (msdyn_priority)
  • Queue (queueid)
  • Queue type (msdyn_queuetype)
  • Type (queueviewtype)
  • Operating Hours (msdyn_operatinghourid)
  • Prequeue Overflow Ruleset (msdyn_prequeueoverflowrulesetid)
Sample 1: All queues for records

Sample 2: Single queue for records

Sample 3: Multiple queues for records
Decision contract (msdyn_decisioncontract)
  • Contract definition (msdyn_contractdefinition)
  • Decision contract (msdyn_decisioncontractid)
  • Name (msdyn_name)
  • Unique name (msdyn_uniquename)
Sample 1: Decision contract for all record queues

Sample 2: Decision contract for a single record queue

Sample 3: Decision contract for multiple record queues
Decision ruleset without selection criteria (msdyn_decisionruleset)
  • AI builder model (msdyn_aibmodelid)
  • Authoring mode (msdyn_authoringmode)
  • Decision rule set (msdyn_decisionrulesetid)
  • Description (msdyn_description)
  • Input contract (msdyn_inputcontractid)
  • Is input collection (msdyn_isinputcollection)
  • ML model type (msdyn_mlmodeltype)
  • Name (msdyn_name)
  • Output contract (msdyn_outputcontractid)
  • Rule set definition (msdyn_rulesetdefinition)
  • Rule set type (msdyn_rulesettype)
  • Unique name (msdyn_uniquename)
  • FetchXML for ruleset (msdyn_fetchxml)
Sample 1: Decision ruleset for all record queues without selection criteria defined

Sample 2: Decision ruleset for a single record queue without selection criteria defined

Sample 3: Decision ruleset for multiple record queues without selection criteria defined
Assignment Configuration (msdyn_assignmentconfiguration)
  • Assignment Configuration (msdyn_assignmentconfigurationid)
  • Description (msdyn_description)
  • Is Active Configuration (msdyn_isactiveconfiguration)
  • Name (msdyn_name)
  • Queue (msdyn_queueid)
  • Unique Name (msdyn_uniquename)
Sample 1: Assignment configuration for all record queues

Sample 2: Assignment configuration for a single record queue

Sample 3: Assignment configuration for multiple record queues
Assignment Configuration Step without selection criteria (msdyn_assignmentconfigurationstep)
  • Assignment Configuration (msdyn_assignmentconfigurationid)
  • Assignment Configuration Step (msdyn_assignmentconfigurationstepid)
  • Is default ruleset (msdyn_isdefaultruleset)
  • Name (msdyn_name)
  • Rule Set (msdyn_rulesetid)
  • Step Order (msdyn_steporder)
  • Step Type (msdyn_type)
  • Unique Name (msdyn_uniquename)
Sample 1: Assignment configuration step for all record queues without selection criteria defined

Sample 2: Assignment configuration step for a single record queue without selection criteria defined

Sample 3: Assignment configuration step for multiple record queues without selection criteria defined
Operating Hour (msdyn_operatinghour)
  • Description (msdyn_description)
  • Name (msdyn_name)
  • Operating Hour (msdyn_operatinghourid)
  • Status (statecode)
  • Status Reason (statuscode)
Sample 1: Operating Hours for all record queues

Sample 2: Operating Hours for a single record queue

Sample 3: Operating Hours for multiple record queues
Overflow Action Config (msdyn_overflowactionconfig)
  • Name (msdyn_name)
  • Overflow Action Config (msdyn_overflowactionconfigid)
  • Overflow Action Data (msdyn_overflowactiondata)
  • Overflow Action Type (msdyn_overflowactiontype)
  • Status (statecode)
  • Status Reason (statuscode)
Sample 1: Overflow Action Config filtered to specific records

Perform the following steps to export and import the rulesets:

  1. Generate the schema and save it.

  2. Export the data and generate the compressed (.zip) file.

  3. Extract the .zip file, open the data.xml file present in the extracted folder, and do the following:

    • In the source and target environments, run the following OData API call and note the GUID of msdyn_decisioncontractid.

      https://<OrgURL>/api/data/v9.1/msdyn_decisioncontracts?$select=msdyn_decisioncontractid&$filter=msdyn_uniquename eq 'msdyn_assignmentoutput'

      In the data.xml file, replace all the occurrences of the msdyn_decisioncontractid GUID in the source environment with the msdyn_decisioncontractid GUID of the target environment.

    • In the source and target environments, run the following OData API call and note the GUID of msdyn_decisioncontractid.

      https://<OrgURL>/api/data/v9.1/msdyn_decisioncontracts?$select=msdyn_decisioncontractid&$filter=msdyn_uniquename eq 'msdyn_selectionruleoutput'

      In the data.xml file, replace all occurrences of the msdyn_decisioncontractid GUID in the source environment with the msdyn_decisioncontractid GUID of the target environment.

    • In the source and target environments, run the following OData API call and note the GUID of msdyn_decisioncontractid.

      https://<OrgURL>/api/data/v9.1/msdyn_decisioncontracts?$select=msdyn_decisioncontractid&$filter=msdyn_uniquename eq 'msdyn_queueoverflowrulesetinput'

      In the data.xml file, replace all the occurrences of the msdyn_decisioncontractid GUID in the source environment with the msdyn_decisioncontractid GUID of the target environment.

    • In the source and target environment, run the following OData API call and note the GUID of msdyn_decisioncontractid.

      https://<OrgURL>/api/data/v9.1/msdyn_decisioncontracts?$select=msdyn_decisioncontractid&$filter=msdyn_uniquename eq 'msdyn_queueoverflowrulesetoutput'

      In the data.xml file, replace all occurrences of the msdyn_decisioncontractid GUID in the source environment with the msdyn_decisioncontractid GUID of the target environment.

  4. Package the extracted content again.

  5. Use the Configuration Migration tool, select the option to import data, and then select the compressed file.

Note

Set the Calendar Item associated with the Operating Hour table correctly after you import the Operating Hour table into the target environment.

For sample schema to get all the required records, go to Sample schema for record queues step 1.

Step 2: Export and import rulesets with selection criteria defined

The following table summarizes the entities and corresponding FetchXML samples.

Entity display name (Logical name) Attribute display name (Logical name) Use FetchXML to filter records
Decision ruleset with selection criteria (msdyn_decisionruleset)
  • AI builder model (msdyn_aibmodelid)
  • Authoring mode (msdyn_authoringmode)
  • Decision rule set (msdyn_decisionrulesetid)
  • Description (msdyn_description)
  • Input contract (msdyn_inputcontractid)
  • Is input collection (msdyn_isinputcollection)
  • ML model type (msdyn_mlmodeltype)
  • Name (msdyn_name)
  • Output contract (msdyn_outputcontractid)
  • Rule set definition (msdyn_rulesetdefinition)
  • Rule set type (msdyn_rulesettype)
  • Unique name (msdyn_uniquename)
Sample 1: Decision ruleset for all record queues with selection criteria defined

Sample 2: Decision ruleset for a single record queue with selection criteria defined

Sample 3: Decision ruleset for multiple record queues with selection criteria defined
Assignment Configuration Step with selection criteria (msdyn_assignmentconfigurationstep)
  • Assignment Configuration (msdyn_assignmentconfigurationid)
  • Assignment Configuration Step (msdyn_assignmentconfigurationstepid)
  • Is default ruleset (msdyn_isdefaultruleset)
  • Name (msdyn_name)
  • Rule Set (msdyn_rulesetid)
  • Step Order (msdyn_steporder)
  • Step Type (msdyn_type)
  • Unique Name (msdyn_uniquename)
Sample 1: Assignment configuration step for all record queues with selection criteria defined

Sample 2: Assignment configuration step for a single record queue with selection criteria defined

Sample 3: Assignment configuration step for multiple record queues with selection criteria defined

Perform the following steps to export and import the rulesets:

  1. Generate the schema and save it.

  2. Export the data and generate the compressed (.zip) file.

  3. Extract the .zip file, open the data.xml file present in the extracted folder, and do the following:

    • In the source and target environments, run the following OData API call and note the GUID of msdyn_decisioncontractid.

      https://<OrgURL>/api/data/v9.1/msdyn_decisioncontracts?$select=msdyn_decisioncontractid&$filter=msdyn_uniquename eq 'msdyn_assignmentoutput'

      In the data.xml file, replace all the occurrences of the msdyn_decisioncontractid GUID in the source environment with the msdyn_decisioncontractid GUID of the target environment.

    • In the source and target environments, run the following OData API call and note the GUID of msdyn_decisioncontractid.

      https://<OrgURL>/api/data/v9.1/msdyn_decisioncontracts?$select=msdyn_decisioncontractid&$filter=msdyn_uniquename eq 'msdyn_selectionruleoutput'

      In the data.xml file, replace all occurrences of the msdyn_decisioncontractid GUID in the source environment with the msdyn_decisioncontractid GUID of the target environment.

  4. Package the extracted content again.

  5. Use the Configuration Migration tool, select the option to import data, and then select the compressed file.

For sample schema to get all the required records, go to Sample schema for record queues step 2.

FetchXML for queues

Sample 1: All queues

<fetch> 
   <entity name="queue">
    <filter type="and">
      <condition attribute="msdyn_queuetype" operator="eq" value="192350001" />
      <condition attribute="msdyn_isomnichannelqueue" operator="eq" value="1" />
      <condition attribute="queueid" operator="ne" uiname="Default entity queue" uitype="queue" value="{5A4B76B0-DAB5-4717-9743-9490F2F822C6}" />
    </filter>
  </entity>
</fetch>

Sample 2: Single queue

<fetch> 
   <entity name="queue"> 
    <filter type="and"> 
      <condition attribute="queueid" operator="eq" uiname="Test Queue 1" uitype="queue" value="{A5ED5CAA-3A54-EC11-8F8F-000D3A1CBB9E}" /> 
    </filter> 
   </entity> 
</fetch>

Sample 3: Multiple queues

<fetch> 
   <entity name="queue"> 
    <filter type="and"> 
     <condition attribute="queueid" operator="in"> 
      <value uiname="Test Queue 1" uitype="queue">{A5ED5CAA-3A54-EC11-8F8F-000D3A1CBB9E}</value> 
      <value uiname="Test Queue 2" uitype="queue">{B2862B31-3B54-EC11-8F8F-000D3A1CBB9E}</value> 
     </condition> 
    </filter> 
   </entity> 
</fetch> 

FetchXML for decision contracts

Sample 1: Decision contracts for all queues

<fetch distinct="true">
	<entity name="msdyn_decisioncontract">
		<filter type="or">
			<filter type="and">
				<condition attribute="msdyn_queuetype" entityname="aw" operator="eq" value="192350001" />
				<condition attribute="msdyn_isomnichannelqueue" entityname="aw" operator="eq" value="1" />
				<condition attribute="queueid" entityname="aw" operator="ne" uiname="Default entity queue" uitype="queue" value="{5A4B76B0-DAB5-4717-9743-9490F2F822C6}" />
			</filter>
			<filter type="and">
				<condition attribute="msdyn_isomnichannelqueue" entityname="be" operator="eq" value="1" />
				<condition attribute="msdyn_queuetype" entityname="be" operator="eq" value="192350001" />
				<condition attribute="queueid" entityname="be" operator="ne" uiname="Default entity queue" uitype="queue" value="{5A4B76B0-DAB5-4717-9743-9490F2F822C6}" />
			</filter>
			<filter type="and">
				<condition attribute="msdyn_isomnichannelqueue" entityname="bm" operator="eq" value="1" />
				<condition attribute="msdyn_queuetype" entityname="bm" operator="eq" value="192350001" />
				<condition attribute="queueid" entityname="bm" operator="ne" uiname="Default entity queue" uitype="queue" value="{5A4B76B0-DAB5-4717-9743-9490F2F822C6}" />
			</filter>
		</filter>
		<link-entity name="queue" from="msdyn_assignmentinputcontractid" to="msdyn_decisioncontractid" link-type="outer" alias="aw"></link-entity>
		<link-entity name="msdyn_decisionruleset" from="msdyn_inputcontractid" to="msdyn_decisioncontractid" link-type="outer" alias="bb">
			<link-entity name="msdyn_assignmentconfigurationstep" from="msdyn_rulesetid" to="msdyn_decisionrulesetid" link-type="outer" alias="bc">
				<link-entity name="msdyn_assignmentconfiguration" from="msdyn_assignmentconfigurationid" to="msdyn_assignmentconfigurationid" link-type="outer" alias="bd">
					<link-entity name="queue" from="queueid" to="msdyn_queueid" link-type="outer" alias="be"></link-entity>
				</link-entity>
			</link-entity>
		</link-entity>
		<link-entity name="msdyn_decisionruleset" from="msdyn_outputcontractid" to="msdyn_decisioncontractid" link-type="outer" alias="bj">
			<link-entity name="msdyn_assignmentconfigurationstep" from="msdyn_rulesetid" to="msdyn_decisionrulesetid" link-type="outer" alias="bk">
				<link-entity name="msdyn_assignmentconfiguration" from="msdyn_assignmentconfigurationid" to="msdyn_assignmentconfigurationid" link-type="outer" alias="bl">
					<link-entity name="queue" from="queueid" to="msdyn_queueid" link-type="outer" alias="bm"></link-entity>
				</link-entity>
			</link-entity>
		</link-entity>
	</entity>
</fetch>  

Sample 2: Decision contracts for a single queue

<fetch distinct="true">
	<entity name="msdyn_decisioncontract">
		<filter type="or">
			<filter type="and">
				<condition attribute="queueid" entityname="aw" operator="eq" uiname="Test Queue 1" uitype="queue" value="{A5ED5CAA-3A54-EC11-8F8F-000D3A1CBB9E}" />
			</filter>
			<filter type="and">
				<condition attribute="queueid" entityname="be" operator="eq" uiname="Test Queue 1" uitype="queue" value="{A5ED5CAA-3A54-EC11-8F8F-000D3A1CBB9E}" />
			</filter>
			<filter type="and">
				<condition attribute="queueid" entityname="bm" operator="eq" uiname="Test Queue 1" uitype="queue" value="{A5ED5CAA-3A54-EC11-8F8F-000D3A1CBB9E}" />
			</filter>
		</filter>
		<link-entity name="queue" from="msdyn_assignmentinputcontractid" to="msdyn_decisioncontractid" link-type="outer" alias="aw"></link-entity>
		<link-entity name="msdyn_decisionruleset" from="msdyn_inputcontractid" to="msdyn_decisioncontractid" link-type="outer" alias="bb">
			<link-entity name="msdyn_assignmentconfigurationstep" from="msdyn_rulesetid" to="msdyn_decisionrulesetid" link-type="outer" alias="bc">
				<link-entity name="msdyn_assignmentconfiguration" from="msdyn_assignmentconfigurationid" to="msdyn_assignmentconfigurationid" link-type="outer" alias="bd">
					<link-entity name="queue" from="queueid" to="msdyn_queueid" link-type="outer" alias="be"></link-entity>
				</link-entity>
			</link-entity>
		</link-entity>
		<link-entity name="msdyn_decisionruleset" from="msdyn_outputcontractid" to="msdyn_decisioncontractid" link-type="outer" alias="bj">
			<link-entity name="msdyn_assignmentconfigurationstep" from="msdyn_rulesetid" to="msdyn_decisionrulesetid" link-type="outer" alias="bk">
				<link-entity name="msdyn_assignmentconfiguration" from="msdyn_assignmentconfigurationid" to="msdyn_assignmentconfigurationid" link-type="outer" alias="bl">
					<link-entity name="queue" from="queueid" to="msdyn_queueid" link-type="outer" alias="bm"></link-entity>
				</link-entity>
			</link-entity>
		</link-entity>
	</entity>
</fetch> 

Sample 3: Decision contracts for multiple queues

<fetch distinct="true">
	<entity name="msdyn_decisioncontract">
		<filter type="or">
			<filter type="and">
				<condition attribute="queueid" entityname="aw" operator="in">
					<value uiname="Test Queue 1" uitype="queue">{A5ED5CAA-3A54-EC11-8F8F-000D3A1CBB9E}</value>
					<value uiname="Test Queue 2" uitype="queue">{B2862B31-3B54-EC11-8F8F-000D3A1CBB9E}</value>
				</condition>
			</filter>
			<filter type="and">
				<condition attribute="queueid" entityname="be" operator="in">
					<value uiname="Test Queue 1" uitype="queue">{A5ED5CAA-3A54-EC11-8F8F-000D3A1CBB9E}</value>
					<value uiname="Test Queue 2" uitype="queue">{B2862B31-3B54-EC11-8F8F-000D3A1CBB9E}</value>
				</condition>
			</filter>
			<filter type="and">
				<condition attribute="queueid" entityname="bm" operator="in">
					<value uiname="Test Queue 1" uitype="queue">{A5ED5CAA-3A54-EC11-8F8F-000D3A1CBB9E}</value>
					<value uiname="Test Queue 2" uitype="queue">{B2862B31-3B54-EC11-8F8F-000D3A1CBB9E}</value>
				</condition>
			</filter>
		</filter>
		<link-entity name="queue" from="msdyn_assignmentinputcontractid" to="msdyn_decisioncontractid" link-type="outer" alias="aw"></link-entity>
		<link-entity name="msdyn_decisionruleset" from="msdyn_inputcontractid" to="msdyn_decisioncontractid" link-type="outer" alias="bb">
			<link-entity name="msdyn_assignmentconfigurationstep" from="msdyn_rulesetid" to="msdyn_decisionrulesetid" link-type="outer" alias="bc">
				<link-entity name="msdyn_assignmentconfiguration" from="msdyn_assignmentconfigurationid" to="msdyn_assignmentconfigurationid" link-type="outer" alias="bd">
					<link-entity name="queue" from="queueid" to="msdyn_queueid" link-type="outer" alias="be"></link-entity>
				</link-entity>
			</link-entity>
		</link-entity>
		<link-entity name="msdyn_decisionruleset" from="msdyn_outputcontractid" to="msdyn_decisioncontractid" link-type="outer" alias="bj">
			<link-entity name="msdyn_assignmentconfigurationstep" from="msdyn_rulesetid" to="msdyn_decisionrulesetid" link-type="outer" alias="bk">
				<link-entity name="msdyn_assignmentconfiguration" from="msdyn_assignmentconfigurationid" to="msdyn_assignmentconfigurationid" link-type="outer" alias="bl">
					<link-entity name="queue" from="queueid" to="msdyn_queueid" link-type="outer" alias="bm"></link-entity>
				</link-entity>
			</link-entity>
		</link-entity>
	</entity>
</fetch> 

FetchXML for decision rulesets for queues

Sample 1: Decision rulesets for all queues without selection criteria

		<fetch distinct="true">
			<entity name="msdyn_decisionruleset">
				<link-entity name="msdyn_assignmentconfigurationstep" from="msdyn_rulesetid" to="msdyn_decisionrulesetid" link-type="inner" alias="am">
					<filter>
						<condition attribute="msdyn_type" operator="ne" value="192350001" />
					</filter>
					<link-entity name="msdyn_assignmentconfiguration" from="msdyn_assignmentconfigurationid" to="msdyn_assignmentconfigurationid" link-type="inner" alias="an">
						<link-entity name="queue" from="queueid" to="msdyn_queueid" link-type="inner" alias="ao">
							<filter type="and">
								<condition attribute="msdyn_queuetype" operator="eq" value="192350001" />
								<condition attribute="msdyn_isomnichannelqueue" operator="eq" value="1" />
								<condition attribute="queueid" operator="ne" uiname="Default entity queue" uitype="queue" value="{5A4B76B0-DAB5-4717-9743-9490F2F822C6}" />
							</filter>
						</link-entity>
					</link-entity>
				</link-entity>
			</entity>
		</fetch>

Sample 2: Decision rulesets for a single queue without selection criteria

		<fetch distinct="true">
			<entity name="msdyn_decisionruleset">
				<link-entity name="msdyn_assignmentconfigurationstep" from="msdyn_rulesetid" to="msdyn_decisionrulesetid" link-type="inner" alias="am">
					<filter>
						<condition attribute="msdyn_type" operator="ne" value="192350001" />
					</filter>
					<link-entity name="msdyn_assignmentconfiguration" from="msdyn_assignmentconfigurationid" to="msdyn_assignmentconfigurationid" link-type="inner" alias="an">
						<link-entity name="queue" from="queueid" to="msdyn_queueid" link-type="inner" alias="ao">
							<filter type="and">
								<condition attribute="queueid" operator="eq" uiname="Test Queue 1" uitype="queue" value="{A5ED5CAA-3A54-EC11-8F8F-000D3A1CBB9E}" />
							</filter>
						</link-entity>
					</link-entity>
				</link-entity>
			</entity>
		</fetch>

Sample 3: Decision rulesets for multiple queues without selection criteria

		<fetch distinct="true">
			<entity name="msdyn_decisionruleset">
				<link-entity name="msdyn_assignmentconfigurationstep" from="msdyn_rulesetid" to="msdyn_decisionrulesetid" link-type="inner" alias="am">
					<filter>
						<condition attribute="msdyn_type" operator="ne" value="192350001" />
					</filter>
					<link-entity name="msdyn_assignmentconfiguration" from="msdyn_assignmentconfigurationid" to="msdyn_assignmentconfigurationid" link-type="inner" alias="an">
						<link-entity name="queue" from="queueid" to="msdyn_queueid" link-type="inner" alias="ao">
							<filter type="and">
								<condition attribute="queueid" operator="in">
									<value uiname="Test Queue 1" uitype="queue">{A5ED5CAA-3A54-EC11-8F8F-000D3A1CBB9E}</value>
									<value uiname="Test Queue 2" uitype="queue">{B2862B31-3B54-EC11-8F8F-000D3A1CBB9E}</value>
								</condition>
							</filter>
						</link-entity>
					</link-entity>
				</link-entity>
			</entity>
		</fetch>

FetchXML for assignment configurations

Sample 1: Assignment configurations for all queues

<fetch>
	<entity name="msdyn_assignmentconfiguration">
		<link-entity name="queue" from="queueid" to="msdyn_queueid" link-type="inner" alias="bi">
			<filter type="and">
				<condition attribute="msdyn_queuetype" operator="eq" value="192350001" />
				<condition attribute="msdyn_isomnichannelqueue" operator="eq" value="1" />
				<condition attribute="queueid" operator="ne" uiname="Default entity queue" uitype="queue" value="{5A4B76B0-DAB5-4717-9743-9490F2F822C6}" />
			</filter>
		</link-entity>
	</entity>
</fetch> 

Sample 2: Assignment configurations for a single queue

<fetch>
	<entity name="msdyn_assignmentconfiguration">
		<link-entity name="queue" from="queueid" to="msdyn_queueid" link-type="inner" alias="bi">
			<filter type="and">
				<condition attribute="queueid" operator="eq" uiname="Test Queue 1" uitype="queue" value="{A5ED5CAA-3A54-EC11-8F8F-000D3A1CBB9E}" />
			</filter>
		</link-entity>
	</entity>
</fetch> 

Sample 3: Assignment configurations for multiple queues

<fetch>
	<entity name="msdyn_assignmentconfiguration">
		<link-entity name="queue" from="queueid" to="msdyn_queueid" link-type="inner" alias="bi">
			<filter type="and">
				<condition attribute="queueid" operator="in">
					<value uiname="Test Queue 1" uitype="queue">{A5ED5CAA-3A54-EC11-8F8F-000D3A1CBB9E}</value>
					<value uiname="Test Queue 2" uitype="queue">{B2862B31-3B54-EC11-8F8F-000D3A1CBB9E}</value>
				</condition>
			</filter>
		</link-entity>
	</entity>
</fetch> 

FetchXML for assignment configuration steps

Sample 1: Assignment configuration steps for all queues without selection criteria

		<fetch>
			<entity name="msdyn_assignmentconfigurationstep">
				<filter>
						<condition attribute="msdyn_type" operator="ne" value="192350001" />
				</filter>
				<link-entity name="msdyn_assignmentconfiguration" from="msdyn_assignmentconfigurationid" to="msdyn_assignmentconfigurationid" link-type="inner" alias="bq">
					<link-entity name="queue" from="queueid" to="msdyn_queueid" link-type="inner" alias="br">
						<filter type="and">
							<condition attribute="msdyn_queuetype" operator="eq" value="192350001" />
							<condition attribute="msdyn_isomnichannelqueue" operator="eq" value="1" />
							<condition attribute="queueid" operator="ne" uiname="Default entity queue" uitype="queue" value="{5A4B76B0-DAB5-4717-9743-9490F2F822C6}" />
						</filter>
					</link-entity>
				</link-entity>
			</entity>
		</fetch>

Sample 2: Assignment configuration steps for a single queue without selection criteria

		<fetch>
			<entity name="msdyn_assignmentconfigurationstep">
				<filter>
						<condition attribute="msdyn_type" operator="ne" value="192350001" />
				</filter>
				<link-entity name="msdyn_assignmentconfiguration" from="msdyn_assignmentconfigurationid" to="msdyn_assignmentconfigurationid" link-type="inner" alias="bq">
					<link-entity name="queue" from="queueid" to="msdyn_queueid" link-type="inner" alias="br">
						<filter type="and">
							<condition attribute="queueid" operator="eq" uiname="Test Queue 1" uitype="queue" value="{A5ED5CAA-3A54-EC11-8F8F-000D3A1CBB9E}" />
						</filter>
					</link-entity>
				</link-entity>
			</entity>
		</fetch>

Sample 3: Assignment configuration steps for multiple queues without selection criteria

		<fetch>
			<entity name="msdyn_assignmentconfigurationstep">
				<filter>
						<condition attribute="msdyn_type" operator="ne" value="192350001" />
				</filter>
				<link-entity name="msdyn_assignmentconfiguration" from="msdyn_assignmentconfigurationid" to="msdyn_assignmentconfigurationid" link-type="inner" alias="bq">
					<link-entity name="queue" from="queueid" to="msdyn_queueid" link-type="inner" alias="br">
						<filter type="and">
							<condition attribute="queueid" operator="in">
								<value uiname="Test Queue 1" uitype="queue">{A5ED5CAA-3A54-EC11-8F8F-000D3A1CBB9E}</value>
								<value uiname="Test Queue 2" uitype="queue">{B2862B31-3B54-EC11-8F8F-000D3A1CBB9E}</value>
							</condition>
						</filter>
					</link-entity>
				</link-entity>
			</entity> 

FetchXML for decision rulesets for queues

Sample 1: Decision rulesets for all queues with selection criteria

		<fetch distinct="true">
			<entity name="msdyn_decisionruleset">
				<link-entity name="msdyn_assignmentconfigurationstep" from="msdyn_rulesetid" to="msdyn_decisionrulesetid" link-type="inner" alias="am">
					<filter>
						<condition attribute="msdyn_type" operator="eq" value="192350001" />
					</filter>
					<link-entity name="msdyn_assignmentconfiguration" from="msdyn_assignmentconfigurationid" to="msdyn_assignmentconfigurationid" link-type="inner" alias="an">
						<link-entity name="queue" from="queueid" to="msdyn_queueid" link-type="inner" alias="ao">
							<filter type="and">
								<condition attribute="msdyn_queuetype" operator="eq" value="192350001" />
								<condition attribute="msdyn_isomnichannelqueue" operator="eq" value="1" />
								<condition attribute="queueid" operator="ne" uiname="Default entity queue" uitype="queue" value="{5A4B76B0-DAB5-4717-9743-9490F2F822C6}" />
							</filter>
						</link-entity>
					</link-entity>
				</link-entity>
			</entity>
		</fetch>

Sample 2: Decision rulesets for a single queue with selection criteria

		<fetch distinct="true">
			<entity name="msdyn_decisionruleset">
				<link-entity name="msdyn_assignmentconfigurationstep" from="msdyn_rulesetid" to="msdyn_decisionrulesetid" link-type="inner" alias="am">
					<filter>
						<condition attribute="msdyn_type" operator="eq" value="192350001" />
					</filter>
					<link-entity name="msdyn_assignmentconfiguration" from="msdyn_assignmentconfigurationid" to="msdyn_assignmentconfigurationid" link-type="inner" alias="an">
						<link-entity name="queue" from="queueid" to="msdyn_queueid" link-type="inner" alias="ao">
							<filter type="and">
								<condition attribute="queueid" operator="eq" uiname="Test Queue 1" uitype="queue" value="{A5ED5CAA-3A54-EC11-8F8F-000D3A1CBB9E}" />
							</filter>
						</link-entity>
					</link-entity>
				</link-entity>
			</entity>
		</fetch>

Sample 3: Decision rulesets for multiple queues with selection criteria

		<fetch distinct="true">
			<entity name="msdyn_decisionruleset">
				<link-entity name="msdyn_assignmentconfigurationstep" from="msdyn_rulesetid" to="msdyn_decisionrulesetid" link-type="inner" alias="am">
					<filter>
						<condition attribute="msdyn_type" operator="eq" value="192350001" />
					</filter>
					<link-entity name="msdyn_assignmentconfiguration" from="msdyn_assignmentconfigurationid" to="msdyn_assignmentconfigurationid" link-type="inner" alias="an">
						<link-entity name="queue" from="queueid" to="msdyn_queueid" link-type="inner" alias="ao">
							<filter type="and">
								<condition attribute="queueid" operator="in">
									<value uiname="Test Queue 1" uitype="queue">{A5ED5CAA-3A54-EC11-8F8F-000D3A1CBB9E}</value>
									<value uiname="Test Queue 2" uitype="queue">{B2862B31-3B54-EC11-8F8F-000D3A1CBB9E}</value>
								</condition>
							</filter>
						</link-entity>
					</link-entity>
				</link-entity>
			</entity>
		</fetch>

FetchXML for assignment configuration steps

Sample 1: Assignment configuration steps for all queues with selection criteria

		<fetch>
			<entity name="msdyn_assignmentconfigurationstep">
				<filter>
						<condition attribute="msdyn_type" operator="eq" value="192350001" />
				</filter>
				<link-entity name="msdyn_assignmentconfiguration" from="msdyn_assignmentconfigurationid" to="msdyn_assignmentconfigurationid" link-type="inner" alias="bq">
					<link-entity name="queue" from="queueid" to="msdyn_queueid" link-type="inner" alias="br">
						<filter type="and">
							<condition attribute="msdyn_queuetype" operator="eq" value="192350001" />
							<condition attribute="msdyn_isomnichannelqueue" operator="eq" value="1" />
							<condition attribute="queueid" operator="ne" uiname="Default entity queue" uitype="queue" value="{5A4B76B0-DAB5-4717-9743-9490F2F822C6}" />
						</filter>
					</link-entity>
				</link-entity>
			</entity>
		</fetch>

Sample 2: Assignment configuration steps for a single queue with selection criteria

		<fetch>
			<entity name="msdyn_assignmentconfigurationstep">
				<filter>
						<condition attribute="msdyn_type" operator="eq" value="192350001" />
				</filter>
				<link-entity name="msdyn_assignmentconfiguration" from="msdyn_assignmentconfigurationid" to="msdyn_assignmentconfigurationid" link-type="inner" alias="bq">
					<link-entity name="queue" from="queueid" to="msdyn_queueid" link-type="inner" alias="br">
						<filter type="and">
							<condition attribute="queueid" operator="eq" uiname="Test Queue 1" uitype="queue" value="{A5ED5CAA-3A54-EC11-8F8F-000D3A1CBB9E}" />
						</filter>
					</link-entity>
				</link-entity>
			</entity>
		</fetch>

Sample 3: Assignment configuration steps for multiple queues with selection criteria

		<fetch>
			<entity name="msdyn_assignmentconfigurationstep">
				<filter>
						<condition attribute="msdyn_type" operator="eq" value="192350001" />
				</filter>
				<link-entity name="msdyn_assignmentconfiguration" from="msdyn_assignmentconfigurationid" to="msdyn_assignmentconfigurationid" link-type="inner" alias="bq">
					<link-entity name="queue" from="queueid" to="msdyn_queueid" link-type="inner" alias="br">
						<filter type="and">
							<condition attribute="queueid" operator="in">
								<value uiname="Test Queue 1" uitype="queue">{A5ED5CAA-3A54-EC11-8F8F-000D3A1CBB9E}</value>
								<value uiname="Test Queue 2" uitype="queue">{B2862B31-3B54-EC11-8F8F-000D3A1CBB9E}</value>
							</condition>
						</filter>
					</link-entity>
				</link-entity>
			</entity>
		</fetch>

FetchXML for operating hours

Sample 1: Operating hours for all queues

XMLCopy
        <fetch>
            <entity name="msdyn_operatinghour">
                <link-entity name="queue" from="msdyn_operatinghourid" to="msdyn_operatinghourid" link-type="inner" alias="aa">
                <filter type="and">
                    <condition attribute="msdyn_queuetype" operator="eq" value="192350001"/>
                    <condition attribute="msdyn_isomnichannelqueue" operator="eq" value="1"/>
                    <condition attribute="queueid" operator="ne" uiname="Default entity queue" uitype="queue" value="{5A4B76B0-DAB5-4717-9743-9490F2F822C6}"/>
               </filter>
             </link-entity>
           </entity>
        </fetch>

Sample 2: Operating hours for a single queue

XMLCopy
        <fetch>
            <entity name="msdyn_operatinghour">
                <link-entity name="queue" from="msdyn_operatinghourid" to="msdyn_operatinghourid" link-type="inner" alias="ab">
                <filter type="and">
                    <condition attribute="queueid" operator="in">
                        <value uiname="Test Queue 1" uitype="queue">{A5ED5CAA-3A54-EC11-8F8F-000D3A1CBB9E}</value> 
                    </condition>
                </filter>
                </link-entity>
            </entity>
        </fetch>

Sample 3: Operating hours for multiple queues

XMLCopy
        <fetch>
            <entity name="msdyn_operatinghour">
                <link-entity name="queue" from="msdyn_operatinghourid" to="msdyn_operatinghourid" link-type="inner" alias="ab">
                <filter type="and">
                    <condition attribute="queueid" operator="in">
                        <value uiname="Test Queue 1" uitype="queue">{A5ED5CAA-3A54-EC11-8F8F-000D3A1CBB9E}</value> 
                        <value uiname="Test Queue 2" uitype="queue">{B2862B31-3B54-EC11-8F8F-000D3A1CBB9E}</value> 
                    </condition>
                </filter>
                </link-entity>
            </entity>
        </fetch>

FetchXML for overflow action configurations

XMLCopy
<fetch>
  <entity name="msdyn_overflowactionconfig">
    <filter type="and">
      <condition attribute="msdyn_overflowactionconfigid" operator="eq" uiname="QueueTransfer_caae99a1-dcc4-ed11-83ff-00224805c003 " uitype="msdyn_overflowactionconfig" value="{6D49F66F-68F3-ED11-8848-00224805C003}"/>
    </filter>
  </entity>
</fetch>

Migrate configuration for intake rules and record workstreams

Do the steps in the following sections in the order specified to migrate intake rules and record workstreams from the source environment to the destination environment.

Create a solution for record routing workstreams

  1. Create a solution to export configurations from the source environment for record routing workstreams.
  2. Add the required records to the solution using the Add existing button in the command bar.
  3. Select the Work Stream (msdyn_liveworkstream) table. When you add the Work Stream table, related records from the following tables are automatically added to the solution:
  • Capacity Profile (msdyn_capacityprofile) - These records must be migrated using the Configuration Migration tool.
  • Master Entity Routing Configuration (msdyn_masterentityroutingconfiguration).
  • Decision Contract (msdyn_decisioncontract) for intake rules and record workstreams.
  • Decision Rule Set (msdyn_decisionruleset) for intake rules and record workstreams.
  • Routing Configuration (msdyn_routingconfiguration).
  • Routing Configuration Step (msdyn_routingconfigurationstep).
  • Ruleset Entity Mapping (msdyn_rulesetdependencymapping).

Add relationships

You must add routable object relationships based on the unique identifiers of routed records. These records are generated from entities that have been enabled for Unified Routing and require at least one Workstream to be configured such as msdyn_ocliveworkitem_email_msdyn_routableobjectid and msdyn_ocliveworkitem_incident_msdyn_routableobjectid.

  1. Navigate to the solution editor and select Add Existing
  2. Select Conversation tables.
  3. Make sure that Include all objects and Include table metadata options are cleared.
  • Select Edit Object and search for RoutableObjectId
  • Select the required relationships based on the Workstream types that have been added to your solution.

Next steps

Verify migration of records

Migrate configurations for channels using solutions