Direct Routing - PABX Extension Number

New Contributor

Dear all,


I have a question related to "classic" extension numbers which commonly can occur when customers use direct routing to/from users on a PBAX.


For my Teams' users, I have set via Set-CsUser the extension number in the following examples

Teams User A: -OnPremLineURI "tel:4101"


Teams User B: -OnPremLineURI "tel:+18121234567;ext:4101"


Users on the PABX are all in the range of a 4 digit number plan.


Issue 1: Calling Teams

A user on the PABX dials 4101, which is correctly routed to the SBC and to Teams. I get a 499 not found when the number format is entered as "Teams User B". It does ring when I use "Teams User A". From the documentation, I thought the writing form of Teams User B would archive the same goal? Am I missing something?


Issue 2: Calling PABX Users

Regardless of what I do, the FROM and TO numbers in the INVITE to the PABX from Teams DR are transformed and e164 formatting is partially added. For example, Teams' User A (4101) calls PABX user (4102). The FROM is changed to +444101 (I assume as the service location is set to the UK while I applied the license to the user? Cannot find another place where UK is related to the user) and the TO is changed to +4102. Can I configure Direct Routing to leave all numbers untouched, in the from and in the to?


Thank you all in advance!


6 Replies
best response confirmed by ThereseSolimeno (Microsoft)

the behavior in issue 1 is correct. Teams only tries to match the phone number. So to use that approach you have to normalize the 4 digits (YYYY) to the e.164 (+44XXXXXXYYYY) on your SBC before you send it to Teams.

In general I would recommend to use full e.164 in Teams. This would mean to transform 4 digit numbers to e.164 from PBX to Teams. The other way round you have to do the opposite and strip the digits before you send it to the PBX.

The issue 2 is related to the dial plan that got applied by default depending on your country. If you want to implement extension dialing to your pbx you need to create your own user level dial plan.



@Paul Lange , thank you for taking your time to respond.


For my second issue, I think I will be out of luck as the country service dialplan is always applied at the end of all dial plans? Which will not make it possible to send a call out without been transformed to "something" with a +. I will take up the work in the SBC to fix this. 


NormalizationRules :

{Description=DE International Dialing Rule;
Name=DE Intl Dialing;

Description=DE Extensions rule;
Name=DE Extension Rule;

Description=DE Long Distance DialingRule;
Name=DE Long Distance;



It doesn't need to. Just amend your global dial plan and then add a new normalisation rule.


Go to Advanced and type in the If (\d{4})

Then $1 in the "Then do this"


Then if you test, you'll see putting in 4444

outputs 4444


As you talk about SBC's, you're obviously using Direct Routing so just ensure you have a Voice Route that matches the 3 digit number. Then 4444 will go straight to the SBC without any addition of +44 or +49 etc


Hope that helps.


@flowler_32 thank you so much, this worked!

Strange, if I enter the same but in the basic form it rejects me as the result is not e164. Would you happen to know also how to manipulate the source FROM callerID in the same manner in case the destination number is (\d{4})?



yes - you should use Advanced.

For your 2nd question, I would use the SBC to do that manipulation so for example. This call should hit your SBC with the calling number being the full E164 number and your called number being the 4 digit extension. You will probably have a call routing table where if Called Number is a 4 digit extension then it goes to your PBX.

On the SBC, just do a translation that extracts last 4 digits from calling number and send that through so for example if the calling number range was +4411612xxxx then regex would be ^[+]4411612(\d{4})$    and output would be \1


This captures last 4 digits in the brackets and uses that as the output so PBX would receive 4 digits as both calling and called number.




@lowler_23, you are a start.

I help myself at the moment in that way: To simplify multi-digit-Extention-length I use the format tel:+44xxxxxxxxx;ext=4101 to grab the extension after the ext= and use the other one for the outbound call ID the call shall have if the call goes to the PSNT network. If that's the only way, I am happy to work that way.

Thank you once more!