# Teams voice routing policies and dial plans

Canonical: https://warmtransfer.net/knowledge/teams-voice-routing

Last verified: 2026-09-24

Teams dial plans translate user-dialed digits into standardized formats such as E.164, while voice routing policies define how Direct Routing outbound calls reach PSTN gateways[^7][^44]. Dial plans and voice routing policies are preconfigured at the service level for Calling Plan, Operator Connect, and Teams Phone Mobile, whereas Direct Routing requires administrators to configure voice routes and assign policies explicitly[^3][^12].

## How dial plans work

Teams provides three dial plan scopes: the service dial plan, the tenant dial plan (the Global org default), and user dial plans[^8]. The service dial plan is managed by Microsoft and is not configurable; tenant and user dial plans are configurable by administrators[^8]. Microsoft creates a service dial plan for every country or region where Teams Phone is offered and assigns it based on the user's usage location[^46].

A user receives the service dial plan alongside either the tenant (Global) dial plan or an assigned user dial plan, but never both a tenant and a user dial plan at the same time[^53]. When normalizing dialed numbers, rules in a user dial plan take precedence over the Global tenant dial plan, which in turn takes precedence over the service dial plan[^10]. The user's effective dial plan merges the service dial plan for their country or region with their assigned tenant or user dial plan[^13]. If the Global dial plan has not been modified and no user dial plan is assigned, the effective dial plan contains only the service dial plan rules[^13].

The Teams client uses the effective dial plan to normalize the dialed string for every outbound call, including calls initiated from call history or telephone-number hyperlinks[^5]. If no rule in the effective dial plan normalizes the number, the service dial plan automatically prepends "+CC" using the country code from the user's usage location; this behavior applies to Calling Plans, Direct Routing, and PSTN conference dial-out[^47].

## Normalization rule limits and regex rules

Normalization rules translate dialed strings using.NET Framework regular expressions[^24]. Within a dial plan, rules are evaluated from top to bottom, and the first matching rule is applied without evaluating subsequent rules[^28]. A tenant dial plan created in the Teams admin center must contain at least 1 normalization rule[^11], and a single dial plan can contain at most 50 normalization rules[^26]. A tenant can have up to 1,000 tenant dial plans[^19].

When creating rules in PowerShell via `New-CsVoiceNormalizationRule`, rules can only be created with the `-InMemory` switch and must then be added to a tenant dial plan using `New-CsTenantDialPlan` or `Set-CsTenantDialPlan`[^25]. Rules can be created at global and tag scopes; server-only site and service scopes are unavailable in Teams[^27]. In `New-CsVoiceNormalizationRule`, the default pattern is `^(\d{11})$` and the default translation is `+$1`[^23].

If a normalization rule produces a number lacking a leading "+", the calling service attempts to re-normalize it against tenant and regional rules[^9]. To avoid this double normalization, Microsoft recommends outputting numbers with a leading "+" and stripping the "+" via Direct Routing trunk translation rules when necessary[^9]. Additionally, 3PIP devices (such as the Polycom VVX 601) do not support normalization rules where the initial token is optional (such as `^0?(999)$`); Microsoft advises splitting those into 2 distinct rules[^22].

Dial plan configuration properties adhere to specific length constraints:[^52][^51]

| Property | Limit | Allowed characters |
| --- | --- | --- |
| Dial plan Identity | 49 characters[^52] | Letters, digits, hyphen, dot; cannot begin with dot[^52] |
| SimpleName | 49 characters[^52] | Letters, digits, hyphen, dot, parentheses; must be unique[^48][^52] |
| Description | 1040 characters[^51] | Not specified[^51] |

The parameters `ExternalAccessPrefix` and `OptimizeDeviceDialing` have been removed from `New-CsTenantDialPlan` and `Set-CsTenantDialPlan`; external access prefix functionality is handled through normalization rules and displayed as such in `Get-CsTenantDialPlan`[^29]. On-premises Skype for Business Server dial plans can be migrated by exporting them via `Export-Clixml`, reconstructing rules as in-memory objects, and adding them with `New-CsTenantDialPlan`[^20].

Dial plans can be tested in the Teams admin center under "Test dial plan" after saving[^50]. Administrators can also run `Get-CsEffectiveTenantDialPlan` to review effective normalization rules for a user[^14], or execute `Test-CsEffectiveTenantDialPlan` to evaluate a number against a user's effective rules, using `-TenantScopeOnly` to exclude service-level rules[^54].

