I have a small confession to make.
Sometimes I mix up dial plans & voice routes in my head.
They aren’t the same thing. Yet I still do it.
In fact they’re not even the whole picture, when it comes to creating and transporting calls in Enterprise Voice. You also have voice policies, which set options such as forwarding and delegation.
But voice policies are defined by features available to a call. Dial Plans and Voice Routes dictate how a call is processed. So, mild confusion now and then.
And where’s there’s confusion, there’s blog potential!
Let’s clarify the difference between these two Lync elements. What a Dial Plan is, what a Voice Route is, and how to tell them apart. In case I’m not the only one (and I’m pretty sure I’m not).
What a Dial Plan Is/Does
A dial plan is a named set of normalization rules. It translates phone numbers for a certain location, user or Contact Object into standard E.164 format.
(E.164 format looks like this: +15102220000)
There are two primary purposes for a dial plan: To translate international phone numbers, and to translate internal extensions to standard phone number format.
An example: Let’s say your office uses 4-digit extensions for each employee. So if you want to talk to Dan in Sales, you dial 9551. In Lync, a dial plan tells the server to interpret 9551 into Dan’s full number (maybe it’s 510-222-9551, or +15102229551 in E.164).
Lync routes the call to Dan’s Lync phone, and you two start talking.
Lync Server gives you 4 levels at which to use a Dial Plan:
- User – the plan is assigned to a specific user or object
- Pool – the plan covers a service, e.g. PSTN gateway or Registrars
- Site – the plan covers all phones in a Site location
- Global – the default plan for the entire Lync Server infrastructure
As you can see, these plan levels narrow their scope from bottom to top. If a user has a User-level dial plan assigned, its normalization rules apply instead of a Site dial plan.
The New-CsDialPlan cmdlet will create a new dial plan. Once created, you should add at least one normalization rule, using the New-CsVoiceNormalizationRule cmdlet.
An overall reference for Lync’s Dials Plans: Dial Plans and Normalization Rules – TechNet
What a Voice Route Is/Does
A voice route specifies how Lync Server handles outbound calls. These routes rely on logic defined for each set of destination numbers listed in your dial plans.
A voice route must contain:
- A name (you can add a description too, but it’s not required)
- A regular expression matching pattern, that identifies destination phone numbers to which the route is applied. As well as exceptions to which the matching pattern should not be applied.
- One or more trunks you’ve assigned to the route.
- The PSTN usage records that users must have in order to call numbers matching the regular expression.
An example: You’ve made your call to Dan, and the dial plan has normalized the number to +15102229551. A voice route is in place on the Front End Server, which knows that all 510 numbers are located in the Seattle office. The route directs your call through the trunk which will send the call off to Seattle.
Voice routes come into play after a dial plan has normalized whatever number you dialed. They take the “fixed-up” call, check records to see which trunk is best suited for it, and off it goes.
“Choose the trunk with the closest gateway to the location of the destination number, in order to minimize long-distance charges.” Rule of thumb from Microsoft. Good advice.
Reference for Lync’s Voice Routing: Voice Routes – TechNet
Why & Where you Might Confuse Them
Both dial plans and voice routes interplay (along with voice policies) in between users making a call, and that call connecting to its destination. Because they are both involved in establishing a phone call, I found it easy to confuse their two respective functions. (Sometimes!)
One Way to Remember the Difference
After thinking through a few metaphors, I came up with this comparison:
Dial plans rebuild the number you’ve dialed.
Voice routes point the call in the right direction after its rebuild.
Think of your call as a car in your garage. You add fuel and drive out onto the street (Dial Plan). A street sign tells you where the highway is (Voice Route). You drive off.
That’s it! Hope this post helps with any confusion on how calls are sent out. In the future I’ll do a post on Dial Plans’ normalization rule structure. And one on Voice Routing regular expressions.
Which would you like first?