CreateBlogSupport
Log inSign up
Home
Webex Calling
  • Guides
  • Webex Calling Beta
  • Webex Cloud Calling
  • Broadworks Calling
  • UCM Calling
  • AI Assistant for Developers
  • Troubleshoot the API
  • Beta Program
  • Webex Status API

Webex Calling

Move User API Workflows

The Webex Calling platform provides comprehensive APIs for managing user configurations and locations. Among the most critical administrative operations is the ability to move users between locations while preserving their calling settings and minimizing service disruption. The Move User APIs enable administrators to automate complex user relocation scenarios that would otherwise require extensive manual configuration in Webex Control Hub.

User moves in Webex Calling involve transferring users from one location to another within the same organization, along with their associated phone numbers and/or extensions, or assigning new ones as needed. For further details on features that are retained/removed during a move, see the Features section in Move Calling users help document.

anchorExploring the Move User Workflows

anchor

The Move User APIs support both single-user and bulk operations, with the ability to move up to 100 users in a single request. These APIs provide several distinct workflows designed to handle different aspects of the user relocation process. The workflows can be grouped into validation, execution, and monitoring categories, each serving specific operational needs:

Validation Workflow

Validate Move Users Job with allows administrators to preview the impact of moving users before executing the actual move operation. This enables administrators to perform a complete set of validations, returning the results synchronously. The initial request validations are performed first, and if no errors are found at this stage, the system proceeds with comprehensive request validations and returns detailed impacts and errors arrays that help administrators understand the potential impacts of proceeding with the move, as well as any hard stops that may prevent the move.

Note: The validation workflow is supported only for single calling user moves.

Move Execution Workflow

Execute Move Users Job with performs the actual user relocation. This workflow supports both calling and non-calling user moves. Initial request validations are performed first, and only if these pass does the system proceed with the actual user move.

For a single non-calling user, no job is created and the move executes synchronously.

On the other hand, for a single calling user or bulk user moves, a job is created. A job is created for asynchronous operations, showing up in Control Hub as a task. Each job may execute multiple steps that can be monitored for progress and completion status, predominantly used for bulk processing of records. During move user job execution, additional comprehensive request validation errors may occur, which can be viewed via the List Move Users Job Errors API or CSV downloads from the Get Move Users Job Status API.

Job Monitoring and Status Workflow

For all jobs, corresponding monitoring APIs are defined that provide real-time visibility into job progress, completion status, and detailed error reporting. For the move user jobs, it consists of the below APIs:

  • List Move Users Jobs retrieves all move jobs for an organization, ordered by most recent first, with status information and completion counts.
  • Get Move Users Job Status provides detailed status information for a specific job, including execution timestamps, step-by-step progress, and CSV download links for detailed results.
  • List Move Users Job Errors returns detailed error information for a specific job that completed with errors, helping administrators identify and resolve specific user move failures.

The monitoring capabilities include:

  • Real-time status tracking with job execution states (STARTED, COMPLETED, COMPLETED_WITH_ERRORS, FAILED)
  • Progress counters showing total moves, successful moves, failed moves, and pending moves
  • Detailed error reporting with specific error codes and messages for troubleshooting
  • CSV export functionality for comprehensive move results and audit trails

anchorGetting Started

anchor

The Move User APIs require full administrator privileges and specific scopes for execution. Begin by ensuring you have the proper authentication and permissions, then follow a validation-first approach to minimize disruption during user moves.

Prerequisites
  • Full administrator auth token with scopes: spark-admin:telephony_config_write, spark-admin:people_write, and identity:groups_rw
  • Read-only administrator auth token (for monitoring operations) with scope: spark-admin:telephony_config_read
  • Webex Calling enabled organization with multiple locations configured
Recommended Workflow
  1. Plan the move by identifying source and target locations, users to be moved, and desired phone numbers/extensions
  2. Validate first if it is for a single calling user using validate: true to identify all potential errors and impacts (see Validation Workflow)
  3. Resolve errors identified from the validation workflow
  4. Execute the move using validate: false after validation is clean (for a single calling user) or directly for bulk operations
  5. Monitor progress using the job status APIs for asynchronous move operations
  6. Handle errors by reviewing detailed error reports and retrying failed moves after resolution

