My Demo 365: Teams Phone – Shared Calling – Operator Connect Edition

It’s me! Hi again! Last week I wrote about an exciting new feature called Shared Calling for Teams Phone. The focus of the past last week was around Microsoft 1st Party Calling Plans – specifically using PAYG (Pay As You Go) + Communication Credits to power Shared Calling. You can go read that if you’d like. One thing I felt that was super important to copy/paste is my point of view on this. So, these next two paragraphs are directly taken from that last post:

If you have users who aren’t heavy users of the Public Switched Telephone Network (PSTN), they might not need a dedicated assigned phone number. Instead, for these users, you should consider Shared Calling as a simpler, easier-to-implement phone solution for your organization. Shared Calling greatly simplifies phone number management for some users. Shared Calling also reduces costs for your organization because you don’t need a dedicated phone number for every user.

This is why I’m excited about it. If you’ve been managing Phone Systems like me for decades, especially legacy PBX, the concept is a no-brainer. You have plastic phones on desks, they don’t have dedicated phone numbers, they are just expected to work. Would you want to walk up to a water fountain, press the button and water not come out? Would you want to flip a light switch and the light not come on? Why would you want to deploy a Phone System and not have *every* phone be able to make phone calls? There has been some level of friction here with Teams Phone and Shared Calling removes that for the vast majority of use cases. Let’s walk through it a bit in my usual top-down style. When we’re done, I’ll provide a set of links at the bottom of this article for your continued learning on the subject.

Today, I want to basically reprise that post but instead focus on Operator Connect. If you recall, or if you’re new, Teams Phone can provide PSTN Calling via 1st Party and 3rd Party PSTN Options. Today’s post is this one – Operator Connect – and specifically I’m using Pure IP in this example. They have generously enabled my M365 Tenant with a small handful of phone numbers and I’ve been super happy! Let’s get started.

1 – Assign Teams Phone licenses and enable users for voice
This one is fairly straight forward. You want to make sure the “end users” that will take advantage of Shared Calling have a Teams Phone license. This can be a bundled license like with E5, or a Teams Phone Standard standalone license, or even a device license including Teams Phone – like Shared Device License or Teams Room Pro. In this demo, I’ll be using Lee and Lidia:

Super. Now, they ahve licenses. But, they need to be EV enabled (Enterprise Voice Enabled). Let’s do this with PowerShell using the cmdlet set-CsPhoneNumberAssignment. Here’s a screen shot with the before, during, and after.

Great. Let’s move on.

2 – Assign number to resource account for inbound/outbound calling
This is the heart of the matter. There is a resource account – either a net-new or existing – that needs to have a phone number assigned. This resource account can be Teams Phone powered by either Calling Plans (Pay As You Go only), Operator Connect, or Direct Routing. For this blog, I’ll focus on my Pure IP Operator Connect setup. Visually, this looks like this with the Resource Account at the center and powering the Shared Calling experience.

For this example, I’ll use the +1-502-973-8166 Phone Number. As you can see, this phone number is a Pure IP provided number for Voice App (Resource Account) usage.

One quick note, if you pay attention to our Learn article, we call out that if you want to use Operator Connect, you should validate that the Operator supports it.

I have validated that Pure IP does support Shared Calling. They confirmed that to me in late October.

Let’s create a new Resource Account from Teams Admin Center -> Voice -> Resource Accounts

And let’s give that a Resource Account license in M365 Admin Center

Okay, now we need to give it the phone number above!

Done. Moving on.

3 – Associate resource account with Auto Attendant for inbound calling
This one is really fielder’s choice. If your Shared Calling scenario doesn’t require inbound calling, then, this is optional. But, if you *do* want to provide inbound calling reach to the Shared Calling enabled users, an AA is a great way to handle that. In my case, I have a simple AA with no operator, and 24×7 availability and assign this Resource Account to it.

4 – Assign a location to the resource account for emergency calling
In Teams Admin Center -> Locations – Emergency addresses, I previously has setup setup my home office in Crestwood, Kentucky where I live. And, when I onboarded to Operator Connect with Pure IP, they pre-populated my location for me. There’s nothing special I had to do here. All of my Pure IP numbers already have the location you can see in Teams Admin Center:

