We encountered a tiny issue the other day. It did exactly what tiny issues do – caused a lot of trouble!

Auto Attendant DiagramOur team was finalizing a new customer’s Skype for Business implementation. They set up the servers; all good. They set up user accounts; no problem. They tested connections on user machines; everyone can talk to one another.

Then we did some test calls from outside their network. Exchange’s Auto Attendant should pick up and offer us some departmental choices.

But it’s not picking up.

Ten-second rundown: The Auto Attendant is part of an Exchange Server component called Unified Messaging. Unified Messaging (or UM) gives you access to voicemails in your inbox, and it allows you to create Auto Attendants for managing call transfers. You use an Auto Attendant-type of system whenever you call a business and hear, “Press 1 for Sales, Press 2 for Support…”

In this case, our customer’s Auto Attendant would not activate at all. We checked server logs and found no errors. The customers could still get their voicemails. Everything was configured properly. So what’s causing the problem?

It took us a little time to find the answer. Which, it turns out, was tiny!

Unified Messaging Dial Plans Cannot Use Spaces in Their Names

The issue originated in the UM Dial Plan. Specifically, its name.

When we set up the UM Dial Plan for this customer, we called it, “CustomerName UM Dial Plan.” Which, it turns out, is the wrong syntax to use. Because it has spaces in it.

The issue originates in Exchange Server 2013. It prevents Lync (or Skype4B) users from calling an Exchange UM Auto Attendant, if there are spaces in the Auto Attendant’s Dial Plan name.

(Please note: We think this issue is still present in Exchange Server 2016.)

Why such an issue exists, I’m not sure. But it does.

So, simple fix, right? Just rename the Dial Plan?

Unfortunately not. You can’t change a Dial Plan’s name once it’s created. We had to create an all-new one, an exact duplicate of the first (without the spaces in its name!), and then delete the old Dial Plan.

On top of that, we’d have to disable all the users’ Unified Messaging mailboxes, and then re-enable them with the new UM Dial Plan. All for a couple of spaces.

The Fix: Create a New UM Dial Plan, Enable All Users for It, Then Remove Old UM Dial Plan

Naturally, we consulted the Almighty Google and The Most High TechNet for answers. We found them on a couple blogs.

First off, Michael Epping’s post on Concurrency.com titled, Change Users’ Exchange UM Dial Plan. He describes the exact problem we encountered. He also provides a solution.

The quickest and cleanest way to do this is through PowerShell. Creating a new UM Dial Plan, disable all users’ UM mailboxes, re-enable the mailboxes with the new Dial Plan, and then removing the old Dial Plan.

2016-04-07_10-51-34

We followed Michael’s process exactly, and he’s done a good job documenting it in his post, so I won’t copy everything over. He deserves the clicks. What I will do is highlight the steps involved for disabling and re-enabling the UM mailboxes.

NOTE: Make sure you create a new UM Dial Plan before you do this!

  1. Run the “Get-UMMailbox” cmdlet to export primary SMTP addresses, SIP resources and extensions.
  2. Open the exported list in Excel. Select the extensions column. Click Text to Columns in the Data tab.
  3. Select Delimited if it’s not already. Click Next.
  4. Check Semicolon under the Delimiters. Click Next.
  5. You should have a column with SIP addresses and one with extensions. Remove the column with SIP addresses.
  6. Highlight Cell D2. Enter the following text. Replace “UMMailboxPolicy” with the name of your UM Mailbox policy.
    =CONCATENATE(“Enable-UMMailbox -Identity “,A2,” -UMMailboxPolicy Lync -SipResourceIdentifier “,B2,” -Extensions “,C2,””)
  7. Highlight D2 again. Click the lower-right corner square. Drag it down to recreate this command for each user in the list.
  8. You should end up with a list of “Enable-UMMailbox” commands for each user.
  9. Copy all of Column D. Paste into Notepad or another text editor.
  10. Make sure the first line, above all the commands, says this: “Get-UMMailbox | Disable-UMMailbox”
  11. Save the script as a .ps1 file. Michael named his “Redo-UMMailboxes.ps1.” We named ours “UMDialReset.ps1.”
  12. Copy the .ps1 file to your Exchange Server. Run script in PowerShell.

