One product, three carriers
| Calling Plan | Operator Connect | Direct Routing | |
|---|---|---|---|
| Who is the carrier | Microsoft | A partner operator | Whoever you contract |
| Your infrastructure | None | None | SBC(s) you run (or host) |
| Number management | M365 admin center | Operator portal → TAC | You + carrier |
| Countries | Microsoft's list only | Operator's footprint | Anywhere you can get a trunk |
| Analogue/legacy kit | No | No | Yes (via SBC/ATA) |
| Complexity | Lowest | Low | Highest |
| Typical fit | Small/simple estates | Mid-size, carrier relationship | Global, legacy, contact centres, cost-optimised minutes |
The honest architecture note: large estates usually run a mix — Operator Connect or Calling Plans for simple countries, Direct Routing where there is legacy kit, a favoured carrier, or no Microsoft/operator coverage. Teams supports per-user coexistence; design for it rather than pretending one road fits every country.
What each road actually is
Calling Plans — Microsoft is your telco. Numbers, minutes and emergency services all come from Redmond. You trade money and flexibility for zero infrastructure. The ceiling: country coverage, calling-plan economics at volume, and no path for analogue devices.
Operator Connect — the operator pre-builds Direct Routing INTO Microsoft's network and sells it as a service. You get carrier pricing and support with no SBC to own. The trade: you are inside the operator's footprint and feature set, and moving operators later is a number-porting project.
Direct Routing — you (or a hosting partner) run certified SBCs pairing with Microsoft over SIP/TLS. Total freedom: any carrier, least-cost routing, analogue integration, survivability appliances at branches. Total responsibility: certificates, trunk health, capacity, and every failure between Teams and the carrier is yours to triage.
Failure signatures
| Symptom | Likely cause |
|---|---|
| All outbound dead, one Direct Routing site | SBC dropped from rotation — check whether it's answering Microsoft's SIP OPTIONS, and its TLS cert expiry |
| Outbound works, inbound dead (DR) | Carrier trunk or number routing at the carrier — Microsoft never saw the call |
| "Call failed" instantly for one user | No voice routing path for that user's dialled number: usage/route/policy mismatch, or unassigned number |
| One-way audio on DR only | Media bypass enabled but client cannot reach the SBC's public media interface (firewall assumed hairpin) |
| Dead air then drop at exactly 30–32 s | Signalling answered but ACK/media path broken — classic NAT/SIP-ALG interference at the SBC edge |
| Random users can't dial premium/international | Different calling policies or usages — compare Get-CsOnlineVoiceRoutingPolicy assignments, not the SBC |
Choosing (and re-choosing)
Start from constraints, not preference: countries with no Calling Plan/operator coverage → Direct Routing is decided for you. Analogue anything → Direct Routing. No telecoms skills in-house and coverage fits → Calling Plans or Operator Connect. Contact centre with least-cost routing ambitions → Direct Routing, budget for real SBC expertise. And whichever you pick: the migration between roads is mostly a number-porting and user-policy exercise — painful but survivable, which is why the mixed estate is a legitimate end state, not a failure.