## Reverse Number Lookup

Calling Plan and Operator Connect require E.164 numbers, whereas Direct Routing supports number values of 3 to 38 digits without common symbols[^38]. An optional extension consisting of 1 to 12 digits can be appended using `;ext=` in a case-insensitive manner[^38].

If a user's assigned number contains an extension, incoming calls must include that exact extension for RNL to match[^37]. Calls failing an RNL match either fail or are redirected according to unassigned number routing configuration[^37]. Administrators can bypass RNL on a resource account by configuring `Set-CsPhoneNumberAssignment -ReverseNumberLookup`, routing internal calls to that resource account externally across the PSTN[^49].

## Voice routing policy architecture

Direct Routing call routing consists of 4 distinct elements: online voice routing policies, online PSTN usages, online voice routes, and online PSTN gateways (SBCs)[^44]. A voice routing policy contains PSTN usages, PSTN usages link to voice routes, each voice route associates a number pattern with online PSTN gateways, and the gateways hold per-SBC configurations[^44]. Online PSTN usages exist as a single tenant-wide global list managed via `Set-CsOnlinePstnUsage`[^34]. Running `Set-CsOnlinePstnUsage -Usage @{replace=...}` clears and replaces the entire tenant list of usages[^35].

All online voice routes exist at Global scope, identified by unique route names[^42]. By default, `New-CsOnlineVoiceRoute` assigns a `NumberPattern` of `[0-9]{10}`, and leaving gateway or usage lists empty generates a warning[^40]. Microsoft documents setting `NumberPattern` to `.*` to route all calls across a voice route[^39]. Voice routes must use either `OnlinePstnGatewayList` or `BridgeSourcePhoneNumber` (for Operator Connect Conferencing bridges linked through an `OnlineAudioConferencingRoutingPolicy`), but cannot use both simultaneously[^2]. The `RouteType` parameter in `New-CsOnlineVoiceRoutingPolicy` is reserved for internal Microsoft use[^43].

Microsoft's documented order for Direct Routing call routing is: create the PSTN usage, create voice routes that reference it and the SBCs, create a voice routing policy containing the usage, then assign the policy to users[^6].

Assigning an online voice routing policy alone does not enable PSTN calling; users must also be licensed for Direct Routing (Phone System) and have remaining configuration steps completed[^59].

## Routing evaluation and failover logic

Outbound Direct Routing calls first undergo number normalization through the user's effective dial plan, match against PSTN usages and voice routes, and finally pass to the SBC[^30]. If a called number contains an extension (such as `+1425XXXXXXX;ext=YYY`), the voice route number pattern evaluates only the portion preceding the extension[^31].

PSTN usages inside a voice routing policy evaluate strictly in listed order; once a usage contains a matching voice route, evaluation stops and later usages are skipped[^58]. Placing broad catch-all usages ahead of specific ones shadows subsequent routes[^4]. Administrators change usage ordering using `Set-CsOnlineVoiceRoutingPolicy` with `-OnlinePstnUsages @{Replace=...}`[^36].

When multiple voice routes match within a usage, routes are evaluated in ascending order of their `Priority` attribute, trying the lowest number first[^33]. If all SBCs on the lowest-priority route are unreachable, Teams fails over to the next matching route in priority order[^41]. SBCs assigned to an individual voice route are tried in random order[^45]. If an inbound call is forwarded or transferred and the ingress SBC is an eligible candidate in the egress route, Teams attempts that SBC first regardless of route priority[^17]. If all SBCs on all matching routes are unavailable, the call drops[^1].

If a dialed number matches no route pattern in the assigned policy, Teams drops the call for users without a Calling Plan license[^21]. For users holding both Direct Routing configurations and a Calling Plan license, unmatched calls automatically fall back to the Calling Plan PSTN infrastructure as a final route[^21]. Conversely, if a Calling Plan user is assigned a voice routing policy, any dialed number matching that policy routes through Direct Routing instead of Calling Plan[^60].

For Teams policy assignment in general, a directly assigned policy overrides group-assigned policies, which override the Org-wide default Global policy[^32]. The Global online voice routing policy cannot be renamed or deleted, but it can be edited[^15]. Because all voice-enabled users inherit the Global policy by default, modifying it risks inadvertently sending Calling Plan or Operator Connect user traffic to a Direct Routing SBC[^16]. Microsoft recommends using custom policies assigned per user instead[^16].

