It is common in larger organisations for users to have internal extension numbers rather than direct dial numbers. The reason is more often down to cost as direct dial (DDI) numbers are rented on a monthly basis from the telecoms service provider. Although the cost of renting a DDI can be as low as £1 per month, when companies have several thousands of DDI numbers, this quickly escalates.
Therefore, extensions for users is preferred for those who do not require a direct number but still require the ability to make outbound business calls.
Extensions are internal numbers that are controlled on the company’s PBX system. They are for internal use only and cannot be called directly from the Public Switched Telephone Network (PSTN), or outside of the company. The PBX takes care of the internal routing which allows users to dial 57891 to reach ‘George Dennis’ for example, and is unique to that PBX.
Difficulties arise when these extension users want to receive incoming calls from external callers. How can they do this?
Option 1 is to employ a company switchboard. The caller dials the switchboard number and an operator answers and greets the caller. The caller asks the operator to connect them to ‘George Dennis’ and the operator searches an internal phone directory to find George’s extension and then transfers the caller to that extension.
Option 2 is to use software. Using an automated directory services application, or auto attendant as it is known, performs the same function as the operator in option 1 but without the dependency on a human answering the phone. Instead, the auto attendant will prompt the caller to enter the extension number of the person they want to speak with. The caller will use their dialpad and enter the extension number and the auto attendant will transfer the caller to that extension.
Option 2 is more favourable to companies because they do not need to employ dedicated staff to support this service.
Auto Attendants have been available in PBXs for a number of years. However, until recently, Microsoft Teams has not been able to support this.
You may also like: How To Enable Microsoft Teams PSTN Connectivity
Extension Dialing in Microsoft Teams
To enable extension dialing in Microsoft Teams, you will need an auto attendant and some configuration of your Entra ID (formerly Azure Active Directory). If your organisation runs a hybrid setup, this may also involve on-prem Active Directory as the source of authority.
Before creating the auto attendant it is important to get your Active Directory into a supportable state for extension dialing in Teams.
Security Groups
By default, the auto attendant will search for extensions across your entire Entra ID tenant. This may include extensions that you do not want exposed to external callers, such as executives. To control this, create a security group in Entra ID (or a group synced from on-prem Active Directory using Entra Connect) and use it to exclude the users you don’t want the auto attendant to surface or transfer callers to.
Once you have created this group, add the members who need to be excluded.
Telephone Field in Entra ID
In order for the auto attendant to find users by extension number, their telephone field in Entra ID (formerly Azure Active Directory) must be properly formatted. The auto attendant searches Entra ID for the extension number before transferring the call to the user in Teams. For this reason, the telephone number field must match one of the supported formats.
The format must be one of the following:
+441234567890;ext=12345 +441234567890x12345 x12345
x is a literal character which defines an eXtension, and 12345 represents the extension number. If you wish to include the board number in their telephone number field e.g. +441234567890, you must use the full E.164 format. More information on supported formats can be found here in Microsoft documentation.
Cloud-only identities: Use Microsoft Graph PowerShell (the supported replacement for legacy MSOnline cmdlets). Example:
Update-MgUser -UserId [email protected] -BusinessPhones "+441234567890x12345"
Microsoft Graph PowerShell is now the recommended replacement for older MSOnline (Set-MsolUser) cmdlets, which are deprecated.
Hybrid environments: If you run on-prem Active Directory synced to Entra ID, the authoritative source is still AD. You must set the telephoneNumber attribute in AD and let it flow to Entra ID through Entra Connect. Example:
Set-ADUser -Identity user -Add @{telephonenumber="+441234567890x12345"}
Once updated, allow (or force) Entra Connect synchronisation so that the changes replicate into Entra ID and become available in Teams.
Suggested Reading: Use This Microsoft Teams Calling Integration To…
Creating the Teams Auto Attendant for Extension Dialing
Now that your Entra ID and Teams users are configured properly, you can configure your auto attendant.
For this part of the blog, we assume that you know how to create an auto attendant at a basic level. The Resource Account for the auto attendant must have a Teams Phone Resource Account license assigned to it (formerly known as the Phone System Resource Account license). Make sure that this has been assigned before proceeding.
Step 1 – Assign the phone number
Assign the phone number to the resource account that external callers will use to access the auto attendant.
Step 2 – Configure the call flow
When editing the auto attendant in the Teams Admin Center, navigate to the call flow page and configure the following settings:
- Under Call routing options, click Play menu options.
- Add a greeting (custom recording or Text-to-Speech). In your greeting, instruct the caller what to do, e.g., “If you know the extension of the person you want to speak to, enter it now followed by the # key.”
- Under Directory Search, select Dial by extension and click Next.
You do not need to configure key options unless your use case requires them.

Step 3 – Set an operator (recommended)
For best user experience, configure an operator for the auto attendant. This provides callers with a fallback if their call cannot be routed to a user.
Step 4 – Configure scope and availability
Continue through the auto attendant setup, configuring out-of-hours and holiday handling as required. You will then reach the Dial Scope setting. This is where you exclude the security group containing any users that should not be reachable via the auto attendant.

