Root cause
The incident happened during routine maintenance - a planned migration of Azure DNS infrastructure - which is exactly when the highest-blast-radius mistakes tend to occur, because change is being made deliberately to load-bearing systems. A name-server delegation change propagated as part of the migration and left a subset of authoritative queries for Microsoft and Azure domains unable to resolve. Nothing downstream had failed: Storage was serving, SQL Database was accepting connections, Microsoft 365 was up. Clients simply could no longer translate the names into addresses, which is functionally identical to those services being gone.
DNS failures are uniquely deceptive for this reason. Every dashboard for the individual service stays green while customers report a total outage, and the correlation - "everything Microsoft is unreachable at once" - is the tell that the fault is in the shared resolution layer rather than in any one product.
Business impact
Because the failure was at the DNS layer, the blast radius was broad and shallow: many services affected, each of them healthy underneath. Enterprises lost access to Azure Storage and SQL Database-backed applications, and Microsoft 365 users saw sign-in and connectivity failures. Recovery had a long tail that Microsoft could not fully control - once a bad or missing DNS answer is cached, the client honors it until the TTL expires, so some customers recovered minutes after the fix and others considerably later.
Prevention and lessons
- Treat DNS changes as the highest-risk category. Delegation and record changes have no partial blast radius - they either resolve or they don't, globally. Stage them behind long-lead-time review and change windows, and rehearse the rollback before the change, not during the incident. Our business continuity hub builds this into the change-management tier.
- Keep TTLs deliberately short on critical records so that when a bad change does propagate, the correction propagates just as fast. Long TTLs turn a three-hour fix into a six-hour outage for the unlucky.
- Don't co-locate your own DNS dependency with the thing being changed. Applications that cached resolved endpoints or used secondary resolution rode parts of this out; those that re-resolved on every request during the window did not.
- Watch Azure DNS status directly. During DNS incidents, per-service status pages lag reality because the services themselves are healthy - the resolution layer is where the truth is.