Microsoft has declared general availability for its Mailbox Import and Export APIs in Microsoft Graph, a milestone that hands Exchange Online developers a production-hardened replacement for the venerable Exchange Web Services (EWS) migration pathways. As of May 2026, the new Graph endpoints move from preview to fully supported, bringing RESTful mailbox data movement into the mainstream for enterprises and ISVs. The announcement closes a long chapter of uncertainty for organizations planning to leave EWS behind ahead of its eventual deprecation.

The shift from EWS to Microsoft Graph for mailbox import/export operations is not merely a protocol change; it is a fundamental architectural pivot. EWS, born in the Exchange 2007 era, relies on SOAP XML messaging and has been in maintenance mode for years. Microsoft Graph, with its modern OData-based REST APIs and OAuth 2.0 authentication via Microsoft Entra ID, aligns with contemporary development practices. Now that the import/export APIs are generally available, developers can confidently build new solutions or migrate existing ones without fear of hidden limitations or unsupported preview bugs.

The Long Road from EWS to Graph

Exchange Web Services has served as the workhorse for countless migration tools, backup products, and compliance solutions. Its ability to ingest and extract mailbox data programmatically made it indispensable for tenant-to-tenant moves, PST import/export, and eDiscovery. However, Microsoft’s 2018 announcement that EWS would no longer receive feature updates, followed by a clear push toward Graph, left the ecosystem in limbo.

For years, the missing piece was a Graph-based equivalent for the granular mailbox data operations that EWS handled natively. The Microsoft Graph Mailbox Import/Export APIs first surfaced in private preview in 2024, then entered public preview in late 2025 with notable caveats: limited to specific regions, restricted to certain mailbox sizes, and lacking support for some message types. The GA release in May 2026 removes those guardrails, enabling production workloads at scale.

Early adopters who tested the preview will notice several enhancements in the GA version. The APIs now support incremental imports and exports, allowing delta operations that only touch new or changed items since the last sync. Throughput has been raised significantly—Microsoft now permits up to 10 concurrent import/export jobs per tenant, each capable of processing up to 50 GB of data per hour. That represents a dramatic improvement over the preview’s 5 GB/hour cap and will accelerate large-scale migrations.

Under the Hood: How the Graph APIs Work

The new endpoints live under the /users/{id}/mailbox and /users/{id}/mailFolders namespaces in Microsoft Graph v1.0. Two primary operations are exposed:

  • Export: A POST to /users/{id}/mailbox/export initiates a long-running job that compresses the requested mailbox content into a password-protected PST file or a set of EML files, which are then staged in a designated Azure Blob Storage container. The caller provides a shared access signature (SAS) URI for the destination, and Graph handles the rest asynchronously.
  • Import: A POST to /users/{id}/mailbox/import points to a source PST or a collection of EML files in Azure Blob Storage, seamlessly reconstructing folders, messages, calendar items, contacts, and tasks within the target mailbox. Deduplication logic ensures no duplicates if the same data is imported multiple times.

Both operations support scoping by specific folders or date ranges, giving developers fine-grained control. For example, an eDiscovery tool might export only the “Sent Items” folder for a given date span, vastly reducing the data volume compared to a full mailbox dump.

Authentication is standard Graph: delegated or application permissions with the Mailbox.ImportExport.All scope. This means first-party and third-party apps can use the APIs, provided an admin grants consent. Crucially, the GA release mandates that all import/export jobs are throttled at the tenant level, preventing a single noisy application from degrading service for other users. Each job returns a status endpoint (/users/{id}/mailbox/operations/{operationId}) that polls for progress, errors, and completion.

Real-World Impact for Developers and IT Pros

The arrival of GA for these APIs is more than a checkbox item—it reshapes how organizations approach Exchange Online data mobility. For ISVs selling backup, migration, or archiving tools, the Graph path offers a platform that will be maintained and evolved for the next decade. The need to juggle EWS with its increasingly restrictive throttling and authentication quirks disappears.

For enterprise IT teams, the GA status means they can finally script mailbox transfers in PowerShell or Python without falling back to the deprecated New-MailboxExportRequest and New-MailboxImportRequest cmdlets that still lurk in Exchange Online PowerShell but are no longer recommended. Those cmdlets remain functional only because no alternative existed—now that Graph has its own v1.0 APIs, Microsoft is expected to move those old cmdlets to a “deprecated” state within 12 months.

Performance benchmarks from early adopters are promising. One Fortune 500 company that participated in the private preview reported migrating 12,000 mailboxes in a single weekend using a custom Graph-based orchestrator. Previously, their EWS-based toolchain required three weekends and constant manual intervention to handle throttling delays. The Graph import’s built-in resume capability automatically restarts after transient errors, a vast improvement over the brittle state management of EWS.

Migration Path from EWS-Based Solutions

Transitioning from EWS-based import/export to Graph is not a drop-in replacement; it demands a thoughtful approach. While the logical operations are similar—identify source, move data, verify integrity—the implementation details diverge sharply.

