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:
- Migrate configuration for session templates and notification templates.
- Migrate configuration for skill-based routing rulesets.
- Migrate configuration for new capacity profiles.
- Migrate configuration for queues.
- 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:
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)
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 setup, perform the steps to migrate the corresponding configuration.
For sample schema to get all the required records, go to Sample schema for skill-based routing configuration.
Use the Configuration Migration tool to create the schema and export data from the source environment (organization) for skill-based routing configuration.
- Entity display name: When you create the schema, select the tables (entities) in the sequence as mentioned in the following table.
- Attribute display name: We recommend that you select the columns (attributes) defined in the table. You don't need to select the out-of-the-box system-defined columns like Created By, Created On, Modified By, Modified On, and Owner. You can select custom columns if necessary.
Important
For the Characteristic table, you must manually create bookableresourcecharacteristictype Global choice-value in the target environment, or use a solution to migrate it from the source environment, 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)
Generate the schema and save it.
Export the data and generate the compressed (.zip) file.
Use the Configuration Migration tool and select the option to import data into the target environment using the compressed file.
Migrate configuration for new capacity profiles
If you configured new capacity profiles in your setup, perform the steps to migrate the corresponding configuration.
For sample schema to get all the required records, go to Sample schema for capacity profiles.
Tip
After you migrate a new capacity profile using the Configuration Migration tool, migrate the updates using solutions.
Use the Configuration Migration tool to create the schema and export data in the source environment for capacity profile configuration.
- Entity display name: When you create the schema, select the tables (entities) from the list in the same sequence as mentioned in the following table.
- Attribute display name: We recommend that you select the columns (attributes) defined in the table. You don't need to select the out-of-the-box system defined columns like Created By, Created On, Modified By, Modified On, and Owner. You can select custom columns, if necessary.
- Use FetchXML to filter records: For each selected table, use the appropriate FetchXML query that's mentioned in the table to get single, multiple, or all records based on your requirement. For single or multiple rows, you need to use the source environment 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.
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>
Generate the schema and save it.
Export the data and generate the compressed (.zip) file.
Open the Configuration Migration tool and select the option to import data into the target environment.
Migrate configuration for queues
Use the Configuration Migration tool to create the schema and export data from the source environment for the queue configuration.
- Entity display name: When you create the schema, select the tables (entities) from the list in the same sequence as mentioned in the following table.
- Attribute display name: We recommend that you select the columns (attributes) defined in the table. You don't need to select the out-of-the-box system defined columns like Created By, Created On, Modified By, Modified On, and Owner. You can select custom columns, if necessary.
- Use FetchXML to filter records: For each selected table, use the appropriate FetchXML query that's mentioned in the table to get single, multiple, or all records based on your requirement. For single or multiple rows, you need to use the source environment 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 table, ensure that you select the Do not update existing records checkbox.
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) |
|
Sample 1: All queues for records Sample 2: Single queue for records Sample 3: Multiple queues for records |
Decision contract (msdyn_decisioncontract) |
|
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) |
|
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) |
|
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) |
|
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) |
|
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) |
|
FetchXML for overflow action configurations |
Perform the following steps to export and import the rulesets:
Generate the schema and save it.
Export the data and generate the compressed (.zip) file.
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.
Package the extracted content again.
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) |
|
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) |
|
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:
Generate the schema and save it.
Export the data and generate the compressed (.zip) file.
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.
Package the extracted content again.
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
<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>
<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>
<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
Use the following steps to migrate intake rules and record workstreams from the source environment to the destination environment.
- Create a solution to export configurations from the source environment for record routing workstreams.
- Add the required records to the solution using the Add existing button in the command bar.
- Select the Work Stream (msdyn_liveworkstream) table. Related records from the following tables are automatically added to the solution:
- Capacity Profile (msdyn_capacityprofile)—new records must be migrated using the Configuration Migration tool.
- Master entity routing configuration (msdyn_masterentityroutingconfiguration).
- Decision contract (msdyn_decisioncontract)—for both intake rules and record workstreams.
- Decision rule set (msdyn_decisionruleset)—for both intake rules and record workstreams.
- Routing configuration (msdyn_routingconfiguration).
- Routing configuration step (msdyn_routingconfigurationstep).
- Operating Hour (msdyn_operatinghour).