During the night of Thursday 12 to Friday 13 November, Outlook, Microsoft 365 and Teams went down for users across several regions at once. Mail would not sync, Teams sat on endless loading screens, and the admin portal was slow or out of reach. For companies running 24/7 operations, or with teams in Asia and the Americas, this was no minor overnight blip. Customer support, on-call rotations and incident coordination all stalled, and at many organisations incident coordination ran through Teams itself.
This article is not a forensic reconstruction of the outage. That is Microsoft's job, and its Post-Incident Review (PIR) is the document to read. Our focus is on what an incident like this tells engineering leaders and platform teams, and on the concrete changes to make before the next one. There will be a next one.
Why a global SaaS outage hits so hard
Microsoft 365 is no longer just an office suite. In most organisations it underpins several critical functions together:
- Identity: Entra ID (formerly Azure AD) often handles SSO for dozens of third-party applications.
- Communication: email, chat, meetings, telephony through Teams Phone.
- Collaboration and documents: SharePoint, OneDrive, Loop.
- Operational flows: alerts sent by email or Teams webhooks, Power Automate approvals, on-call notifications.
When one platform holds all of this, an outage does not just degrade productivity. It can cut off the very channels you need to respond. The pattern is familiar: monitoring raises the alert, the alert lands in a Teams channel, and Teams is down. Your observability chain shares a single point of failure with the thing it monitors.
A recurring pattern, not an anomaly
Hyperscalers are generally very reliable, but large incidents still happen. In January 2023, a network change on Microsoft's WAN disrupted Teams, Outlook and Azure for several hours. In July 2024, the CrowdStrike Falcon update crashed millions of Windows machines worldwide. Microsoft was not at fault, but it showed how far a single vendor dependency can spread. That same month, a DDoS attack combined with a faulty mitigation hit Azure Front Door. Root causes differ: configuration changes, network faults, third-party dependencies, attacks. The lesson does not change. Plan for an outage, because one will come.
Note one detail. In most of these incidents, the trigger was a change such as a deployment, configuration push or rule update, not a hardware failure. Concentration on a shared control plane, whether network, identity or front door, is what turns a local error into a global outage. You cannot fix that at your level. You can only design around it.
Step 1: detect it yourself, without waiting for the status page
The public Microsoft 365 status page and the Service Health dashboard are often updated after users have already started complaining. Two complementary approaches work well.
Poll Service Health through Microsoft Graph
The Graph API exposes service health and incident communications. With an application granted ServiceHealth.Read.All, you can feed this into your own alerting pipeline and send notifications outside Microsoft 365:
GET https://graph.microsoft.com/v1.0/admin/serviceAnnouncement/healthOverviews?$expand=issues
Authorization: Bearer <token>In PowerShell with the Microsoft Graph SDK:
Connect-MgGraph -Scopes 'ServiceHealth.Read.All'
Get-MgServiceAnnouncementHealthOverview |
Where-Object { $_.Status -ne 'serviceOperational' } |
Select-Object Service, StatusThe limitation is obvious. If the Microsoft control plane is itself degraded, this API may be slow or unavailable. That is exactly why you need a second, independent signal.
Synthetic probes from the outside
A Prometheus blackbox exporter, or a synthetic monitoring tool such as Checkly, Grafana Synthetic Monitoring or Datadog Synthetics, can test real user paths from several regions: Outlook Web login, authentication endpoint response, Exchange Online availability. A minimal blackbox configuration:
modules:
m365_https:
prober: http
timeout: 10s
http:
valid_status_codes: [200, 302]
preferred_ip_protocol: ip4
fail_if_not_ssl: trueThen point it at https://outlook.office.com, https://login.microsoftonline.com and https://teams.microsoft.com. A clean HTTP response does not guarantee the service actually works, because a portal can return 200 while mailboxes are unavailable. For full-path checks, add a scripted transaction such as sending and receiving a test email through Graph with a dedicated account. Run it at a sensible frequency to stay within throttling limits.
Step 2: separate your alerting channels from the monitored platform
This is the most profitable fix and often the cheapest. Critical alerts should never rely only on Teams or Exchange Online.
| Need | Typical M365 channel | Independent fallback | Trade-off |
|---|---|---|---|
| On-call paging | Teams / email | PagerDuty, Opsgenie, Grafana OnCall (SMS, phone call, push) | Extra cost, but this is exactly what they are built for |
| Incident chat room | Teams channel | Slack, Mattermost or Matrix (self-hosted), Signal group | Must be kept alive and tested, or nobody will know how to use it |
| External communication | Outlook | Hosted status page (Statuspage, Instatus, Cachet) | Must not depend on Entra ID SSO |
| Executive bridge | Teams meeting | Phone bridge, alternative video tool | Contacts must be stored offline |
| Runbooks | SharePoint / OneDrive | Git repository, static wiki, exported PDF copy | Requires synchronisation discipline |
A point teams often miss: if your fallback tool authenticates through Entra ID SSO, it inherits part of the risk. For the handful of accounts that truly matter, such as on-call engineers, incident managers and leadership, keep a break-glass authentication path: local accounts with strong MFA, credentials kept in a vault reachable without Microsoft 365, and quarterly test logins.
Step 3: an incident communication plan that survives without email
On the night of the outage, plenty of organisations found they had no reliable list of phone numbers. The directory was in Entra ID, the contacts in Outlook, the crisis procedure in SharePoint. A useful communication plan contains:
- An offline call tree, exported regularly and available on mobile devices and in printed form for key roles.
- A predefined backup channel that everyone knows about, so nobody has to improvise at 3am.
- Message templates for customers and internal staff, ready to publish on your status page.
- A clear rule: who declares the incident and who talks to Microsoft through your support contract or account team.
Step 4: rethink the concentration of risk
Should you leave Microsoft 365? For most organisations, no. Productivity, integration and security features are real, and every alternative has its own outages. Running your own Exchange servers does not make you more reliable than Microsoft. It mostly moves the risk onto your own team. The question is not "which vendor never fails" but "which processes must keep running when this vendor fails".
A few pragmatic decisions:
- Map dependencies: list the business applications that authenticate through Entra ID. An identity outage takes all of them down together. For a few critical applications, a secondary authentication mechanism can be justified.
- Diversify only where it matters: on-call paging, incident communication, status page. No need to duplicate the whole suite.
- Take the sovereignty angle seriously: for regulated sectors (NIS2, DORA for financial institutions), concentration on a single ICT provider is now an explicit regulatory topic. DORA in particular requires firms to assess and document dependencies on critical third-party ICT providers and to have exit and continuity plans. An outage like this is good material for that assessment.
- Read the SLA closely: Microsoft's SLA mostly gives you service credits. It does not compensate for your business losses. Treat it as a commercial commitment, not a resilience strategy.
Step 5: run the exercise before the real incident
The best investment after an outage like this is a tabletop exercise within the next few weeks, while memories are fresh. The scenario writes itself: "It is 2am, Teams, Outlook and Entra ID SSO are unavailable, and a critical alert fires on production." Then walk through it:
- How is the on-call engineer notified?
- Where does the team meet?
- How do they reach the runbooks?
- Who informs customers, and through which channel?
- How do they know when Microsoft has restored service?
Every "we would use Teams" answer is a gap to fix. Repeat the exercise yearly, and make fallback channels part of the normal on-call routine, for example a monthly test page through the backup channel, so they do not quietly rot.
Conclusion
The overnight Microsoft 365 outage of 12 to 13 November was not a failure of cloud as a model. It was a reminder of what extreme concentration costs. Organisations that came through it calmly were not the ones with a secret alternative to Outlook. They were the ones whose alerting, incident coordination and runbooks did not rely on the platform that was down. Reading Microsoft's PIR is worthwhile. Fixing your own single points of failure matters more.
