Home > OneDrive to OneDrive Migration Process

Download this article

OneDrive to OneDrive Migration Process

The sections below contain the general migration process for OneDrive Migration with different domains in the source and destination. The details outlined in this document can also serve as general guidelines for any projects to perform OneDrive migrations using Fly.

More steps may be needed and some steps included in the process may be optional according to your migration requirements.

Preparation

Before the migration, you need to identify what object types you want to migrate. Refer to the Supported and Unsupported List.

1. Create a service account or app profile with required permissions

To connect Fly to your OneDrive, create a service account or an app profile with required permissions in AvePoint Online Services. Refer to Required Permissions to check the required permissions for OneDrive Migration.

NOTE

Users with Multi-Factor Authentication (MFA) enabled cannot be used as the service account to perform migrations. You can use a delegated app profile instead.

2. OneDrive sites filters (optional)

If there are many OneDrive sites in your tenant and you only want to migrate some of them, you need to prepare a custom app profile with different set of permissions and apply the app to the desired OneDrive sites. Refer to Permissions for Source OneDrive for details.

3. Run the source tenant discovery (optional)

Before you migrate from OneDrive, you can run a tenant discovery for OneDrive to scan and report the object count, object type, object size, and other details. According to the discovery reports, you can better understand your source environment and plan for your migrations. Refer to the user guide for Tenant Discovery for details.

4. Grant Term Store Administrator privilege to service account/app profile

To migrate managed metadata columns with terms, the source and destination service accounts/consent users of delegated profiles must be added to Term Store Administrators before the migration.

Go to the Term store page in SharePoint admin center and add the migration service account to the Admins.

Term store page.

URL of the Term Store management: https://{TenantName}-admin.sharepoint.com/_layouts/15/online/AdminHome.aspx#/termStoreAdminCenter.

5. Provision all necessary users/groups in the destination tenant

Fly does not automatically create new users in Microsoft 365. There are different ways to add new Microsoft 365 users:

  • Adding users individually. See instructions here.

  • Adding users in bulk. See instructions here.

  • Adding users via PowerShell. See instructions here.

  • Synchronizing users from local Active Directory to Microsoft 365 via Microsoft Entra Sync or Microsoft Entra connect. See instructions here.

After adding/synchronizing the users, you need to assign Microsoft 365 licenses to destination OneDrive users. Refer to Assign Microsoft 365 licenses to users for details.

6. Provision all necessary external users in the destination tenant

You can export the external users and import them into the destination tenant before the migration by downloading and running the PowerShell scripts.

7. Check destination retention policies

If retention policies are configured for the source data, check to make sure the destination retention policies are the same as the source retention policies. Otherwise, the destination data may be deleted due to different retention policies.

8. Prepare sensitivity labels in the destination (optional)

If the source tenant does not have sensitivity labels, you can ignore this step.

If the source tenant has sensitivity labels, and you want to replace the source labels with destination ones, make sure the destination labels already exist before the migration.

Refer to Create and publish sensitivity labels to create and publish Labels.

9. Migration throughput

For OneDrive migrations, generally, a reasonable migration speed is 4 GB/hour/mapping. For the number of mappings that can be run, it is automatically allocated based on subscription you purchased. The more user seats you purchase, the more mappings you can run in a project.

However, OneDrive consists of files and various items/metadata. The data rate may not be the only factor to reflect the migration performance. For example, the content types/other metadata and list items usually take up a small size, but the larger overhead and processing time caused by migration, even the regions of migration, will impact the data rate. Pilot Migration is recommended as the best practice for you to test the actual migration performance. The actual migration performance may vary based on the data complexity.

10. Create source and destination connections

Refer to Create a Connection to connect to your source and destination OneDrive. The connection including both the app profile and service account is recommended.

11. Design the migration policy

A OneDrive migration policy allows you to configure the conflict resolution, filter policy, user mapping and other options for OneDrive Migration. Refer to Configure a Migration Policy for details.

To ensure the maximum preservation of source data, we recommend you use Merge as the container level conflict resolution and use Overwrite by last modified time as the content level conflict resolution.

If the file/item has more than 100 versions, it will take more time to migrate the data. Therefore, we recommend that you use the version filter policy to migrate no more than 100 versions. Refer to Filter Policies for details.

12. Understand when destination users will receive notifications

The owners of destination OneDrive sites will receive notifications in the following situations:

  • Shared links of the Anyone with the link type are migrated to the destination.

  • Shared links of the People in [tenant] with the link or People you choose type that are shared with external users are migrated to the destination.