Again, please check Michael’s post for additional details.

I’m also including a PowerShell script we used to remove the old UM Dial Plan. This comes courtesy of Ibrahim Soliman’s Blog.

$UMDialPlan = “”
Get-UMMailboxPolicy | where {$_.UMDialPlan -eq $UMDialPlan} | FL Name, UMDialPlan
Get-UMMailboxPolicy | where {$_.UMDialPlan -eq $UMDialPlan} | Remove-UMMailboxPolicy
Get-UMHuntGroup | where {$_.UMDialPlan -eq $UMDialPlan}
Get-UMHuntGroup | where {$_.UMDialPlan -eq $UMDialPlan} | Remove-UMHuntGroup
Get-UMService | where {$_.DialPlans -contains $UMDialPlan} | FL Name, DialPlans
Get-UMService | where {$_.DialPlans -contains $UMDialPlan} | Set-UMService -DialPlans @{Remove=”$UMDialPlan”}
Get-UMService | Get-UMCallRouterSettings | where {$_.DialPlans -contains $UMDialPlan} | FL Identity, DialPLans
Get-UMService | Get-UMCallRouterSettings | where {$_.DialPlans -contains $UMDialPlan} | Set-UMCallRouterSettings -DialPlans @{Remove=$UMDialPlan}
Remove-UMDialPlan -Identity $UMDialPlan

As with all PowerShell scripts, verify this will work with your current topology before executing it.

Avoid Spaces in Dial Plan Names, and You Won’t Have to Replace Them

The name of a Unified Messaging Dial Plan, stored on an Exchange Server, seems an unlikely place for a space to cause problems.

Yet that’s exactly what happened here. Once we’d removed the old dial plan, added a new one & re-enabled the users’ mailboxes, Auto Attendant behaved perfectly. The customer had their, “Press 1 for Sales, Press 2 for Support.”

It’s always the one thing you didn’t suspect, isn’t it?

If you’re setting up Skype for Business, just as a precaution? Avoid using spaces in your dial plan’s names.

Have you encountered a strange error related to spacing in Skype for Business? Please comment or email in what happened. I always like documenting these errors, in case someone else needs the help later on!

 

Auto Attendant Failing? Your UM Dial Plan Can’t Have Spaces in its Name
Facebooktwittergoogle_plusredditlinkedinmail

2 thoughts on “Auto Attendant Failing? Your UM Dial Plan Can’t Have Spaces in its Name

  • February 16, 2017 at 9:31 am
    Permalink

    I wanted to leave a reply to say this did indeed fix my issue but I wanted to give a bit more detail. The environment is Lync 2013 on-prem and mailboxes in Exchange Online (Office 365). The Auto Attendant would ring 3 times and go to voicemail. The interesting part is that I created a new UM Dial Plan in Exchange Online without spaces and then tried to run the command: Set-UMmailboxpolicy -identity “” -SourceForestPolicyNames “” with the Exchange Online UM Dial Plan without spaces and it failed. When I executed get-umMailboxPolicy it lists the Identity with spaces that were appended like “UMDialPlan Default Policy” yet the UMDialPlan attribute had the plan without the appended words with spaces. In order to run the Set-UMmailboxpolicy you have to use the Identity attribute (with spaces), not theUMDialPlan (without spaces). Not a big deal but took me a bit to figure out. Also, when you go to assign the new plan to the user in Exchange Online it lists both plan names with and without spaces. But, this did indeed fix my issue. Maybe creating the plan in Exchange Online with PowerShell would give an identity without spaces but I did not try that.

    Mike Niccum

    Reply
    • February 22, 2017 at 1:07 pm
      Permalink

      Mike,

      Thanks for the comment. More detail is always welcome! It’s entirely possible that a more recent update changed the dial plan structure. I’ll have to take a look…maybe this post needs a revision. Appreciate your sharing.

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *