---
schema_version: "1"
id: 7de9df858a42cf1822c5da81f78a4d9d0591c6c10ee8a83844ea75d7fdaef4cc
title: Shared Steps for Open CTI Migration
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/service/264-0-0/cti_migrate_shared.md
canonical_url: https://help.salesforce.com/s/articleView?id=service.cti_migrate_shared.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: 2a35ac506390801d2ab07d5e1da6a4198c5fbf88e8d06df14727abd4cefeaade
description: If you're migrating from Open CTI to another Voice solution from Salesforce, complete these steps regardless of your migration path.
products:
  - Service Cloud
release: "264"
---
# Shared Steps for Open CTI Migration

If you're migrating from Open CTI to another Voice solution from Salesforce, complete these steps regardless of your migration path.

Before you get started, review [Choose Your Open CTI Migration Path](https://help.salesforce.com/s/articleView?id=service.cti_choose_migration_path.htm&release=264.0.0&type=5 "Understand your options for migrating from Open CTI to a newer Voice solution from Salesforce.") and review the steps specific to your chosen migration path.

Depending on the migration path, the connector and telephony backend are installed via a package, AWS account setup, or Salesforce provisioning. Specifically:

- Paths 1, 2, and 3 involve the same Salesforce reconfiguration and data model, so all shared steps apply. Every call creates a VoiceCall record, routing happens through Omni-Channel, screen pops run in Omni flows, and post-call automation runs in record-triggered flows.
- Path 4 involves a different setup experience and the data model differs, so some shared steps don't apply.

## Step 1: Create a Salesforce Voice Contact Center

This step is required for migration paths 1, 2, and 3. It isn't required for Salesforce Voice with Native Telephony (path 4). To configure path 4, use the one-time setup from Salesforce Go that creates a basic contact center, or see [Set Up Salesforce Voice](https://help.salesforce.com/s/articleView?id=service.afcc_sv_setup.htm&type=5&language=en_US) for detailed instructions.

The Salesforce Voice contact center replaces your Open CTI call center. For a clean migration, create a new contact center. An Open CTI call center includes a CTI Adapter URL. In contrast, a Salesforce Voice contact center has no URL. The connector is loaded as a Lightning component from the installed package, or in the case of native Voice, is built into the Salesforce platform.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-service-support_legacy-264-0-0-production-enus/081af4ec-6c06-4d4b-9443-cb3516bbc46d/images/icon_note.png)

Note If you have a significant number of automations that reference the call center ID, such as flows and Apex, you can convert your Open CTI call center to a Salesforce Voice contact center. However, this approach introduces the risk of misconfiguring reps who were already assigned to the old call center. To convert your call center, use the Metadata API or Salesforce Setup to update the `callCenterType` and `vendorInfoApiName` fields. See your telephony vendor's documentation for the correct field values.

1. From Setup, enter **Contact Centers** into the Quick Find box.
2. Depending on your telephony model, select **Partner Telephony Contact Centers** or **Amazon Contact Centers**.
3. Click **New**.
    
    The Create Contact Center wizard opens.
4. Enter a clear name, such as Voice - Your vendor name - Production.
    
    Don't assign users to your contact center yet.

For detailed instructions based on your telephony model, follow these guides:

