Creating Admin Account Access: Importing Emails from Another Company in Microsoft 365

Abstract: Import PST files from Azure Blob Storage into Microsoft 365 mailboxes using an admin account and PowerShell.

Created: 2026-08-06 by
To import emails from another company into Microsoft 365, you must first create a dedicated admin account with the appropriate Exchange Online roles. This account serves as the secure bridge for data ingestion. The most reliable method involves uploading PST files to Azure Blob Storage and using PowerShell to run New-MailboxImportRequest. This approach ensures high-volume transfers without throttling your local network or requiring direct access to the source mailboxes.

Prerequisites and Admin Account Creation

Before importing any data, you need an identity with sufficient permissions. Standard user accounts cannot execute mailbox import requests. You must assign the Exchange Recipient Administrator or Organization Management role to a specific service account. This is typically done via the Microsoft 365 Admin Center under Users > Active Users. Select the admin user, go to Roles, and add the necessary Exchange role. Once the role is assigned, you must connect to Exchange Online. Open Windows PowerShell as an administrator and install the module if it is not already present. Run the following command to establish a secure session:
$UserCredential = Get-Credential
Connect-ExchangeOnline -UserPrincipalName $UserCredential.UserName
This step confirms that your admin account has the authority to manage mailbox imports. Without this connection, any attempt to run import commands will fail with permission errors. It is crucial to use a dedicated admin account rather than a global admin for routine operations to maintain security best practices. For more information on managing app passwords in different environments, see Unable to Find 'App Passwords' Option in Microsoft 365 Email on GoDaddy.

Preparing PST Files and Azure Blob Storage

The source company must provide their email data in Personal Storage Table (PST) format. These files can be exported using Outlook desktop clients or third-party migration tools. Once you have the PST files, they must be uploaded to an Azure Blob Storage container. This is because the Exchange Online import service reads directly from Azure storage, not from local drives or generic cloud links. Create a new storage account in the Azure Portal. Inside this account, create a blob container named something distinct like pst-imports. Upload all PST files to this container. After uploading, you must generate a Shared Access Signature (SAS) token for each PST file. This token acts as a temporary password allowing the Exchange service to read the file. To generate the SAS token, right-click the file in the Azure Portal and select "Generate SAS". Set the start time to now and the expiry time to at least 24 hours in the future. Copy the full URL which includes the query parameters for the SAS token. Do not share these URLs publicly, as they grant read access to the data.

Configuring Import Requests via PowerShell