## SBC translation rules

Outbound number translation rules assigned to an online PSTN gateway object modify number strings after route selection and before SBC delivery[^30]. Rules are defined via `New-CsTeamsTranslationRule` and bound to SBC gateways through 4 parameters: `InboundTeamsNumberTranslationRules`, `InboundPSTNNumberTranslationRules`, `OutboundTeamsNumberTranslationRules`, and `OutboundPSTNNumberTranslationRules`[^57].

Gateway translation rules execute in the sequential order returned by PowerShell, which administrators can adjust[^56]. Microsoft documents a maximum of 400 translation rules[^55]. Rule names support up to 100 symbols, regex patterns accept up to 1024 symbols, and translation strings support up to 256 symbols[^55].

## See also

See also [Teams Phone Direct Routing and SBC certification](https://warmtransfer.net/knowledge/teams-direct-routing).
See also [Microsoft Teams Phone architecture and licensing](https://warmtransfer.net/knowledge/teams-phone-architecture).
See also [Teams Operator Connect and Azure Communication routing](https://warmtransfer.net/knowledge/teams-operator-connect).
See also [Teams contact center integration models](https://warmtransfer.net/knowledge/teams-contact-center-integration).
See also [DTMF methods and interoperability failures](https://warmtransfer.net/knowledge/dtmf-interop).
See also [SD-WAN considerations for voice](https://warmtransfer.net/knowledge/sdwan-voice).

## Applicability

Applies to: Microsoft Teams Phone, Microsoft Teams Phone Direct Routing, MicrosoftTeams PowerShell module, Microsoft Teams admin center, and Microsoft Teams. Deployments: multi-tenant. Sources checked 2026-09-24. Direct Routing call routing configuration requires user licensing for Phone System[^59].

## What remains uncertain

The exact syntax for reordering number translation rules in PowerShell is not covered by the sources below.

## Sources

[^1]: If every SBC on every matching route is unavailable, the call is dropped. Source: [Configure call routing for Direct Routing](https://learn.microsoft.com/en-us/microsoftteams/direct-routing-voice-routing), section 'Example 1: Voice routing with one PSTN usage', Call Flow 1 and Call Flow 2 descriptions. Checked 2026-09-24.
[^2]: An online voice route can use either BridgeSourcePhoneNumber (an Operator Connect Conferencing bridge number) or OnlinePstnGatewayList, not both. The route's PSTN usages should be used only in a matching OnlineAudioConferencingRoutingPolicy. Source: [New-CsOnlineVoiceRoute (MicrosoftTeams)](https://learn.microsoft.com/en-us/powershell/module/teams/new-csonlinevoiceroute), parameter '-BridgeSourcePhoneNumber'. Checked 2026-09-24.
[^3]: For Calling Plan, Operator Connect and Teams Phone Mobile, dial plans and voice routing policies are preconfigured at the service level, and no admin configuration is needed. Source: [Microsoft Teams Dial plans for phone call routing](https://learn.microsoft.com/en-us/microsoftteams/what-are-dial-plans), section 'User dial plans with Calling Plans and Operator Connect'. Checked 2026-09-24.
[^4]: In Microsoft's example, putting the catch-all 'International' usage ahead of 'US and Canada' sends calls to +1 425 numbers to the International route's SBCs, bypassing the more specific Redmond routes. Source: [Configure call routing for Direct Routing](https://learn.microsoft.com/en-us/microsoftteams/direct-routing-voice-routing), section 'Example 2: Configuration steps', admin center Step 3, 'Take note of the order of PSTN usages' bullets. Checked 2026-09-24.
[^5]: The Teams client normalizes the number for every outbound call using the user's effective dial plan, including calls placed from call history or from telephone-number links. Source: [Microsoft Teams Dial plans for phone call routing](https://learn.microsoft.com/en-us/microsoftteams/what-are-dial-plans), section 'Dial plans and routing considerations', bullet under 'For example'. Checked 2026-09-24.
[^6]: Microsoft's documented order for Direct Routing call routing is: create the PSTN usage, create voice routes that reference it and the SBCs, create a voice routing policy containing the usage, then assign the policy to users. Source: [Configure call routing for Direct Routing](https://learn.microsoft.com/en-us/microsoftteams/direct-routing-voice-routing), section 'Example 1: Configuration steps', numbered list 1-4. Checked 2026-09-24.
[^7]: A Teams dial plan is a named set of one or more normalization rules that translate user-dialed number strings into a standardized format, typically E.164, for authorization matching and routing. Source: [Microsoft Teams Dial plans for phone call routing](https://learn.microsoft.com/en-us/microsoftteams/what-are-dial-plans), section 'What are dial plans?'. Checked 2026-09-24.
[^8]: Teams has three dial plan scopes: the service dial plan (Microsoft-managed and not configurable), the tenant dial plan (the Global org default) and user dial plans, and the last two are admin-configurable. Source: [Microsoft Teams Dial plans for phone call routing](https://learn.microsoft.com/en-us/microsoftteams/what-are-dial-plans), section 'Dial plan scopes and a user's effective dial plan', first table. Checked 2026-09-24.
[^9]: If a normalization rule produces a number without a leading '+', the calling service tries to normalize it again with tenant and regional rules. Microsoft therefore recommends that every normalization rule output a '+' number, and that Direct Routing customers strip the '+' with trunk translation rules if needed. Source: [Create and manage dial plans](https://learn.microsoft.com/en-us/microsoftteams/create-and-manage-dial-plans), section 'Create a dial plan', Note under step 4. Checked 2026-09-24.
[^10]: When normalization rules are processed, rules in a user dial plan take precedence over the tenant (Global) dial plan, which in turn takes precedence over the service dial plan. Source: [Microsoft Teams Dial plans for phone call routing](https://learn.microsoft.com/en-us/microsoftteams/what-are-dial-plans), section 'Dial plan scopes and a user's effective dial plan', paragraph beginning 'In the priority of processing normalization rules'. Checked 2026-09-24.
[^11]: Each dial plan created in the Teams admin center must have at least one normalization rule associated with it. Source: [Create and manage dial plans](https://learn.microsoft.com/en-us/microsoftteams/create-and-manage-dial-plans), section 'Using the Microsoft Teams admin center' > 'Create a dial plan', step 3. Checked 2026-09-24.
[^12]: With Direct Routing, admins must configure call routing themselves by creating voice routes and assigning voice routing policies to users. Route-level number translation rules are optional and handle SBC interoperability. Source: [Microsoft Teams Dial plans for phone call routing](https://learn.microsoft.com/en-us/microsoftteams/what-are-dial-plans), section 'User dial plans with Direct Routing or extension dialing', first bullet. Checked 2026-09-24.
[^13]: A user's effective dial plan merges the service dial plan for their country or region with the assigned tenant or user dial plan. If the Global dial plan is unmodified and no user dial plan is assigned, the effective dial plan is the service dial plan alone. Source: [Microsoft Teams Dial plans for phone call routing](https://learn.microsoft.com/en-us/microsoftteams/what-are-dial-plans), section 'Dial plan scopes and a user's effective dial plan', second table (Service Country / Tenant Global - Service Country / Tenant User - Service Country). Checked 2026-09-24.
[^14]: Get-CsEffectiveTenantDialPlan takes a user identity and returns every normalization rule that applies to that user. Microsoft recommends it for checking which rules the service dial plan already covers before adding tenant rules. Source: [Normalization rules for Microsoft Teams dial plans](https://learn.microsoft.com/en-us/microsoftteams/phone-normalization-rules), section 'Determining the required normalization rules'. Checked 2026-09-24.
[^15]: Users get the global (Org-wide default) voice routing policy unless a custom policy is assigned. Admins can edit the global policy but cannot rename or delete it. Source: [Manage call routing policies for Direct Routing](https://learn.microsoft.com/en-us/microsoftteams/manage-voice-routing-policies), introductory section, third paragraph. Checked 2026-09-24.
[^16]: Microsoft cautions that configuring the global (Org-wide default) online voice routing policy makes every voice-enabled user inherit it. That can send PSTN calls from Calling Plan and Operator Connect users to a Direct Routing trunk by mistake, so Microsoft recommends custom policies assigned per user. Source: [Configure call routing for Direct Routing](https://learn.microsoft.com/en-us/microsoftteams/direct-routing-voice-routing), section 'Voice routing policy considerations', Caution item 1. Checked 2026-09-24.
[^17]: When an inbound PSTN call is forwarded or transferred, and the ingress SBC is also a candidate egress SBC, Teams ignores that SBC's route priority and tries it before the other SBCs. Source: [Configure call routing for Direct Routing](https://learn.microsoft.com/en-us/microsoftteams/direct-routing-voice-routing), section 'Example 1: Voice routing with one PSTN usage', Note after the three-route table. Checked 2026-09-24.
[^18]: The documentation conflicts on IsInternalExtension. New-CsVoiceNormalizationRule says the flag is ignored when the dial plan's OptimizeDeviceDialing is False, but New-CsTenantDialPlan says OptimizeDeviceDialing has been removed, so its current effect in Teams is unsettled (disputed). Source: [New-CsVoiceNormalizationRule (MicrosoftTeams)](https://learn.microsoft.com/en-us/powershell/module/teams/new-csvoicenormalizationrule), parameter '-IsInternalExtension'. Checked 2026-09-24.
[^19]: A tenant can have at most 1,000 tenant dial plans. Source: [Microsoft Teams Dial plans for phone call routing](https://learn.microsoft.com/en-us/microsoftteams/what-are-dial-plans), section 'Dial plans and routing considerations', first sentence. Checked 2026-09-24.
[^20]: Microsoft documents migrating an on-premises Skype for Business Server dial plan by exporting it to XML with Export-Clixml. The Teams PowerShell side then rebuilds its rules as in-memory New-CsVoiceNormalizationRule objects and creates the plan with New-CsTenantDialPlan. Source: [Create and manage dial plans](https://learn.microsoft.com/en-us/microsoftteams/create-and-manage-dial-plans), section 'Using a PowerShell script', final pair of scripts (OPDP1 example). Checked 2026-09-24.
[^21]: If the dialed number matches no admin-created voice route pattern, a Teams Phone user without a Calling Plan has the call dropped. A user who also holds a Microsoft Calling Plan license is routed through Calling Plan, which applies automatically as the last route. Source: [Configure call routing for Direct Routing](https://learn.microsoft.com/en-us/microsoftteams/direct-routing-voice-routing), section 'Example 1: Voice routing with one PSTN usage', Note after the first diagram and paragraph after the second diagram. Checked 2026-09-24.
[^22]: Normalization rules whose first token is optional (for example ^0?(999)$) are not supported on 3PIP devices such as the Polycom VVX 601. Microsoft advises splitting such a rule into two rules. Source: [Normalization rules for Microsoft Teams dial plans](https://learn.microsoft.com/en-us/microsoftteams/phone-normalization-rules), section 'Creating normalization rules', Note. Checked 2026-09-24.
[^23]: The New-CsVoiceNormalizationRule reference gives the default Pattern as ^(\d{11})$ and the default Translation as +$1, which prefixes a plus sign. Source: [New-CsVoiceNormalizationRule (MicrosoftTeams)](https://learn.microsoft.com/en-us/powershell/module/teams/new-csvoicenormalizationrule), parameters '-Pattern' and '-Translation'. Checked 2026-09-24.
[^24]: Teams normalization rule patterns and translations are written as .NET Framework regular expressions. Source: [Normalization rules for Microsoft Teams dial plans](https://learn.microsoft.com/en-us/microsoftteams/phone-normalization-rules), section 'Creating normalization rules', first paragraph. Checked 2026-09-24.
[^25]: For Microsoft Teams, New-CsVoiceNormalizationRule can create rules only with the -InMemory switch. The rule then has to be added to a tenant dial plan with New-CsTenantDialPlan or Set-CsTenantDialPlan. Source: [New-CsVoiceNormalizationRule (MicrosoftTeams)](https://learn.microsoft.com/en-us/powershell/module/teams/new-csvoicenormalizationrule), section 'Description', final paragraph. Checked 2026-09-24.
[^26]: Microsoft enforces a limit of no more than 50 normalization rules per dial plan. Source: [Normalization rules for Microsoft Teams dial plans](https://learn.microsoft.com/en-us/microsoftteams/phone-normalization-rules), introductory section, Note. Checked 2026-09-24.
[^27]: In Microsoft Teams, voice normalization rules can be created at two scopes, global and tag. The server-only site and service scopes are not available. Source: [New-CsVoiceNormalizationRule (MicrosoftTeams)](https://learn.microsoft.com/en-us/powershell/module/teams/new-csvoicenormalizationrule), parameter '-Identity', third paragraph. Checked 2026-09-24.
[^28]: Normalization rules in a dial plan are evaluated from top to bottom. The first matching rule is used and no further rules are tried, so rule order matters and more restrictive rules should sit above less restrictive ones. Source: [Normalization rules for Microsoft Teams dial plans](https://learn.microsoft.com/en-us/microsoftteams/phone-normalization-rules), introductory section, paragraph beginning 'One or more normalization rules must be assigned'. Checked 2026-09-24.
[^29]: The ExternalAccessPrefix and OptimizeDeviceDialing parameters have been removed from New-CsTenantDialPlan and Set-CsTenantDialPlan. Normalization rules now handle external access dialing, and Get-CsTenantDialPlan shows the external access prefix as a normalization rule. Source: [New-CsTenantDialPlan (MicrosoftTeams)](https://learn.microsoft.com/en-us/powershell/module/teams/new-cstenantdialplan), section 'Notes'. Checked 2026-09-24.
[^30]: For an outbound Direct Routing call, the dialed number is first normalized by the user's effective dial plan, then matched to a PSTN usage and voice route, and then sent to the route's SBC. Any outbound number translation rules on that SBC's online PSTN gateway object change the number format the SBC receives. Source: [Translate phone numbers for Direct Routing](https://learn.microsoft.com/en-us/microsoftteams/direct-routing-translate-numbers), section 'Route-based number translations - for outbound calls', second and third paragraphs. Checked 2026-09-24.
[^31]: If the called number contains an extension (for example +1425XXXXXXX;ext=YYY), the voice route number pattern is applied only to the part before the extension. Source: [Configure call routing for Direct Routing](https://learn.microsoft.com/en-us/microsoftteams/direct-routing-voice-routing), section 'Voice routing policy considerations', Caution item 2. Checked 2026-09-24.
[^32]: For each Teams policy type, a user has one effective policy. A policy assigned directly (individually or in a batch) wins. Otherwise the policy on the user's highest-ranked group applies, and failing that the global (Org-wide default) policy. Source: [Assign policies in Teams](https://learn.microsoft.com/en-us/microsoftteams/policy-assignment-overview), section 'Which policy takes precedence?'. Checked 2026-09-24.
[^33]: In the New-CsOnlineVoiceRoute reference, when a number resolves to more than one online voice route, the route with the lowest Priority value is applied first and the rest follow in ascending order. Source: [New-CsOnlineVoiceRoute (MicrosoftTeams)](https://learn.microsoft.com/en-us/powershell/module/teams/new-csonlinevoiceroute), parameter '-Priority'. Checked 2026-09-24.
[^34]: Online PSTN usages are string values that link voice routing policies to voice routes. They form one tenant-wide list whose only identity is Global, and that list is managed with Set-CsOnlinePstnUsage. Source: [Set-CsOnlinePstnUsage (MicrosoftTeams)](https://learn.microsoft.com/en-us/powershell/module/teams/set-csonlinepstnusage), section 'Description' and parameter '-Identity'. Checked 2026-09-24.
[^35]: Running Set-CsOnlinePstnUsage with -Usage @{replace=...} replaces the entire tenant usage list and removes every previously existing usage. Source: [Set-CsOnlinePstnUsage (MicrosoftTeams)](https://learn.microsoft.com/en-us/powershell/module/teams/set-csonlinepstnusage), section 'Examples', Example 4. Checked 2026-09-24.
[^36]: To change PSTN usage order in a voice routing policy, run Set-CsOnlineVoiceRoutingPolicy with -OnlinePstnUsages @{Replace=...} and list the usages in the new order. Source: [Configure call routing for Direct Routing](https://learn.microsoft.com/en-us/microsoftteams/direct-routing-voice-routing), section 'Example 2: Voice routing with multiple PSTN usages', Note after summary table, first bullet. Checked 2026-09-24.
[^37]: If a user's assigned number includes an extension, the inbound called number must include that extension for Reverse Number Lookup to match. An unmatched call fails, or goes to unassigned number routing if that is configured. Source: [Microsoft Teams Dial plans for phone call routing](https://learn.microsoft.com/en-us/microsoftteams/what-are-dial-plans), section 'Number lookup for inbound calls', paragraphs following the +14255551212 example. Checked 2026-09-24.
[^38]: For Reverse Number Lookup, a Direct Routing number value is 3 to 38 digits without common symbols, while Calling Plan and Operator Connect numbers are E.164. An optional extension is appended with ';ext=' (case insensitive) and is 1 to 12 digits. Source: [Microsoft Teams Dial plans for phone call routing](https://learn.microsoft.com/en-us/microsoftteams/what-are-dial-plans), section 'Number lookup for inbound calls', Number and Extension bullets. Checked 2026-09-24.
[^39]: To send all calls to the same SBC, Microsoft documents setting a voice route's NumberPattern to '.*'. Source: [Configure call routing for Direct Routing](https://learn.microsoft.com/en-us/microsoftteams/direct-routing-voice-routing), section 'Example 1: Configuration steps', Using PowerShell, Step 2, Caution and following example. Checked 2026-09-24.
[^40]: If NumberPattern is not specified, New-CsOnlineVoiceRoute defaults it to [0-9]{10}. The gateway and usage lists default to empty, and leaving them blank produces a warning. Source: [New-CsOnlineVoiceRoute (MicrosoftTeams)](https://learn.microsoft.com/en-us/powershell/module/teams/new-csonlinevoiceroute), parameters '-NumberPattern', '-OnlinePstnGatewayList', '-OnlinePstnUsages'. Checked 2026-09-24.
[^41]: When several voice routes in a usage match the called number, Teams tries them in priority order. If none of the SBCs on the higher-priority route is available, it tries the lower-priority route. Source: [Configure call routing for Direct Routing](https://learn.microsoft.com/en-us/microsoftteams/direct-routing-voice-routing), section 'Example 1: Voice routing with one PSTN usage', Call Flow 2. Checked 2026-09-24.
[^42]: All online voice routes are created at Global scope and identified by a unique route name, and multiple global routes can exist. Source: [New-CsOnlineVoiceRoute (MicrosoftTeams)](https://learn.microsoft.com/en-us/powershell/module/teams/new-csonlinevoiceroute), section 'Description', first paragraph; parameter '-Identity'. Checked 2026-09-24.
[^43]: The RouteType parameter of New-CsOnlineVoiceRoutingPolicy is reserved for internal Microsoft use, even though policy output shows values such as 'BYOT'. Source: [New-CsOnlineVoiceRoutingPolicy (MicrosoftTeams)](https://learn.microsoft.com/en-us/powershell/module/teams/new-csonlinevoiceroutingpolicy), parameter '-RouteType'. Checked 2026-09-24.
[^44]: Direct Routing call routing has four elements. A voice routing policy (also called a call routing policy) holds PSTN usages. PSTN usages hold voice routes. Each voice route pairs a number pattern with online PSTN gateways, and an online PSTN gateway points to an SBC and holds its per-SBC configuration. Source: [Configure call routing for Direct Routing](https://learn.microsoft.com/en-us/microsoftteams/direct-routing-voice-routing), section 'Call routing overview', element bullets. Checked 2026-09-24.
[^45]: Voice routes have priorities, but the SBCs listed within a single route are tried in random order. Source: [Configure call routing for Direct Routing](https://learn.microsoft.com/en-us/microsoftteams/direct-routing-voice-routing), section 'Example 1: Voice routing with one PSTN usage', sentence after the diagram. Checked 2026-09-24.
[^46]: Microsoft defines a service dial plan for each country or region where Teams Phone is available, and assigns each user the service dial plan that matches the user's usage location. Source: [Microsoft Teams Dial plans for phone call routing](https://learn.microsoft.com/en-us/microsoftteams/what-are-dial-plans), section 'Dial plan scopes and a user's effective dial plan', first table, row 'Service dial plan'. Checked 2026-09-24.
[^47]: If the user's effective dial plan applies no normalization rule to a dialed number, the Teams service dial plan prepends '+CC', using the country code of the user's usage location. This applies to Calling Plans, Direct Routing and PSTN conference dial-out. Source: [Translate phone numbers for Direct Routing](https://learn.microsoft.com/en-us/microsoftteams/direct-routing-translate-numbers), section 'Route-based number translations - for outbound calls', Note. Checked 2026-09-24.
[^48]: A dial plan's Simple Name is prepopulated from the dial plan name, can be edited in PowerShell, cannot be empty and must be unique. Source: [Create and manage dial plans](https://learn.microsoft.com/en-us/microsoftteams/create-and-manage-dial-plans), section 'Name and simple name'. Checked 2026-09-24.
[^49]: Admins can set the skip-RNL option on a resource account's number assignment with Set-CsPhoneNumberAssignment -ReverseNumberLookup. Internal calls to that number then bypass Reverse Number Lookup and route externally through the PSTN. Source: [Microsoft Teams Dial plans for phone call routing](https://learn.microsoft.com/en-us/microsoftteams/what-are-dial-plans), section 'Number lookup for inbound calls', final paragraph. Checked 2026-09-24.
[^50]: After saving a dial plan in the Teams admin center, admins can enter a phone number under 'Test dial plan' to test how it normalizes. Source: [Create and manage dial plans](https://learn.microsoft.com/en-us/microsoftteams/create-and-manage-dial-plans), section 'Create a dial plan', step 6. Checked 2026-09-24.
[^51]: The tenant dial plan Description parameter accepts at most 1040 characters. Source: [New-CsTenantDialPlan (MicrosoftTeams)](https://learn.microsoft.com/en-us/powershell/module/teams/new-cstenantdialplan), parameter '-Description'. Checked 2026-09-24.
[^52]: A tenant dial plan Identity may be at most 49 characters of letters, digits, hyphen and dot, and must not begin with a dot. SimpleName also allows up to 49 characters, and additionally permits parentheses. Source: [New-CsTenantDialPlan (MicrosoftTeams)](https://learn.microsoft.com/en-us/powershell/module/teams/new-cstenantdialplan), parameters '-Identity' and '-SimpleName'. Checked 2026-09-24.
[^53]: A user always has the service dial plan plus either the tenant (Global) dial plan or a user dial plan, and never both a tenant and a user dial plan at once. Source: [Microsoft Teams Dial plans for phone call routing](https://learn.microsoft.com/en-us/microsoftteams/what-are-dial-plans), section 'Dial plan scopes and a user's effective dial plan', paragraph after first table. Checked 2026-09-24.
[^54]: Test-CsEffectiveTenantDialPlan normalizes a dialed number with the rules of a specified user's effective tenant dial plan. Its -TenantScopeOnly switch tests tenant-level dial plans only and leaves out service-level dial plans. Source: [Test-CsEffectiveTenantDialPlan (MicrosoftTeams)](https://learn.microsoft.com/en-us/powershell/module/teams/test-cseffectivetenantdialplan), section 'Description'; parameter '-TenantScopeOnly'. Checked 2026-09-24.
[^55]: Microsoft documents a maximum of 400 translation rules in total. A rule name can be up to 100 symbols, a pattern up to 1024 symbols and a translation up to 256 symbols. Source: [Translate phone numbers for Direct Routing](https://learn.microsoft.com/en-us/microsoftteams/direct-routing-translate-numbers), section 'Considerations', Note. Checked 2026-09-24.
[^56]: Number translation rules are applied at the SBC level. When an SBC has several rules, they are applied in the order they appear when listed in PowerShell, and that order can be changed. Source: [Translate phone numbers for Direct Routing](https://learn.microsoft.com/en-us/microsoftteams/direct-routing-translate-numbers), section 'Considerations', first paragraph. Checked 2026-09-24.
[^57]: Route-based translation rules are created with New-CsTeamsTranslationRule. They are attached to an SBC through four online PSTN gateway parameters: InboundTeamsNumberTranslationRules, InboundPSTNNumberTranslationRules, OutboundTeamsNumberTranslationRules and OutboundPSTNNumberTranslationRules. Source: [Translate phone numbers for Direct Routing](https://learn.microsoft.com/en-us/microsoftteams/direct-routing-translate-numbers), section 'Configuring translation rules with PowerShell'. Checked 2026-09-24.
[^58]: PSTN usages in a voice routing policy are evaluated in order. Once a match is found in one usage, later usages are never evaluated, so usage order in the policy is critical. Source: [Configure call routing for Direct Routing](https://learn.microsoft.com/en-us/microsoftteams/direct-routing-voice-routing), section 'Example 2: Voice routing with multiple PSTN usages', Note after summary table, first bullet. Checked 2026-09-24.
[^59]: Assigning an online voice routing policy does not by itself let a user make PSTN calls. The user must also be enabled for Direct Routing (Phone System) and complete the other configuration steps. Source: [Manage call routing policies for Direct Routing](https://learn.microsoft.com/en-us/microsoftteams/manage-voice-routing-policies), introductory section, fourth paragraph. Checked 2026-09-24.
[^60]: If a Calling Plan user is also assigned an online voice routing policy, Teams checks each outbound dialed number against that policy's number patterns. A match routes the call over Direct Routing; no match sends it through the Calling Plan PSTN infrastructure. Source: [Configure call routing for Direct Routing](https://learn.microsoft.com/en-us/microsoftteams/direct-routing-voice-routing), section 'Voice routing policy considerations', first paragraph. Checked 2026-09-24.
