EWS is turning off in October 2026 — what contact-sync admins need to do right now

Microsoft is retiring Exchange Web Services for Exchange Online on October 1, 2026. A practical migration checklist for IT admins still running EWS-based PowerShell contact-sync scripts.

Updated 2026-04-20 · 7 min read

Hard deadline: EWS stops accepting Exchange Online requests on October 1, 2026. Every EWS-based contact-sync script will fail on that date.

The timeline, exactly

  • July 2018 — Microsoft announces EWS will receive no new feature updates.
  • Sep 2022 — Basic Authentication for EWS turned off for Exchange Online.
  • Oct 2023 — Microsoft announces concrete retirement date.
  • Oct 1, 2026 — EWS returns HTTP 403 for all third-party apps against Exchange Online.

What breaks on day one

Any tool in your environment that calls https://outlook.office365.com/EWS/Exchange.asmx will fail. The common culprits for contact-sync admins:

  • Custom PowerShell scripts using Microsoft.Exchange.WebServices.dll.
  • Community scripts like EWSContactSync, CopyContactsOnly, and similar named variants.
  • Legacy versions of third-party contact-sync tools that haven’t migrated to Graph yet.
  • Any signature-management or out-of-office tool still on EWS application impersonation.

Step 1 — Audit what’s still using EWS

Microsoft provides an EWS usage report in the Microsoft 365 admin center under Reports → Usage → EWS usage. Pull the last 90 days and identify:

  1. Every service account that has logged EWS requests.
  2. The source IP(s) — helps you trace which on-prem box is running the script.
  3. The client AppID — tells you which tool is calling.

Step 2 — Pick the right Graph-based replacement

For contact sync specifically, you have three realistic options:

  1. Rewrite your script to use Microsoft Graph’s /users/{id}/contacts endpoint. Doable but time-consuming: you’ll need certificate auth, batching, throttling handling, delta queries, and a monitoring story.
  2. Move to a SaaS like CiraSync or sync.blue. Fast to deploy but your directory data leaves your tenant and pricing is roughly 17× on-prem alternatives.
  3. Install CYNC — a self-hosted Windows Service built on Graph from day one. The first 10 users are free. See the full comparison.

Step 3 — The migration checklist

Regardless of which replacement you pick, the move looks the same:

  1. Create a new Entra ID App Registration with certificate auth and grant application permissions (for CYNC: User.Read.All, Group.Read.All, Contacts.ReadWrite).
  2. Run the new sync tool alongside the old script for at least one full sync cycle to verify parity.
  3. Clean up the stale contact folders created by the old EWS script — they live in a non-standard location under MsgFolderRoot that Graph can’t see. The EWS migration doc includes a cleanup script.
  4. Disable the old scheduled task, remove EWS permissions from the old service account, and revoke any remaining client secrets.
  5. Watch one full week of sync runs in the new tool before decommissioning the old box.

Why most admins pick CYNC for this migration

  • Microsoft Graph API only — no EWS, no surprises in 2026.
  • WinUI 3 dashboard — visibility the PowerShell script never gave you.
  • Delta sync + JSON batching — architected to stay well under Graph throttling ceilings at any tenant size.
  • Windows Server Core support for headless deployment via RMM tooling.
  • Free for up to 10 users, €0.18–€0.29/user/month above that.

Migrate off EWS before October 2026

One MSI. Microsoft Graph from day one. Delta sync, dashboard, silent install. Free for up to 10 users.