Migration playbook · Files and collaboration

How to migrate a file server to SharePoint and OneDrive

Plan sites and permissions, pre-scan the shares for names and paths SharePoint will reject, move the data with Migration Manager or SPMT, and switch users over.

Updated 4 Nov 20266 phases26 detailed steps11 official sources
Start here

Your migration plan

This moves shared folders and home drives from a Windows file server into SharePoint (team files) and OneDrive (personal files). Migration Manager, Microsoft's migration tool included with Microsoft 365, copies the files through small agent programs installed on Windows machines near the server. Most of the work is design: deciding what to move, where it goes and who can open it. The time depends on how much data you have: the bulk copy runs overnight and at weekends, then short incremental passes (top-ups of only changed files) finish the job.

Recommended routeMigration Manager (SharePoint admin center) with agents

Included with Microsoft 365, runs centrally across several agents, and gives reports and incremental re-runs.

Other options and when to use them
  • SharePoint Migration Tool (SPMT): A small move you can run from one machine.
  • Third-party tool such as ShareGate or AvePoint: You already license one, or need features the Microsoft tools do not have.
Order to migrate in, and why

Decide what moves and who can open it before any copy, because a permission design is much harder to fix after the files land. Fix problem names at the source, copy the bulk while people keep working on the server, then make the shares read-only for a short final pass. Retire the server last.

  1. Inventory and owner decisions: move, archive, delete or leave read-onlyEvery file you skip saves copy time and storage, and owners are the only people who can say what is still needed.
  2. Site, library and access design, signed off by ownersDestinations and permission groups are set per task, so the design must be settled before tasks are created.
  3. Users and groups in Microsoft Entra ID, target sites, and OneDrive for home drivesMigration Manager looks people up in Microsoft Entra ID by default. Files owned by accounts it cannot find arrive as the migration account.
  4. Pre-scan and fixes at the sourceLong paths, reserved names and very large files fail whichever tool you use, and are quicker to fix before copying.
  5. Agents installed, then a scan-only run of each shareThe scan reports what will fail without using a migration window.
  6. Pilot share, checked with its ownerShows real copy speed and lets the owner test access before the large shares move.
  7. Bulk passes out of hours, then incremental passesPeople keep working on the server during the long first pass, and later passes copy only what changed, so the freeze is short.
  8. Read-only shares, final pass, drive mappings removed, then decommissionMaking shares read-only stops edits that would be left behind. The server stays read-only for an agreed period in case you need to roll back.
Settings checklist: decide these before you copy

Built-in and third-party tools treat these differently. Tick each one off once you have decided.

