Preparing the content for Migration API
Use this document to prepare the contents to migrate with SharePoint Migration API.
Files and folders
File and package size limits
Migration API supports importing files with sizes up to 15 GB (the limit set by SharePoint).
For the best performance, keep the package size under 250 MB or 250 items.
For larger files, create a package for the individual file.
File versions
Migration API supports importing multiple versions of a file, including major and minor, up to the limit set by SharePoint.
Each version of the file counts against the file size limit and item count limit.
Include each version of the file, even if some of the versions already exist in SharePoint.
File overwriting
Migration API deletes the original file along with all the versions, then replaces it with all versions of the resubmitted file, when a file is resubmitted.
No decryption
Migration API doesn't decrypt contents. It treats any encrypted content as opaque files. While SharePoint lists these files, it doesn't index them. This behavior is the same as when a user uploads encrypted files through the SharePoint UI.
File compression
Migration API doesn't decompress packages by default. Don't compress content and manifest packages together. Make sure you store the content package and the manifest package in different Azure Storage Blob Containers.
Migration API imports *.zip files as compressed archive files if referenced in the import package as the archive itself. To import the individual files within the *.zip file, see Archive Small Files.
Archive small files for performance
Migrate small files in batches for improved performance. Migration API optionally uncompresses a compressed *.zip archive to improve the performance, based on manifest in ArchivedFiles.xml.
Include QuickXorHash
value of the archive when using this feature. Compute it with QuickXorHash Algorithm.
Migration API processes non-archived files in Manifest.xml without manifest in ArchiveFiles.xml as usual.
This feature requires all the following prerequisites:
Archive file size limit
10 MB maximum.
Archive file per package
Two maximum.
Archive file encryption
Required.
Individual file size
Less than 100 kb after encryption.
Don't compress individual files
Don't compress the individual files, only compress the archive.
SharePoint Events and Event Handlers
Migration API allows referencing Event Handlers on List Items. However, Migration API doesn't support defining new Event Handlers at the List level.
Migration API doesn't generate Events when importing items. Therefore, existing Event Handlers don't fire during import.
Azure Containers
Azure Blob Storage Security Model
Migration API uses Azure Blob Storage security model. There's no special treatment for Azure Blob Storage Containers used for Migration API that would differentiate from a standard container.
Snapshot
Each file in the container must have at least one snapshot created. Avoid modifying the file during the import. Any file without a snapshot fails to import with errors. Migration API uses the latest snapshot of the file available at the time of import.
To create a snapshot of a file after uploading to the Azure Blob Storage, use the following code:
CloudBlockBlob blob = blobContainerObj.GetBlockBlobReference(file);
blob.UploadFromStream(stm);
blob.CreateSnapshot();
Permissions
To ensure the immutability of source blobs, Migration API accepts an SAS key with only Read
and List
access flags set for the content package container.
Likewise, Migration API accepts a SAS key with only Read
, List
, and Write
access for the Manifest container. Migration API requires the Write
access for writing backlog files at the end of the import.
Migration API checks SAS keys for these required access flags. Migration API rejects attempts to create migration jobs with incorrect access flags on SAS keys.