How to Configure Teams Emergency Call Routing Policies for Direct Routing Using PowerShell CsTeamsEmergencyCallRoutingPolicy

In modern enterprise telecommunications environments utilizing Microsoft Teams Phone with Direct Routing, ensuring compliant and reliable emergency calling (such as 911 in North America, 999 in the UK, or 112 in Europe) is an urgent legal and operational mandate. Telecommunications regulations (such as Kari’s Law and RAY BAUM’S Act in the United States) require enterprise telephony systems to support direct emergency dialling without access prefixes, route emergency calls to local Public Safety Answering Points (PSAPs), and transmit accurate caller dispatch information.

While CsTeamsEmergencyCallingPolicy manages security desk notifications and location lookups, the actual call routing path—including emergency dial strings, session border controller (SBC) routing, and PSTN usages—is governed by the CsTeamsEmergencyCallRoutingPolicy. Using PowerShell, administrators can define emergency numbers, map emergency dial masks, and enforce failover routing across enterprise Session Border Controllers.

Understanding CsTeamsEmergencyCallRoutingPolicy Architecture

The CsTeamsEmergencyCallRoutingPolicy cmdlets manage how emergency calls placed by Teams users are handed off to Direct Routing SBCs:

  • Emergency Numbers: Individual emergency records instantiated via New-CsTeamsEmergencyNumber that define the dialled digits (e.g. 911), emergency dial masks (e.g. 9911), and assigned PSTN usages.
  • PSTN Usages: Directs the emergency call to specialized voice routes associated with enterprise Direct Routing SBCs configured to communicate with emergency service carriers.
  • Site and Subnet Targeting: Allows applying site-specific emergency routing policies to physical office branches, ensuring calls route out of local SBC trunks matching the user’s geographic location.

Connecting to Microsoft Teams PowerShell

Open an elevated PowerShell session on your administrative workstation and connect to your Microsoft 365 tenant:

Connect-MicrosoftTeams

Verify that your session is active with appropriate Teams Administrator or Global Administrator privileges:

Get-CsTenant | Select-Object DisplayName, TenantId

Inspecting Existing Emergency Call Routing Policies

To view all emergency call routing policies defined in your tenant, execute:

Get-CsTeamsEmergencyCallRoutingPolicy

To view the default Global policy inherited by all users who do not have an explicit custom assignment:

Get-CsTeamsEmergencyCallRoutingPolicy -Identity Global | Format-List Identity, Description, EmergencyNumbers

In default tenant setups, the EmergencyNumbers property is typically empty until explicitly configured by administrators.

Creating Emergency Numbers for Direct Routing

Before creating or updating an emergency call routing policy, create one or more emergency number objects using New-CsTeamsEmergencyNumber. For example, to configure emergency number 911 with a dial mask allowing users to dial 9911 (accounting for legacy PBX habits):

$emergencyNumber911 = New-CsTeamsEmergencyNumber -EmergencyDialString "911" -EmergencyDialMask "9911" -OnlinePSTNUsage "Emergency-PSTN-Usage"

For organizations operating in the United Kingdom or Europe, configure corresponding numbers (such as 999 or 112):

$emergencyNumber999 = New-CsTeamsEmergencyNumber -EmergencyDialString "999" -EmergencyDialMask "9999" -OnlinePSTNUsage "UK-Emergency-Usage"

Creating a Custom Branch Emergency Call Routing Policy

Create a dedicated emergency call routing policy targeting a specific physical facility (for example, the London branch office):

New-CsTeamsEmergencyCallRoutingPolicy -Identity "London-Branch-EmergencyRouting" -Description "Direct Routing emergency call routing for London Office SBCs" -EmergencyNumbers @($emergencyNumber999) -AllowEnhancedEmergencyServices $true

To create a multi-number policy supporting both standard emergency numbers and test dial strings (such as 933 for automated 911 address verification):

$testEmergencyNumber = New-CsTeamsEmergencyNumber -EmergencyDialString "933" -OnlinePSTNUsage "Emergency-PSTN-Usage"
New-CsTeamsEmergencyCallRoutingPolicy -Identity "US-Headquarters-EmergencyRouting" -Description "Routes 911 and 933 test calls via US SBCs" -EmergencyNumbers @($emergencyNumber911, $testEmergencyNumber) -AllowEnhancedEmergencyServices $true

Modifying Existing Emergency Routing Policies

To update an existing policy—such as adding a newly instantiated emergency number or modifying PSTN usages—use Set-CsTeamsEmergencyCallRoutingPolicy:

Set-CsTeamsEmergencyCallRoutingPolicy -Identity "US-Headquarters-EmergencyRouting" -EmergencyNumbers @($emergencyNumber911, $testEmergencyNumber)

To clear emergency numbers from a policy during decommissioning:

Set-CsTeamsEmergencyCallRoutingPolicy -Identity "Old-Policy" -EmergencyNumbers @()

Assigning Emergency Call Routing Policies

Assign your custom emergency call routing policy to a specific user with Grant-CsTeamsEmergencyCallRoutingPolicy:

Grant-CsTeamsEmergencyCallRoutingPolicy -Identity "[email protected]" -PolicyName "US-Headquarters-EmergencyRouting"

To assign the policy across an entire departmental security group in Microsoft Entra ID:

Grant-CsTeamsEmergencyCallRoutingPolicy -Group "London-Staff-GroupID" -PolicyName "London-Branch-EmergencyRouting" -Rank 1

To unassign an explicit policy so the user reverts to inheriting the tenant Global baseline:

Grant-CsTeamsEmergencyCallRoutingPolicy -Identity "[email protected]" -PolicyName $null

Verifying User Policy Assignment

Confirm the effective policy applied to a user account:

Get-CsUserPolicyAssignment -Identity "[email protected]" -PolicyType TeamsEmergencyCallRoutingPolicy

By effectively configuring CsTeamsEmergencyCallRoutingPolicy in PowerShell, organizations guarantee reliable, legally compliant emergency voice routing across enterprise Microsoft Teams Direct Routing infrastructure.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.