BlogDynamics 365 On-Premises Email Sync Is on Borrowed Time — Here's the Graph API Path Forward
Abstract 3D illustration of cloud services and connected data
Integration
August 2, 2026 · Quegentic Team

Dynamics 365 On-Premises Email Sync Is on Borrowed Time — Here's the Graph API Path Forward

If you're running Dynamics 365 Customer Engagement (on-premises) with Exchange Online for email server-side synchronization, there's a hard deadline coming, and it's closer than most teams realize. This post breaks down exactly what's deprecated, what isn't, the dates that matter, and why building a custom Microsoft Graph API integration is the realistic path forward if you're staying on-premises.

First, let's clear up what's actually deprecated

There's a lot of loose talk about "server-side sync being deprecated." That's not quite right, and getting it right matters for planning.

✕ Deprecated

  • The Email Router — deprecated in 2018, stopped functioning entirely on April 12, 2021. If you're still on this, you're already unsupported.
  • The legacy Dynamics 365 for Outlook (Outlook COM add-in) — retired October 1, 2020, with removal completed by December 4, 2020.

✓ Not deprecated

  • Server-side synchronization itself — Microsoft still documents it as the preferred sync method for Dynamics 365 Customer Engagement (on-premises).

The real issue isn't server-side sync as a feature. It's the protocol underneath it when your on-premises Dynamics 365 talks to Exchange Online specifically.

The actual problem: EWS is being retired for Exchange Online

Dynamics 365 Customer Engagement (on-premises) connects to Exchange Online using Exchange Web Services (EWS). Microsoft is retiring EWS for Exchange Online — full stop, no exceptions, no successor built into the on-prem product.

Key facts

  • EWS deprecation was first announced in July 2018 (no further feature updates).
  • The October 2026 disablement date was set in 2023.
  • The January 2024 Midnight Blizzard nation-state security incident involved EWS and accelerated the urgency of the whole effort — Microsoft explicitly widened the scope from third-party apps to its own products.
  • Microsoft names Dynamics 365 directly as one of the Microsoft products it is actively removing EWS dependencies from, alongside Outlook, Office, and Teams.

Worth knowing

This only affects Exchange Online. If your Dynamics 365 on-premises deployment syncs against a fully on-premises Exchange Server, none of this timeline applies to you — EWS is not being removed from Exchange Server on-premises.

The dates that matter for on-prem + Exchange Online

Microsoft has a dedicated page for exactly this hybrid configuration, and it spells out the end-of-life on a specific timeline.

Oct 1, 2025 No new tenants can be connected to this on-prem-to-Exchange-Online hybrid sync at all.
May 25, 2026 End of support for Dynamics CRM Customer Engagement v8.0 (on-premises) with Exchange Online.
Oct 1, 2026 Microsoft's recommended deadline to migrate off this configuration, or apply the EWS tenant allow-list as a stopgap.
Apr 1, 2027 Full end of support for Dynamics CRM Customer Engagement v9.0 (on-premises) with Exchange Online. EWS access is permanently removed from Exchange Online with no re-enablement.

Two things worth sitting with

  1. If you're on v8.0, this deadline has already passed. You're currently running an unsupported email integration.
  2. Microsoft's own stated remediation on that page is not "here's the Graph-based replacement." It's "migrate to Dynamics 365 (online)" or "connect to an on-premises Exchange Server instead." There is no first-party Graph-based drop-in replacement for this specific connector. If you're staying on-prem CE and staying on Exchange Online, Microsoft is not building you a fix.

Why not just wait for Microsoft to add Graph support?

Because the parity gap between EWS and Microsoft Graph isn't fully closed yet — even Microsoft admits this on the EWS deprecation page, listing several feature areas (mailbox import/export, public folder handling, in-place archive, and others) still being worked on as of this writing. For a legacy on-premises product line, closing that gap for CE specifically is not a stated priority. Waiting is a bet against a roadmap Microsoft hasn't committed to.

If you need to keep on-prem Dynamics 365 talking to Exchange Online mailboxes past 2027, the practical options are:

01

Migrate to Dynamics 365 online

Microsoft's recommended path, and the one it's actively pushing you toward.

02

Move to on-premises Exchange Server

Sidesteps the EWS retirement entirely, since it doesn't apply to Exchange Server.

This post's focus
03

Build a custom Graph API integration

Replace the EWS-based sync yourself, if migrating off on-prem CE or off Exchange Online isn't feasible in your timeline.

This post focuses on option 3, since it's the one that requires the most planning and the one Microsoft provides the least direct guidance on.

The alternative: building email integration on Microsoft Graph API

Microsoft Graph is the REST/JSON API that has replaced EWS as the supported way to access Exchange Online mailbox data — messages, folders, attachments, and change notifications — all through modern OAuth 2.0 authentication instead of legacy protocols.

There's already a precedent for this inside the Dynamics 365 ecosystem: the Dynamics 365 App for Outlook (Mail App) uses Graph API for its own authentication and mail operations.