Download this checklist (Excel)
  • How each tool handles it
    Built-in methodMigration Manager: run from the SharePoint admin center, with agents on Windows machines that read the shares; the file server must support SMB 2.0 or later. SPMT: a desktop app that runs on one machine. Both have very similar settings.

    Tip: For a single small share, SPMT on one PC is often enough. For several shares, use Migration Manager so tasks spread across agents.

    Microsoft Learn: Get started with Migration Manager
  • How each tool handles it
    Built-in methodMigration Manager: filters for "Migrate files created after", "Migrate files modified after" and "Don't migrate files with these extensions". With "Migrate hidden files" set to Off, hidden files are not migrated. SPMT has the same filters, with "Include hidden files".

    Tip: Agree date filters with owners in writing, because filtered files stay only on the server.

    Microsoft Learn: Migration Manager settings
  • How each tool handles it
    Built-in methodMigration Manager: "Preserve file share permissions" carries permissions on the migrated files across. Copied as they are, years of broken inheritance become unique permissions in SharePoint, which supports 50,000 per library with a recommended general limit of 5,000. SPMT has the same setting.
    ShareGate MigrateKeeps custom permission levels on files and folders. Only Full Control, Contribute, Read & execute, Read and Write migrate; special permission levels are ignored.
    AvePoint FlyAvePoint says Fly preserves permissions with mapping, and lists file shares as a source.

    Tip: Turn Preserve file share permissions off where access is redesigned, and grant access through the site Owners, Members and Visitors groups.

    Microsoft Support: Restrictions and limitations in OneDrive and SharePoint
  • How each tool handles it
    Built-in methodMigration Manager: Microsoft Entra lookup is On by default. To use your own user mapping file and keep permissions, turn Microsoft Entra lookup off. Files owned by accounts that cannot be found arrive as the migration account, and their permissions are dropped. SPMT: Automatic user mapping is On by default, and users missing from a mapping file are not looked up.
    ShareGate MigrateMaps accounts automatically through the SharePoint people picker.

    Tip: Sync users and groups with Entra Connect Sync before the first pass, and map leavers to a current owner.

    Microsoft Learn: Migration Manager settings
  • How each tool handles it
    Built-in methodMigration Manager and SPMT: not stated in Microsoft's documentation: test it in your pilot.
    ShareGate MigrateHas a "Preserve authors and timestamps" copy option. ShareGate notes that when files are copied between Windows servers, Windows sets their Created date to the copy date.
    AvePoint FlyAvePoint says Fly migrates metadata. Which date and author fields: not stated in AvePoint's documentation: test it in your pilot.

    Tip: Do not copy shares to another server first, and compare Modified and Modified By on a few files in the pilot.

    Microsoft Learn: Migration Manager settings
  • How each tool handles it
    Built-in methodMigration Manager: the file share settings have no version option, so each file arrives as a single version. SharePoint keeps version history from then on.
    ShareGate MigrateCan import several files from a file share as versions of one SharePoint file, using a Version column in an Excel or CSV import.

    Tip: Check the library version setting on each new library before people start working in it.

    Microsoft Learn: Migration Manager settings
  • How each tool handles it
    Built-in methodSharePoint and OneDrive: files over 250 GB, paths over 400 characters, leading or trailing spaces and reserved names (such as CON, PRN and desktop.ini) cannot be stored, whichever tool you use. Migration Manager: "Migrate files and folders with invalid characters" is On by default and Microsoft recommends leaving it on.

    Tip: Run the read-only pre-scan in this guide on each share and fix what it flags before the first pass.

    Microsoft Support: Restrictions and limitations in OneDrive and SharePoint
  • How each tool handles it
    Built-in methodMigration Manager and SPMT: copy files only. Links between workbooks, mapped-drive shortcuts and apps that read server paths stop working once files have SharePoint addresses.
    LinkFixer AdvancedFinds and fixes links between files for file share to SharePoint Online moves, before or after the copy.

    Tip: Search the shares for .accdb, .mdb and linked Excel files during the inventory, and test them in the pilot.

  • How each tool handles it
    Built-in methodMigration Manager: files arrive with the default Document content type. Content types set on the library are not applied.
    ShareGate MigrateLets you export migration metadata to Excel or CSV, edit it and import it back with the files.

    Tip: Add columns and content types after the copy, library by library.

    Microsoft Learn: Migration Manager FAQ
  • How each tool handles it
    Built-in methodMigration Manager: each agent needs a working folder with at least 150 GB free and runs up to 10 tasks at once. Microsoft says speed rises roughly in line with the number of agents until network bandwidth runs out. Agent sign-in does not support third-party MFA (multi-factor authentication). The 50-task limit for cloud sources does not apply to file shares.

    Tip: Put agents close to the file server, on a fast disk, and add more for large shares.

    Microsoft Learn: Migration Manager FAQ
  • How each tool handles it
    Built-in methodMigration Manager: Microsoft says migration runs as a background activity, and SharePoint has built-in throttling (slowing down heavy traffic to protect the service). Large copies still compete with users for file server and internet bandwidth.
    MovebotRepeats delta runs daily inside a transfer window (set in UTC, so convert from AEST or AEDT) and pauses outside it. The window does not start a migration by itself.

    Tip: Run bulk passes overnight and at weekends, and add agents rather than one very long run.

    Microsoft Learn: Migration Manager FAQ
  • How each tool handles it
    Built-in methodMigration Manager: re-running a task copies changes since the last pass. If a user renames or moves a migrated file, the next pass copies the source file again and keeps the renamed one; a deleted destination file is copied again. "Migration auto rerun" is scheduled for deprecation, so set it to Off. SPMT: a saved task rerun copies new or updated files.
    MovebotAlways Use Delta copies only what changed on each scheduled run.

    Tip: Ask users not to reorganise the new libraries until after the final pass.

    Microsoft Learn: Migration Manager FAQ
The plan, phase by phase
  1. 1

    Take stock

    Before you design anything

    Watch out: Links between workbooks, Access databases and apps that read server paths stop working once files move.

    Ways around it

    • Rebuild the links, or keep those files on a server or in Azure Files.

    Tools that can do it

    • LinkFixer AdvancedFinds and fixes links between files for file share to SharePoint Online moves, before or after the copy.
    Show the detailed steps (4) →
  2. 2

    Design sites and access

    Watch out: Migration Manager's Preserve file share permissions copies NTFS (Windows file server) permissions as they are, including years of broken inheritance. Microsoft recommends no more than 5,000 unique permissions per SharePoint library.

    Ways around it

    • Turn off Preserve file share permissions where access is redesigned, and set access at site or library level.

    Watch out: Migration Manager: files owned by accounts it cannot find in Microsoft Entra ID (Microsoft 365 sign-in), such as deleted or unsynced accounts, arrive as the migration account, and their permissions are dropped.

    Ways around it

    • Prepare a user mapping file, and turn off Microsoft Entra lookup when you use it.
    Show the detailed steps (5) →
  3. 3

    Pre-scan and fix

    Watch out: SharePoint and OneDrive: files over 250 GB, paths over 400 characters and reserved names cannot be stored, whichever tool you use. Invalid characters are handled only if the invalid character setting is On.

    Ways around it

    • Fix them at source, or change the target design so paths are shorter.
    • Keep invalid character handling at its default (On) unless you need exact names.
    Show the detailed steps (2) →
  4. 4

    Copy the files

    Watch out: Large copies compete with users for bandwidth, and Microsoft 365 throttles (slows down) heavy traffic.

    Ways around it

    • Run bulk passes out of hours and add agents to spread the load.

    Tools that can do it

    • MovebotRepeats delta runs daily inside a transfer window (set in UTC) and pauses outside it. The window does not start a migration by itself.

    Watch out: Migration Manager: agent sign-in does not support third-party MFA (multi-factor authentication).

    Ways around it

    • Sign the agent in with a SharePoint admin account that does not use a third-party MFA provider.

    Watch out: Migration Manager: the Migration auto rerun setting (retry up to four times) is scheduled for deprecation.

    Ways around it

    • Set it to Off and re-run failed tasks once you fix the cause.
    Show the detailed steps (5) →
  5. 5

    Switch over

    At the agreed freeze time

    Watch out: OneDrive sync: Microsoft recommends syncing no more than 300,000 files in total per user.

    Ways around it

    • Sync only the folders people need, and open large archive libraries in the browser.

    Turn this phase into dated tasks with the cutover planner

    Show the detailed steps (3) →
  6. 6

    Check and retire

    Watch out: Work saved in SharePoint after cutover must be copied back by hand, and decommissioning cannot be undone.

    Ways around it

    • To roll back, restore write access and drive mappings while the server is still read-only.
    Show the detailed steps (3) →
