Creating custom normalization rules in Office365

We are all used to typing the numbers we want to reach, and magically, Skype for Business knows in which country you want to dial. Note that in order to actually reach to a PSTN endpoint, you have to dial the number in E.164 format.

To get a little bit into specifics, the E.164 number is constructed from: Country Code + Area Code +  Subscriber Access number. For example my fixed landline might be: +40268500xxx, where:

  • +40 is the Country Code for Romania
  • 268 is the Area Code for Brasov (yeah, I’m from Dracula’s land)
  • And 500xxx is the actual Subscriber Access number.

But wait, when people try to reach me from within the country, or even from within the same Area Code, they will not write the whole number. Instead, they will most likely call 268500xxx.

This is where the Dial Plans and the magical normalization rules come into play.

With Office365, based on your Usage Location, you will also get automatically assigned with a Dial Plan specific for your country.

For example, I’ve set a user with UsageLocation set on UK and automatically, this user has a UK Dial Plan:

Now, if I query this Dial plan, we will see a couple of normalization rules in effect:

Here, for example we can see the “GB Intl Dialing” normalization rule which says:

If you detect this pattern: ^00(\d+)$, translate to +$1. What it actually means is: If a number starts with “00”, replace it with a + sign. Why is that? Because people are used to dial 00 instead of the + sign. So if wanting to call a US number, people might dial 001xxx instead of +1 (remember, we have to have the numbers in E.164 format).

Now, what happens when the Normalization Rules predefined in the automatically assigned Dial Plan are not enough? Well, here is where the Tenant Dial Plan kicks-in. Sweet!

I have seen the ask where O365 users would like to have a short number for internal emergencies. For example, dialing 400 from Skype for Business, should ring at +40268500xxx.

Here is how to accomplish that:

First we will create a variable which will contain the value for a New Normalization rule where we define the pattern that we would like to be normalized:

$nr1 = New-CsVoiceNormalizationRule -Identity testA/nr1 -Description “TestA” -Pattern ‘^400$’ -Translation ‘+40268500xxx’ -InMemory

Next, we will create a new Tenant Dial Plan and add the newly normalization rules to it:

New-CsTenantDialPlan -Identity testA -NormalizationRules @{Add=$nr1}

!Note that I’ve wrote “rules” because it is possible to create more than one normalization rule to be added to the Tenant Dial Plan.

Now that we have created the Tenant Dial Plan, we can grant it either to one specific user, or to a set of users:

Granting to one specific account: Grant-CsTenantDialPlan -PolicyName testA -Identity

Granting the policy to a set of users:

Get-CsOnlineUser -Filter {HostingProvider -eq “”} | Grant-CsTenantDialPlan -policyname testA

!Please note that instead of “HostingProvider -eq “”” you can use any attribute visible under the get-csonlineuser cmdlet, and that is matching the subset of users you want to have the dial plan assigned. For example, if wanting to grant this new tenant dial plan to all your UK users, you can add the “Usagelocation -eq “UK” filter.

If you wrongfully assigned a Tenant Dial Plan to all your users as advised above, don’t worry, you can remove it with the following command:

Get-CsOnlineUser -Filter {HostingProvider -eq “”} | Grant-CsTenantDialPlan -policyname $null

And the result is:


Running the Network Assessment tool

The Skype for Business Network Assessment tool provides a simple and comprehensive option to check the network performance and understand if your network is prepared for handling Skype for Business and Microsoft Teams calls.

Start with downloading from and run the installer:


Check where the software is installed:

C:\Program Files\Microsoft Skype for Business Network Assessment Tool

Or C:\Program Files (x86)\Microsoft Skype for Business Network Assessment Tool

(Later Edit: With the new Microsoft Teams Network assesment tool, the current path is “C:\Program Files (x86)\Microsoft Teams Network Assessment Tool\”)


Open Cmd and navigate to the appropriate folder:

Cd ”C:\Program Files (x86)\Microsoft Skype for Business Network Assessment Tool”

or for Teams: Cd “C:\Program Files (x86)\Microsoft Teams Network Assessment Tool\”

Run tool with .\NetworkAssessmentTool.exe

If requested, allow the executable in the Windows Firewall

You will be presented with the initial outputs of the test, containing network values.

For example:

Now, you can access

And you can compare the values obtained above with the reference values presented in the above article:

Metric Target
Latency (one way) < 50ms
Latency (RTT or Round-trip Time) < 100ms
Burst packet loss <10% during any 200ms interval
Packet loss <1% during any 15s interval
Packet inter-arrival Jitter <30ms during any 15s interval
Packet reorder <0.05% out-of-order packets


As a best practice advice, the assessment should be run 3 times:

  1. When customer is connected to wi-fi (see this quite a lot) -> lack of QOS might cause Call Quality issues
  2. When customer is connected with ethernet cable.
  3. When customer is connected to outside network where traffic is not passing through firewall performing blocking/inspection/packet analysis.


Tips and Tricks:

Running .\NetworkAssessmentTool.exe /connectivitycheck /verbose will display the ip addresses and ports against which tests are being performed. This is a good starting point to check if some ports are being blocked in your network.


Unassign Service number from Conference Bridge

In Skype for Business admin center, you have the option to use one of your Service Numbers as default Conference Bridge number instead of the default shared number.

However, if you changed your mind and wish to unassign this number and use it for a different purpose, you might notice that the Unassign button is greyed-out and while hoovering over it, you are redirected to contact Support.

There is a workaround to do this by yourself, and all you need is Windows PowerShell and the Skype for Business Online Windows PowerShell Module available here.

Getting Started:

1.Connect to Skype for Business Online by using Windows PowerShell. (

2.Obtain the name of the Bridge by running the following cmdlet:

3. Unregister-CsOnlineDialInConferencingServiceNumber -BridgeName “Conference Bridge” -RemoveDefaultServiceNumber 1234 // where 1234 should be replaced by the number you wish to unregister.

4. Go back to the Skype for Business admin center and check if the number has been unassigned: