| title | channel: startMigration |
|---|---|
| description | Start the migration of external messages by enabling migration mode in an existing channel. |
| ms.localizationpriority | medium |
| author | MehakAgarwal |
| ms.subservice | teams |
| doc_type | apiPageType |
| ms.date | 06/12/2025 |
Namespace: microsoft.graph
[!INCLUDE beta-disclaimer]
Start the migration of external messages by enabling migration mode in an existing channel. Import operations were limited to newly created standard channels that were in an empty state. For more information, see Import third-party platform messages to Teams using Microsoft Graph.
Users are also allowed to define a minimum timestamp for content to be migrated, allowing them to import messages from the past. The provided timestamp must be older than the current createdDateTime for a channel. The provided timestamp is used to replace the existing createdDateTime of the channel.
[!INCLUDE channel-support]
[!INCLUDE national-cloud-support]
Choose the permission or permissions marked as least privileged for this API. Use a higher privileged permission or permissions only if your app requires it. For details about delegated and application permissions, see Permission types. To learn more about these permissions, see the permissions reference.
[!INCLUDE permissions-table]
POST /teams/{team-id}/channels/{channel-id}/startMigration| Header | Value |
|---|---|
| Authorization | Bearer {token}. Required. Learn more about authentication and authorization. |
| Content-Type | application/json. Optional |
In the request body, supply a JSON representation of the following parameters.
| Parameter | Type | Description |
|---|---|---|
| conversationCreationDateTime | DateTimeOffset | The minimum timestamp for the messages to be migrated. The timestamp must be older than the current createdDateTime of the channel. If not provided, the current date and time is used. |
If successful, this method returns a 204 No Content response code. It doesn't return anything in the response body.
The following example shows how to start the migration on an existing channel with a specific timestamp.
The following example shows a request.
POST https://graph.microsoft.com/beta/teams/57fb72d0-d811-46f4-8947-305e6072eaa5/channels/19:4b6bed8d24574f6a9e436813cb2617d8@thread.tacv2/startMigration
[!INCLUDE sample-code] [!INCLUDE sdk-documentation]
[!INCLUDE sample-code] [!INCLUDE sdk-documentation]
[!INCLUDE sample-code] [!INCLUDE sdk-documentation]
[!INCLUDE sample-code] [!INCLUDE sdk-documentation]
[!INCLUDE sample-code] [!INCLUDE sdk-documentation]
[!INCLUDE sample-code] [!INCLUDE sdk-documentation]
[!INCLUDE sample-code] [!INCLUDE sdk-documentation]
The following example shows the response.
HTTP/1.1 204 No ContentThe following example shows how to start the migration when a channel is already in migration mode. This request fails with a 400 Bad Request response.
The following example shows a request.
POST https://graph.microsoft.com/beta/teams/57fb72d0-d811-46f4-8947-305e6072eaa5/channels/19:4b6bed8d24574f6a9e436813cb2617d8@thread.tacv2/startMigration
[!INCLUDE sample-code] [!INCLUDE sdk-documentation]
[!INCLUDE sample-code] [!INCLUDE sdk-documentation]
[!INCLUDE sample-code] [!INCLUDE sdk-documentation]
[!INCLUDE sample-code] [!INCLUDE sdk-documentation]
[!INCLUDE sample-code] [!INCLUDE sdk-documentation]
[!INCLUDE sample-code] [!INCLUDE sdk-documentation]
[!INCLUDE sample-code] [!INCLUDE sdk-documentation]
The following example shows the response.
HTTP/1.1 400 Bad Request