For those looking to leverage the Phone System capability in Office 365 with Skype for Business or Microsoft Teams, the introduction of Tenant Dial Plans was a welcome addition to the feature set. Essentially, a Tenant Dial Plan allows organisations to write their own rules about how phone numbers work in their business, most commonly used to facilitate short-dialing, such as a 4- or 5-digit extension dialing plan. If you’re not familiar with Tenant Dial Plans, the Microsoft Docs page is a great place to start:
Microsoft Docs: What are Dial Plans? (https://docs.microsoft.com/en-us/microsoftteams/what-are-dial-plans)
This page describes the concept of a Service Country dial plan that Microsoft create and maintain for each country where they offer Office 365 Phone System services, which cannot be modified by the end customer. This is then merged with Tenant Dial Plans that can be created by each organisation at either a Global, or User level. Also worth noting is a limit of only 25 normalization rules that can be added per individual Tenant Dial Plan that you create. Those familiar with the FastTrack design resources and Practical Guidance for Cloud Voice framework will have seen the following inheritance diagram, which explains how Tenant Dial Plans sit underneath the Service Country dial plan, and the rules from both are always merged:
For organizations using Microsoft Phone System in Australia, there are only three normalization rules present in the AU Service Country dial plan:
Name | Description | Pattern | Translation |
AU Intl Dialing | AU International Dialling Rule | ^0011(\d+)$ | +$1 |
AU Extension Rule | AU Extension Rule | ^((\+)?(\d+))(;)?(ext|extn|EXT|EXTN|x|X)(=)?(\d+)$ | $1;ext=$7 |
AU Long Distance | AU Long Distance Dialing Rule | ^0(\d+)$ | +61$1 |
So we’ll need to create a few additional rules to make sure all types of PSTN phone numbers within Australia can be dialed, such as toll free numbers that begin with 1800 / 1300, which are not correctly handled by the above rules alone – and we’ll use a Tenant Dial Plan to achieve this.
What’s not documented however, is that when you create a Tenant – User dial plan, it will initially inherit all the rules from your Tenant – Global dial plan as well – but there’s a catch – it’s not merging your Global and User Tenant Dial Plans dynamically as occurs with the Service Country dial plan, it’s only a one-time copy when you first create your User Tenant Dial Plans:
So how can we take advantage of this? Populate your Tenant – Global dial plan first, with all the rules that apply globally. For example, all of your short-dialing 4- or 5-digit rules that apply across your entire organization. If all, or most of your users are based within one country, you can also add any rules required for the country PSTN numbering plan that aren’t covered by the default Microsoft-created Service Country dial plan, such as the following for Australia:
Name | Description | Pattern | Translation |
AU Service Numbers | Toll free 1300 / 1800 numbers | ^(1[3,8]00\d{6,7})$ | +61$1 |
Sydney Extension range | 4-digit dialing for 2xxx | ^(2\d{3})$ | +6125555$1 |
Now when you create your Tenant – User dial plans, they will be pre-populated with all the organization-wide rules you’ve already created in your Tenant – Global dial plan. You’re still stuck with the 25-rule limit on each of your Tenant – User dial plans, but you only then need to add the rules that only apply to certain parts of your organization. For example, you might redirect “9” to the Front Reception desk at some sites, or you might write a rule to correctly handle an 8-digit local PSTN number within the (02) area code for NSW/ACT:
Name | Description | Pattern | Translation |
SYD-Reception | Route 9 to Sydney Reception | ^9$ | +61255552000 |
NSW-Local | 8-digit local numbers in 02 area code | ^([2-9]\d{7})$ | +612$1 |
And remember – it’s a one-time copy when the Tenant – User dial plan is initially created. So if you go back and add, remove or improve any of your normalization rules in the Tenant – Global dial plan after the fact, they won’t be re-copied down into your Tenant – User dial plans, you’ll have to update each of them manually.
Lastly, you’ll notice we didn’t need to create a rule to correctly normalize 000 for Emergency Services within Australia. During testing, it appears there is hard-coded client-side behaviour that converts the “000” digit string into +000 within Australia – which routes to Emergency Services as expected – and if you use one of your 25 rules to look for a ^(000)$ pattern and translate it into +61000 as we would normally do, it gets ignored anyway!
Credit to Igor @ Telstra Purple on testing!
In ms teams client correct translating of number is not getting done. However in powershell it shows the correct translation of the number with dial plan.