Skip to content

How to Assign Phone Numbers to Teams Users

Assign phone numbers to Teams users: the Teams Phone license you need, getting or porting numbers, Set-CsPhoneNumberAssignment, number types, and emergency address.

MGMCSA Guru Team August 17, 2026 8 min read
Workflow for assigning a phone number to a Teams user: Teams Phone license, acquiring or porting a number, assigning it, and setting an emergency address

Giving a Teams user a phone number sounds like a one-step job, but it has prerequisites that bite if you skip them. The user needs the right license, you need a number from somewhere, the number’s type has to match where it came from, and you need an emergency address attached so a 911-equivalent call can be located. Miss any of those and the number either won’t assign or won’t route calls.

This guide walks the whole path in order: the license that makes calling possible, getting or porting a number, assigning it in the admin center or with PowerShell, and the number-type detail that trips up most first-time setups. If you haven’t yet decided how Teams connects to the phone network, read the Calling Plan vs Operator Connect vs Direct Routing comparison first — that choice shapes everything below.

Step 1: confirm the license

Open the user in the Microsoft 365 admin center and check their assigned licenses, or verify it in PowerShell. The two things to look for are a Teams Phone license (sometimes bundled in higher-tier suites) and, if you’re using Calling Plan, a Calling Plan license for the minutes.

A number assignment that silently fails or throws a licensing error is nearly always this — the Teams Phone license isn’t applied, or it was applied seconds ago and hasn’t propagated. Give license changes a little time to land before assuming something else is wrong.

# Connect to Teams PowerShell
Connect-MicrosoftTeams

# Check whether the user is enabled for Enterprise Voice and licensed
Get-CsOnlineUser -Identity [email protected] |
  Select-Object UserPrincipalName, EnterpriseVoiceEnabled, LineUri, FeatureTypes

Step 2: get or port the numbers

Where the number comes from depends on your PSTN connectivity model, and it determines the number type you’ll use when assigning.

  • Calling Plan: acquire new numbers directly from Microsoft in the Teams admin center under Voice > Phone numbers > Add, or port existing ones to Microsoft.
  • Operator Connect: your participating carrier provisions numbers that then appear in the Teams admin center, ready to assign.
  • Direct Routing: numbers come from your own carrier or SIP trunk terminating on your SBC. They don’t get “acquired” in the portal — you assign them once they exist on your carrier side.

If you’re keeping existing numbers, that’s a port, and it runs on the losing carrier’s timeline, not yours.

Before you assign a number

  • User has a Teams Phone license (plus Calling Plan minutes if using Calling Plan)
  • You've chosen the PSTN model — Calling Plan, Operator Connect, or Direct Routing
  • The number exists: acquired from Microsoft, provisioned by the operator, or live on your SBC
  • You know which PhoneNumberType matches the number's source
  • You have a civic emergency address ready to attach

Step 3: assign the number

You can assign through the Teams admin center or PowerShell. The admin center is fine for one user; PowerShell is the way to do it at scale or in a script.

In the admin center, go to Voice > Phone numbers, select the number, choose Edit / Assign, and pick the user. For Calling Plan and Operator Connect numbers you also set the emergency location here.

In PowerShell, the current cmdlet is Set-CsPhoneNumberAssignment. It replaced the older Set-CsUser -LineUri and Set-CsOnlineVoiceUser approaches, which you’ll still see in old guides — don’t use them on current tenants.

# Direct Routing number
Set-CsPhoneNumberAssignment -Identity [email protected] `
  -PhoneNumber +14255550123 -PhoneNumberType DirectRouting

# Calling Plan number
Set-CsPhoneNumberAssignment -Identity [email protected] `
  -PhoneNumber +14255550148 -PhoneNumberType CallingPlan

# Operator Connect number
Set-CsPhoneNumberAssignment -Identity [email protected] `
  -PhoneNumber +14255550172 -PhoneNumberType OperatorConnect

The number must be in E.164 format — a leading +, the country code, then the number, no spaces or dashes. +14255550123, not (425) 555-0123.

The three number types, side by side

The PhoneNumberType parameter is the bridge between the number and how it reaches the phone network. Match it to the source, every time.

PhoneNumberType by PSTN model

CallingPlan Number acquired from or ported to Microsoft
OperatorConnect Number provisioned by a participating carrier
DirectRouting Number from your own carrier/SBC

For Direct Routing there’s one extra step the other two don’t need: the user has to have a voice routing policy assigned so Teams knows how to route their calls through the SBC. Assigning the number without a routing policy gives you a number that still can’t call out.

Grant-CsOnlineVoiceRoutingPolicy -Identity [email protected] `
  -PolicyName "US-Routing"

Step 4: set the emergency address

Don’t treat this as optional. An emergency address (emergency location) maps the number to a civic address so that when someone dials emergency services, dispatchers can be routed the caller’s location. It’s a safety requirement and, in many regions, a legal one.