anchorCommon Error Codes and Responses

anchor

The Move User APIs return specific error codes to help identify and resolve issues during validation and execution. Understanding these error codes is essential for proper error handling and troubleshooting.

HTTP Status Codes
Status CodeDescriptionCommon Causes
200SuccessRequest processed successfully (for validation and status checks)
201CreatedInitial validations passed successfully and job has been created to move the users
400Bad RequestInvalid request format, missing required fields, validation errors
500Internal Server ErrorServer-side processing errors, gateway issues
Validation Error Codes

The Move User APIs use different categories of validation error codes depending on when validation occurs in the request lifecycle. Understanding these categories helps with proper error handling and troubleshooting.

Hard Stop Validation Errors

Typically, all validation failures for a user move request will be consolidated and returned together. This means that if a user has multiple validation issues, all errors will be collected and returned together, allowing administrators to address all problems in one iteration.

However, there are certain exceptions where validation consolidation does not apply and the request is rejected immediately. Some of these cases include:

  • Request has more users than the allowed limit
  • Request JSON syntax errors - Malformed JSON prevents further processing
  • JSON parse errors - Invalid JSON structure stops validation
  • Malformed Webex resource type - Fundamental format issues
  • Duplicate users and empty users - Their related fields (locationId/extension/phoneNumber) are not validated, but other unique users in the request are still validated

Initial Request Validation Errors

For all requests, regardless of the validate attribute value, a basic set of validations is performed synchronously. These validations include basic request format checks, user ID validation, and business rule verification. Any validation failures at this stage are returned synchronously in the errors array field of the error response with the appropriate error codes and status code 400.

The possible error codes that can occur during initial API request validation include:

Error CodeMessage
400Users should not be empty.
1026006Attribute 'User ID' is required.
1026006Attribute 'Validate' is required.
1026011Users list should not be empty.
1026013The source and the target location cannot be the same.
1026014Error occurred while processing the move users request.
1026016User should have either phone number or extension.
1001804The extension specified is not valid.
1026017Phone number is not in e164 format.
1026018Selected Users list exceeds the maximum limit.
1026019Duplicate entry for user is not allowed.
1026020Validate 'true' is supported only for single user.
1026021Attribute location id is required for Calling user.
1026022Validate 'true' is supported for calling users only.
1026024Invalid Location Id.
1026024Invalid User Id.
2150012User was not found
1026015Error occurred while moving user number to target location.(Applicable to single calling user move, validate=true)
1026023Extension and phone number is supported for calling users only.(Applicable to single non-calling user move, validate=false)

Comprehensive Request Validation Errors

These error codes can occur during comprehensive validation of user moves.

When the validate attribute is set to true for a single calling user, these errors are returned synchronously in the errors array field of the validation response with the status code 200.

When the validate attribute is set to false, these errors are validated during job execution and can be found via the List Move Users Job Errors API in the items[].error field, and the CSV download from the Get Move Users Job Status API.

The possible validation errors are:

Error CodeMessage
4003User Not Found
4007User Not Found
4152Location Not Found
5620Location Not Found
4202The extension is not available. It is already assigned to a user : {0}
8264Routing profile is different with new group: {0}
19600User has to be within an enterprise to be moved.
19601User can only be moved to a different group within the same enterprise.
19602Only regular end user can be moved. Service instance virtual user cannot be moved.
19603New group already reaches maximum number of user limits.
19604The {0} number of the user is the same as the calling line ID of the group.
19605User is assigned services not authorized to the new group: {0}.
19606User is in an active hoteling/flexible seating association.
19607User is pilot user of a trunk group.
19608User is using group level device profiles which is used by other users in current group. Following are the device profiles shared with other users: {0}.
19609Following device profiles cannot be moved to the new group because there are already devices with the same name defined in the new group: {0}.
19610The extension of the user is used as transfer to operator number for following Auto Attendent : {0}.
19611Fail to move announcement file from {0} to {1}.
19612Fail to move device management file from {0} to {1}.
19613User is assigned service packs not authorized to the new group: {0}.
25008Missing Mandatory field name: {0}
25110{fieldName} cannot be less than {0} or greater than {1} characters.
25378Target location is same as user's current location.
25379Error Occurred while Fetching User's Current Location Id.
25381Error Occurred while rolling back to Old Location Call recording Settings
25382Error Occurred while Disabling Call Recording for user which is required Before User can be Moved
25383OCI Error while moving user
25384Error Occurred while checking for Possible Call Recording Impact.
25385Error Occurred while getting Call Recording Settings
27559The groupExternalId search criteria contains groups with different calling zone.
27960Parameter isWebexCalling, newPhoneNumber, or newExtension can only be set in Webex Calling deployment mode.
27961Parameter isWebexCalling shall be set if newPhoneNumber or newExtension is set.
27962Work space cannot be moved.
27963Virtual profile user cannot be moved.
27965The user's phone number: {0}, is same as the current group charge number.
27966The phone number, {0}, is not available in the new group.
27967User is configured as the ECBN user for another user in the current group.
27968User is configured as the ECBN user for the current group.
27969User is associated with DECT handset(s): {0}
27970User is using a customer managed device: {0}
27971User is using an ATA device: {0}
27972User is in an active hotdesking association.
27975Need to unassign CLID number from group before moving the number to the new group. Phone number: {0}
27976Local Gateway configuration is different with new group. Phone number: {0}
1026015Error occurred while moving user number to target location
10010000Total numbers exceeded maximum limit allowed
10010001to-location and from-location cannot be same
10010002to-location and from-location should belong to same customer
10010003to-location must have a carrier
10010004from-location must have a carrier
10010005Different Carrier move is not supported for non-Cisco PSTN carriers.
10010006Number move not supported for WEBEX_DIRECT carriers.
10010007Numbers out of sync, missing on CPAPI
10010008from-location not found or pstn connection missing in CPAPI
10010010from-location is in transition
10010009to-location not found or pstn connection missing in CPAPI
10010011to-location is in transition
10010012Numbers don't have a carrier Id
10010013Location less numbers don't have a carrier Id
10010014Different Carrier move is not supported for numbers with different country or region.
10010015Numbers contain mobile and non-mobile types.
10010016To/From location carriers must be same for mobile numbers.
10010017Move request for location less number not supported
10010200Move request for more than one block number is not supported
10010201Cannot move block number as few numbers not from the block starting %s to %s
10010202Cannot move block number as few numbers failed VERIFICATION from the block %s to %s
10010203Cannot move block number as few numbers missing from the block %s to %s
10010204Cannot move number as it is NOT a part of the block %s to %s
10010205Move request for Cisco PSTN block order not supported.
10010299Move order couldn't be created as no valid number to move
10030000Number not found
10030001Number does not belong to from-location
10030002Number is not present in CPAPI
10030003Number assigned to an user or device
10030004Number not in Active status
10030005Number is set as main number of the location
10030006Number has pending order associated with it
10030007Number belongs to a location but a from-location was not set
10030008Numbers from multiple carrier ids are not supported
10030009Location less number belongs to a location. from-location value is set to null or no location id
10030010One or more numbers are not portable.
10030011Mobile number carrier was not set
10030012Number must be assigned for assigned move
10050000Failed to update customer reference for phone numbers on carrier
10050001Failed to update customer reference
10050002Order is not of operation type MOVE
10050003CPAPI delete call failed
10050004Not found in database
10050005Error sending notification to WxcBillingService
10050006CPAPI provision number as active call failed with status %s ,reason %s
10050007Failed to update E911 Service
10050008Target location does not have Inbound Toll Free license
10050009Source location or Target location subscription found cancelled or suspended
10050010Moving On Premises or Non Integrated CCP numbers from one location to another is not supported.
10099999{Error Code} - {Error Message}
Impact Codes

These impact codes indicate changes that will occur during the user move.

When the validate attribute is set to true for a single calling user, these impacts are returned synchronously in the impacts array field of the validation response with the status code 200.

When the validate attribute is set to false, these impacts are available during job execution and can be found in the CSV download from the Get Move Users Job Status API.