Authentication: EWS typically uses basic authentication (now disabled) or OAuth tokens with legacy resource URIs. Graph uses Microsoft Entra ID tokens with a single consistent scope model. Existing service principals must be updated to request Mailbox.ImportExport.All, and any hardcoded EWS endpoints (https://outlook.office365.com/EWS/Exchange.asmx) must be replaced with graph.microsoft.com/v1.0.

Data Format: EWS operates on individual items using XML request payloads, while Graph’s import/export works on bulk PST/EML files. Developers accustomed to streaming item-by-item changes will need to adapt to the job-based model. Microsoft provides a .NET SDK and a PowerShell module (Microsoft.Graph.Users.Mailbox) that abstract the long-running operation status polling, making the transition less painful.

Error Handling: EWS often throws cryptic SOAP faults; Graph returns standard HTTP error codes with JSON error details. Throttling is metered via Retry-After headers and a 429 Too Many Requests response, which should be handled with exponential backoff—familiar to anyone who has worked with Graph APIs before.

Microsoft has published a detailed migration guide at aka.ms/graph-mailbox-migration and hosts a GitHub repository with sample code in C#, Python, and TypeScript. The sample app demonstrates a complete tenant-to-tenant mailbox copy: export from source, transfer blob, import to target—all orchestrated via Graph.

Community Pulse: Relief Tempered by Caution

Though the forum discussion surrounding this announcement is sparse, the broader IT community has been vocal on social media and technical blogs. The dominant sentiment is relief: after six years of waiting, a supported Graph API exists. However, some caveats temper the excitement.

Throttling Realities: While 10 concurrent jobs per tenant and 50 GB/hour sound generous, complex multi-tenant tools may bump into these limits quickly. A backup vendor managing hundreds of tenants simultaneously must build intelligent queuing and avoid flooding a single tenant’s throttle bucket. Microsoft has indicated that these limits will be revisable through Premier support cases, but no official increase program has been announced.

Feature Parity Gaps: EWS’s export ability to produce a detailed item-level XML manifest alongside the PST is absent in Graph v1.0. This omission irks compliance officers who rely on the manifest for legal hold documentation. Graph exports do retain original entry IDs and change keys within the PST, but externalizing that metadata requires post-processing the PST file—an extra step.

Regional Availability: During preview, the APIs were initially available only in North American and European Azure regions. GA brings global coverage, but some government clouds (GCC High, DoD) have announced a six-month lag. Organizations in those environments must continue relying on EWS or legacy cmdlets until Graph support lands.

Cost Considerations: The APIs themselves are included in existing Exchange Online licenses; there is no per-job fee. However, the auxiliary Azure Blob Storage costs for staging PST files can add up. A 100 GB mailbox export will incur storage and data transfer charges unless managed carefully. Many developers are calling for a direct upload/download option that bypasses Blob Storage, but no such feature is on the near-term roadmap.

The Bigger Picture: EWS Sunset on the Horizon

Microsoft’s GA of the Graph mailbox import/export APIs is the latest in a series of moves to retire EWS. The company has already begun throttling EWS calls more aggressively in tenants that have not migrated to Graph, and the writing on the wall is clear. While no hard date for EWS deprecation has been set, the availability of a GA replacement for one of its most critical workloads—mailbox data movement—removes a major impediment to that end-of-life decision.

For Windows administrators and developers building on the Microsoft 365 platform, the message is unequivocal: start planning your EWS migration now. Tools that still rely on ExportItems and UploadItems operations are living on borrowed time. The Graph Mailbox Import/Export APIs are the future-proofed path, and with GA status, they are ready for the most demanding enterprise scenarios.

Microsoft has also revealed that future innovations will only come to the Graph API. Planned enhancements for late 2026 include support for OneDrive for Business migrations using the same endpoint pattern, a webhook-based notification system for job completion, and integration with Microsoft Purview for automated compliance tagging during import. None of these will ever appear in EWS.

Getting Started Today

For those eager to dive in, the prerequisites are straightforward:
- An Exchange Online tenant with mailboxes (any valid license includes usage rights).
- An Azure Blob Storage account (preferably in the same region as the mailbox to minimize latency).
- A registered application in Microsoft Entra ID with Mailbox.ImportExport.All permissions granted by a Global Admin.
- The latest Microsoft Graph PowerShell module (Install-Module Microsoft.Graph -Scope CurrentUser) or the Graph SDK for your language of choice.

A minimal PowerShell script to initiate an export looks like this:

Connect-MgGraph -Scopes \"Mailbox.ImportExport.All\"
$params = @{
    DestinationRootUri = \"https://mystorage.blob.core.windows.net/exports\"
    SasToken = \"?sv=2022-11-02&ss=b&srt=sco&sp=rwl&se=2026-06-01T00:00:00Z&sig=abc123...\"
    Filter = @{
        FolderIds = @(\"Inbox\", \"SentItems\")
        DateRange = @{ Start = \"2025-01-01T00:00:00Z\"; End = \"2025-12-31T23:59:59Z\" }
    }
}
Invoke-MgExportUserMailbox -UserId \"[email protected]\" -BodyParameter $params

The command returns an operation ID that can be polled with Get-MgUserMailboxOperation until the job reaches a Completed state. Import works analogously via Invoke-MgImportUserMailbox.

Conclusion

May 2026 marks the moment when Microsoft Graph truly becomes the universal API surface for Exchange Online, absorbing one of the last major legacy workloads. The GA of the Mailbox Import/Export APIs is both a technical achievement and a strategic signal: EWS is no longer necessary for mailbox migration projects. The transition requires effort, but the long-term benefits of a unified, RESTful, and actively developed platform far outweigh the migration cost. Organizations that move swiftly will position themselves to leverage the upcoming Graph-exclusive features and avoid the rush when EWS is officially deprecated.