Migrate data for the live chat channel

Use the Configuration Migration tool to migrate the configurations from the source organization to the target organization for live chat.

For information on how to use the Configuration Migration tool, see the following articles:

Prerequisites

The following prerequisites must be met:

  • In the source organization, if a unified routing ruleset refers to the following, then ensure that they exist in the target organization before you proceed with the migration:
    • Custom entities
    • Attributes
    • Relationships
    • Option sets
    • Lookup values
  • Ensure that the user who performs the migration has the required privileges on the following unified routing entities in the source and target organizations:
    • Workstream (msdyn_liveworkstream)
    • Channel configuration (msdyn_omnichannelconfiguration)
    • Operating hours (msdyn_operatinghour)
    • Characteristic (characteristic)
    • Rating Model (rating model)
    • Rating Value (ratingvalue)
    • Capacity Profile (msdyn_capacityprofile)
    • Queue (queue)
    • Decision contract (msdyn_decisioncontract)
    • Decision ruleset (msdyn_decisionruleset)
    • Assignment configuration (msdyn_assignmentconfiguration)
    • Assignment configuration Step (msdyn_assignmentconfigurationstep)
    • Routing configuration (msdyn_routingconfiguration)
    • Routing configuration step (msdyn_routingconfigurationstep)
    • Workstream capacity profile (msdyn_liveworkstreamcapacityprofile)
    • Context variable (msdyn_ocliveworkstreamcontextvariable)
    • Survey question (msdyn_surveyquestions)
    • Survey question sequence (msdyn_questionsequence)
    • Survey answer option (msdyn_chatansweroption)
    • Quick replies (msdyn_cannedmessages)
    • Tags (msdyn_octags)

Important

The migration of the account, channel, bot configuration, and AI and analytics settings is not in scope.

Migrate live chat configuration

You must perform the steps in the order they're listed to migrate your configuration data successfully. Use the information in the tables and refer to the corresponding sample schemas for each configuration.

  1. Migrate configuration using a solution
  2. Migrate configuration for skill-based routing
  3. Migrate configuration for capacity profiles
  4. Migrate configuration for live chat queues
  5. Migrate configuration for live chat workstreams
  6. Migrate configuration for live chat widgets
  7. Verify your migration
  8. Troubleshoot migration of data

Migrate configuration using a solution

If you use custom session templates and notifications in your live chat routing setup, perform the steps outlined in Migrate configuration using a solution.

Migrate skill-based configuration

If skill-based routing rulesets are used in your unified routing setup, perform the steps outlined in Export and import data for skill-based routing. Make sure to adjust any filtering fetch xml appropriately for live chat.

Migrate configuration for capacity profiles

If you have configured capacity profiles in your unified routing setup, perform the steps outlined in Export and import data for capacity profiles. Make sure to adjust any filtering fetch xml appropriately for live chat.

Migrate configuration for live chat queues

For migrating queues for live chat, perform the steps outlined in Migrate data for unified routing-based record queues. Make sure to adjust any filtering fetch xml appropriately for live chat.