That precedent is useful, but it's scoped to the Outlook add-in experience — it is not a full replacement for server-side sync's job of pulling every mailbox's email into Dynamics 365 as tracked activity records. For that, you need to build the pipeline yourself.

What the architecture looks like

Sync pipeline

Exchange Online mailbox
Microsoft Graph API Webhook / change notification, or polling · OAuth 2.0 via Entra ID app registration
Middleware service Azure Function or custom service — the piece you build
Dynamics 365 on-premises Web API / SDK
Email activity records, mailbox/queue mapping

Because Dynamics 365 CE on-premises has no native Graph-based sync engine, you need a middleware layer sitting between Graph and your on-prem Dataverse instance. This is the core architectural difference from server-side sync: instead of Dynamics 365 talking directly to the mail server, you're building and maintaining the connective tissue yourself.

Step-by-step build

01

Register an application in Microsoft Entra ID

Go to the Entra ID admin center → App registrations → New registration. Decide between:

  • Application permissions (daemon/service account model — no signed-in user, requires admin consent, better fit for a background sync service covering many mailboxes).
  • Delegated permissions (tied to a signed-in user's consent — simpler for single-mailbox scenarios, not practical at scale).
Reference: Register an application with the Microsoft identity platform ↗
02

Grant the right Graph API permissions

For a full read/write mail sync, you'll need:

  • Mail.Read (or Mail.ReadWrite if you need to modify/move messages)
  • Mail.Send (for outbound email from Dynamics 365)
  • offline_access (for delegated flows needing refresh tokens)

Application permissions require admin consent — grant this deliberately and scope it to only the mailboxes you need via application access policies, rather than tenant-wide mail access.

03

Choose your authentication method

Certificate-based authentication is the safer long-term choice for a background service over client secrets, which expire and are easier to leak. Store the certificate securely (Azure Key Vault, or equivalent for on-prem).

04

Decide: polling vs. webhooks

  • Polling /me/messages or /users/{id}/messages on an interval is simpler to build but has higher latency and consumes more API calls (subject to Graph throttling).
  • Change notifications (webhooks) give near-real-time updates but require a publicly reachable HTTPS endpoint and a subscription renewal job, since Graph mail subscriptions expire (roughly every 3 days) and must be renewed proactively.
05

Build the middleware service

This is the piece that doesn't exist out of the box. An Azure Function or a Windows service that:

  • Authenticates to Graph and retrieves/receives mail data.
  • Authenticates to your on-premises Dynamics 365 instance (via its IFD/OAuth-secured Web API endpoint).
  • Creates or updates email activity records in Dataverse.
06

Map data fields

Translate Graph message properties — conversationId, internetMessageId, sender/recipient addresses, attachments — into Dynamics 365 email activity fields, and resolve addresses to the correct contact, lead, user, or queue records.

07

Handle outbound send

Trigger /me/sendMail or /users/{id}/sendMail from a Dynamics 365 plugin or workflow when a user sends email from within the CRM, and correlate the sent message back to the originating activity record.

08

Build in throttling, retry, and error handling

Graph enforces per-app and per-mailbox rate limits. Your service needs backoff logic and a dead-letter path for failed syncs, mirroring the alerting that server-side sync gives you natively today.

09

Replicate mailbox provisioning

Server-side sync's "Test & Enable Mailbox" step has no Graph equivalent out of the box — you'll need your own process (manual or scripted) to associate each Exchange mailbox with the correct Dynamics 365 user or queue record.

What you're actually signing up for

This is the part that's easy to underweight in a project plan: you are not swapping one connector for another. You're taking on ownership of authentication, token lifecycle, webhook reliability, throttling, retry logic, and every future breaking change Microsoft makes to Graph — permanently. Server-side sync gave you a supported, patched, Microsoft-monitored integration. A custom Graph build gives you full control, but every piece of that control is now your team's responsibility to build, test, and maintain.

That trade-off is worth making if you're locked into on-premises Dynamics 365 and can't migrate to Dynamics 365 online or on-prem Exchange Server before April 2027. It's not worth making just to avoid a migration project that Microsoft is already steering you toward.

Where to go next

1

If you're not sure which version you're running: check now. If it's v8.0, your support window for this configuration already closed on May 25, 2026.

2

If migration to Dynamics 365 online is feasible, Microsoft's guidance is the fastest and lowest-risk path: Dynamics CRM (on-premises) to Dynamics 365 migration ↗

3

If you're staying on-premises and need to keep Exchange Online in the picture past April 2027, start scoping the Graph API build now — this is a multi-month engineering effort, not a weekend project, and the clock is already running.

The bottom line

Server-side sync isn't dead — but its only supported path to Exchange Online, EWS, is being switched off permanently on April 1, 2027. If you're on v8.0, that clock already ran out. Everyone else has three real options: move to Dynamics 365 online, move to on-premises Exchange, or own a custom Microsoft Graph integration for good. There's no fourth option where you wait and Microsoft builds it for you.