File Server Home Directories to OneDrive for Business Migration Guide, Using PowerShell


This guide provides the procedures for migrating home directories from File Servers to OneDrive for Business. The personal version of OneDrive that is included with is not supported.

Note that OneDrive data may not be accessible for a few days after migration, due to OneDrive's crawling and indexing process. We suggest having your users log in immediately after migration, but warn them that their data may not be available immediately. For this reason, it may be best to complete the migration on a Friday so the indexing can happen over the weekend.

First migration?

We’ve created a guide on scoping, planning, and managing the migration process for your use. If this is your first migration, we recommend reading this guide carefully.


MigrationWiz is a migration tool, not a syncing tool. If changes are made at the source after migration, they will not sync to the destination, nor will changes made at the destination sync to the source. We do not have “live” monitoring of changes (as with a sync agent) and we cannot handle scenarios such as conflict resolution without user interaction.

MigrationWiz supports the capability to share migration projects across a Workgroup. When the Project Sharing feature is turned on, all Agents besides those who are Inactive can view all migrations projects. 

We are not able to support migrations with two-factor or multifactor authentication. 

Prepare the Azure Environment

  1. Estimate Azure storage costs. This step is optional but is useful in providing the customer with upfront storage costs ahead of time.
  2. Buy an Azure subscription, or use the free one-month trial ( this option is only viable if you are performing a very small migration).
  3. Create an Azure storage account. We recommend that you create an Azure Storage Account in the same Microsoft data center as the Destination Microsoft 365 tenant. 
    1. Log in to
    2. Click Storage
    3. Click Manage Access Keys at the bottom of the screen. The access keys need to be entered when creating the MSPComplete Source endpoint. We recommend that you create an Azure Storage Account in the same Microsoft data center as the Destination Microsoft 365 tenant. 
    4. Take note of the Storage Account Name and the Primary Access Key. To find these, click Manage Access Keys at the bottom of the screen. These need to be entered into the MigrationWiz document project when specifying the Source settings.
    5. -accesskey – This is the Storage account name for the Blob – example “accountname”
    6. -secretkey - This is the access key for the Storage account – example “W1RrDfkPNkfYfdVqizMNJjn5mXchwMP5uYBY8MsMqWTA7EubG911+4fZlki0Gag==”
    7. -rootpath "xxxxxxxx" – this is where your files are stored – example “C:” or "C:\Files"

You do not need to create any Azure containers for this migration. Separate containers are created on a per-home directory basis. During migration, MigrationWiz will create two separate metadata files (with the extensions: -directory.metadata and -files.metadata), which will be added to each container. These are used during migration by MigrationWiz, to build the folder structure in OneDrive for Business and to migrate the permissions. They should not be deleted until after the migration.

Prepare machine(s) for PowerShell and UploaderWiz

We recommend that you perform these steps from a domain-joined computer when logged in with local admin rights.

  1. Install BitTitan PowerShell by downloading and installing BitTitan SDK.
  2. Create the C:\apps\uploaderwiz directory and then download and extract the UploaderWiz utility into that directory.
  3. Create the C:\scripts directory, download the file and extract its contents into that directory. The folder name must be a single word, with no spaces or special characters. The files that are extracted into that folder are Log_Functions.ps1, ProjectImport.ps1, RunSubmission.ps1, and authorizationsettings.csv.
  4. Map a network drive to the home directory root folder on the file server.

Prepare the Destination Environment

  1. Set up the Microsoft 365 tenant. 
  2. Add users and assign Microsoft 365 licenses. This is required if permissions are being migrated.
  3. Assign an Microsoft 365 license to the Microsoft 365 global admin account being used for migration; often this will already have a license assigned. This is required for MigrationWiz to provision the OneDrive for Business accounts during migration.
  4. Set up the app-based authentication in the Microsoft 365 tenant. For specific instructions, see Sharepoint App-based Authentication.

Upload Files to Azure