Migrate configuration for live chat workstreams

  1. Use the Configuration Migration tool to create the schema and migrate the data from the source organization for the record workstream.

    • 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.
  2. Make sure that the workstreams that're referred in the configuration of the live chat widgets are include in the migration.

    S.No. Entity display name (Logical name) Attribute display name (Logical name) Use FetchXML to filter records
    1. Workstream (msdyn_liveworkstream)
    • API Key (msdyn_apikey)
    • API Key Version Number (msdyn_apikeyversionnumber)
    • Allow Automated Messages (msdyn_enableautomatedmessages)
    • Allowed Presences (msdyn_allowedpresences)
    • Assign WorkItem After Decline or Timeout (msdyn_assignworkitemafterdecline)
    • Auto-close after inactivity (msdyn_autocloseafterinactivity)
    • Block capacity for wrap up state (msdyn_blockcapacityforwrapup)
    • Bot queue (msdyn_bot_queue)
    • Bot rule (msdyn_bot_rule)
    • Bot user (msdyn_bot_user)
    • CallbackPreviewDialing (msdyn_notificationtemplate_callback_previewdialing)
    • Connectors (msdyn_connectorsurl)
    • Consult (msdyn_notificationtemplate_consult)
    • Conversation mode of chat channels (msdyn_conversationmode)
    • Customer ID (msdyn_customerid)
    • Customer Disconnect Hold Duration For Open Conversation (msdyn_customerdisconnectholddurationforopenconversation)
    • Capacity (msdyn_capacityrequired)
    • Capacity format (msdyn_capacityformat)
    • Channel (msdyn_streamsource)
    • Contract Id (msdyn_routingcontractid)
    • Default (msdyn_sessiontemplate_default)
    • Default Queue (msdyn_defaultqueue)
    • Direction (msdyn_direction)
    • Enable selecting from push-based work streams (msdyn_enableselectingfrompushbasedworkstreams)
    • Entity (msdyn_masterentityroutingconfigurationid)
    • FallBack Language (msdyn_fallbacklanguage)
    • Follow-up after waiting (msdyn_followupafterwaiting)
    • Handling Time Threshold (msdyn_handlingtimethreshold)
    • Incoming authenticated (msdyn_notificationtemplate_incoming_auth)
    • Incoming unauthenticated (msdyn_notificationtemplate_incoming_unauth)
    • Is Default (msdyn_isdefault)
    • Keep same agent for entire conversation (msdyn_enableagentaffinity)
    • Last Validation On (msdyn_lastvalidationon)
    • Last Validation Status (msdyn_lastvalidationstatus)
    • Matching Logic (msdyn_matchinglogic)
    • Max Concurrency (msdyn_maxconcurrentconnection)
    • Mode (msdyn_mode)
    • Name (msdyn_name)
    • Notification (msdyn_notification)
    • Notification scenario placeholder (msdyn_notificationscenarioplaceholder)
    • Outbound queue (msdyn_outboundqueueid)
    • Record Identification Rule (msdyn_recordidentificationrule)
    • Record Identification Validation Rule (msdyn_recordidentificationvalidationrule)
    • Restrict download of recording (msdyn_restrictdownloadrecording)
    • Restrict download of transcript (msdyn_restrictdownloadtranscript)
    • Screen pop timeout (msdyn_screenpoptimeout)
    • Screen pop timeout (msdyn_screenpoptimeout_optionSet)
    • Secure API Key (msdyn_secureapikey)
    • Skill Attachment Rules Count (msdyn_skillattachmentrulescount)
    • Skill Attachment Rules Count (Last Updated On)
    • (msdyn_skillattachmentrulescount_date)
    • Skill Attachment Rules Count (State)
    • (msdyn_skillattachmentrulescount_state)
    • Session scenario placeholder (msdyn_sessionscenarioplaceholder)
    • SupervisorAssign (msdyn_notificationtemplate_supervisorassign)
    • Transfer (msdyn_notificationtemplate_transfer)
    • Waiting Time Threshold (msdyn_waitingtimethreshold)
    • Work Distribution Mode (msdyn_workdistributionmode)
    • Work Stream (msdyn_liveworkstreamid)
    Sample 1: All live chat workstreams

    Sample 2: Single live chat workstream

    Sample 3: Multiple live chat workstreams
    2. Context Variable (msdyn_ocliveworkstreamcontextvariable)
    • Name (msdyn_name)
    • Relation Ship Name (msdyn_relationshipname)
    • Type (msdyn_datatype)
    • Work stream (msdyn_liveworkstreamid)
    • IsList (msdyn_islist)
    • Modifiable (msdyn_ismodifiable)
    • Display Name (msdyn_displayname)
    • Displayable (msdyn_isdisplayable)
    • Entity Logical Name (msdyn_entitylogicalname)
    • Context variable (msdyn_ocliveworkstreamcontextvariableid)
    • Status (statecode)
    • Status Reason (statuscode)
    • System Defined (msdyn_issystemdefined)
    Sample 1: Context Variables for all workstreams

    Sample 2: Context variables for a single live chat workstream

    Sample 3: Context Variables for multiple live chat workstreams
    3. 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 live chat workstreams

    Sample 2: Decision contract for a single live chat workstream

    Sample 3: Decision contract for multiple live chat workstreams
    4. Decision rule set (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 live chat workstreams

    Sample 2: Decision ruleset for a single live chat workstream

    Sample 3: Decision ruleset for multiple live chat workstreams
    5. Routing configuration (msdyn_routingconfiguration)
    • Is active configuration (msdyn_isactiveconfiguration)
    • Name (msdyn_name)
    • Routing configuration (msdyn_routingconfigurationid)
    • Unique name (msdyn_uniquename)
    • Workstream (msdyn_liveworkstreamid)
    Sample 1: Routing configuration for all live chat workstreams

    Sample 2: Routing configuration for a single live chat workstream

    Sample 3: Routing configuration for multiple live chat workstreams
    6. Routing configuration step (msdyn_routingconfigurationstep)
    • Name (msdyn_name)
    • Routing configuration (msdyn_routingconfigurationid)
    • Routing configuration step (msdyn_routingconfigurationstepid)
    • Rule set (msdyn_rulesetid)
    • Step order (msdyn_steporder)
    • Step type (msdyn_type)
    • Unique name (msdyn_uniquename)
    Sample 1: Routing configuration step for all live chat workstreams

    Sample 2: Routing configuration step for a single live chat workstream

    Sample 3: Routing configuration step for multiple live chat workstreams
    7. Workstream capacity profile (msdyn_liveworkstreamcapacityprofile)
    • Capacity Profile (msdyn_capacityprofile_id)
    • Name (msdyn_name)
    • Workstream (msdyn_workstream_id)
    • Workstream Capacity profile (msdyn_liveworkstreamcapacityprofileid)
    Sample 1: Workstream capacity profile for all live chat workstreams

    Sample 2: Workstream capacity profile for a single live chat workstream

    Sample 3: Workstream capacity profile for multiple live chat workstreams
    8. Quick Reply (msdyn_cannedmessage)
    • Locale (msdyn_locale_field)
    • Message (msdyn_message)
    • Organization Id (organizationid)
    • Quick reply (msdyn_cannedmessageid)
    • Status (statecode)
    • Status Reason (statuscode)
    • TagsControlField (msdyn_tagscontrolfield)
    • Title (msdyn_title)
    9. Tag (msdyn_octag)
    • Name (msdyn_name)
    • Tag (msdyn_octagid)
  3. Generate the schema and save it.

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

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

Important

When you fetch decision rulesets (msdyn_decisionrulesets) containing context variables, some decision rulesets are created without the dependency mappings. To work around this, perform the following steps:

  1. Import data for all entities including the decision ruleset entity (msdyn_decisionrulesets).
  2. Import data for the decision ruleset entity again. This step ensures that all dependency mappings for the decision rulesets are imported.

For sample schema to get all the required records, see Sample schema for live chat workstream.

FetchXML for workstream entity

Sample 1: All live chat workstreams

<fetch distinct="true">
	<entity name="msdyn_liveworkstream">
		<filter type="and">
			<condition attribute="msdyn_mode" operator="eq" value="717210001" />
			<condition attribute="msdyn_streamsource" operator="eq" value=" 192360000" />
		</filter>
	</entity>
</fetch>

Sample 2: Single live chat workstream

<fetch>
	<entity name="msdyn_liveworkstream">
		<filter type="and">
			<condition attribute="msdyn_liveworkstreamid" operator="eq" uiname="Test Live Chat Workstream 1" uitype="msdyn_liveworkstream" value="{759255C7-7AC8-98E0-7E3E-59A7F0312ABC}" />
		</filter>
	</entity>
</fetch>

Sample 3: Multiple live chat workstreams

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
	<entity name="msdyn_liveworkstream">
		<filter type="and">
			<condition attribute="msdyn_liveworkstreamid" operator="in">
				<value uiname="Test Live Chat Workstream 1" uitype="msdyn_liveworkstream">{759255C7-7AC8-98E0-7E3E-59A7F0312ABC}</value>
				<value uiname="Test Live Chat Workstream 2" uitype="msdyn_liveworkstream">{E6246229-33AC-5A9E-2FFE-51668AD44098}</value>
			</condition>
		</filter>
	</entity>
</fetch>

FetchXML for context variables entity

Sample 1: All live chat workstreams context variables

<fetch>
    <entity name="msdyn_ocliveworkstreamcontextvariable" >
        <link-entity name="msdyn_liveworkstream" from="msdyn_liveworkstreamid" to="msdyn_liveworkstreamid" link-type="inner" alias="aa" >
            <filter type="and" >
                <condition attribute="msdyn_streamsource" operator="eq" value="192360000" />
                <condition attribute="msdyn_mode" operator="eq" value="717210001" />
            </filter>
        </link-entity>
    </entity>
</fetch>

Sample 2: Single live chat workstream context variables

<fetch>
    <entity name="msdyn_ocliveworkstreamcontextvariable" >
        <filter type="and" >
            <condition attribute="msdyn_liveworkstreamid" operator="eq" uiname="Live Chat Workstream" uitype="msdyn_liveworkstream" value="{D3A1F09D-51A0-A6B7-266D-58E1BDB97B53}" />
        </filter>
    </entity>
</fetch>

Sample 3: Multiple live chat workstreams context variables

<fetch>
    <entity name="msdyn_ocliveworkstreamcontextvariable" >
        <filter type="or" >
            <condition attribute="msdyn_liveworkstreamid" operator="eq" uiname="Live Chat Workstream" uitype="msdyn_liveworkstream" value="{D3A1F09D-51A0-A6B7-266D-58E1BDB97B53}" />
            <condition attribute="msdyn_liveworkstreamid" operator="eq" uiname="Live Chat Workstream 1" uitype="msdyn_liveworkstream" value="{f9e18e67-d1a8-ed11-aad1-00224805c057}" />
        </filter>
    </entity>
</fetch>

FetchXML for decision contract entity

Sample 1: Decision contract for all live chat workstreams

<fetch distinct="true" >
    <entity name="msdyn_decisioncontract" >
        <filter type="and" >
            <condition attribute="ismanaged" operator="eq" value="false" />
        </filter>
        <filter type="or" >
            <filter type="and" >
                <condition attribute="msdyn_mode" entityname="an" operator="eq" value="717210001" />
                <condition attribute="msdyn_streamsource" entityname="an" operator="eq" value="192360000" />
            </filter>
            <filter type="and" >
                <condition attribute="msdyn_mode" entityname="bd" operator="eq" value="717210001" />
                <condition attribute="msdyn_streamsource" entityname="bd" operator="eq" value="192360000" />
            </filter>
        </filter>
        <link-entity name="msdyn_liveworkstream" from="msdyn_routingcontractid" to="msdyn_decisioncontractid" link-type="outer" alias="an" />
        <link-entity name="msdyn_decisionruleset" from="msdyn_outputcontractid" to="msdyn_decisioncontractid" link-type="outer" alias="ba" >
            <link-entity name="msdyn_routingconfigurationstep" from="msdyn_rulesetid" to="msdyn_decisionrulesetid" link-type="outer" alias="bb" >
                <link-entity name="msdyn_routingconfiguration" from="msdyn_routingconfigurationid" to="msdyn_routingconfigurationid" link-type="outer" alias="bc" >
                    <link-entity name="msdyn_liveworkstream" from="msdyn_liveworkstreamid" to="msdyn_liveworkstreamid" link-type="outer" alias="bd" />
                </link-entity>
            </link-entity>
        </link-entity>
    </entity>
</fetch>

Sample 2: Decision contract for a single live chat workstream

<fetch distinct="true" >
    <entity name="msdyn_decisioncontract" >
        <filter type="and" >
            <condition attribute="ismanaged" operator="eq" value="false" />
        </filter>
        <filter type="or" >
            <filter type="and" >
                <condition attribute="msdyn_liveworkstreamid" entityname="an" operator="eq" uiname="Live Chat Workstream" uitype="msdyn_liveworkstream" value="{d3a1f09d-51a0-a6b7-266d-58e1bdb97b53}" />
            </filter>
            <filter type="and" >
                <condition attribute="msdyn_liveworkstreamid" entityname="an" operator="eq" uiname="Live Chat Workstream" uitype="msdyn_liveworkstream" value="{d3a1f09d-51a0-a6b7-266d-58e1bdb97b53}" />
            </filter>
        </filter>
        <link-entity name="msdyn_liveworkstream" from="msdyn_routingcontractid" to="msdyn_decisioncontractid" link-type="outer" alias="an" />
        <link-entity name="msdyn_decisionruleset" from="msdyn_outputcontractid" to="msdyn_decisioncontractid" link-type="outer" alias="ba" >
            <link-entity name="msdyn_routingconfigurationstep" from="msdyn_rulesetid" to="msdyn_decisionrulesetid" link-type="outer" alias="bb" >
                <link-entity name="msdyn_routingconfiguration" from="msdyn_routingconfigurationid" to="msdyn_routingconfigurationid" link-type="outer" alias="bc" >
                    <link-entity name="msdyn_liveworkstream" from="msdyn_liveworkstreamid" to="msdyn_liveworkstreamid" link-type="outer" alias="bd" />
                </link-entity>
            </link-entity>
        </link-entity>
    </entity>
</fetch>

Sample 3: Decision contract for multiple live chat workstreams

<fetch distinct="true" >
    <entity name="msdyn_decisioncontract" >
        <filter type="and" >
            <condition attribute="ismanaged" operator="eq" value="false" />
        </filter>
        <filter type="or" >
            <filter type="or" >
                <condition attribute="msdyn_liveworkstreamid" entityname="an" operator="eq" uiname="ALM Live Chat Test Workstream" uitype="msdyn_liveworkstream" value="{d3a1f09d-51a0-a6b7-266d-58e1bdb97b53}" />
                <condition attribute="msdyn_liveworkstreamid" entityname="an" operator="eq" uiname="ALM Live Chat Test Workstream" uitype="msdyn_liveworkstream" value="{f9e18e67-d1a8-ed11-aad1-00224805c057}" />
            </filter>
            <filter type="or" >
                <condition attribute="msdyn_liveworkstreamid" entityname="bd" operator="eq" uiname=" Live Chat Workstream" uitype="msdyn_liveworkstream" value="{d3a1f09d-51a0-a6b7-266d-58e1bdb97b53}" />
                <condition attribute="msdyn_liveworkstreamid" entityname="bd" operator="eq" uiname="Live Chat Workstream 2" uitype="msdyn_liveworkstream" value="{f9e18e67-d1a8-ed11-aad1-00224805c057}" />
            </filter>
        </filter>
        <link-entity name="msdyn_liveworkstream" from="msdyn_routingcontractid" to="msdyn_decisioncontractid" link-type="outer" alias="an" />
        <link-entity name="msdyn_decisionruleset" from="msdyn_outputcontractid" to="msdyn_decisioncontractid" link-type="outer" alias="ba" >
            <link-entity name="msdyn_routingconfigurationstep" from="msdyn_rulesetid" to="msdyn_decisionrulesetid" link-type="outer" alias="bb" >
                <link-entity name="msdyn_routingconfiguration" from="msdyn_routingconfigurationid" to="msdyn_routingconfigurationid" link-type="outer" alias="bc" >
                    <link-entity name="msdyn_liveworkstream" from="msdyn_liveworkstreamid" to="msdyn_liveworkstreamid" link-type="outer" alias="bd" />
                </link-entity>
            </link-entity>
        </link-entity>
    </entity>
</fetch>

FetchXML for decision ruleset entity

Sample 1: Decision ruleset for all live chat workstreams

<fetch distinct="true" >
    <entity name="msdyn_decisionruleset" >
        <filter type="or" >
            <filter type="and" >
                <condition attribute="msdyn_mode" entityname="af" operator="eq" value="717210001" />
                <condition attribute="msdyn_streamsource" entityname="af" operator="eq" value="192360000" />
            </filter>
        </filter>
        <link-entity name="msdyn_routingconfigurationstep" from="msdyn_rulesetid" to="msdyn_decisionrulesetid" link-type="outer" alias="ad" >
            <link-entity name="msdyn_routingconfiguration" from="msdyn_routingconfigurationid" to="msdyn_routingconfigurationid" link-type="outer" alias="ae" >
                <link-entity name="msdyn_liveworkstream" from="msdyn_liveworkstreamid" to="msdyn_liveworkstreamid" link-type="outer" alias="af" />
            </link-entity>
        </link-entity>
    </entity>
</fetch>

Sample 2: Decision ruleset for a single live chat workstream

<fetch distinct="true" >
    <entity name="msdyn_decisionruleset" >
        <filter type="or" >
            <filter type="and" >
                <condition attribute="msdyn_liveworkstreamid" entityname="af" operator="eq" uiname="Live Chat Workstream" uitype="msdyn_liveworkstream" value="{d3a1f09d-51a0-a6b7-266d-58e1bdb97b53}" />
            </filter>
        </filter>
        <link-entity name="msdyn_routingconfigurationstep" from="msdyn_rulesetid" to="msdyn_decisionrulesetid" link-type="outer" alias="ad" >
            <link-entity name="msdyn_routingconfiguration" from="msdyn_routingconfigurationid" to="msdyn_routingconfigurationid" link-type="outer" alias="ae" >
                <link-entity name="msdyn_liveworkstream" from="msdyn_liveworkstreamid" to="msdyn_liveworkstreamid" link-type="outer" alias="af" />
            </link-entity>
        </link-entity>
    </entity>
</fetch>

Sample 3: Decision ruleset for multiple live chat workstreams

<fetch distinct="true" >
    <entity name="msdyn_decisionruleset" >
        <filter type="or" >
            <filter type="or" >
                <condition attribute="msdyn_liveworkstreamid" entityname="af" operator="eq" uiname="Live Chat Workstream" uitype="msdyn_liveworkstream" value="{d3a1f09d-51a0-a6b7-266d-58e1bdb97b53}" />
                <condition attribute="msdyn_liveworkstreamid" entityname="af" operator="eq" uiname="Live Chat Workstream 1" uitype="msdyn_liveworkstream" value="{f9e18e67-d1a8-ed11-aad1-00224805c057}" />
            </filter>
        </filter>
        <link-entity name="msdyn_routingconfigurationstep" from="msdyn_rulesetid" to="msdyn_decisionrulesetid" link-type="outer" alias="ad" >
            <link-entity name="msdyn_routingconfiguration" from="msdyn_routingconfigurationid" to="msdyn_routingconfigurationid" link-type="outer" alias="ae" >
                <link-entity name="msdyn_liveworkstream" from="msdyn_liveworkstreamid" to="msdyn_liveworkstreamid" link-type="outer" alias="af" />
            </link-entity>
        </link-entity>
    </entity>
</fetch>

FetchXML for routing configuration entity

Sample 1: Routing configuration for all live chat workstreams

<fetch>
	<entity name="msdyn_routingconfiguration">
		<link-entity name="msdyn_liveworkstream" from="msdyn_liveworkstreamid" to="msdyn_liveworkstreamid" link-type="inner" alias="ah">
			<filter type="and">
				<condition attribute="msdyn_mode" operator="eq" value="717210001" />
				<condition attribute="msdyn_streamsource" operator="eq" value="192360000" />
			</filter>
		</link-entity>
	</entity>
</fetch> 

Sample 2: Routing configuration for a single live chat workstream

<fetch>
	<entity name="msdyn_routingconfiguration">
		<link-entity name="msdyn_liveworkstream" from="msdyn_liveworkstreamid" to="msdyn_liveworkstreamid" link-type="inner" alias="ah">
			<filter type="and">
				<condition attribute="msdyn_liveworkstreamid" operator="eq" uiname="Test Live Chat Workstream 1" uitype="msdyn_liveworkstream" value="{759255C7-7AC8-98E0-7E3E-59A7F0312ABC}" />
			</filter>
		</link-entity>
	</entity>
</fetch>

Sample 3: Routing configuration for multiple live chat workstreams

<fetch>
	<entity name="msdyn_routingconfiguration">
		<link-entity name="msdyn_liveworkstream" from="msdyn_liveworkstreamid" to="msdyn_liveworkstreamid" link-type="inner" alias="ah">
			<filter type="and">
				<condition attribute="msdyn_liveworkstreamid" operator="in">
					<value uiname="Test Live Chat Workstream 1" uitype="msdyn_liveworkstream">{759255C7-7AC8-98E0-7E3E-59A7F0312ABC}</value>
					<value uiname="Test Live Chat Workstream 2" uitype="msdyn_liveworkstream">{E6246229-33AC-5A9E-2FFE-51668AD44098}</value>
				</condition>
			</filter>
		</link-entity>
	</entity>
</fetch>

FetchXML for routing configuration step entity

Sample 1: Routing configuration step for all live chat workstreams

<fetch>
	<entity name="msdyn_routingconfigurationstep">
		<link-entity name="msdyn_routingconfiguration" from="msdyn_routingconfigurationid" to="msdyn_routingconfigurationid" link-type="inner" alias="ak">
			<link-entity name="msdyn_liveworkstream" from="msdyn_liveworkstreamid" to="msdyn_liveworkstreamid" link-type="inner" alias="al">
				<filter type="and">
					<condition attribute="msdyn_mode" operator="eq" value="717210001" />
					<condition attribute="msdyn_streamsource" operator="eq" value="192360000" />
				</filter>
			</link-entity>
		</link-entity>
	</entity>
</fetch>

Sample 2: Routing configuration step for a single live chat workstream

<fetch>
	<entity name="msdyn_routingconfigurationstep">
		<link-entity name="msdyn_routingconfiguration" from="msdyn_routingconfigurationid" to="msdyn_routingconfigurationid" link-type="inner" alias="ak">
			<link-entity name="msdyn_liveworkstream" from="msdyn_liveworkstreamid" to="msdyn_liveworkstreamid" link-type="inner" alias="al">
				<filter type="and">
					<condition attribute="msdyn_liveworkstreamid" operator="eq" uiname="Test Live Chat Workstream 1" uitype="msdyn_liveworkstream" value="{759255C7-7AC8-98E0-7E3E-59A7F0312EFC}" />
				</filter>
			</link-entity>
		</link-entity>
	</entity>
</fetch>

Sample 3: Routing configuration step for multiple live chat workstreams

<fetch>
	<entity name="msdyn_routingconfigurationstep">
		<link-entity name="msdyn_routingconfiguration" from="msdyn_routingconfigurationid" to="msdyn_routingconfigurationid" link-type="inner" alias="ak">
			<link-entity name="msdyn_liveworkstream" from="msdyn_liveworkstreamid" to="msdyn_liveworkstreamid" link-type="inner" alias="al">
				<filter type="and">
					<condition attribute="msdyn_liveworkstreamid" operator="in">
						<value uiname="Test Live Chat Workstream 1" uitype="msdyn_liveworkstream">{759255C7-7AC8-98E0-7E3E-59A7F0312ABC}</value>
						<value uiname="Test Live Chat Workstream 2" uitype="msdyn_liveworkstream">{E6246229-33AC-5A9E-2FFE-51668AD44098}</value>
					</condition>
				</filter>
			</link-entity>
		</link-entity>
	</entity>
</fetch>

FetchXML for workstream capacity profile entity

Sample 1: Workstream capacity profile for all live chat workstreams

<fetch>
	<entity name="msdyn_liveworkstreamcapacityprofile">
		<link-entity name="msdyn_liveworkstream" from="msdyn_liveworkstreamid" to="msdyn_workstream_id" link-type="inner" alias="am">
			<filter type="and">
				<condition attribute="msdyn_mode" operator="eq" value="717210001" />
				<condition attribute="msdyn_streamsource" operator="eq" value="192360000" />
			</filter>
		</link-entity>
	</entity>
</fetch>

Sample 2: Workstream capacity profile for a single live chat workstream

<fetch>
	<entity name="msdyn_liveworkstreamcapacityprofile">
		<link-entity name="msdyn_liveworkstream" from="msdyn_liveworkstreamid" to="msdyn_workstream_id" link-type="inner" alias="am">
			<filter type="and">
				<condition attribute="msdyn_liveworkstreamid" operator="eq" uiname="Test Live Chat Workstream 1" uitype="msdyn_liveworkstream" value="{759255C7-7AC8-98E0-7E3E-59A7F0312EFC}" />
			</filter>
		</link-entity>
	</entity>
</fetch>

Sample 3: Workstream capacity profile for multiple live chat workstreams

<fetch>
	<entity name="msdyn_liveworkstreamcapacityprofile">
		<link-entity name="msdyn_liveworkstream" from="msdyn_liveworkstreamid" to="msdyn_workstream_id" link-type="inner" alias="am">
			<filter type="and">
				<condition attribute="msdyn_liveworkstreamid" operator="in">
					<value uiname="Test Live Chat Workstream 1" uitype="msdyn_liveworkstream">{759255C7-7AC8-98E0-7E3E-59A7F0312EFC}</value>
					<value uiname="Test Live Chat Workstream 2" uitype="msdyn_liveworkstream">{E6246229-33AC-5A9E-2FFE-51668AD44215}</value>
				</condition>
			</filter>
		</link-entity>
	</entity>
</fetch>

Migrate configuration for live chat widgets

The following assumptions are in place:

  • Rules will be exported after chat configurations to be able to use pre-conversation survey questions as conversation context variables.

  • You can't create the context variables when you're adding new questions to the pre-conversation survey section.

  • Queues can be exported after live chat configurations and rules definition, to be able to use pre-conversation survey questions as context variables.

  • The workstream must exist whether it was created manually or previously migrated to the destination organization.

To migrate data for live chat widgets

  1. Use the Configuration Migration tool to create the schema and export data from the source organization for the live chat widget and related entities.

    • Entity display name: When you create the schema, select the entities in the sequence as mentioned in the table.
    • Attribute display name: We recommend that you select the attributes defined in the following table. You don't have to select the system-defined attributes, such as Created By, Created On, Modified By, Modified On, and Owner. You can select custom attributes if necessary.
    S.No. Entity display name (Logical name) Attribute display name (Logical name)
    1. Chat widget (msdyn_livechatconfig) FetchXMl to filter records for live chat
    Note:
    - Replace the value for msdyn_liveworkstream in the condition section.
    - Don't include msdyn_widgetappid and msdyn_widgetsnippet as part of the entity.
    - Ensure as part of the entity declaration in the schema that the plugin is disabled. (disableplugins="false")
    • (Deprecated) During non-operating hour (msdyn_duringnonoperatinghours)
    • Agent display name(msdyn_agentdisplayname)
    • Allow download of transcript (msdyn_enablechattranscriptdownload)
    • Allow email of transcript (msdyn_enablechattranscriptemail)
    • Anonymize Agent (msdyn_showagentname)
    • Authentication settings (msdyn_authsettingsid)
    • Auto Detect Language (msdyn_autodetectlanguage)
    • Bot Survey (msdyn_postconversationsurveybotsurvey)
    • Calling options (msdyn_callingoptions)
    • Chat Widget (msdyn_livechatconfigid)
    • Co-browse provider (msdyn_cobrowseprovider)
    • Display Generic Name (msdyn_genericagentdisplayname)
    • Email Template (msdyn_emailtemplate)
    • Enable (msdyn_postconversationsurveyenable)
    • Enable Co-browse (msdyn_enablecobrowse)
    • Enable file attachments for agents (msdyn_enablefileattachmentsforagents)
    • Enable file attachments for customers (msdyn_enablefileattachmentsforcustomers)
    • Enable Screen sharing (msdyn_enablescreensharing)
    • Indicates the conversation mode of the chat widget (msdyn_conversationmode)
    • Indicates whether display of wait time is enabled (msdyn_averagewaittime_enabled)
    • infolabel(msdyn_infolabel)
    • Language(msdyn_widgetlocale)
    • Language(msdyn_ocwidgetlanguage)
    • Language (msdyn_language)
    • Logo (msdyn_avatarurl)
    • Message (msdyn_postconversationsurveymessagetext)
    • Modified On (modifiedon)
    • Name (msdyn_name)
    • Offline Widget Title (msdyn_offlinewidgettitle)
    • Offline Widget Subtitle (msdyn_offlinewidgetsubtitle)
    • Offline Widget Theme Color (msdyn_offlinewidgetthemecolor)
    • Operating hours (msdyn_operatinghourid)
    • Portal URL (msdyn_portalurl)
    • Position (msdyn_widgetposition)
    • Post-chat Survey (msdyn_postchatenabled)
    • Pre-Chat Survey (msdyn_prechatenabled)
    • Proactive-chat (msdyn_proactivechatenabled)
    • Provider API key (msdyn_oc_geolocationprovider)
    • Question Set for Authenticated Users (msdyn_prechatquestionnaireauthenticated)
    • Question Set for Unauthenticated Users (msdyn_prechatquestionnaireunauthenticated)
    • Reconnect to previous agent (msdyn_timetoreconnectwithpreviousagent)
    • Redirection URL (msdyn_redirectionurl)
    • Request visitor location (msdyn_requestvisitorlocation)
    • Screen sharing provider (msdyn_screensharingprovider)
    • Sender Mailbox (msdyn_mailbox)
    • Show position in queue (msdyn_positioninqueue_enabled)
    • Show widget during offline hours (msdyn_showwidgetduringofflinehours)
    • Status (statecode)
    • Status Reason (statuscode)
    • Subtitle (msdyn_widgetsubtitle)
    • Survey (msdyn_postconversationsurvey)
    • Survey Mode (msdyn_postconversationsurveymode)
    • Theme Color (msdyn_widgetthemecolor)
    • Title (msdyn_widgettitle)
    • Turn on reconnect to previous chat (msdyn_enablechatreconnect)
    • Turn on sound notifications (msdyn_widgetsoundnotification)
    • Turn on unread messages indicator (msdyn_widgetvisualnotification)
    • Work stream (msdyn_liveworkstreamid)
    2. Chat Authentication Settings (msdyn_authenticationsettings)
    • Authentication type (msdyn_authenticationtype)
    • Chat Authentication Settings (msdyn_authenticationsettingsid)
    • JavaScript client function (msdyn_javascriptclientfunction)
    • Name (msdyn_name)
    • Public key URL (msdyn_publickeyurl)
    • Status (statecode)
    • Status Reason (statuscode)
    3. Localization (msdyn_oclocalizationdata)
    • Automated message (msdyn_systemmessageid)
    • Default Localized Text (msdyn_defaultlocalizedtext)
    • Entity Column Name (msdyn_entitycolumnname)
    • Entity Name (msdyn_entityname)
    • Entity Record ID (msdyn_entityrecordid)
    • Is default (msdyn_isdefault)
    • Language code (msdyn_customerlanguageid)
    • Language Code (msdyn_languagecode)
    • Localization (msdyn_oclocalizationdataid)
    • Localized text (msdyn_localizedtext)
    • Organization ID (organizationid)
    • Status (statecode)
    • Status Reason (statuscode)
    4. Message (msdyn_ocsystemmessage)
    • Channel (msdyn_streamsource)
    • Default language (msdyn_defaultlanguage)
    • Instance ID (msdyn_instanceid)
    • Message (msdyn_ocsystemmessageid)
    • Message description (msdyn_messagedescription)
    • Message recipient (msdyn_messagereceiver)
    • Message template trigger (msdyn_messagetemplatetrigger)
    • Message Text (msdyn_messagetext)
    • Message trigger (msdyn_systemmessageeventtype)
    • Message type (msdyn_messagetype)
    • Name (msdyn_name)
    • Organization ID (organizationid)
    • Status (statecode)
    • Status Reason (sttuscode)
    • Widget (msdyn_widgetid)
    5. Survey Answer Option (msdyn_chatansweroption)
    • Name (msdyn_name)
    • Status (statecode)
    • Status Reason (statuscode)
    • Survey Answer Option (msdyn_chatansweroptionid)
    • Survey question (msdyn_answeroptionsid)
    6. Survey Question (msdyn_surveyquestion)
    • Answer type (msdyn_answertyp)
    • Help Text (msdyn_placeholdertext)
    • Question name (msdyn_nam)
    • Question text (msdyn_questiontext)
    • Rating Scale (msdyn_ratingscal)
    • Status (statecod)
    • Status Reason (statuscod)
    • Survey Question (msdyn_surveyquestionid)
    • Work stream (msdyn_liveworkstreamtochatquestion)
    7. Survey Question Sequence (msdyn_questionsequence)
    • - Chat widget (msdyn_chatengagementtochatsequenceid)
    • Name (msdyn_name)
    • Order (sequencenumber)
    • Required (msdyn_questionrequired)
    • Status (statecode)
    • Status Reason (statuscode)
    • Survey question name (msdyn_surveyquestion)
    • Survey Question Sequence (msdyn_questionsequenceid)
    • Survey type (msdyn_chatquestionnairetype)
    8. Survey Response(msdyn_chatquestionnaireresponse)
    • Name (msdyn_name)
    • Status (statecode)
    • Status Reason (statuscode)
    • Survey answer option (msdyn_chatansweroptionid)
    • Survey answer text (msdyn_chatanswertext)
    • Survey Question ID (msdyn_surveyquestionid)
    • Survey response (msdyn_chatquestionnaireresponseid)
    • Survey Response Values (msdyn_chatquestionnaireresponseitemid)
    9. Chat Widget Location (msdyn_livechatwidgetlocation)
    • Chat widget (msdyn_livechatconfigid)
    • Chat Widget Location (msdyn_livechatwidgetlocationid)
    • Location URL Wildcard (msdyn_locationurlwildcard)
    • Modified By (modifiedby)
    • Rule Type (msdyn_ruletype)
    • Status (statecode)
    • Status Reason (statuscode)
    • Title (msdyn_name
    • Value (msdyn_domainvalue)
    10. Chat Widget Language (msdyn_chatwidgetlanguage)
    • Chat Widget Language (msdyn_chatwidgetlanguageid)
    • Language Name (msdyn_languagename)
    • Locale ID (msdyn_localeid)
    • Status (statecode)
    • Status Reason (statuscode)
    11. Localized Survey Question (msdyn_localizedsurveyquestion)
    • Description (msdyn_description)
    • Language Code (msdyn_languagecode)
    • Localized Question Text (msdyn_localizedquestiontext)
    • Localized Survey Question (msdyn_localizedsurveyquestionid)
    • Name (msdyn_name)
    • Status (statecode)
    • Status Reason (statuscode)
    • Survey Question (msdyn_surveyquestionid)
    12. Geolocation Provider(msdyn_oc_geolocationprovider)
    • Bing Maps API key (msdyn_providerapikey)
    • Geo Location Provider (msdyn_oc_geolocationproviderid)
    • Name (msdyn_name)
    • Provider API Key Version (msdyn_providerapikeyversion)
    • Provider name (msdyn_providername)
    • Status (statecode)
    • Status Reason (statuscode)
  2. Generate the schema and save it.

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

  4. 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, see Sample schema for live chat channel

FetchXML for live chat

    <fetch version="1.0" mapping="logical" distinct="false">
	<entity name="msdyn_livechatconfig">
		<link-entity name="msdyn_liveworkstream" from="msdyn_liveworkstreamid" to="msdyn_liveworkstreamid" link-type="inner" alias="ab">
			<filter type="and">
				<condition attribute="msdyn_liveworkstreamid" operator="eq" uiname="elopez-ws-lcw-m7" uitype="msdyn_liveworkstream" value="{EBEE52BD-2EFD-99C5-C658-F13E7C7D3F8C}" />
			</filter>
		</link-entity>
	</entity>
</fetch>

Verify your migration

After you import the unified routing-related configuration data successfully from the source to target organization, perform the following steps in the target organization:

  1. In the UI, make sure that the unified routing configuration and rulesets are rendered properly and don't display errors.

  2. If skills and rating values are used in unified routing rulesets, then you need to manually link, associate, or create the users, bookable resources, and bookable resources characteristics records.

  3. If capacity profiles are used in rulesets and workstreams for unified routing, then you need to manually link, associate, or create the users, bookable resources, and bookable resources capacity profile records.

Considerations for export and import of data

To troubleshoot any issues that you might face during migration, check the log files as follows:

  • When you import data into the target organization, if you see yellow warning symbols, then check the following logs in the Configuration Migration tool:

    • Login_ErrorLog.log: Provides information about any issues you had when you signed in to the organization using the Configuration Management tool.
    • DataMigrationUtility.log: Provides information about the tasks performed using the tool during the last migration.
    • ImportDataDetail.log: Provides information about the data imported by the tool in the last data import.

    More information: Troubleshoot configuration data migration issues using log files

    Yellow warnings that indicate errors during data import.

  • If the logs contain network errors, then repeat the import process.

    Here's an example:

    Time: 11:46:09 PM
    Error: There was no endpoint listening at `https://www.contoso.com/XRMServices/2011/Organization.svc/web?SDKClientVersion=9.2.46.5279` that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.
    Stack Trace: Service stack trace:
    

See also

Migrate configuration for records based on unified routing