13. Plan a pilot run

We recommend that you perform a pilot run for the following purposes:

  • Get familiar with Fly interface and understand the whole migration process.

  • Discover any potential issues early and resolve them before production migration.

  • Understand the throttling situation in case content size is large, and then try to resolve with destination.

A pilot migration should be as close to the wave migration as possible and involve all steps that any wave will involve.

Refer to Run Migrations to Migrate Objects for details.

Migration Execution

Based on your source tenant discovery report, you need to prepare a final mapping file to list the mappings of source data and destination location. As you may have a heavy load of content to migrate, we recommend you separate your mappings into multiple waves according to your departments for easy management. Keep communicating with users about the migration status.

1. Configure projects and mappings in Fly

To configure projects and mappings, refer to Create a Project and Create Migration Mappings for details. Use the mapping file of data to be migrated to configure the migration project.

2. Perform regular full migrations

Before running the job, we recommend you verify the mappings to ensure that the mappings are available for migration. Refer to Pre-analyze Mappings for details.

Then you can run a full migration job to migrate the objects based on your configured migration policy. Refer to Run Migrations to Migrate Objects for details.

3. Perform regular incremental migrations

Handle new, updated, and failed data. Refer to Run Migrations to Migrate Objects about how to perform regular incremental migrations.

4. Compare the source and destination storage (optional)

After the migration, you can compare the number and size of files in the source and destination by accessing the following URL:

sitecollectionurl/_layouts/15/storman.aspx

  • If the number of files is different after the migration, check if the files that are not in the destination failed in the migration. If the files are failed to be migrated, check the comments of failed files. After you fix the errors, rerun the migration job. If there are no records for these files, contact Support and provide the screenshots of these files and job ID to analyze the error.

  • If the size of files is different after the migration, for example, the source file size is 10 MB, but the migrated file size is 100 MB, check the actual size of the source and migrated files in the source and destination libraries. Then, refer to the following instructions to resolve this issue:

  • If the actual size of the source file is 10 MB, the actual size of the migrated file is 10 MB, but the migrated file size displayed in the destination Storage Metrics page is 100 MB, it may be an issue of Microsoft.

  • If the actual size of the source file is 100 MB, the actual size of the migrated file is 100 MB, but the source file size displayed in the Storage Metrics page is 10 MB, it may be an issue of Microsoft.

  • If the actual size of the source file is 10 MB but the actual size of the migrated file is 100 MB, it is an issue of Fly. Contact Support and provide the screenshots of version histories of the source and migrated files, and screenshots of the Storage Metrics pages of the source and destination by accessing the following URL to analyze the error:

    sitecollectionurl/_layouts/15/storman.aspx

5. Validate migration results

After the regular full or incremental migrations, note the following:

  • Check the mapping report. If the mapping fails or finishes with exceptions, you can check the error code and comment for the mapping in the Migration error section. You can click the error code to view the details and recommendations of the code in the Troubleshooting Guide, which can assist you in resolving or avoiding the error.

  • Check the item count in the destination.

  • Check the permission in the destination. If permissions failed to be migrated, you can run a Migrate permissions only migration job.

  • New data can be created in the destination.

6. Set the source site to read only

Before executing the final delta/incremental migration, make sure that no data will be changed or created in the source during the migration to enforce the data consistency.

  • To set OneDrive as read only, run the following script using PowerShell:

    #Set Parameters
    
    $AdminCenterURL="https://contoso-admin.sharepoint.com"
    
    $SiteURL = "https://contoso-my.sharepoint.com/personal/admin_contoso_onmicrosoft_com"
    
    #Connect to SharePoint Online
    
    Connect-SPOService -Url $AdminCenterURL -Credential (Get-Credential)
    
    #PowerShell to set onedrive for business site to read only
    
    Set-SPOSite -Identity $SiteURL -LockState ReadOnly
  • To unlock the OneDrive, run the following script using PowerShell:

    #Unlock site from read only mode
    
    Set-SPOSite -Identity $SiteURL -LockState Unlock

7. Perform the final incremental migration for current wave

At the end of the migration project, we recommend you run a final incremental job to ensure all source data are migrated to the destination.

8. Run migrations for all other waves (optional)

This step is only needed if you have separated the migration projects into multiple waves.

9. Perform the final cutover

After the domain name of your source tenant is changed to your destination tenant for go-live, if you want to perform a final incremental migration to migrate the new or modified data to the destination, you must update the domain names of the source and destination user email addresses in project mappings first. Refer to User Guide for details.