Use Azure Blob Storage Containers and Azure Queues with SharePoint Migration API

Use Azure Blob Storage Containers to store contents, manifest files, and logs. Access migration status updates with Azure Queues.

This guide provides provisioning, permission, and other requirements with SharePoint-provided Azure resources.

Azure Blob Storage Containers

Migration API uses Azure Blob Storage Containers for temporary storage of content and manifest. SharePoint provides default containers for migration. Alternatively, you can provide your own containers.

Using SharePoint-provided containers

SharePoint-provided containers have no extra cost to the customer. Provision SharePoint-provided containers with ProvisionMigrationContainers method, without the need to manually set up in the Azure admin console.

Migration API provisions the containers in the same datacenter of the SharePoint instance. Migration API uses a container exclusively once for each request, to ensure security.

Migration API destroys Used containers 30-90 days after completing migration jobs.

Avoid throttling by decorating the traffic

Avoid throttling by decorating your HTTP traffic.

Encryption

The contents stored in SharePoint-provided containers are encrypted at rest with AES256CBC algorithm. This practice is mandatory. Migration API rejects migration jobs generated from unencrypted SharePoint-provided containers.

This encryption requirement doesn't apply to user-provided containers.

When using CreateMigrationJobEncrypted method, encrypt each file with AES CBC 256 standard as the encryption algorithm.

Use the AesCryptoServiceProvider.GenerateIV method to generate a unique cryptographically random IV for each file, including the manifests in the package. Store the IV as a property on each file.

Name

IV

Value

A BASE64 encoded Byte Array of the generated IV

ProvisionMigrationContainers method

Provisions new SharePoint-provided migration containers for content and manifest.

Syntax
public SPProvisionedMigrationContainersInfo ProvisionMigrationContainers()
Return values

An SPProvisionedMigrationContainersInfo object, containing the URI, access tokens, and encryption key of the provisioned containers.

DataContainerUri value

A Uri value containing the URI of the newly created container for storing migration content, along with the SAS access token.

Pass this value to CreateMigrationJob method as azureContainerSourceUri parameter.

The SAS access token contains Read and Write permissions only. It doesn't contain List.

SharePoint enforces HTTPS connections to containers by setting spr=https field in SAS tokens.

MetadataContainer value

A Uri value containing the URI of the newly created container for storing manifest files, along with the SAS access token.

Pass this value to CreateMigrationJob method as azureContainerManifestUri parameter.

The SAS access token contains Read and Write permissions only. It doesn't contain List.

SharePoint enforces HTTPS connections to containers by setting spr=https field in SAS tokens.

EncryptionKey

A Byte Array value containing the AES256CBC encryption key for both containers provisioned.

Use your own containers

You can also provide your own Azure Blob Storage Containers. Provide the URI with SAS access tokens as required in the Migration API reference.

Azure Queues

SharePoint-provided Azure Queues have no extra cost to the customer. Provision the queue with ProvisionMigrationQueue method, without the need to manually set up in Azure admin console.

Migration API provisions Azure Queues in the same datacenter of the SharePoint instance.

Alternatively, use user-provided Azure Queues if desired. Check the requirement in the Migration API Reference document.

Azure Queue Encryption

CreateMigrationJobEncrypted method encrypts the messages written to the Azure Queue.

To decrypt the messages, make sure you preserve JobId and the IV values returned by CreateMigrationJobEncrypted method.

Encrypted message sample

{"Label": "Encrypted"},
{"JobId": "[JobId value]"},
{"IV": "[IV value, encoded in BASE64]"},
{"Content": "[encrypted message, encoded in BASE64]"}

ProvisionMigrationQueue method

Provisions a new instance of Azure Queue for migration use.

ProvisionMigrationQueue Syntax

public SPProvisionedMigrationQueueInfo ProvisionMigrationQueue()

Return value

A SPProvisionedMigrationQueueInfo object containing the information of the newly created Azure Queue.

JobQueueUri value

A Uri value containing the URI and SAS access token of the newly created Azure Queue.

Pass this value to CreateMigrationJob method's azureQueueReportUri parameter.

Use endpoints in Azure Government

Use Azure Government endpoints for Microsoft 365 Government.

Required endpoints in Azure Government

  • https://*.blob.core.usgovcloudapi.net
  • https://*.queue.core.usgovcloudapi.net