Between digits typed and a trunk chosen sits a five-stage pipeline: normalise, authorise, match usage, pick route, try gateways. Every 'this number won't dial' lives at exactly one stage — learn to name which.
The flow — what actually happens
Plain-language first; the packet-level
view underneath each step is what you'd see in a Wireshark trace, and what healthy looks like.
-
Normalisation (dial plan)
Whatever the user typed — 0207..., x4021, 9-1-... — the dial plan's regex rules rewrite it to E.164 (+442079460958). Tenant dial plans layer onto Microsoft's per-country service plan; first matching rule wins.
On the wire Test without calling: Get-CsEffectiveTenantDialPlan piped to Test-CsEffectiveTenantDialPlan -DialedNumber — shows the matched rule and output. THE tool for stage-1 disputes.
-
Authorisation (calling policies)
May this user make this class of call at all? TeamsCallingPolicy (calling on/off), dial-out restrictions, outbound blocked-number patterns org-wide. A block here fails fast and looks like a routing error but is policy.
On the wire The user's effective policies: Get-CsUserPolicyAssignment. Org blocklist: Get-CsTenantBlockedCallingNumbers (in the nightly scan).
-
Usage matching (for Direct Routing users)
The normalised number walks the user's OnlineVoiceRoutingPolicy: an ordered list of PSTN USAGES (think 'call classes': UK-National, International). The number pattern decides which usage claims the call.
On the wire Get-CsOnlineVoiceRoutingPolicy for the user's policy; its OnlinePstnUsages list is the search order.
-
Route selection
Within the matched usage, ROUTES (regex + gateway list + priority) compete; highest-priority matching route wins and offers its SBC list.
On the wire Get-CsOnlineVoiceRoute sorted by priority — the actual competition table. A number matching NO route in any listed usage = the instant-fail 'call failed' class.
-
Gateway attempts
Teams offers the call to the route's SBCs (respecting OPTIONS health from the DR contract); an SBC that rejects or times out passes the call down the list, then to the next route. Only when everything is exhausted does the user hear failure.
On the wire SBC SIP logs show the INVITE with the final normalised number — if the INVITE never arrives, the call died in stages 1-4 inside Microsoft; if it arrives and fails, the SBC/carrier leg owns it. This one observation halves every DR investigation.
Discussion
No messages yet — start the thread.