# Migrate campaigns using your own NNID
___

These migration steps are for **Campaign Service Provider (CSP)** and **Connectivity Network Provider (CNP)** customers who want to migrate their **10DLC campaigns** to **Infobip** while continuing to host their own numbers under their own **Net Number ID (NNID)**.

IMPORTANT
This guide only applies if you host your own numbers and have your own NNID. If you are not a CSP/CNP, contact your account manager to discuss migration options.

If you want Infobip to manage the NNID on your behalf, see the [Migrate campaigns using the Infobip NNID](https://www.infobip.com/docs/10dlc/migration-guides/campaign-infobip-nnid) guide instead.

___

## Eligibility

Before you begin, ensure you meet the following eligibility criteria:

| Criteria | Description |
| --- | --- |
| CSP/CNP status | Only CSP/CNP can migrate campaigns within The Campaign Registry (TCR) ecosystem. |
| Own NNID with OSR access | You must have your own NNID and the ability to make overrides and updates to your numbers through the Operator Service Record (OSR). |

___

## Prerequisites

Complete and confirm the following before starting the migration:

- NNID setup and carrier configuration
- Number import enablement
- Number pools (if applicable)
- Migration API enablement

NOTE
If you are migrating sole proprietor campaigns, complete the additional setup in [Sole proprietors](#sole-proprietors) before proceeding to the migration steps.

### NNID setup

Provide Infobip with the NNID you want to use, along with the following:

NOTE
Procure a new NNID through Net Number for use with Infobip. A dedicated NNID simplifies the migration flow and gives you full control over [mobile-originated (MO)](https://www.infobip.com/glossary/mo-mobile-originated) traffic routing.

- A signed **Letter of Authorization (LOA)**
- A completed **T-Mobile NNID request form**

Infobip forwards the request to the carriers for NNID configuration. Lead time is approximately 1 month.

### Get enabled for number import

Since you manage your own NNID, you can import numbers yourself using the Infobip API. Your account manager must first enable self-service number import on your account.

### Number pools (if applicable)

If your campaign does not use number pooling, skip this section.

All number pools must be pre-configured and imported into the Infobip platform before migration. Number pools are not migratable, so you must create new pools before migrating.

Submit number pool requests through Infobip. To request a number pool, fill out the **Number Pool Request Form** (provided by your account manager) and submit it to the Infobip team for processing.

IMPORTANT
The NNID configured on the number pool must match the NNID that you assign to your numbers in the migration. If the NNIDs do not match, the number pool does not work correctly and the migration fails. Verify that your requested number pool shares the new NNID that will be used in the migration before proceeding.

### Migration API enablement

To call the Infobip campaign migration API endpoint, your account must be enabled for API access to the migration service. Request this enablement through your account manager. Once enabled, you can trigger migration requests as described in the migration steps below.

NOTE
Only begin the migration process after Infobip completes and confirms all prerequisites.

___

## Migration steps

The migration follows a six-step process. Your campaign moves through the following statuses:

Pending → In Migration → Registered

### 1. Import your numbers into the Infobip platform

Import all numbers associated with the campaign into the Infobip platform. This ensures the numbers are available for selection during the migration request.

Use the following **Numbers API** endpoint to import your numbers:

```
POST https://api-ny2.infobip.com/numbers/2/numbers/import
```

**Example request:**

```bash
curl --location 'https://api-ny2.infobip.com/numbers/2/numbers/import' \
--header 'Content-Type: application/json' \
--header 'Authorization: App {apiKey}' \
--data '{
    "numbers": [
        "19546899283"
    ],
    "country": "US",
    "type": "VIRTUAL_LONG_NUMBER",
    "capabilities": [
        "SMS",
        "MMS"
    ],
    "skipOsrUpdate": true
}'
```

**Request parameters:**

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| numbers | Array | Yes | List of phone numbers to import. |
| country | String | Yes | The country code for the numbers (for example, "US"). |
| type | String | Yes | The number type. UseVIRTUAL_LONG_NUMBERfor 10DLC numbers. |
| capabilities | Array | Yes | The capabilities of the numbers (for example, SMS, MMS). |
| skipOsrUpdate | Boolean | Yes | Set totrueto skip OSR updates during import, since you manage your own NNID. |

IMPORTANT
This endpoint is only available for clients migrating US numbers using their own NNID. If you are not managing your own NNID, contact your account manager for assistance with number imports.

### 2. Elect campaign to Infobip through TCR

Initiate the migration in TCR by calling the following endpoint:

```
POST /campaign/{campaignID}/migrateCnp/{upstreamCnpID}
```

NOTE
The Infobip CNP ID is **OPMKT**. See the [TCR CSP API documentation](https://csp-api.campaignregistry.com/v2/restAPI) for full details.

### 3. Update your OSR record

Verify and update the OSR record for your numbers with the correct:

- NNID
- Campaign ID
- SubID (if applicable)
- Context

IMPORTANT
When you switch the NNID on your OSR record, downtime begins. Your numbers cannot send or receive messages until the migration is fully completed. Plan this step carefully and coordinate with your team to minimize impact.

### 4. Call the Infobip migration API

After electing the campaign to Infobip in TCR and updating your OSR record, trigger the Infobip migration endpoint:

```
POST https://{baseUrl}/number-registration/1/campaigns/migrate
```

**Example request:**

```bash
curl --location 'https://{baseUrl}/number-registration/1/campaigns/migrate' \
--header 'Content-Type: application/json' \
--header 'Authorization: App {apiKey}' \
--data '{
    "name": "migrateCampaignCOJD655",
    "externalCampaignId": "COJD655",
    "numberPoolID": "INFOBIP23",
    "numbers": ["19168361160"],
    "isClientManageNnid": true
}'
```

**Request parameters:**

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| name | String | Yes | The name of the campaign. |
| externalCampaignId | String | Yes | Your TCR Campaign ID. |
| numberPoolID | String | No | The number pool ID to associate with this campaign. Required only if the campaign uses number pooling. Must be pre-configured on the Infobip platform. |
| numbers | Array | Yes | List of phone numbers for this campaign. Maximum of 200 numbers per request. |
| isClientManageNnid | Boolean | Yes | Set totrue. You manage your own NNID and handle all OSR updates. |

**Example response:**

```json
{
    "id": "44e8c5fc-1f17-4f4c-9519-6606c907075f",
    "referenceId": null,
    "applicationId": "default",
    "entityId": null,
    "name": "migrateCampaignCOJD655",
    "createdDate": "2026-03-04T09:08:43Z",
    "lastModifiedDate": "2026-03-04T09:08:43Z",
    "stage": "IN_MIGRATION",
    "priority": null,
    "campaignFeedback": null,
    "externalCampaignId": "COJD655",
    "numbers": null,
    "externalDocuments": [],
    "numberKeys": [],
    "numberPreviews": [],
    "type": "EXTERNAL_TEN_DIGIT_LONG_CODE"
}
```

**Response fields:**

| Field | Description |
| --- | --- |
| id | The unique Infobip UUID assigned to this campaign. Use this ID for all subsequent references. |
| applicationId | The application context for the campaign (defaults todefault). |
| name | The campaign name as provided in the request. |
| createdDate | Timestamp when the migration request was created (ISO 8601). |
| stage | Current status of the campaign. ShowsIN_MIGRATIONimmediately after submission. |
| externalCampaignId | Your original TCR Campaign ID. |
| type | The campaign type. ShowsEXTERNAL_TEN_DIGIT_LONG_CODEfor 10DLC migrations. |

### 5. In migration

After submitting the migration request, your campaign transitions to the **In Migration** status (confirmed by "stage": "IN_MIGRATION" in the API response). Your numbers are offline during this phase. No action is needed from you while Infobip processes the migration. This typically takes a few minutes.

### 6. Migration complete Switch traffic to Infobip

Infobip automatically accepts your campaign from TCR, provisions it with the carriers, and notifies you through a webhook event. The webhook payload includes:

- `campaignStatus=REGISTERED`
- The associated Infobip UUID

IMPORTANT
Once you receive the `REGISTERED` webhook, switch your traffic to Infobip. The migration is complete and your downtime ends.

___

## Sole proprietors

Sole proprietor campaigns require additional setup before following the standard migration process.

### TCR requirements

Before migrating any sole proprietor campaigns, Infobip must verify that the CSP meets the following TCR requirements:

- **One number** per sole proprietor campaign
- **Maximum of 1,000 messages** per day

### Registration

Infobip registers the CSP with T-Mobile and creates a default campaign. This default campaign is the parent for all migrated sole proprietor campaigns from the CSP.

1. The CSP shares one sole proprietor campaign to Infobip through TCR.
2. Infobip creates the default campaign and assigns a number pool.
3. All subsequent sole proprietor campaigns link to this default campaign.

Once the default campaign setup is complete and confirmed, follow the standard [Migration steps](#migration-steps) outlined above.

___

## Subscribe to webhook events

To receive campaign status change notifications, subscribe through one of the following:

- **Infobip web interface:** See [Subscriptions documentation](https://www.infobip.com/docs/cpaas-x/subscriptions-management)
- **Subscription API:** See [Subscriptions API documentation](https://www.infobip.com/docs/api/platform/subscriptions-api)

___

## Best practices

- **Start small.** Begin with a few low-volume campaigns to learn the process and enable Infobip to quickly resolve any issues.

- **Share in advance.** Provide Infobip with a list of campaigns and associated numbers you plan to migrate ahead of time.

- **Verify OSR.** Double-check your OSR records before initiating each migration batch.

___