Once completed, save the auto attendant configuration.
Suggested blog post: How To Connect Multiple Carriers To Microsoft Teams
Teams User Configuration
For callers to be able to reach users when dialing by extension via a Teams auto attendant they must also be licensed for Microsoft Teams Phone (formerly known as Phone System). It is not supported for non-enterprise voice enabled users to receive transferred calls from external sources.
Once a user has a Teams Phone license, they must be enabled for Enterprise Voice. They MUST be assigned the same number in their Teams LineURI as is configured in their Entra ID telephone field.
Microsoft Teams does not automatically cross-check these two properties. The LineURI in Teams and the telephoneNumber attribute in Entra ID are independent, but they must contain the same data for extension dialing to work properly.
For example:
- If you have x12345 configured in the Entra ID telephone number field but in Teams the same user has
2346set as their extension in the LineURI, the auto attendant will not be able to connect the caller correctly. - If another user has extension 12345, the call will be misrouted to the wrong person.
Testing Dial by Extension in Teams
Once configuration is complete, you can test Microsoft Teams dial by extension:
- Call the number assigned to the auto attendant.
- Enter the extension number of the user you want to reach.
- You should be connected successfully.
But this is only part of the calling story for these users. What if internal users want to call a Teams user extension?
Internal Calling for Extension Users in Teams
Calling internally using Microsoft Teams, the best practice is to search for the user you wish to call via name rather than by extension number.
However, extensions remain useful when calling internal services such as Security, HR, Finance, a canteen, or First Aid.
- If your organization has one number per service, it’s easy: users can just search for the service name in Teams (e.g., search for First Aid and call directly).
- If there are multiple service numbers per location, users may see several accounts in Teams, which makes it harder to choose the right one. In these cases, extensions are easier to remember and use.
For example, you could configure Teams so that dialing 7777 always routes a user to their local First Aid desk, regardless of building or location.
To achieve this:
- In each plan, define a transformation rule that converts the short extension (e.g., 7777) into the correct full number for that site’s service account.
- Create a dial plan in Teams for each location.
- Assign that plan to the users in that location.

Internal Calling from PBX to Extension Users in Teams
In companies that have disparate phone systems with a number of users in Teams and another set on a PBX, being able to call between these systems becomes a critical business requirement.
With Microsoft Teams, it is only possible to interconnect with PBX users if the Teams user is configured for Direct Routing. If the Teams user is configured with Microsoft Calling Plan or Operator Connect, then PBX users can only reach them by dialing their Direct Dial (DDI) number.
If the Teams user is Direct Routing–enabled, PBX users can call these Teams users directly using their extension number.
To achieve this, the Teams user’s LineURI must be configured in the format:
+441234567890;ext=12345
This can be set in the Teams Admin Center, or via PowerShell:
Set-CsPhoneNumberAssignment -Identity [email protected] -PhoneNumber "+441234567890;ext=12345" -PhoneNumberType DirectRouting

Once configured, you must also update your Direct Routing SBC to prepend the shared CLI and extension information (ext=) to the called number transformation rules before the call is sent to Teams. In addition, update your PBX routing rules so that PBX-originating calls to Teams extensions are correctly routed through your Teams SBC.
External Calling for Extension Users in Microsoft Teams
It is possible to grant outbound external calling for users with extension numbers in Teams using Direct Routing.
As their extension number is not a public number, if you simply assigned them a voice routing policy to route their calls to your SBC and onto your carrier, one of two things will occur.
- The call may be denied by your carrier due to invalid Caller ID
- The call may be processed by your carrier but the Caller Display will be set to ‘Anonymous’
The problem with anonymous calls is that the receipient answer rate for these calls is significantly lower than calls with a Caller Display. This burns time and resources in trying to repeatedly contact the customer until they answer. Compounding the problem even more, should the recipient ignore the anonymous call and leave it to voicemail, the caller will verbally leave a message and a number to call back on (which will be the auto attendant number).
However, because voicemail systems cannot call back numbers verbally left within the message, this requires the listener to remember (or write it down) the number and then place the return call manually.
This almost never happens because it is too much effort for them so messages get ignored, creating a viscious circle.
Best practice is to ensure that Teams presents a callable number approved by your carrier. This should typically be the main number associated with your auto attendant, so the recipient can simply call back, then enter the extension when prompted.
To achieve this in Teams, you can use Caller ID Policies:
- Choose the auto attendant’s Resource Account that provides dial-by-extension functionality.
- In the Teams Admin Center, create a Caller ID Policy.
- Under Replace Caller ID with, select Resource Account.

Once created:
- Assign the Caller ID Policy to users with extensions (individually in the Teams Admin Center or in bulk using PowerShell).
Grant-CsCallingLineIdenity -Identity [email protected] -PolicyName "PolicyName"
- Ensure the auto attendant’s Resource Account is assigned the correct Voice Routing Policy so calls route via your Direct Routing SBC:
Grant-CsOnlineVoiceRoutingPolicy -Identity [email protected] -PolicyName "RoutingPolicyName"
How Callroute Can Simplify Extension Dialing
Using Callroute, you can simplify dial-by-extension in Teams by using our self-service portal and automated provisioning solution.
Our self-service portal allows you to connect your own carrier to Teams, and combined with complete number management, you can assign inbound numbers to your users and resource accounts in just a few clicks with no PowerShell or Teams Admin Center expertise required.
We will automatically assign dial plans and voice routing policies so that the accounts are properly configured.
Using our Orto for Teams automated provisioning solution that synchonises with your Microsoft Entra ID, Callroute will read the telephone number field and automatically assign the LineURI to the Teams user during its synchronisation. You can of course override this manually within our portal if required.
Instead of spending hours managing LineURI formats, SBC rules, dial plans, and PowerShell commands, you can let Callroute automate the entire process. Our platform takes care of the heavy lifting, so your Teams users are extension-enabled and ready to go in minutes — not days.
👉 Start your free 14-day trial today and see how Callroute removes the complexity of extension dialing in Teams.
Or, if you’d like a guided walkthrough, book a 30-minute demo with our experts and we’ll show you how it works in your environment.