You are finished when
  • File counts match the source, apart from excluded or accepted items, and owners have signed off.
  • Only the site groups hold permissions, and test users have the access the mapping says.
  • Users reach their files through shortcuts and sync, and the old drive letters are gone.
  • The file server refuses new saves.

Tools named in this plan are independent third-party products, not endorsed by the platform vendor and not paid placements. Check the tool's own documentation and run a pilot first.

Click by click

Detailed steps

Open a part when you reach it in the plan. Each step says where to go, what to do and what you should see.

About this migrationWhat it covers, limits at a glance

A file server move is mostly a design job. The copy itself is handled well by Microsoft's free tools. What goes wrong is lifting a decades-old folder tree into one SharePoint library, carrying over tangled NTFS permissions, and then asking everyone to sync it.

This guide works in order: inventory, design the sites, simplify permissions, pre-scan for problems, migrate, then switch users over with shortcuts rather than mass sync. Home drives go to OneDrive. Team shares go to SharePoint sites, often Teams-connected.

Native toolsMigration Manager (SharePoint admin center, agents) and the SharePoint Migration Tool (SPMT)
Largest file250 GB
Longest path400 characters for the full decoded path, including the file name
Sync guidanceMicrosoft recommends syncing no more than 300,000 files in total per user
Source requirementMigration Manager needs the file server to support SMB 2.0 or higher
1What you need before step one
NeedDetailsWhere to get it
SharePoint AdministratorTo open Migration center, install agents and create sites. Third-party MFA is not supported for the agent sign-in.SharePoint admin center, https://contoso-admin.sharepoint.com
A Windows account with Read access to every shareThe agent runs as this account. SPMT also needs it.Active Directory
One or more migration machinesWindows machines that can reach the shares. Check Microsoft's Migration Manager prerequisites for system requirements and endpoints.https://learn.microsoft.com/en-us/sharepointmigration/mm-prerequisites
PowerShell 7For the read-only pre-scan in Step 4, so long paths can be read.https://learn.microsoft.com/en-us/powershell/scripting/install/install-powershell-on-windows?view=powershell-7.6
SharePoint Online Management ShellTo pre-provision OneDrive for home drive owners.Install SharePoint Online Management Shell
Optional: SharePoint Migration ToolFor small moves from one machine instead of Migration Manager.Install the SharePoint Migration Tool
LicencesEach user needs a licence that includes SharePoint and OneDrive. Check current pricing with Microsoft or your partner.Microsoft 365 admin center, Billing
2Inventory the shares4 steps
  1. 1

    List the shares

    Where: Windows PowerShell run as administrator on each file server

    List every SMB share and its path, then copy the list into your Mailbox and data inventory sheet. For each share record the business owner and who has access.

    Get-SmbShare | Where-Object { $_.Special -eq $false } | Select-Object Name, Path, Description
    You should see: One line per share with its local path. Administrative shares such as C$ are left out.
  2. 2

    Measure files and size per folder

    Where: PowerShell 7 on a machine with read access to the shares, then your inventory sheet

    For each share record size, file count and last-modified spread. The script below gives file counts and sizes per top-level folder. Change \\fs01\Shares to your path.

    # Files and size per top-level folder, largest first
    Get-ChildItem -LiteralPath '\\fs01\Shares' -Directory | ForEach-Object {
        $m = Get-ChildItem -LiteralPath $_.FullName -Recurse -File -Force -ErrorAction SilentlyContinue |
             Measure-Object -Property Length -Sum
        [pscustomobject]@{ Folder = $_.Name; Files = $m.Count; SizeGB = [math]::Round(($m.Sum / 1GB), 2) }
    } | Sort-Object SizeGB -Descending | Format-Table -AutoSize
    You should see: A table of Folder, Files and SizeGB, largest first.
  3. 3

    Decide what not to move

    Where: Your inventory sheet, with each share owner

    Add an Action column (Move, Archive, Delete, Leave read-only). Agree with owners which folders are archived, deleted or left read-only on the old server. Moving less is the single biggest time saver.

    You should see: Every folder has an action and an owner sign-off.
  4. 4

    Separate home drives

    Where: Windows PowerShell on a domain-joined admin PC with the Active Directory module

    Personal home drives go to each user's OneDrive. List users with a home folder set, and note any home drive that is really a team folder in disguise.

    Get-ADUser -Filter * -Properties HomeDirectory | Where-Object HomeDirectory | Select-Object SamAccountName, UserPrincipalName, HomeDirectory
    You should see: A list of users and their home folder paths, ready to map to OneDrive.
3Design the information architecture5 steps