The possible impacts are:

Impact CodeMessage
19701The identity/device profile the user is using is moved to the new group: {0}.
19702The user level customized incoming digit string setting is removed from the user. User is set to use the new group setting.
19703The user level customized outgoing digit plan setting is removed from the user. User is set to use the new group setting.
19704The user level customized enhanced outgoing calling plan setting is removed from the user. User is set to use the new group setting.
19705User is removed from following group services: {0}.
19706The current group schedule used in any criteria is removed from the service settings.
19707User is removed from the department of the old group.
19708User is changed to use the default communication barring profile of the new group.
19709The communication barring profile of the user is assigned to the new group: {0}.
19710The charge number for the user is removed.
19711The disabled FACs for the user are removed because they are not available in the new group.
19712User is removed from trunk group.
19713The extension of the user is reset to empty due to either the length is out of bounds of the new group, or the extension is already taken in new group.
19714The extension of the following alternate number is reset to empty due to either the length out of bounds of the new group or the extension is already taken in new group: {0}.
19715The collaborate room using current group default collaborate bridge is moved to the default collaborate bridge of the new group.
19716Previously stored voice messages of the user are no longer available. The new voice message will be stored on the mail server of the new group.
19717The primary number, alternate numbers or fax messaging number of the user are assigned to the new group: {0}.
19718Following domains are assigned to the new group: {0}.
19719The NCOS of the user is assigned to the new group: {0}.
19720The office zone of the user is assigned to the new group: {0}.
19721The announcement media files are relocated to the new group directory.
19722User CLID number is set to use the new group CLID number: {0}.
19723New group CLID number is not configured.
19724The group level announcement file(s) are removed from the user's music on hold settings.
25388Target Location Does not Have Vendor Configured. Call Recording for user will be disabled
25389Call Recording Vendor for user will be changed from:{0} to:{1}
25390Dub point of user is moved to new external group
25391Error Occurred while moving Call recording Settings to new location
25392Error Occurred while checking for Possible Call Recording Impact.
25393Sending Billing Notification Failed
Request Format Examples

Single User Validation Request
{
  "usersList": [
    {
      "locationId": "Y2lzY29zcGFyazovL3VzL0xPQ0FUSU9OLzMxMTkwZjQtZjBiOS00",
      "validate": true,
      "users": [
        {
          "userId": "Y2lzY29zcGFyazovL3VzL1BFT1BMRS8xZTJjNzBlZC00ZDYtNGYyYy05",
          "extension": "1001",
          "phoneNumber": "+18632520486"
        }
      ]
    }
  ]
}

Single User Move Request
{
  "usersList": [
    {
      "locationId": "Y2lzY29zcGFyazovL3VzL0xPQ0FUSU9OLzMxMTkwZjQtZjBiOS00",
      "validate": false,
      "users": [
        {
          "userId": "Y2lzY29zcGFyazovL3VzL1BFT1BMRS8xZTJjNzBlZC00ZDYtNGYyYy05",
          "extension": "1001",
          "phoneNumber": "+18632520486"
        }
      ]
    }
  ]
}

Bulk User Move Request
{
    "usersList": [
        {
            "locationId": "Y2lzY29zcGFyazovL3VzL0xPQ0FUSU9OLzVmMDI3OGZlLWU4OGMtNDMzNy04MGViLWRjY2NiM2VlMDU1MA",
            "validate": false,
            "users": [
                {
                    "userId": "Y2lzY29zcGFyazovL3VzL1BFT1BMRS9teW5hbWUgaXNvcHRpdXMGEyltZXdlYXJlMGEyMGEyNWM1OWE",
                    "phoneNumber": "+18632520486"
                },
                {
                    "userId": "Y2lzY29zcGFyazovL3VzL1BFT1BMRS8wNTJhYjliZC1jNmUyLTZlYWUtMWE5YS01ZWZhMGEyNWMxNmE",
                    "extension": "28544"
                }
            ]
        },
        {
            "locationId": "Y2lzY29zcGFyazovL3VzL0xPQ0FUSU9OLzVmMDI3OGZlLWU4OGMtNDkwNS04MGViLWRjY2NiM2VlMTQ0MwFG",
            "validate": false,
            "users": [
                {
                    "userId": "Y2lzY29zcGFyazovL3VzL1BFT1BMRS85YzJhMDUxMC0wOTUwLTQ1MmYtODFmZi05YTVkMjM2OTJkZTY",
                    "extension": "29376",
                    "phoneNumber": "+18947028597"
                }
            ]
        }
    ]
}
Response Format Examples

