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.
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.
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.
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.
- 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.
- 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.
- 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.
- 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.
- Agents installed, then a scan-only run of each shareThe scan reports what will fail without using a migration window.
- Pilot share, checked with its ownerShows real copy speed and lets the owner test access before the large shares move.
- 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.
- 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.
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 ManagerHow 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 settingsHow 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 SharePointHow 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 settingsHow 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 settingsHow 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 settingsHow 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 SharePointHow 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 FAQHow 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 FAQHow 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 FAQHow 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
- 1
Take stock
Before you design anythingShow the detailed steps (4) →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.
- 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.
Show the detailed steps (5) →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.
- 3
Pre-scan and fix
Show the detailed steps (2) →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.
- 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.
Show the detailed steps (5) →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.
- 5
Switch over
At the agreed freeze timeWatch 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
Check and retire
Show the detailed steps (3) →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.
- 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.
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.
1What you need before step one
| Need | Details | Where to get it |
|---|---|---|
| SharePoint Administrator | To 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 share | The agent runs as this account. SPMT also needs it. | Active Directory |
| One or more migration machines | Windows 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 7 | For 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 Shell | To pre-provision OneDrive for home drive owners. | Install SharePoint Online Management Shell |
| Optional: SharePoint Migration Tool | For small moves from one machine instead of Migration Manager. | Install the SharePoint Migration Tool |
| Licences | Each 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
List the shares
Where: Windows PowerShell run as administrator on each file serverList 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, DescriptionYou should see: One line per share with its local path. Administrative shares such as C$ are left out. - 2
Measure files and size per folder
Where: PowerShell 7 on a machine with read access to the shares, then your inventory sheetFor each share record size, file count and last-modified spread. The script below gives file counts and sizes per top-level folder. Change
\\fs01\Sharesto 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 -AutoSizeYou should see: A table of Folder, Files and SizeGB, largest first. - 3
Decide what not to move
Where: Your inventory sheet, with each share ownerAdd 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
Separate home drives
Where: Windows PowerShell on a domain-joined admin PC with the Active Directory modulePersonal 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, HomeDirectoryYou 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
Map each share to a site and library
Where: Your Target-state architecture sheetAdd 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
Flatten deep trees
Where: Your Target-state architecture sheet, using the pre-scan results from Step 4The 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
Keep library names short
Where: Your Target-state architecture sheetShort 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
Create the sites
Where: SharePoint admin center (https://contoso-admin.sharepoint.com) > Sites > Active sites > CreateCreate 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
Pre-provision OneDrive for home drive owners
Where: Windows PowerShell connected with SharePoint Online Management ShellOneDrive 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
Export current NTFS permissions
Where: Windows PowerShell on a machine with read access to the sharesExport 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, IsInheritedYou should see: One line per group or user with its rights, and whether it is inherited. - 2
Reduce to Owners, Members and Visitors
Where: Each target site > Settings (gear icon) > Site permissionsMap 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
Avoid item-level permissions
Where: Your Target-state architecture sheetMicrosoft 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
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.
| Rule | Limit from Microsoft |
|---|---|
| File size | 250 GB per file |
| Path length | 400 characters for the decoded path including the file name |
| Characters not allowed | Double quote, asterisk, colon, less-than, greater-than, question mark, forward slash, backslash, pipe |
| Leading or trailing spaces | Not allowed in file or folder names |
| Reserved names | .lock, CON, PRN, AUX, NUL, COM0 to COM9, LPT0 to LPT9, desktop.ini |
| Other names | Names starting with ~$, any name containing _vti_, a folder called forms at library root |
| Unique permissions | 50,000 supported per list or library; 5,000 recommended general limit |
- 1
Run the pre-scan for each share
Where: PowerShell 7 (pwsh) on the migration machine, signed in with the account that has read accessSave 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
Fix what the report finds
Where: Excel, opening prescan-report.csv; then the file shareOpen 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.
6Choose Migration Manager or SPMT
| Migration Manager | SharePoint Migration Tool (SPMT) | |
|---|---|---|
| Where you run it | SharePoint admin center, with agents on Windows machines | Desktop app on one machine |
| Sources | File shares, plus Google, Box, Dropbox and Egnyte cloud sources | File shares and SharePoint Server document libraries |
| Scale | Many agents; tasks spread across them automatically | Single machine per run |
| Best for | Large or multi-share projects run centrally | Small moves and SharePoint Server sources |
7Migrate with Migration Manager5 steps
- 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 > AddSign 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
Install the agent
Where: The migration machine, File Explorer > DownloadsOpen 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
Create tasks
Where: SharePoint admin center > Migration center > For file shares > Add taskUnder 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\Financeand 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
Run, review reports, re-run
Where: SharePoint admin center > Migration center > For file shares, the task listEvery 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
Check content types
Where: Each migrated library > Settings (gear icon) > Library settingsFile 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
Use Add shortcut to My files
Where: The SharePoint library in a web browser, on each user's PCAsk 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
Respect the sync guidance
Where: Your Quick-start guide for staff, and the OneDrive sync app on each PCMicrosoft 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
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 useYou should see: On a test PC, net use no longer lists the old drive letter.
9Cutover and decommission3 steps
- 1
Make the source read-only
Where: Windows PowerShell run as administrator on the file serverAt 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 -ForceYou should see: Get-SmbShareAccess shows the group with AccessRight Read, and a test user cannot save to the share. - 2
Run the final incremental pass
Where: SharePoint admin center > Migration center > For file shares, the task listRe-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
Keep the server read-only, then retire it
Where: The file server, following your Decommission checklistLeave 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.
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
Migration Manager (SharePoint admin center)
Medium effortBest 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
SharePoint Migration Tool (SPMT)
Low effortBest 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
Third-party migration tool (for example ShareGate or AvePoint)
Medium effortBest 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
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Turn it off, read the task reports after each pass and re-run tasks yourself once the cause is fixed.
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.
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.
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.
Hidden and system filesSaves time
Hidden files such as old desktop.ini and thumbnail caches add noise, and some are reserved names SharePoint rejects.
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).
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.
| Check | How to check | What 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 | net use no longer lists the old drive letter. |
| The file server no longer takes writes | On the file server run | 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
Hold further migration tasks
Where: SharePoint admin center > Migration center > For file shares, the task listDo 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
Give write access back on the share
Where: Windows PowerShell run as administrator on the file serverReplace 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 FinanceYou should see: Get-SmbShareAccess shows the group with AccessRight Change, and a test user can save to the share. - 3
Restore the drive mappings
Where: Group Policy Management on a domain controller or admin PC: the GPO that mapped the drivesPut back the drive mapping you removed on cutover day, then refresh policy on a test PC.
gpupdate /force net useYou should see: net use lists the old drive letter again on the test PC. - 4
Copy back files changed after cutover
Where: The SharePoint library in the browser (sort by Modified), then the file shareFind 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
Fix the cause and retry
Where: Your Target-state architecture sheet and the pre-scan script on the migration machineCorrect 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 charactersCause: 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 nameCause: 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 sizeCause: The file is larger than 250 GB.
Fix: Split, compress or keep the file elsewhere, such as Azure Files.
Migration Manager agent shows disconnectedCause: 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 promptCause: 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 changesCause: 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.
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.
Official sources
11 official pages this guide is based on
Vendors change limits and features, so confirm details on the source before you rely on them. Last checked 4 Nov 2026.