๐Ÿ“ง Recipe ยท Exchange & Email

Check Exchange Online Service Health via Microsoft Graph

Query Microsoft 365 service health to verify Exchange Online is operational and surface any active incidents or advisories

Complexity

Beginner

Impact

monitoring + incident-response + triage + exchange-online + read-only

Context

Why This Matters

Why check Exchange Online service health?

When users report email delays, delivery failures, Outlook connectivity issues, or mailbox access problems, the first triage step is determining whether the root cause is a Microsoft-side service incident or something specific to your tenant. Microsoft 365 exposes real-time service health data through the serviceAnnouncement endpoint in Microsoft Graph, allowing administrators to quickly confirm whether Exchange Online is operating normally.

When to run this recipe

  • During active user-reported email incidents, before deeper mailbox-level troubleshooting.
  • As part of a scheduled daily or hourly health check for NOC dashboards.
  • Before announcing a tenant-side incident to end users โ€” rule out a Microsoft-side outage first.
  • When reviewing post-incident timelines and correlating user impact to Microsoft advisories.

The health status returned reflects Microsoft's view of the service for your tenant. Possible values include serviceOperational, investigating, serviceDegradation, serviceInterruption, restoringService, extendedRecovery, serviceRestored, and falsePositive.

Expected Outcomes

What you will have after running this recipe

  • A current health status value for Exchange Online (e.g., serviceOperational).
  • Awareness of any active incidents, advisories, or issues impacting the service.
  • A scriptable baseline you can schedule or integrate into monitoring pipelines (PagerDuty, Teams webhooks, ITSM tooling).
  • Evidence to either escalate to Microsoft or pivot to tenant-level troubleshooting.

Risks & Considerations

Warnings and gotchas

  • Health is tenant-scoped but not user-scoped. A serviceOperational status does not guarantee every user is unaffected โ€” individual mailbox, transport rule, or licensing issues can still cause symptoms.
  • Do not rely solely on health overviews for SLAs. The healthOverviews endpoint is a rollup. For detailed incident data, query /admin/serviceAnnouncement/issues and /admin/serviceAnnouncement/messages.
  • Permissions matter. The app or user context must have ServiceHealth.Read.All. Delegated read attempts without this scope will return 403.
  • Caching. Microsoft updates service health in near-real-time, but there can be a short delay between an incident starting and it appearing in the API.
  • Avoid aggressive polling. Poll no more than once every 1โ€“5 minutes to stay well within Graph throttling limits.

Required Permissions

PermissionWhy It's Needed
ServiceHealth.Read.AllRequired to read Microsoft 365 service health overviews, issues, and messages via Microsoft Graph.
Service Support Administrator or Global ReaderRecommended Entra role for interactive admins querying service health; grants read access without broader privileges.

The fastest way to get this done โ€” just ask Dex. Copy the prompt below and paste it into your Dex conversation.

For IT Admins

Paste into Dex CoAdmin

Check the current service health of Exchange Online in our M365 tenant. Report the status, any active incidents or advisories, and confirm whether user-reported email issues are likely tenant-side or a Microsoft service problem.
Try in Dex CoAdmin

For End Users

How an employee would ask Dex for help

Is email down right now? I'm not getting messages in Outlook.
Try in Dex Playground