- Salesforce Voice with Partner Telephony: [Create Your Partner Telephony Contact Center](https://help.salesforce.com/s/articleView?id=service.voice_pt_setup_create_cc.htm&type=5&language=en_US)
- Salesforce Voice with Amazon Connect: [Create Your Amazon Connect Contact Center](https://help.salesforce.com/s/articleView?id=service.voice_setup_cc_create.htm&type=5&language=en_US)
- Salesforce Voice with Partner Telephony from Amazon Connect: [Create a Partner Amazon Contact Center](https://help.salesforce.com/s/articleView?id=service.voice_pt_amazon_connect.htm&type=5&language=en_US)

## Step 2: Configure Omni-Channel for Voice

This step is required for migration paths 1, 2, 3, and 4.

If you already use Omni-Channel for cases, Messaging, or Enhanced Chat, add a Voice service channel. If you're new to Omni-Channel, [set it up from scratch](https://help.salesforce.com/s/articleView?id=service.omnichannel_enable.htm&type=5&language=en_US).

Create a Voice service channel.

1. From Setup, in the Quick Find box, enter **Service Channels**, then select **Service Channels**.
2. Enter Voice as the label, and select **VoiceCall** as the object.
3. In the channel settings, set the After Conversation Work timeout to match your current ACW policy, if you have one.

Create or update a routing configuration.

1. From Setup, in the Quick Find box, enter **Routing Configurations**, then select **Routing Configurations**.
2. Click **New** or edit an existing routing configuration.
3. Select a routing model.
    
    For Voice, Most Available is recommended.
4. Enter 1 as the units of capacity.
    
    Because Voice is exclusive, one call fully occupies a rep.

Create or update an Omni-Channel queue.

1. From Setup, in the Quick Find box, enter **Queues**, then select **Queues**.
2. Click **New** or edit an existing queue.
3. Add **VoiceCall** as a supported object.
4. Assign your routing configuration to the queue.
5. Add reps as queue members, or use public groups to assign members.

Create presence statuses.

1. From Setup, in the Quick Find box, enter **Presence Statuses**, then select **Presence Statuses**.
2. Create at least three statuses: Available for Voice, Busy, and Break.
3. Assign the Voice service channel to the **Available for Voice** status.
4. From the **Profiles** page in Setup, assign the new presence statuses to user profiles.
    
    In each profile's settings, navigate to **Enabled Service Presences**.

![Tip](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-service-support_legacy-264-0-0-production-enus/081af4ec-6c06-4d4b-9443-cb3516bbc46d/images/icon_tip.png)

Tip A rep's presence status doesn't automatically update when they accept a call. Reps stay on their selected status, and capacity is consumed via AgentWork. If your team is used to a non-Salesforce platform with an explicit On Call status, plan for this in training. There is no On Call status in Omni-Channel because capacity and presence aren't linked.

## Step 3: Build an Omni-Channel Flow to Replace Screen Pop

This step is required for migration paths 1, 2, 3, and 4.

In Open CTI, the screen pop is JavaScript built into the Open CTI adapter, and it can't be reused. You can rebuild it declaratively in Flow Builder.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-service-support_legacy-264-0-0-production-enus/081af4ec-6c06-4d4b-9443-cb3516bbc46d/images/icon_note.png)

Note Screen pops don't work with apps that use standard navigation. Screen pops work only if a service rep is accepting work from an app using console navigation, like the Service Console.

1. In Setup, enter **Flows** in the Quick Find box, then select **Flows**.
2. Click **New Flow**, then search for and select **Omni-Channel Flow**.
3. Configure the flow by adding elements and actions.
    
    Your flow will be unique to your business logic. Here's a general example:
    
    ![An example Omni-Channel flow showing Get Records, Assignment, Decision, and Action elements for routing a call, identifying a contact, and screen popping a case.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-service-support_legacy-264-0-0-production-enus/081af4ec-6c06-4d4b-9443-cb3516bbc46d/support_legacy/images/cti/cti-migrate-screenpop-example.png)
4. Save and activate your flow.
5. Assign the flow.
    1. For Salesforce Voice with Native Telephony, from Setup, use Quick Find to go to **Communication Channels**. From the **All Channels** tab, select the channel. Edit the channel to update routing details.
    2. For all other Voice telephony models, from Setup, use Quick Find to go to **Amazon Contact Centers** or **Partner Telephony Contact Centers**. Select your contact center. In the **Contact Center Channels** section, edit a channel to specify your flow under **Call Routing**.
6. Save your changes.

![Tip](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-service-support_legacy-264-0-0-production-enus/081af4ec-6c06-4d4b-9443-cb3516bbc46d/images/icon_tip.png)

Tip If your screen pop logic is complex, try using an AI tool to generate the Flow specification. Then, build the flow in Flow Builder.

See also:

- [Add a Screen Pop Action to a Flow](https://help.salesforce.com/s/articleView?id=service.omnichannel_add_screen_pop_action.htm&type=5&language=en_US)
- [Use Multiple Screen Pop Actions in a Flow](https://help.salesforce.com/s/articleView?id=service.omnichannel_multiple_screen_pop_actions.htm&type=5&language=en_US)

## Step 4: Assign Reps and Customize Layouts

This step is required for migration paths 1, 2, 3, and 4.

Associate your reps to the new Salesforce Voice contact center and retire your Open CTI softphone layouts. For most telephony models, admins assign reps to a contact center through the contact center's member list, not through the Manage Call Center Users page. For Salesforce Voice with Native Telephony, admins assign permission sets only; there's no need to assign reps to a contact center.

![Important](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-service-support_legacy-264-0-0-production-enus/081af4ec-6c06-4d4b-9443-cb3516bbc46d/images/icon_important.png)

Important A rep can only belong to one contact center or call center at a time. When you add a rep to the Salesforce Voice contact center, the system automatically removes them from the Open CTI call center. Don't do this until you're ready.

Assign reps to the new contact center. This step isn't required for Salesforce Voice with Native Telephony.

1. From Setup, enter **Contact Centers** in the Quick Find box, then select **Partner Telephony Contact Centers** or **Amazon Contact Centers**, depending on your telephony model.
2. Click the name of your contact center.
3. In the **Contact Center Users** section, click **Add**.
4. Select the users to add to this contact center.

Assign permission sets to reps.

1. Assign the Salesforce Voice permission sets included with your package.
    
    Salesforce-provided Amazon Connect or Partner Telephony packages typically include these permission sets: Salesforce Voice Contact Center Rep, Salesforce Voice Contact Center Rep (Partner Telephony), Salesforce Voice Contact Center Admin, Salesforce Voice Contact Center Admin (Partner Telephony), Salesforce Voice Contact Center Supervisor, and Salesforce Voice Contact Center Supervisor (Partner Telephony).
    
    For vendor-specific Partner Telephony packages, check the vendor's installation guide for permission set names.
    
    Salesforce Voice with Native Telephony uses a different licensing model with its own permission sets. For names, see [Assign Permission Sets for Agentforce Contact Center](https://help.salesforce.com/s/articleView?id=service.afcc_sv_user_perms.htm&type=5&language=en_US).

Configure the app and layouts.

1. Add the [Omni-Channel component](https://help.salesforce.com/s/articleView?id=service.omnichannel_add_utility_to_console.htm&type=5&language=en_US) to the app.
    
    The voice softphone panel is embedded in the Omni-Channel component, so there's no separate softphone panel to add.
2. Retire Open CTI softphone layouts.
    
    In Salesforce Voice, the call controls, screen pop, and related-records panel are controlled by the Omni-Channel flow and Voice Extension settings in the contact center. Softphone layouts are not used.

## Step 5: Validate Your Setup in a Sandbox

This step is required for migration paths 1, 2, 3, and 4.

In a sandbox, test these capabilities to catch any errors or misconfigurations.

1. Verify that reps can log into Omni-Channel and set themselves as Available.
2. Verify that an inbound test call triggers a screen pop to the correct contact or account.
3. Verify that reps see **Accept** and **Decline** buttons in the softphone panel.
4. Verify that a call connects, the timer starts, and the hold and mute actions work.
5. Verify that when a call ends, the ACW panel appears and the rep can enter notes.
6. Verify that after the ACW period, a target record such as a case is created with the correct field values.
7. Verify that the resulting VoiceCall record shows the correct duration, status, and `OwnerId`.
8. Verify that a supervisor can see the active call and agent state in the Command Center for Service (formerly Omni Supervisor).
9. Verify that reports on VoiceCall return the expected data.

## Step 6: Monitor Your Contact Center (Days 1–5)

This step is required for migration paths 1, 2, 3, and 4.

Issues are most likely to reveal themselves in the first few days after launch. Monitor your new contact center daily from these vantage points.

1. Create a report on the VoiceCall object that shows VoiceCalls whose `CreatedDate` = TODAY.
    
    - Confirm that the call count matches your expected call volume.
    - If you see records with `Status = null` or `CallDurationInSeconds = 0` on completed calls, the connector isn't publishing HANGUP correctly.
    - If you see records with a blank `OwnerId`, the call was never routed to a rep. If more than 5% of VoiceCall records in a day are missing the `OwnerId` or `CallDurationInSeconds`, pause and investigate.
2. In Command Center for Service (formerly Omni Supervisor), monitor rep status transitions in real time.
    
    Reps should transition to After Conversation Work, not Offline, after a call ends.
3. Monitor failed Apex jobs on the **Apex Jobs** page in Setup.
4. If your connector uses platform events, check the Event Bus monitor on the **Platform Events** page in Setup.
5. Use the Omni-Channel Status API to query `UserServicePresence` to compare actual versus expected rep statuses.
6. Gather performance feedback from your contact center reps and use this table to diagnose reported issues.
    
     
    | Rep Complaint | Likely Issue |
    | --- | --- |
    | "My status went offline by itself after a call." | `enqueueNextState` or `hasPendingStatusChange` isn't configured correctly. |
    | "The screen didn't pop." | The Omni flow isn't assigned to the voice channel, or the flow has a silent SOQL error. |
    | "No record was created after the call." | An Omni-Channel flow or record-triggered flow has an error. Check the **Debug Logs** section of your flow settings in Setup. |
    | "The supervisor can't see my call." | The `voiceCallId` is missing from the CALL\_STARTED event. |

## Step 7: Make a Rollback Plan

This is a just-in-case step that applies to migration paths 1, 2, 3, and 4.

If something goes wrong when your contact center goes live, you can revert to your Open CTI adapter because it's still installed. Reverting takes 15–30 minutes.

During a rollback, no data is lost. You retain any VoiceCall records created during the Salesforce Voice window, as well as associated records (such as cases) created by the Salesforce Voice flow.

1. Remove all reps from the new Salesforce Voice contact center. Reps can only belong to one contact center at a time, so you must complete this step before reassigning them to the Open CTI call center.
    1. For Salesforce Voice with Native Telephony, unassign permission sets for Agentforce Contact Center.
    2. For other telephony models, from Setup, enter **Contact Centers** in the Quick Find box, then select **Partner Telephony Contact Centers** or **Amazon Contact Centers**, depending on your telephony model. Select your contact center, go to Contact Center Users, and then select and remove users.
2. Add reps back to the Open CTI call center.
    1. From Setup, enter **Call Centers** in the Quick Find box, then select **Call Centers**.
    2. Click the name of your Open CTI call center.
    3. Click **Manage Call Center Users**, then add all agents back.
3. Re-enable your CTI adapter URL if it's disabled.
    
    Update the call center definition to point to the original adapter URL.
4. Deactivate Voice routing.
    1. From Setup, enter **Routing Configurations** in the Quick Find box, then select **Routing Configurations**.
    2. Select your voice routing configuration.
    3. Set the status to **Inactive**.
5. Tell your reps to refresh their browser.
    
    The Open CTI softphone panel will load on their next login.

To avoid the need for a rollback, follow these best practices:

- Before cutting over to production, run a parallel period of at least one week in your sandbox with realistic call volume.
- Don't schedule your production cutover on a Monday or the first day of a month. A mid-week, mid-month cutover gives you time to roll back without impacting billing or reporting cycles.

## Step 8: Turn Off Open CTI

This step is required for migration paths 1, 2, 3, and 4.

When your Salesforce Voice contact center goes live, complete these steps to turn off Open CTI.

1. Verify that all reps have been moved from the Open CTI call center to the new contact center.
2. Disable the CTI adapter URL to prevent reps from accidentally loading it.
3. Wait 30 days to verify that no automation depends on your Open CTI package.
    
    This includes flows, Apex, or reports referencing its custom objects. When you're confident that ties to the package have been removed, uninstall the package.