
![]() |
Who am I talking to? Eartha Kitt? Sorry, wrong number. I was trying to call my car. |
I’ve been spending a lot of time recently messing around with MS Teams dialplans thanks to the recent release of SBC-specific translation rules. For the most part, the overall structure is the same as with Skype for Business on-prem. Some PowerShell commands are different, but most of what you already know is usable in Teams.
The biggest issue with Teams is that there hasn’t been a UI for managing your Teams Enterprise Voice layout. This can be an issue if you are big into Direct Routing. Thankfully, Microsoft recently made available what is hopefully the first round of UI enhancements to the Teams Admin Center. You can now create and manage dialplans in the UI. Microsoft has dutifully updated their documentation to help people navigate these new features.
However, there are some undocumented features that open up some interesting scenarios. Along with these are some extremely frustrating bugs that you should be aware of.
The Hidden Feature
The Bugs
Unfortunately, there are also a number of annoying bugs/oversights with the new UI. Some are cosmetic, but some will force you to re-create your dialplan if you accidentally encounter one.
Description Discrepancies
- The Teams admin center dialplan UI doesn’t respect the linebreaks and just renders a wall of text.
- The UI throws an error that you can only have up to 255 characters, when PowerShell allows a much higher number.
- The UI also throws errors about “invalid characters”, such as !@#$%^*()=/[]{}:;?<>+’ Again, PowerShell has no issue with any of these characters.
The External Dialing Prefix Bug
This is a big bug, and am quite surprised it made it through QA. For a bit of background, you can configure Teams so that users can dial an external access prefix (like 9), before dialing an external number. For users coming from a legacy PBX, this is undoubtedly a boon and doesn’t force them to retrain years of muscle memory. It also makes off-hook dialing more reliable. For an extended explanation of this feature, go waaay back to one of my posts from 2011 on the topic. I haven’t tested it myself, but the details should still apply to Teams.
Most customers don’t bother with this feature, and have been happily creating dialplans in Teams/Skype for Business Online for years via PowerShell without defining an external dialing prefix. However, if you create a new dialplan or edit an existing one in the UI, you will not be able to save your changes unless you set an external dialing prefix.
Also, this seems to have found itself into the PowerShell commands themselves, but not completely. You can create a new dialplan with New-CsTenantDialplan without an external dialing prefix, and you can make changes to an existing dialplan with Set-CsTenantDialplan, but if you try to remove an external dialing prefix via PowerShell by setting it to either $NULL or “”, you will be denied.
As long as you don’t set a prefix, you should be fine. Don’t do what I did and set a prefix in the UI to see what happens, and expect to be able to remove it in PowerShell. This forced me to redo my entire dialplan from scratch. Thankfully, UCDialplans.com took care of that in a minute.
Spelling Mistakes
A minor quibble, but one that will force me to keep a close eye on (boo hoo me). The New/Get/Set-CsOnlinePSTNGateway command has options for setting inbound and outbound translation rules:
- InboundPstnNumberTranslationRules
- InboundTeamsNumberTranslationRules
- OutboundPstnNumberTranslationRules
- OutbundTeamsNumberTranslationRules
Do you see the problem?
![]() |
Someone’s spellcheck didn’t work. |
Conclusion
I’m trying to get this in front of the right people at Microsoft to get them to fix. Hopefully, this half of my post will have a limited shelf life. Have any of you experienced any of these issues or come across any others? Let me know in the comments.