Error Response

Error responses follow a consistent format with detailed error information:

{
    "errors": [
        {
            "code": 1026016,
            "message": "User should have either phone number or extension."
        }
    ]
}

Internal Server Error Response

For internal server errors, the response will be of the format:

{
    "message": "The request could not be understood by the server due to malformed syntax.",
    "errors": [
        {
            "description": "The request could not be understood by the server due to malformed syntax."
        }
    ]
}

Validation Response

Validation results with information on possible impacts and errors if any:

{
    "response": {
        "usersList": [
            {
                "userId": "Y2lzY29zcGFyazovL3VzL1BFT1BMRS85YzJhMDUxMC0wOTUwLTQ1MmYtODFmZi05YTVkMjM2OTJkZTY",
                "impacts": [
                    {
                        "code": 19701,
                        "message": "[Informational 19701] The identity/device profile the user is using is moved to the new group: GBKAXBRMJUXF, GNXX95CLTQ0V, HD_92dbc8b6-30d1-419f-9386-3340da658f9c, G4O4NVP7MZI5, GQGWO5BDMPLP."
                    },
                    {
                        "code": 19722,
                        "message": "[Informational 19722] User CLID number is set to use the new group CLID number: null."
                    },
                    {
                        "code": 19723,
                        "message": "[Informational 19723] New group CLID number is not configured."
                    }
                ],
                "errors": [
                    {
                        "code": 4202,
                        "message": "[Error 4202] The extension is not available. It is already assigned to a user: 7593. "
                    }
                ]
            }
        ]
    }
}

Job Response

Successful job creation returns detailed job information:

{
    "response": {
        "jobDetails": {
            "name": "moveusers",
            "id": "Y2lzY29zcGFyazovL3VzL0pPQl9JRC9mZjBlN2Q2Ni05MDRlLTRkZGItYjJlNS05ZGM0ODk0ZDY5OTk",
            "trackingId": "ROUTER_ebb52b5b-d060-4164-9757-48b383423d73",
            "sourceUserId": "Y2lzY29zcGFyazovL3VzL1BFT1BMRS85YzJhMDUxMC0wOTUwLTQ1MmYtODFmZi05YTVkMjM2OTJkZTY",
            "sourceCustomerId": "Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi8wMjEyNGVlZi04YWY3LTQ4OWMtODA1Yi0zNjNjYzY0MDE4OTM",
            "targetCustomerId": "Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi8wMjEyNGVlZi04YWY3LTQ4OWMtODA1Yi0zNjNjYzY0MDE4OTM",
            "instanceId": 10,
            "jobExecutionStatus": [
                {
                    "id": 10,
                    "startTime": "2023-06-08T12:05:11.798Z",
                    "lastUpdated": "2023-06-08T12:05:11.798Z",
                    "statusMessage": "STARTED",
                    "exitCode": "UNKNOWN",
                    "createdTime": "2023-06-08T12:05:11.752Z",
                    "timeElapsed": "PT0S"
                }
            ],
            "latestExecutionStatus": "STARTED",
            "latestExecutionExitCode": "UNKNOWN",
            "counts": {
                "totalMoves": 0,
                "moved": 0,
                "failed": 0,
                "pending": 0,
                "skipped": 0
            }
        }
    }
}
In This Article
  • Exploring the Move User Workflows
  • Getting Started
  • Common Error Codes and Responses

Connect

Support

Developer Community

Developer Events

Contact Sales

Handy Links

Webex Ambassadors

Webex App Hub

Resources

Open Source Bot Starter Kits

Download Webex

DevNet Learning Labs

Terms of Service

Privacy Policy

Cookie Policy

Trademarks

© 2025 Cisco and/or its affiliates. All rights reserved.