Microsoft Teams Shared Calling — Everything You Need to Know

Chandra
SwiftM365 | Building for the M365 community
For years, enabling PSTN calling in Microsoft Teams meant one thing: assign every user their own phone number. For a 5,000-user organization where only 2,000 people actually need to make external calls, that meant paying for 5,000 Calling Plan licenses or 5,000 Direct Routing sessions — even if 60% of those users only needed to receive the occasional transferred call or make one external call per month.
Shared Calling changes this equation fundamentally. Introduced in late 2023 and now generally available, it allows Teams users to make and receive PSTN calls using a shared resource account's phone number — without needing their own personal DID. This is the most significant cost optimization feature Microsoft has added to Teams Phone since its launch.
What is Shared Calling?
In the simplest terms: instead of assigning a phone number to every user, you assign a phone number to a resource account linked to an Auto Attendant. Users are then assigned a Shared Calling policy that points to that resource account. When they make outbound PSTN calls, the caller ID shows the resource account's number (your company's main number). For inbound calls, the Auto Attendant handles routing to the correct person.
The Before and After
Before Shared Calling (Traditional Model):
With Shared Calling:
Who Should Use Shared Calling?
Shared Calling is ideal for:
Shared Calling is NOT ideal for:
Prerequisites and Licensing
Before configuring Shared Calling, ensure you have:
| Requirement | Details |
|---|---|
| Teams Phone license | Required for every Shared Calling user |
| Resource Account license | Microsoft Teams Phone Resource Account license |
| Calling Plan or DR | For the resource account (not individual users) |
| Phone number | Assigned to the resource account |
| Auto Attendant | Must be configured and linked to the resource account |
| Emergency address | Must be assigned to the resource account's number |
Step-by-Step Configuration
Step 1: Create a Resource Account
In Teams Admin Center → Voice → Resource Accounts → Add:
Or via PowerShell:
New-CsOnlineApplicationInstance -UserPrincipalName mainline-shared@contoso.com -DisplayName "Main Line - Shared Calling" -ApplicationId "ce933385-9390-45d1-9512-c8d228074e07"
Step 2: License the Resource Account
Assign these licenses in Entra ID (Azure AD):
For Direct Routing: No calling plan needed — just the Resource Account license.
Step 3: Assign a Phone Number to the Resource Account
In Teams Admin Center → Voice → Phone Numbers → Assign to the resource account.
Or PowerShell:
Set-CsPhoneNumberAssignment -Identity mainline-shared@contoso.com -PhoneNumber "+14255550000" -PhoneNumberType DirectRouting
Step 4: Assign Emergency Address
This step is critical — you cannot create a Shared Calling policy without an emergency address on the resource account.
Set-CsPhoneNumberAssignment -Identity mainline-shared@contoso.com -PhoneNumber "+14255550000" -PhoneNumberType DirectRouting -LocationId
Get the LocationId with:
Get-CsOnlineLisLocation | Select LocationId, Location, City
Step 5: Create an Auto Attendant
In Teams Admin Center → Voice → Auto Attendants → Add:
The Auto Attendant handles all inbound calls to the shared number and routes them to the appropriate user via name dial, extension dial, or menu selection.
Step 6: Create the Shared Calling Policy
In Teams Admin Center → Voice → Shared Calling Policies → Add:
Or PowerShell:
New-CsTeamsSharedCallingRoutingPolicy -Identity "MainLineShared" -ResourceAccountObjectId
Step 7: Enable Enterprise Voice for Users
Each Shared Calling user must have Enterprise Voice enabled but NO phone number assigned:
Set-CsPhoneNumberAssignment -Identity user@contoso.com -EnterpriseVoiceEnabled $true
Important: Do NOT assign a phone number to Shared Calling users. If a user has both a personal number and a Shared Calling policy, the personal number takes precedence.
Step 8: Assign the Shared Calling Policy to Users
Grant-CsTeamsSharedCallingRoutingPolicy -Identity user@contoso.com -PolicyName "MainLineShared"
Or assign to a group:
New-CsGroupPolicyAssignment -GroupId
Step 9: Configure Voice Routing Policy (Direct Routing Only)
For Direct Routing deployments, Shared Calling users need a Voice Routing Policy with PSTN usages that match the resource account's routing:
Grant-CsOnlineVoiceRoutingPolicy -Identity user@contoso.com -PolicyName "SharedCallingVRP"
How Calls Work with Shared Calling
Outbound Calls
Inbound Calls
- Dial by name (caller says or types the person's name)
- Dial by extension (if configured)
- Menu options ("Press 1 for Sales, 2 for Support...")
Emergency Calls
Advanced Scenarios
Multiple Shared Calling Policies
You can create multiple policies for different departments:
Each policy points to a different resource account with its own phone number and Auto Attendant.
Hybrid: Some Users Personal, Some Shared
A single tenant can mix personal numbers and Shared Calling:
This hybrid model gives you the best of both worlds — personal numbers where they matter, shared calling where they don't.
Multi-Site Shared Calling
For organizations with multiple offices, create separate Shared Calling policies per site:
Each site's users get the local Shared Calling policy, ensuring outbound calls show the correct local number.
Common Mistakes and Troubleshooting
Mistake 1: No Emergency Address on Resource Account
Symptom: "Save" button greyed out when creating Shared Calling policy
Fix: Assign an emergency address to the resource account's phone number before creating the policy
Mistake 2: User Has Both Personal Number and Shared Policy
Symptom: User's outbound calls use personal number, not shared number
Fix: Remove the personal number if you want Shared Calling to take effect. Personal numbers always take precedence.
Mistake 3: No Voice Routing Policy (Direct Routing)
Symptom: Shared Calling users can't make outbound PSTN calls
Fix: Assign a Voice Routing Policy with valid PSTN usages to each Shared Calling user
Mistake 4: Resource Account Not Licensed
Symptom: Phone number can't be assigned to resource account
Fix: Assign both the Teams Phone Resource Account license AND a Calling Plan (or configure DR) to the resource account
Mistake 5: Forgetting Pay-As-You-Go Minutes
Symptom: Outbound calls fail after a period of use
Fix: For Calling Plan resource accounts, ensure Communication Credits or a Pay-As-You-Go plan is funded. When minutes run out, outbound calls stop.
Mistake 6: Emergency Callback Number Mismatch
Symptom: Policy creation fails or emergency calls don't route correctly
Fix: Emergency callback numbers must match the phone number type (DirectRouting, CallingPlan, or OperatorConnect) AND country of the resource account.
Cost Comparison: Shared Calling vs Traditional
For a 2,000-user organization where 500 users need personal DIDs:
| Model | Monthly Cost (Approx) |
|---|---|
| Traditional (2,000 DIDs + Calling Plans) | $16,000-$24,000/month |
| Hybrid (500 DIDs + 1,500 Shared Calling + PAYG) | $6,000-$10,000/month |
| Savings | 50-60% reduction |
Limitations to Be Aware Of
Final Thoughts
Shared Calling is one of the most underutilized features in Teams Phone. Every organization I've assessed has users who don't need personal phone numbers but still need occasional PSTN access. Shared Calling fills this gap elegantly — and the cost savings are real.
My recommendation: audit your organization's call patterns. Identify users who make fewer than 5 external calls per week. Those users are prime candidates for Shared Calling. The ROI speaks for itself.
Need help setting up your resource accounts and voice routing for Shared Calling? SwiftM365 can generate resource accounts in bulk, configure dial plans, and build voice routing policies — all from a simple web interface.
---
Have questions about Shared Calling configuration? Reach out via our feedback page or contact me directly at +91 9011070193.

Written by Chandra
Passionate about simplifying Microsoft 365 administration for the community. Building free tools so admins can focus on what matters.
Subscribe to our blog
Get the latest posts delivered to your inbox