With the admin connected and the PSTs in Azure, you can now initiate the import process. The core command is New-MailboxImportRequest. However, this command does not accept remote hostnames or generic passwords for Blob Storage. It requires the specific -SourceFilePath parameter pointing to the Azure URL. For each user who needs data imported, run a separate request. Replace the placeholder values with your actual tenant details and the SAS URL generated earlier.
New-MailboxImportRequest `
    -Mailbox "[email protected]" `
    -SourceFilePath "https://yourstorageaccount.blob.core.windows.net/pst-imports/source.pst?sv=2020-08-04&sig=YOUR_SAS_TOKEN" `
    -TargetRootFolder "Inbox"
The -TargetRootFolder parameter specifies where the emails should land. Using "Inbox" places them in the main folder, but you can specify custom folders if needed. If the target folder does not exist, Exchange will create it automatically. Ensure that the SourceFilePath is enclosed in quotes and contains the complete SAS URL including the question mark and parameters.

Monitoring and Troubleshooting Imports

After submitting the request, it enters a queue. Large PST files can take several hours or even days to process depending on size and network throughput. Monitor the progress by running:
Get-MailboxImportRequest | Get-MailboxImportRequestStatistics
Look for the Status field. Common statuses include InProgress, Completed, Failed, or Queued. If the status is Failed, check the FailureDescription field for error codes. A common error is 403 Forbidden, which indicates the SAS token has expired or lacks read permissions. Another common issue is exceeding the maximum batch size; ensure your PST files are under 50GB each, though smaller files (under 2GB) are recommended for stability. If you encounter issues with rule configurations during the import, note that custom rules do not always migrate perfectly. See Configuring Customized Rule Mail Folder in Outlook for Microsoft 365 (MSO) Version 2402, Build 16.0.17328.20282, 64-bit for details on managing post-import folder structures.

Cleaning Up and Final Verification

Once all requests show a status of Completed, verify the data in the target mailboxes. Log in to Outlook Web App (OWA) and check the Inbox for the migrated messages. If everything looks correct, remove the import requests to free up system resources.
Remove-MailboxImportRequest -Identity "RequestID"
You can find the Request ID in the statistics output from the previous step. Deleting completed requests prevents clutter in your admin view. Finally, revoke the SAS tokens in Azure Blob Storage after a few days to ensure no lingering access exists. This completes the secure transfer of emails from the external company into your Microsoft 365 environment.

Frequently Asked Questions

Can I import PST files directly from my local computer?

No, the Exchange Online import service cannot read files from local machines due to security and connectivity restrictions. You must upload the PSTs to Azure Blob Storage first. This ensures a stable, high-bandwidth connection between Microsoft's servers and the data source.

What happens if the SAS token expires during the import?

If the token expires while the request is InProgress, the job will fail with a permission error. To resolve this, generate a new SAS token with a longer expiry date and update the SourceFilePath in a new import request. You cannot simply extend an existing token; a new request is required.

How long does a typical PST import take?

Processing time varies based on file size and current server load. A 5GB PST might take 2-4 hours, while larger files can take significantly longer. There is no fixed speed limit, but Microsoft throttles concurrent imports per mailbox to protect system performance.

Do email rules and categories migrate with the PST?

PST imports generally move only message content, attachments, and basic metadata. Custom rules, categories, and flags may not transfer accurately. You may need to reconfigure rules manually after the import completes.

Is there a limit to how many PST files I can import at once?

There is no hard limit on the number of requests, but each mailbox can only have one active import request at a time. You can run multiple requests for different users simultaneously. However, excessive concurrent requests may impact overall tenant performance.

Latest News

How to Display Output of xterm Command in Terminal Screen using Cron

Resolve the inability to display xterm output in a terminal screen from cron by redirecting logs or using wall instead of insecure X11 workarounds.

Read More
Expose Local Server on VPS Preserving Real Client IPs (OS Level)

Resolve VPS logging showing only gateway IPs by configuring reverse proxies to forward real client addresses via X-Forwarded-For headers.

Read More
How to Clear Recent Files History in Linux without Deleting Actual Files?

Clear recent files history in Linux by deleting ~/.local/share/recently-used.xbel without removing the actual files.

Read More
Best HDD Copy Strategy: Manually Syncing and Rewriting Scratch

Resolve data drift between two 4TB hard drives by using rsync with the --delete flag to manually sync and rewrite scratch data for an exact mirror.

Read More
Understanding Bash Prompt Abbreviations: An Overview

Resolve repetitive typing errors by creating and persisting Bash aliases in the .bashrc file for improved command-line efficiency.

Read More
Free Tools and Methods to Log Real-Time Performance Details in Task Manager

Log real-time CPU and memory metrics to CSV files using Windows Performance Monitor Data Collector Sets to troubleshoot system slowness.

Read More
Contact Qatar Airways Customer Service: Phone Number, Help Center, and More

Resolve urgent Qatar Airways reservation issues like flight changes and baggage claims using the US phone number +1801-855-5905 or online self-service tools.

Read More
Windows 11: Alt Codes Displaying Wrong Characters - Solutions

Resolve Windows 11 Alt codes showing wrong characters by verifying the US keyboard layout and enabling Num Lock.

Read More
Run Programs with Elevated Privileges: A Comprehensive Guide

Eliminates the need to type sudo for frequent administrative tasks by configuring .bashrc aliases or functions.

Read More
Dynamically Changing Dates in Excel Formulas Using Cells

Eliminate manual date updates in Excel by using cell references to create dynamic formulas that automatically adjust calculations when input dates change.

Read More
Granting Edit Access to a Specific Excel Sheet in an Office 365 User Email ID-Based Login

Excel Online lacks native sheet-level permissions, so users must split workbooks or use worksheet protection to isolate edit access for specific tabs.

Read More
Creating Network Load on Local Wi-Fi from One PC

Generate sustained Wi-Fi bandwidth load from a single PC using a VM SFTP server to test router stability and throughput.

Read More
Changing the Default Editor for Batch Files in Windows 11's File Explorer

Resolve the issue of batch files opening in Notepad by changing the default editor to a preferred application like VS Code.

Read More
Gain WiFi Connection Minutes Before Losing it by Changing MAC Address

Bypass MAC address filtering to restore WiFi connectivity temporarily when a device is blocked by network administrators.

Read More
Photos Folders Turned Black: Troubleshooting Picture Applications on Windows

Resolve black screens in Windows Photos by resetting the app, updating graphics drivers, and repairing system files.

Read More
Troubleshooting High CPU Temperature Values: A Step-by-Step Guide

Resolve high CPU temperatures and thermal throttling by monitoring with Speedfan, cleaning dust from cooling components, and replacing degraded thermal paste.

Read More
Make cURL establish TLS connection with CA unknown

Resolve cURL TLS connection failures with unknown or self-signed certificates by using the --insecure flag to bypass CA validation.

Read More
Troubleshooting Incorrect Network Metrics Values in Grafana, Prometheus, InfluxDB, and Telegraf

Fix incorrect network metrics in Grafana, Prometheus, InfluxDB, and Telegraf by verifying interface selection, resolving unit mismatches, and handling counter resets.

Read More
Start Another Terminal Window (cmd.exe) Windows Repair/Troubleshoot

Provides step-by-step instructions to access the Windows Command Prompt via bootable media for advanced system repair and troubleshooting.

Read More
Thinkpad P1 Gen 6: Sudden Thunderbolt 3 Dock USB-C Charging Stopped Working

Resolve sudden Thunderbolt 3 dock USB-C charging and internet failure on ThinkPad P1 Gen 6 by updating firmware, resetting the dock, and adjusting power settings.

Read More
ASUS Windows 11 Laptop: Internet Connection Issue with Hotspot

Resolve ASUS Windows 11 laptop spinning wheel issue when connecting to mobile hotspot by resetting network stack, disabling IPv6, and adjusting power settings.

Read More
Developing iOS Project with Firebase: Logging in and Sending Push Notifications

Integrates Firebase to enable secure user authentication and push notifications in iOS applications.

Read More
Troubleshooting Bash Script with Suspected Issues of Spaces, Dashes, Filenames and Quoting

Resolve Bash script failures caused by word splitting, globbing, and special characters in filenames by applying proper quoting techniques.

Read More
Populating OneDrive Folder for Local Backup without Affecting Remote Files

Prevent OneDrive from deleting remote files during Windows reinstallation by unlinking the account or using symbolic links to isolate local data.

Read More
Force First Frame as Keyframe Without Re-encoding: A Quick Solution

Resolve inaccurate seeking and playback glitches by re-encoding video to ensure the first frame is a valid keyframe.

Read More
Find Information in Database Using WSL (Ubuntu) on Windows-10

Resolve database connection issues from WSL Ubuntu on Windows 10 by configuring client tools and network access to query remote or local servers.

Read More
Configuring a New Router with Different Networks: One Family, One Guest

Resolve IP conflicts and isolate guest traffic by configuring a second router with a distinct subnet via its WAN port.

Read More
Quickly Open Multiple Stock Websites with a Single Command

Solve the problem of manually opening multiple stock research websites by creating a single command to launch them simultaneously on Windows, macOS, or Linux.

Read More
Improved Adobe Acrobat Search Experience: Access Advanced Search with Ease

Access advanced search filters like case sensitivity and regex in Adobe Acrobat by clicking More Options in the Find bar.

Read More
Port Forwarding VM via OpenVPN: A Comprehensive Guide

Configure OpenVPN server and iptables to forward specific ports from VPN clients to a virtual machine's internal IP address.

Read More
Understanding Partitions in the 1980s: A Look Back at MS-DOS and Master Boot Record

Explains how the Master Boot Record and partition table enabled MS-DOS to manage multiple disk volumes on a single physical drive.

Read More
Windows 10 Enterprise: Keyboard Not Detected in Managed Organization with Admin Privileges

Resolve Windows 10 Enterprise keyboard detection failures caused by Group Policy restrictions, driver corruption, or USB enumeration errors.

Read More
Can't Find x86_64 Versions of Applications on MacOS arm64 (M1)

Resolve missing x86_64 app issues on M1 Macs by installing Rosetta 2 and reinstalling apps as universal binaries.

Read More
How to Hide Installation Source for an Android App

Manage Android app installation source visibility by using USB transfers or file managers to reduce browser traces and isolate data via work profiles.

Read More
Connecting Momentus 4200.2 ST9808210A Hard Drive via USB Cable

Resolve inability to access Seagate Momentus 4200.2 ST9808210A hard drive by connecting it via USB using a compatible SATA-to-USB adapter and configuring the disk in Windows.

Read More