But, just to prove it out, here’s that location:

And here’s that location ID properly being applied to the Pure IP phone number we’re talking about

That’s it. Let’s go on.

5 – If you’re using a resource account with Calling Plans, assign the additional PAYG/Credits
If you read my previous post on Shared Calling, you saw me handle this. But, today, I’m focused on Operator Connect so I have nothing to do here. No additional license work to do. Let’s continue.

6 – Create a voice routing policy without PSTN usages
Shared Calling users must not have assigned voice routing policy with PSTN usages. So, unless your Global Voice Routing policy has empty PSTN usages, you’ll want to setup a new voice routing policy and assign this to Shared Calling users.

I created a SharedVRP-Empty policy via Teams Admin Center -> Voice -> Voice routing policies

and then assigned it to Lee & Lidia

7 – Enable emergency calling for users
Shared Calling takes Emergency Calling into account. You can read up more detail in our existing Emergency calling details. You aren’t *required* to define emergency numbers for a Shared Calling policy. If you don’t define a set of emergency numbers, when an emergency call is made, the number associated with the resource account in the Shared Calling policy is used. I have not configured Emergency Calling policies. Additionally, I don’t think I plan to test emergency calling with Pure IP anytime soon. So, I left this alone.

8 – Create the Shared Calling Policy
Currently this is only configured via PowerShell (TPM Module 5.5 or greater). This will eventually come to Teams Admin Center, but for now, it’s PowerShell only.

To configure and manage Shared Calling policies, you’ll use the following Teams PowerShell cmdlets:

To create the Shared Calling Policy you use the object ID of the Resource Account – not the UPN. So, in the example below I call that out with the “.identity” method

Note: I didn’t include emergency numbers when I created this – see #7 above. If I wanted to, I could. Any emergency numbers I add must be the same *type* (Calling Plan, Operator Connect, Direct Routing) of phone numbers as the resource account. You can have different types of resource accounts with different PSTN types. But, within each Shared Calling Policy + Resource Account pair, all phone numbers must be of the same type.

9 – Assign the Shared Calling Policy to users
We’re at the end. We’ll simply “grant” the policy. Again, this is PowerShell only for now just like #8 above. You can see the before, during, and after below.

Make It Real!
Right, let’s prove this works. How about a simple outbound test. We’ll use Lidia and her Poly CCX phone.

Let’s get to that dialpad and call my mobile

Right. Inbound call coming. Notice the CallerID: +1-502-973-8166. That’s the phone number we assigned above to the Resource Account powering this Shared Calling policy.

Let’s hang up and wrap this up but first an important note: you *may* need to assign a CallerID Policy to make sure the outbound caller ID is properly reflected. AFAIK this is only a Direct Routing requirement. I haven’t had to do this for PAYG or Operator Connect powered Shared Calling scenarios.

Resources for further learning
Now that we’re at the end, I promised to highlight some useful resources for your continued learning.

Phone System documentation for Shared Calling

Plan for Shared Calling – Microsoft Teams | Microsoft Learn 
Configure Shared Calling – Microsoft Teams | Microsoft Learn 
Shared Calling scenario – Microsoft Teams | Microsoft Learn 

TPM PS cmdlet documentation

New-CsTeamsSharedCallingRoutingPolicy 
Get-CsTeamsSharedCallingRoutingPolicy 
Remove-CsTeamsSharedCallingRoutingPolicy 
Set-CsTeamsSharedCallingRoutingPolicy 
Grant-CsTeamsSharedCallingRoutingPolicy 

YouTube – from Shervin Shaffie who is a Microsoft Principal Technical Specialist

Shervin Shaffie (Principal TS) Walkthrough

We made it. You did it. We’re done. I’d love to hear any comments about this and if you find this useful or if this doesn’t *yet* fit a scenario you have where you need to provide Teams Phone to users without dedicated phone numbers. This looks compelling for most. Tell me what you think.