How you set it depends on the model:

  • Calling Plan / Operator Connect: assign an emergency location to the number, either during assignment in the admin center or with Set-CsPhoneNumberAssignment -LocationId. Locations are created and validated under Locations > Emergency addresses in the Teams admin center.
  • Direct Routing: emergency calling is handled through emergency calling policies and network/site location data rather than a single per-number field, because routing of emergency calls goes through your SBC and carrier.
# Get the LocationId of a validated emergency address
Get-CsOnlineLisLocation | Select-Object Description, LocationId

# Assign the number with the emergency location in one step
Set-CsPhoneNumberAssignment -Identity [email protected] `
  -PhoneNumber +14255550123 -PhoneNumberType CallingPlan `
  -LocationId "<location-guid>"

Verify and troubleshoot

After assigning, confirm the number actually landed on the user and that they’re enabled for calling.

Get-CsPhoneNumberAssignment -AssignedPstnTargetId [email protected]

Get-CsOnlineUser -Identity [email protected] |
  Select-Object UserPrincipalName, LineUri, EnterpriseVoiceEnabled

If the number is assigned but calling doesn’t work, check these in order:

  1. License — Teams Phone applied and propagated.
  2. PhoneNumberType — matches the number’s actual source.
  3. Voice routing policy — assigned, for Direct Routing users.
  4. Propagation — recent changes can take time to take effect; have the user restart Teams.

Common assignment failures

Number assigns but can't call PhoneNumberType doesn't match the source, or no voice routing policy (Direct Routing)
Assignment throws a license error Teams Phone license missing or not yet propagated
Calls work but emergency calling warns No validated emergency address assigned
Old LineUri command fails Use Set-CsPhoneNumberAssignment instead of Set-CsUser -LineUri

Wrapping up

Assigning a phone number to a Teams user is a chain, not a single step: confirm the Teams Phone license, get or port a number, assign it with Set-CsPhoneNumberAssignment using the right PhoneNumberType, add a voice routing policy if it’s Direct Routing, and attach a validated emergency address. The mismatched-type mistake is the one that bites most often, so when a freshly assigned number won’t route, start there.

If you’re still weighing how Teams should reach the phone network, the Calling Plan vs Operator Connect vs Direct Routing comparison lays out the trade-offs, and the broader Microsoft Teams guides cover the call-routing features you’ll build on top once numbers are flowing.

Frequently asked questions

What license do I need to assign a phone number in Teams?

Each user needs a Teams Phone license on top of their Microsoft 365 license. With Calling Plan you also need a Calling Plan license (or pay-as-you-go) for the actual PSTN minutes. Operator Connect and Direct Routing supply the calling through a carrier, so they don't need a Microsoft Calling Plan, but the Teams Phone license is required either way.

How do I assign a phone number to a Teams user with PowerShell?

Use Set-CsPhoneNumberAssignment with the user's identity, the number in E.164 format, and the PhoneNumberType that matches how you got the number (CallingPlan, OperatorConnect, or DirectRouting). For example: Set-CsPhoneNumberAssignment -Identity [email protected] -PhoneNumber +14255550123 -PhoneNumberType DirectRouting. This replaced the older Set-CsUser -LineUri command.

What's the difference between Calling Plan, Operator Connect, and Direct Routing numbers?

They're three sources for the number. Calling Plan numbers come from Microsoft. Operator Connect numbers come from a participating carrier and appear in the Teams admin center. Direct Routing numbers come from your own carrier or SBC. The PhoneNumberType you set when assigning the number has to match its source, or calls won't route.

Can I keep my existing phone numbers in Teams?

Yes. You can port existing numbers from your current carrier. With Calling Plan you port them to Microsoft; with Operator Connect and Direct Routing the numbers stay with your carrier. Porting timelines depend on the losing carrier and country regulations, not on Teams, so plan ports well ahead of any cutover.

Do I have to set an emergency address for each number?

Yes, you should. Assigning an emergency location maps the number to a civic address so emergency services can locate the caller. For Calling Plan and Operator Connect numbers you set an emergency address during or after assignment; for Direct Routing you configure emergency calling policies and locations. Skipping it is both a safety and a compliance problem.

Why does the assigned number not work for calls?

The most common cause is a PhoneNumberType that doesn't match the number's source — a Direct Routing number assigned as CallingPlan won't route. Other causes are a missing Teams Phone license, a voice routing policy not assigned (Direct Routing), or the change simply not having propagated yet. Confirm the license, the type, and the routing policy in that order.

Sources & further reading

Official vendor documentation referenced while writing this guide.

MG

MCSA Guru Team

IT & Systems Administration

We are working IT pros and system administrators who spend our days in Windows Server, Microsoft 365, and the wider Microsoft stack. MCSA Guru is where we write down the fixes and walkthroughs we wish we had found the first time.

MCSA Guru provides independent, educational IT guidance. Microsoft, Windows, Windows Server, Microsoft 365, Exchange, and Microsoft Teams are trademarks of Microsoft Corporation; Docker is a trademark of Docker, Inc. MCSA Guru is not affiliated with or endorsed by Microsoft or Docker. Always test changes in a safe environment before applying them in production.

Related guides

Fixing something right now?

Jump straight into the guide library or search for the exact error or task you are dealing with.