Design for how people work now, not the old drive letters. A common pattern is one SharePoint site per team or function, a small number of libraries per site, and a hub site to connect related sites.

  1. 1

    Map each share to a site and library

    Where: Your Target-state architecture sheet

    Add the target site URL and library for each share. Use a site when the audience or permissions differ. Use a separate library when content needs different settings such as versioning or retention. Use folders only for navigation.

    You should see: Every share row has a target site URL and library name.
  2. 2

    Flatten deep trees

    Where: Your Target-state architecture sheet, using the pre-scan results from Step 4

    The 400-character limit counts the site and library URL too. Promote deep sub-folders to their own libraries or sites rather than moving them as they are.

    You should see: No planned destination path is close to 400 characters.
  3. 3

    Keep library names short

    Where: Your Target-state architecture sheet

    Short site and library names leave more of the 400 characters for folders and file names, and make synced paths shorter in File Explorer.

    You should see: Site and library names are short and agreed with owners.
  4. 4

    Create the sites

    Where: SharePoint admin center (https://contoso-admin.sharepoint.com) > Sites > Active sites > Create

    Create each target site (a team site, or a Teams-connected site where the group also needs chat), using the short names from your sheet. Add extra libraries from the site's New menu.

    You should see: Each site appears in Active sites and opens at the URL in your sheet.
  5. 5

    Pre-provision OneDrive for home drive owners

    Where: Windows PowerShell connected with SharePoint Online Management Shell

    OneDrive must exist before you migrate a home drive into it. Request it for the users from Step 1.

    Connect-SPOService -Url https://contoso-admin.sharepoint.com
    Request-SPOPersonalSite -UserEmails "meganb@contoso.com","alexw@contoso.com"
    You should see: The command returns without error. Each user's OneDrive URL opens after provisioning completes.
4Map NTFS permissions to SharePoint4 steps
  1. 1

    Export current NTFS permissions

    Where: Windows PowerShell on a machine with read access to the shares

    Export the access list of each top-level folder so owners can see who has access today.

    Get-Acl -Path '\\fs01\Shares\Finance' | Select-Object -ExpandProperty Access | Select-Object IdentityReference, FileSystemRights, IsInherited
    You should see: One line per group or user with its rights, and whether it is inherited.
  2. 2

    Reduce to Owners, Members and Visitors

    Where: Each target site > Settings (gear icon) > Site permissions

    Map NTFS groups to the site's Owners, Members and Visitors groups, or to Microsoft 365 groups for Teams-connected sites. Use security groups synced from Active Directory or created in Entra ID, not individual users.

    You should see: Site permissions lists only the three site groups, each containing security groups.
  3. 3

    Avoid item-level permissions

    Where: Your Target-state architecture sheet

    Microsoft supports up to 50,000 unique permissions in a list or library, with a recommended general limit of 5,000. If a folder needs different access, it usually needs its own library or site.

    You should see: Folders that need different access are planned as separate libraries or sites.
  4. 4

    Record the mapping

    Where: Your Target-state architecture sheet (permissions tab)

    Keep a sheet of share, NTFS group, target site and SharePoint group. Owners sign it off before migration.

    You should see: A signed-off permissions mapping for every share.
5Pre-scan for paths, names and file sizes2 steps

The script below reports items that SharePoint or OneDrive will reject or that need attention: estimated destination paths over 400 characters, invalid characters, leading or trailing spaces, reserved names, names starting with ~$ or containing _vti_, a forms folder at the library root, and files over 250 GB. It is read-only. Set -DestinationPrefix to the target site and library path so the length estimate includes it.

RuleLimit from Microsoft
File size250 GB per file
Path length400 characters for the decoded path including the file name
Characters not allowedDouble quote, asterisk, colon, less-than, greater-than, question mark, forward slash, backslash, pipe
Leading or trailing spacesNot allowed in file or folder names
Reserved names.lock, CON, PRN, AUX, NUL, COM0 to COM9, LPT0 to LPT9, desktop.ini
Other namesNames starting with ~$, any name containing _vti_, a folder called forms at library root
Unique permissions50,000 supported per list or library; 5,000 recommended general limit
  1. 1

    Run the pre-scan for each share

    Where: PowerShell 7 (pwsh) on the migration machine, signed in with the account that has read access

    Save the script as Invoke-SharePointPreScan.ps1, then run it once per share with the share path and the matching site and library prefix from your architecture sheet.

    # Save as Invoke-SharePointPreScan.ps1. Read-only: it reports problems and changes nothing.
    # Run in PowerShell 7 so paths longer than 260 characters can be read.
    # Example:
    #   pwsh -File .\Invoke-SharePointPreScan.ps1 -SourcePath '\\fs01\Shares\Finance' -DestinationPrefix 'sites/Finance/Shared Documents'
    param(
        [Parameter(Mandatory = $true)]
        [string]$SourcePath,
        [string]$DestinationPrefix = 'sites/Finance/Shared Documents',
        [int]$MaxPathLength = 400,
        [long]$MaxFileBytes = 250GB,
        [string]$ReportPath = '.\prescan-report.csv'
    )
    
    $invalidChars  = [regex]'["*:<>?/\\|]'
    $reservedNames = @('.lock', 'CON', 'PRN', 'AUX', 'NUL', 'desktop.ini') +
                     (0..9 | ForEach-Object { "COM$_"; "LPT$_" })
    
    $root      = (Get-Item -LiteralPath $SourcePath).FullName.TrimEnd('\')
    $results   = [System.Collections.Generic.List[object]]::new()
    $fileCount = 0
    
    Get-ChildItem -LiteralPath $root -Recurse -Force -ErrorAction SilentlyContinue -ErrorVariable scanErrors |
        ForEach-Object {
            $item     = $_
            $isFolder = $item.PSIsContainer
            if (-not $isFolder) { $fileCount++ }
    
            $relative = $item.FullName.Substring($root.Length).TrimStart('\') -replace '\\', '/'
            $destPath = "$DestinationPrefix/$relative"
            $baseName = [System.IO.Path]::GetFileNameWithoutExtension($item.Name)
            $issues   = @()
    
            if ($destPath.Length -gt $MaxPathLength) { $issues += "Destination path is $($destPath.Length) characters" }
            if ($invalidChars.IsMatch($item.Name))   { $issues += 'Invalid character' }
            if ($item.Name -ne $item.Name.Trim())    { $issues += 'Leading or trailing space' }
            if (($reservedNames -contains $item.Name) -or ($reservedNames -contains $baseName)) { $issues += 'Reserved name' }
            if ($item.Name.StartsWith('~$'))         { $issues += 'Name starts with ~$' }
            if ($item.Name -like '*_vti_*')          { $issues += 'Name contains _vti_' }
            if ($isFolder -and $item.Name -eq 'forms' -and $relative -notmatch '/') { $issues += 'Folder named forms at library root' }
            if ((-not $isFolder) -and ($item.Length -gt $MaxFileBytes)) { $issues += 'File larger than size limit' }
    
            if ($issues.Count -gt 0) {
                if ($isFolder) { $type = 'Folder'; $size = $null } else { $type = 'File'; $size = $item.Length }
                $results.Add([pscustomobject]@{
                    Issues                = $issues -join '; '
                    Type                  = $type
                    Path                  = $item.FullName
                    DestinationPathLength = $destPath.Length
                    SizeBytes             = $size
                })
            }
        }
    
    foreach ($err in $scanErrors) {
        $results.Add([pscustomobject]@{
            Issues                = "Could not read: $($err.Exception.Message)"
            Type                  = 'Error'
            Path                  = "$($err.TargetObject)"
            DestinationPathLength = $null
            SizeBytes             = $null
        })
    }
    
    $results | Export-Csv -LiteralPath $ReportPath -NoTypeInformation -Encoding UTF8
    Write-Host ('Scanned {0} files. {1} items need attention. Report: {2}' -f $fileCount, $results.Count, $ReportPath)
    if ($fileCount -gt 300000) {
        Write-Warning 'More than 300,000 files. Do not ask users to sync all of this library.'
    }
    You should see: The script prints "Scanned N files. M items need attention." and writes prescan-report.csv.
  2. 2

    Fix what the report finds

    Where: Excel, opening prescan-report.csv; then the file share

    Open the CSV in Excel, filter by issue and fix at source (rename, shorten or move) or adjust the target design. Run the scan again until only accepted items remain.

    You should see: The second run reports no items you have not accepted.
The path figure is an estimate. The script measures the site and library prefix you give it plus the relative path. Migration Manager also reports destination URLs over 400 characters as failures in its own scan.
6Choose Migration Manager or SPMT
Migration ManagerSharePoint Migration Tool (SPMT)
Where you run itSharePoint admin center, with agents on Windows machinesDesktop app on one machine
SourcesFile shares, plus Google, Box, Dropbox and Egnyte cloud sourcesFile shares and SharePoint Server document libraries
ScaleMany agents; tasks spread across them automaticallySingle machine per run
Best forLarge or multi-share projects run centrallySmall moves and SharePoint Server sources
Both can run on one machine. Microsoft confirms SPMT can run on the same computer as a Migration Manager agent. To use SPMT, follow Install the SharePoint Migration Tool and migrate a file share.
7Migrate with Migration Manager5 steps
  1. 1

    Download the agent

    Where: On the migration machine, signed in with the Windows account that can read all shares: SharePoint admin center > Migration center > For file shares > Get started > Agents tab > Add

    Sign in to the admin center as a SharePoint Administrator, select Download agent setup file and save it.

    You should see: The agent setup file is in the Downloads folder.
  2. 2

    Install the agent

    Where: The migration machine, File Explorer > Downloads

    Open the setup file. On the Welcome page choose User Credential Authentication and select Next, then enter the SharePoint admin username and password for the destination. Third-party MFA is not supported for the agent sign-in. Enter the password of the Windows account with read access to the shares and select Install. Optionally test agent access, then select Close. Repeat on more machines for more throughput.

    You should see: The new agent appears on the Agents tab and can be assigned tasks.
  3. 3

    Create tasks

    Where: SharePoint admin center > Migration center > For file shares > Add task

    Under Method choose Single source and destination (a few shares) or Bulk migration (a CSV or JSON file in Microsoft's bulk upload format). Enter the source as \\fs01\Shares\Finance and select Next. Choose SharePoint site, OneDrive or Teams, enter the site and library (or the user's email for OneDrive) and select Next. Enter a Task name, review All settings (scan only, permissions, filters, invalid characters), then select Run now. Each agent can queue up to 10 tasks.

    You should see: The task appears in the task list, queued for the next available agent.
  4. 4

    Run, review reports, re-run

    Where: SharePoint admin center > Migration center > For file shares, the task list

    Every file is scanned, packaged, uploaded and imported. Download the task reports as Microsoft's Migration Manager reports page describes and fix failures. Re-running a task performs an incremental pass.

    You should see: The task completes and its reports show no failures you have not accepted.
  5. 5

    Check content types

    Where: Each migrated library > Settings (gear icon) > Library settings

    File share content arrives with the default Document content type. Apply metadata or content types after migration if you need them.

    You should see: Libraries that need metadata have their columns or content types added.
8Switch users over: shortcuts, not mass sync3 steps
  1. 1

    Use Add shortcut to My files

    Where: The SharePoint library in a web browser, on each user's PC

    Ask users to open the library in the browser, select the folders they need and choose Add shortcut to My files. The folder then appears in their OneDrive in File Explorer without syncing every library.

    You should see: The folder shows under the user's OneDrive in File Explorer with a shortcut icon.
  2. 2

    Respect the sync guidance

    Where: Your Quick-start guide for staff, and the OneDrive sync app on each PC

    Microsoft recommends syncing no more than 300,000 files in total across a user's cloud storage. Big archive libraries should be opened in the browser, not synced.

    You should see: Users sync only the shortcuts they need, and the OneDrive icon shows files up to date.
  3. 3

    Remove drive mappings

    Where: Group Policy Management on a domain controller or admin PC: the GPO that maps drives > User Configuration > Preferences > Windows Settings > Drive Maps (or your logon script)

    Remove the old drive letter mappings on cutover day so people stop saving to the old server. Users see the change after their next sign-in or Group Policy refresh.

    gpupdate /force
    net use
    You should see: On a test PC, net use no longer lists the old drive letter.
9Cutover and decommission3 steps
  1. 1

    Make the source read-only

    Where: Windows PowerShell run as administrator on the file server

    At the agreed time, change share permissions to read-only so no new changes land on the server. Change the share name and group to match yours.

    Get-SmbShareAccess -Name Finance
    Revoke-SmbShareAccess -Name Finance -AccountName 'CONTOSO\Finance Staff' -Force
    Grant-SmbShareAccess -Name Finance -AccountName 'CONTOSO\Finance Staff' -AccessRight Read -Force
    You should see: Get-SmbShareAccess shows the group with AccessRight Read, and a test user cannot save to the share.
  2. 2

    Run the final incremental pass

    Where: SharePoint admin center > Migration center > For file shares, the task list

    Re-run each task, check the reports and sign off with the share owner. Record file counts in your Data validation report.

    You should see: The final pass completes with no new failures, and the owner signs the validation report.
  3. 3

    Keep the server read-only, then retire it

    Where: The file server, following your Decommission checklist

    Leave the old shares read-only for an agreed period, then archive and decommission the server.

    You should see: The archive is verified and the server is shut down on the agreed date.
Worth knowing

Expert notes

The detail behind the plan: options compared, and what experienced engineers check first. Tap any item.

Compare all the ways to do this3 options
Not sure which? Answer 5 quick questionsOur decision helper recommends an approach and tells you why.Start →

Migration Manager (SharePoint admin center)

Medium effort

Best for: Large or multi-share projects run centrally by one team

  • Runs from the SharePoint admin center with agents on Windows machines, spreading tasks across them
  • Also covers Google, Box, Dropbox and Egnyte cloud sources
  • Central reports and incremental re-runs
  • Needs the file server to support SMB 2.0 or higher
  • Agent machines and their working folders need sizing
Read more →

SharePoint Migration Tool (SPMT)

Low effort

Best for: Small moves from one machine, and SharePoint Server document libraries

  • Desktop app you install and run on one machine
  • Can run on the same computer as a Migration Manager agent
  • One machine per run, so large estates take longer
  • Each run is set up and monitored on that machine, not centrally
Read more →

Third-party migration tool (for example ShareGate or AvePoint)

Medium effort

Best for: Organisations that already own one, or whose project also covers other Microsoft 365 or SharePoint moves

  • One console and vendor support across several kinds of migration
  • Check each vendor's current feature list for permission mapping and reporting
  • Licensed separately; check the vendor's current pricing
  • Still bound by the same SharePoint limits, such as 250 GB files and 400-character paths
Read more →
Our advice

Microsoft's free tools handle most file share moves. Use Migration Manager when you have several shares or want to run the project centrally across agents, and SPMT for a small move from one machine. Consider a third-party tool if you already license one or need features the Microsoft tools do not have. Whichever you pick, the design, permission and pre-scan work is the same.

Move less: archive stale data before the first passSaves time

File servers often hold years of untouched files. Every file you copy costs migration time, counts against SharePoint storage and adds to sync and search noise.

What to do

Use the last-modified spread from Step 1 to agree an archive cut-off with owners. Migration Manager can also filter with Migrate files modified after in the task settings.

Microsoft Learn: Migration Manager settings
Scan only before you migrateSaves time

A failed pass on a large share wastes a migration window. Migration Manager can scan without copying and reports what will fail.

What to do

Turn on Only perform scanning in the task settings for the first run of each share, alongside the PowerShell pre-scan, then fix issues before the real pass.

Microsoft Learn: Migration Manager settings
Decide how invalid characters are handledReduces risk

With Migrate files and folders with invalid characters set to Off, Microsoft says the tool skips those items and packages with more than 100 errors are blocked. On (the default and recommended value) keeps them moving.

What to do

Keep the default unless you need exact names, and rename at source anything the pre-scan flags that users rely on by name (for example files referenced by macros or links).

Microsoft Learn: Migration Manager settings
Do not copy every NTFS ACLReduces risk

Preserve file share permissions carries folder-level ACLs across, which recreates years of broken inheritance as unique permissions in SharePoint. Microsoft recommends a general limit of 5,000 unique permissions per library.

What to do

Turn the setting off where you have redesigned access around site groups, and apply permissions at site or library level instead. Keep it on only for libraries where you have confirmed the ACLs are clean.

Microsoft Support: Restrictions and limitations in OneDrive and SharePoint
Plan user mapping for SIDs that no longer resolveCompliance

Migration Manager uses Microsoft Entra lookup by default to map users. Files owned by deleted or unsynced accounts come across as the migration account, and permissions for them are dropped.

What to do

If some owners are not in Entra ID, prepare a user mapping file and, as Microsoft notes, turn off Microsoft Entra lookup when you use a custom mapping file and want to keep user permissions.

Microsoft Learn: Migration Manager settings
Size the agent machines and working folderPerformance

Each agent packages files locally before upload. Microsoft says the Migration Manager working folder needs at least 150 GB free, and one agent is one pipe.

What to do

Put the working folder on a fast disk with space to spare, and add agents on machines close to the file server to spread tasks across them.

Microsoft Learn: Migration Manager settings
Run bulk passes out of hours and finish with deltasUser impact

Large copies compete with users for file server and internet bandwidth, and Microsoft 365 throttles heavy traffic. A single big-bang copy also leaves a long freeze.

What to do

Run the bulk pass overnight and at weekends, keep users working on the file server, then run incremental passes so the final freeze only covers recent changes.

Tools that can get around this

Rather than starting each overnight pass by hand, Movebot runs an on-premises agent against UNC paths and can repeat delta runs on a daily schedule inside a transfer window, so bulk copying stops by itself before business hours.

  • MovebotDaily scheduled runs with Always Use Delta, plus a start and end hour (set in UTC) outside which the transfer pauses. The window does not start a migration by itself.
Third-party tools, not endorsed by the platform vendor. Confirm in the tool's documentation and run a pilot first.
Auto rerun is being deprecatedSaves time

Microsoft says Migration auto rerun (retry up to four times) is scheduled for deprecation and recommends setting it to Off, so do not rely on it to clean up failures.

What to do

Turn it off, read the task reports after each pass and re-run tasks yourself once the cause is fixed.

Microsoft Learn: Migration Manager settings
Find what breaks when paths changeUser impact

Excel links between workbooks, Access databases, mapped-drive shortcuts and apps that read UNC paths all stop working once files move to SharePoint URLs. Access databases in particular do not work well from a synced library.

What to do

Search the shares for .accdb, .mdb and linked workbooks during inventory, and plan to rebuild links or keep those files on a server or Azure Files.

Tools that can get around this

A link repair tool can find and fix links between files that break when they move from a file share to SharePoint Online, before or after the copy. Access databases, mapped drives and apps that read UNC paths still need the plan above.

  • LinkFixer AdvancedDetects and fixes broken links for file share to SharePoint Online migrations, and can run before the migration to protect links or after it to repair them.
Third-party tools, not endorsed by the platform vendor. Confirm in the tool's documentation and run a pilot first.
Hidden and system filesSaves time

Hidden files such as old desktop.ini and thumbnail caches add noise, and some are reserved names SharePoint rejects.

What to do

Decide on Migrate hidden files per task, and exclude junk extensions with Don't migrate files with these extensions (separate extensions with a colon, no dot).

Microsoft Learn: Migration Manager settings
Finish safely

Check it worked, or roll back

Full validation checklist8 checks

Run these before you declare the migration complete. Record the results in the data validation report.

CheckHow to checkWhat good looks like
File counts and sizes match the source

Re-run the files and size script from Step 1 against each share, and compare the totals with the Migration Manager task reports for the final pass. Record both in your Data validation report.

Counts and sizes match apart from files you excluded or accepted in the pre-scan report, and the share owner signs the validation report.
No unexplained failures in the task reports

In the SharePoint admin center open Migration center > For file shares, select each task and download its reports.

The final pass shows no new failures, and every earlier failure (path length, invalid name, file size) is fixed or accepted.
Content is in the planned site and library

Compare each task's destination with your Target-state architecture sheet, then open each library in the browser.

Every share is in its planned site and library, and home drives are in the right user's OneDrive.
Permissions match the signed-off mapping

On each site open Settings > Site permissions, then sign in as a test user from each NTFS group in your mapping sheet.

Only the Owners, Members and Visitors groups (holding security groups) are listed, and each test user has the access the mapping says.
Users reach their files through shortcuts and sync

On a pilot PC, check the folders added with Add shortcut to My files in File Explorer and the OneDrive icon status. Open the same files in the OneDrive mobile app.

Shortcuts show under OneDrive with the shortcut icon, the OneDrive icon shows files up to date, and files open on mobile.
Linked files and macros still work

Have owners open the .accdb, .mdb and linked workbooks you found during inventory, and any files referenced by macros.

Each one opens and its links work, or it has been kept on a server as planned.
The old drive letters are gone

On a test PC run gpupdate /force and then net use.

net use no longer lists the old drive letter.
The file server no longer takes writes

On the file server run Get-SmbShareAccess -Name Finance for each share, and try to save a file as a test user.

Every group shows AccessRight Read, and the test save is refused.
Rollback planIf it goes wrong

Roll back if

  • The final pass shows count differences or failures for a share that you cannot fix before the freeze ends
  • Users lose access to a library because the permission mapping is wrong and cannot be corrected the same day
  • A business process depends on a linked database or workbook that breaks in SharePoint and has no tested fix
  • OneDrive sync is unworkable for a team (for example slow or stalled sync) and browser access is not an acceptable stopgap

Point of no return

Migration Manager copies files and leaves the source unchanged, so the file server stays a complete copy until cutover. After cutover, rollback is still simple while the server is only read-only: restore write access and the drive mappings. What grows harder is the work users save in SharePoint and OneDrive after cutover, which has to be copied back by hand. The true point of no return is decommissioning the server after the archive; that cannot be undone, so keep it read-only for the agreed period first.

  1. 1

    Hold further migration tasks

    Where: SharePoint admin center &gt; Migration center &gt; For file shares, the task list

    Do not start further tasks or passes for the affected shares. Download the reports for completed tasks so you keep the record.

    You should see: No new tasks start, and the reports are saved with your Data validation report.
  2. 2

    Give write access back on the share

    Where: Windows PowerShell run as administrator on the file server

    Replace the read-only grant with the access the group had before cutover, as recorded in your runsheet. Change the share name, group and right to match yours.

    Revoke-SmbShareAccess -Name Finance -AccountName 'CONTOSO\Finance Staff' -Force
    Grant-SmbShareAccess -Name Finance -AccountName 'CONTOSO\Finance Staff' -AccessRight Change -Force
    Get-SmbShareAccess -Name Finance
    You should see: Get-SmbShareAccess shows the group with AccessRight Change, and a test user can save to the share.
  3. 3

    Restore the drive mappings

    Where: Group Policy Management on a domain controller or admin PC: the GPO that mapped the drives

    Put back the drive mapping you removed on cutover day, then refresh policy on a test PC.

    gpupdate /force
    net use
    You should see: net use lists the old drive letter again on the test PC.
  4. 4

    Copy back files changed after cutover

    Where: The SharePoint library in the browser (sort by Modified), then the file share

    Find files created or edited in SharePoint and OneDrive after the cutover time, and have owners copy them back to the share. Tell users to work only on the file server until the retry.

    You should see: Every file changed after cutover is back on the share or recorded as not needed.
  5. 5

    Fix the cause and retry

    Where: Your Target-state architecture sheet and the pre-scan script on the migration machine

    Correct the permission mapping, paths or library design, run the pre-scan again, and test with a pilot group before you cut over again.

    You should see: The pre-scan reports no items you have not accepted, and the pilot group signs off.

Agree the triggers and who decides before the go / no-go meeting. Use the rollback plan template.

Common problems and fixes6 errors
Destination path URL that exceeds 400 characters

Cause: The site, library, folder and file name together are longer than 400 characters.

Fix: Shorten folder names, move deep folders into their own library or site, then re-run the task.

File name contains invalid characters or is a reserved name

Cause: Names with characters such as colon, asterisk, question mark or pipe, leading or trailing spaces, or reserved names such as CON or desktop.ini are not allowed.

Fix: Rename at source using the pre-scan report, or set invalid character replacement in the tool settings.

File exceeds the maximum size

Cause: The file is larger than 250 GB.

Fix: Split, compress or keep the file elsewhere, such as Azure Files.

Migration Manager agent shows disconnected

Cause: The machine was off or the admin credentials expired. An agent keeps its token for up to seven days, after which it must be reinstalled.

Fix: Restart the agent machine and sign in again, or reinstall the agent if it has been offline for more than seven days.

Agent sign-in fails with MFA prompt

Cause: Third-party multifactor authentication is not supported for Migration Manager agent sign-in.

Fix: Use Microsoft Entra multifactor authentication for the account the agent uses.

OneDrive sync is slow or stops processing changes

Cause: Users are syncing whole libraries with very large file counts.

Fix: Unsync large libraries and use Add shortcut to My files on specific folders, keeping each user under 300,000 synced files.

Search the full error library →

FAQ

Frequently asked questions

Which is better for file shares, Migration Manager or SPMT?

Migration Manager suits larger projects because it runs from the SharePoint admin center with multiple agents. SPMT is a single desktop app that also handles SharePoint Server sources.

Does the file server need to be Windows?

No. Microsoft says any share the agent can reach can be migrated, as long as the server supports SMB 2.0 or higher.

Are NTFS permissions migrated?

The tools have permission settings, but a migration is the time to simplify. Map NTFS groups to SharePoint Owners, Members and Visitors instead of copying every folder ACL.

What is the SharePoint path length limit?

400 characters for the full decoded path including the file name, according to Microsoft's OneDrive and SharePoint limits page.

Can I run incremental migrations?

Yes. Re-running a Migration Manager task copies changes since the last run.

Where do home drives go?

To each user's OneDrive. Team and department shares go to SharePoint sites.

Sources

Official sources

11 official pages this guide is based on