Steps are performed from a file server, or a computer joined to the domain, when logged in with the domain admin account, with local admin rights to the machine. This process utilizes UploaderWiz. Our guides contain information on running, configuring, and troubleshooting UploaderWiz. 

  1. Steps are performed from a file server, or a computer joined to the domain, when logged in with the domain admin account, with local admin rights to the machine.
  2. Download and extract the UploaderWiz utility from here (e.g., extract into the c:\apps\uploaderwiz directory).
  3. Set the file share migration batch to read-only access by user and inform the users that a migration is occurring and that their file shares are now read-only. This will prevent the user from adding files to these file shares during the migration.
  4. You can restrict users to read-only access to their Home Directories through the Active Directory Users and Computers console on the AD controller, or via PowerShell. Prerequisites:
      1. Create a CSV file containing all the usernames (SAMAccountName).
      2. Install the required AD module on the machine that you're running the script from.
      3. Example script: 

    Import-Module 'ActiveDirectory'
    import-csv E:\usersname.csv | foreach-object{
    $homeDrive = (Get-ADUser -Identity $ -Properties homedirectory).homedirectory #Query AD for the HomeDirectory attribute
    $ACL = Get-Acl $homeDrive
    $ACL.setAccessRule((New-Object System.Security.AccessControl.FileSystemAccessRule($, "Read", "ContainerInherit,ObjectInherit", "none", "allow")))
    Set-Acl $homeDrive $ACL

  5. From the command console, running as administrator, from the directory that UploaderWiz was extracted into, run the following command (replace the x's with your own information):
    UploaderWiz -accesskey "xxxxxxxx" -secretkey "xxxxxxxxxxxxxxxxxxxxxxx" -type azureblobs -rootpath "xxxxxxxx" -homedrive true
    1. If you are performing these steps from a domain-joined computer, a network drive needs to be mapped from the domain-joined computer to the file server, and the root path needs to match this drive letter, followed by the directory path, e.g., "x:\home files" (if there are spaces in the path, you need to surround the path with quotation marks) or x:\fileshare.
    2. The parameter -homedrive true creates separate blob containers for each file share, under your top-level Azure blob container.

MSPComplete Steps

Create Customer

  1. Click the Add button in the top navigation bar
  2. Click the Add Customer button on the All Customers page
  3. In the left navigation pane, select the appropriate workgroup and then click All Customers.
  4. Click Add Customer.
  5. Enter the new customer’s information in the Add Customer form. Primary Email Domain and Company Name are required. The rest are optional.
  6. Click Save.
  7. Repeat steps 1 through 4 for each customer you want to add. 

Purchase licenses

We recommend that you purchase the User Migration Bundle license for this migration scenario. User Migration Bundle licenses allow multiple types of migrations to be performed with a single license. They also allow DeploymentPro to be used to configure Outlook email profiles. For questions on licensing, visit MigrationWiz Licenses

To purchase licenses:

  1. Sign in to your BitTitan account. 
  2. In the top navigation bar, click Purchase.
  3. Click the Select button and choose User Migration Bundle licenses.
  4. Enter the number of licenses you want to purchase. Click Buy Now.
  5. Enter a Billing address if applicable.
  6. Click Next.
  7. Review the Order Summary and enter a payment method.
  8. Click Place Your Order.

Apply licenses

  1. Select the correct workgroup on the top of the left navigation pane. This is the workgroup that the customer and migration project were created under. Your account must be part of the workgroup if the project was not created under your account.
  2. On the left navigation pane, click Customers.
  3. Click the customer that employs the user to whom you want to apply a User Migration Bundle license.
  4. Click the Users tab at the top of the page.
  5. Check the box to the left of the email for the user(s) to whom you want to apply a license.
  6. Click the Apply User Migration Bundle License button at the top of the page. It is recommended that users be added to the Customer page with the vanity domain. Then have the User Migration Bundle Licenses applied, before editing to show the .onmicrosoft domain, if the .onmicrosoft domain will be used for the migration.
  7. If there is at least one unassigned User Migration Bundle license available for each selected user, click Confirm.

Migration Steps

These steps are performed from the machine that was prepared for PowerShell and UploaderWiz

  1. Fill in all columns in the authorizationsettings.csv file for the user home directories that will be migrated in the migration batch.
    • The recommended directory, specified in the Prepare Machine(s) for PowerShell and UploaderWiz section above, was C:\scripts.
    • These are the BitTitan data centers that can be set: Canada, NorthEurope, NorthAmerica, WesternEurope, AsiaPacific, Australia, Japan, SouthAmerica. 
    • Once you have completed the first entry row, copy the entries for AccessKey, SecretKey, ODFBAdmin, ODFBPwd, BitTitanDatacenter and CustomerName into each subsequent row.
  2. Launch Windows PowerShell, and run the following command: Set-ExecutionPolicy Unrestricted
    This allows scripts that are not digitally signed to run in your PowerShell window.
  3. Run the projectimport.ps1 script. This sets up the projects. Upon completion, it will run a verify credentials against every MigrationWiz project that was created by the script.
    • This script will set all the necessary Advanced Options. These include:
      • Licensing/Maximum licenses = 5. Only one User Migration Bundle will be needed per user, however, the script does currently require this to be set. 
      • ShrinkFoldersMaxLength=300 
      • RenameConflictingFiles=1  
      • InitializationTimeout=8  
      • Preferred BitTitan Data Center. This will reflect the entry from the AuthorizationSettings.csv file, under the BitTitanDataCenter column. 
    • Run the script, using the Windows PowerShell. Change to the directory that you extracted the scripts into, e.g., C:\scripts:> .\projectimport.ps1
    • When prompted for credentials, enter your BitTitan credentials.
    • All projects will be created with a name set to destinationemailaddress_ps. The '_ps' is used by the Full migration pass script (RunSubmission.ps1) so that it only starts migrations for those projects matching this name criterion.
  4. Run the RunSubmission.ps1 script (e.g., c:\scripts:> .\RunSubmission.ps1). This performs a Full migration pass.
    • When prompted for credentials, enter your BitTitan credentials. You can set your BitTitan account credentials within this script (but these could then be seen by others who have access to the script). This will avoid being prompted to enter your BitTitan account credentials.
    • Once the script completes, launch MigrationWiz and enter one of your projects. You can then monitor the progress of the migration.

Post-Migration Steps

  1. Remove access to the Source home directories.
  2. Provide training on OneDrive For Business.
  3. Delete directories from the staging directory; this is the directory that home directories were copied to prior to uploading them to Azure. Once all home directory batches have been completed, and all file shares and other data have been migrated, the Source file server can be decommissioned.
  4. Delete all the Azure blob containers that were created during the upload to Azure. This will prevent incurring post-migration Azure costs for these containers. Be careful to only delete the containers created by UploaderWiz; these will be names that match the home directories and have a create date from the date of the upload.


Was this article helpful?
2 out of 2 found this helpful