Microsoft 365's PST import service lets administrators move PST archive files directly into Exchange Online mailboxes through the Microsoft Purview portal. The network upload method uses AzCopy to transfer PST files to a temporary Azure Storage location, then Microsoft's import engines process the data into the target mailboxes.
This approach is faster and more reliable than having individual users import PST files through Outlook. It supports both primary and archive mailboxes, handles multiple PST files per job, and preserves the original folder structure. You can also filter by date range to import only recent data.
The process requires two Exchange Online roles (Mailbox Import Export and Mail Recipients), the AzCopy tool for uploading, and a CSV mapping file that tells the import service which PST file goes into which mailbox. This tutorial covers every step, from role assignment through verification of imported data.
Before you start
What you will learn
- You'll learn how to bulk-import PST files into Exchange Online mailboxes using the network upload method through Microsoft Purview, including role assignment, AzCopy upload, CSV mapping file creation, and import job monitoring.
- Organizations migrating to Microsoft 365 often have years of email data in PST files. The Purview import service provides a centralized, secure way to move this data into Exchange Online without individual users importing files through Outlook.
Requirements
- Access to the Microsoft Purview portal and Exchange Admin Center. You need the Mailbox Import Export and Mail Recipients roles assigned in Exchange Online.
- AzCopy v10 installed on a Windows machine. PST files from Outlook 2007 or later. Target mailboxes must exist in Exchange Online.
- Mailbox Import Export (Exchange Online)
- Mail Recipients (Exchange Online)
Good to know
- Setup takes about 30 minutes. Upload time depends on PST size and bandwidth. Microsoft's import processing can take 24 to 48 hours for large datasets.
- Steps verified against current Microsoft Learn documentation for PST import via network upload, updated June 2026.
Quick answer
Assign the Mailbox Import Export and Mail Recipients roles in Exchange Online. In the Microsoft Purview portal, create an import job and copy the SAS URL. Use AzCopy to upload your PST files to Azure Storage. Create a CSV mapping file with the required columns (Workload, FilePath, Name, Mailbox, IsArchive, TargetRootFolder). Upload the CSV, validate, and submit the import job. Microsoft processes the import within 24 to 48 hours.
Microsoft Purview portal > Data lifecycle management > Microsoft 365 > Importazcopy copy "C:\PST_Files" "<SAS_URL>" --recursiveStep-by-step tutorial
7 stepsAssign the Mailbox Import Export and Mail Recipients roles
Grant your admin account the required permissions to create import jobs.
Exchange Admin Center > Roles > Admin roles > Organization ManagementOpen the Exchange Admin Center. Click Roles > Admin roles. Find and click Organization Management. Click the Permissions tab, then add the Mailbox Import Export role. Save the changes.
Per Microsoft Learn, you also need the Mail Recipients role, which is already assigned to Organization Management by default. If using a custom role group, add both roles. Sign out and back into Microsoft 365 to see the Import option in Purview.
New-ManagementRoleAssignment -Role "Mailbox Import Export" -SecurityGroup "Organization Management"Per Microsoft Learn, consider creating a dedicated role group for PST imports rather than adding the role to Organization Management. This limits who can create import jobs.
Create a new import job in Microsoft Purview
Set up the import job and obtain the Azure Storage SAS URL for uploading.
Purview portal > Data lifecycle management > Microsoft 365 > ImportIn the Microsoft Purview portal, go to Data lifecycle management > Microsoft 365 > Import. Click Import PST files, then New import job. Enter a descriptive name and click Next.
Select Upload your data and click Next. Click Show network upload SAS URL. Copy this URL to a secure text file. Keep this browser tab open for later steps.
The SAS URL expires after a set period. Generate a new one from the same page if it expires. Network upload is free per Microsoft Learn.
Upload PST files using AzCopy
Transfer PST files to Azure Storage using AzCopy and the SAS URL.
Download AzCopy v10 from Microsoft or use the link on the Purview import page. Extract it to a folder like C:\AzCopy. Gather all PST files into a single folder (e.g. C:\PST_Files). Keep individual files under 20 GB for best performance.
Open Command Prompt as administrator and run: azcopy copy "C:\PST_Files" "<YOUR_SAS_URL>" --recursive. The --recursive flag preserves subfolder structure. AzCopy displays real-time progress and transfer statistics.
azcopy copy "C:\PST_Files" "<YOUR_SAS_URL>" --recursiveIf uploads fail, check the log files in your user profile's .azcopy folder. Common causes: expired SAS URL, network interruptions, or firewall blocking Azure Storage endpoints. Don't delete local PST files until the import completes.
Create the PST import CSV mapping file
Build the CSV file that maps each PST file to its target Exchange Online mailbox.
Create a CSV with all 10 required columns per Microsoft Learn: Workload, FilePath, Name, Mailbox, IsArchive, TargetRootFolder, ContentCodePage, SPFileContainer, SPManifestContainer, SPSiteUrl. Set Workload to Exchange and leave SP columns empty.
The Name column is case-sensitive and must match the actual PST filename. Set IsArchive to TRUE for archive mailbox imports (user must have archive enabled). Set TargetRootFolder to / to merge into existing folders, leave blank for a new Imported folder, or specify a custom folder name.
Enable archive mailboxes before import with: Enable-Mailbox -Identity "user@company.com" -Archive. Items larger than 150 MB within a PST are skipped. PST files with 300+ levels of nested folders can't be imported.
Upload the mapping file and validate
Upload the CSV mapping file and verify all entries are valid before submitting.
Purview portal > Import job > Mapping file uploadReturn to the Purview import job. Confirm your files are uploaded, then click Next. Select your CSV mapping file and upload it. The system validates automatically, showing green checkmarks for valid entries and red errors for problems.
Fix any errors (invalid mailboxes, incorrect formatting, missing columns, disabled archive mailboxes) and re-upload until validation passes with zero errors.
Test with a pilot of 2 to 3 mailboxes first before running the full migration.
Submit the import job and start processing
Submit the job for analysis and then start the import into Exchange Online.
Purview portal > Import jobs > [your job] > Import to Office 365Review the job summary and click Submit. The status changes to Analysis in progress. This phase takes several hours. Refresh the Import page to check status.
Once analysis completes, select the job and click Import to Office 365. Choose Import everything or filter by date. Click Submit to start the import. Processing typically takes 24 to 48 hours for large datasets.
Don't delete local PST files until the import shows Completed and you've verified the data. The Intelligent Import feature lets you filter items by date before importing.
Verify import completion and data integrity
Confirm all PST data was imported into the target mailboxes.
Purview portal > Import jobs > [your job] > Download reportCheck the import job status in Purview. Completed status means the import finished. Download the completion report for item-level details including skipped items.
Verify data in target mailboxes: log into OWA as the user and check emails, calendar items, and contacts. For archive imports, open the archive mailbox. Test search to confirm imported items are indexed. Review the completion report for any items skipped due to the 150 MB limit or corruption.
After verifying, configure retention policies for imported data if needed. Once confirmed, you can safely delete local PST files.
How to Confirm Your PST Import Was Successful
A successful import shows Completed status in Purview. The completion report provides item-level detail including imported and skipped counts.
Users can access imported data through Outlook or OWA immediately after completion. If TargetRootFolder was set to /, items merge into existing folders. If left blank, items appear in a new Imported folder at root level.
For archive imports, data appears in the online archive accessible through Outlook or OWA. Search indexing may take a few hours to complete.
Skipped items are reported individually. The most common reason is items exceeding the 150 MB Exchange Online message size limit.
- Import shows Completed. Users access imported data in Outlook/OWA. Search works on imported content.
- Import shows errors or items skipped. Check the completion report for item-level failures: 150 MB limit, corrupted entries, or non-existent mailboxes.
- All items imported into target mailboxes.
- Items exceeding 150 MB or with corruption were skipped.
- Check mapping file, PST upload, and target mailboxes.
Troubleshooting
Import option not visible in Purview portal
Cause: Mailbox Import Export role hasn't propagated or wasn't assigned correctly.
Wait up to 24 hours after assigning the role. Sign out and back in. Verify the role assignment in Exchange Admin Center under Roles > Admin roles. You also need the Mail Recipients role.
AzCopy upload fails or times out
Cause: SAS URL expired, network interrupted, or firewall blocks Azure Storage.
Generate a new SAS URL from the import job page if expired. Check your firewall allows HTTPS to *.blob.core.windows.net. For unstable connections, upload in smaller batches.
CSV mapping validation fails with mailbox errors
Cause: Email addresses don't match existing mailboxes, or archive mailboxes aren't enabled.
Verify all email addresses match existing Exchange Online mailboxes. For archive imports, enable the archive first: Enable-Mailbox -Identity "user@company.com" -Archive. Ensure the CSV has all 10 required columns in the correct order.
Import job stuck at Analysis in progress
Cause: Large data volume or Microsoft-side service delays.
Wait up to 48 hours for very large datasets. If the status doesn't change after 48 hours, contact Microsoft support. Don't create a duplicate job.
Some items missing after import completes
Cause: Individual items exceeding 150 MB are skipped per Exchange Online limits. Corrupted PST entries are also skipped.
Download the completion report and review skipped items. For oversized items, reduce their size or use an alternative method. For corrupted entries, repair the PST with scanpst.exe and re-import.
Frequently asked questions
How long does PST import into Exchange Online take?
Upload time depends on PST size and bandwidth. Microsoft's processing typically takes 24 to 48 hours for large datasets. Smaller imports under 10 GB often complete within a few hours. The analysis phase alone can take several hours.
What is the maximum PST file size for import?
Per Microsoft Learn, PST files should ideally be no larger than 20 GB for performance. Individual items within a PST exceeding 150 MB are skipped due to Exchange Online's message size limit. Files with 300+ nested folder levels can't be imported.
Can I import PST files into archive mailboxes?
Yes. Set IsArchive to TRUE in the CSV mapping file. The user must have an online archive enabled first. You can also import to inactive mailboxes and to cloud-based archive mailboxes for on-premises users in hybrid deployments.
What columns are required in the PST import CSV?
The CSV must have 10 columns: Workload, FilePath, Name, Mailbox, IsArchive, TargetRootFolder, ContentCodePage, SPFileContainer, SPManifestContainer, SPSiteUrl. Set Workload to Exchange and leave SP columns empty. The Name column is case-sensitive.
What permissions do I need for PST import?
You need two Exchange Online roles: Mailbox Import Export (not assigned to any group by default, must be added explicitly) and Mail Recipients (assigned to Organization Management by default). Permission changes can take up to 24 hours.






