Using Exchange Unified Messaging Secondary Dial Plans with Lync and Cisco Communications Manager

Ever been in that interoperability scenario where you have Cisco CUCM and Lync with two different voicemail systems? How do you consolidate down to one voicemail platform? Well Exchange UM secondary dial plans might be your answer.

This is a somewhat of a mystery configuration that has been around since Exchange 2007 SP1 but was originally intended for Faxing or inbound traffic only. The use of OVA from the secondary dial plan was not the intended use even though a subscriber access number needs to be available for inbound routing. Now in Exchange 2010 SP1 this has changed and opened up a new variety of possibilities when integrating legacy IP-PBX’s or PBX’s into Exchange Unified Messaging. My post about this feature focus’s on Lync and CUCM but you could apply most of these same thoughts to number of different scenarios.



The configuration is not to different from what people are used to. You need to create two dial plans, Lync/SIP and CUCM/TelExtn. The biggest configuration difference is really configuring the user to use the secondary dial plan. This can be done through PowerShell or the EMC. Something's to be aware of:

1. Make sure you configure the Lync dial plan for the user first. If the user is already configured for a dial plan other than Lync you will need to disable the user for Exchange UM then re-enable the user with the Lync dial plan. There is not a method to promote a dial plan to primary. The Lync dial plan must be primary otherwise voicemail to Lync will not work.

2. The MWI on the secondary dial plan will not be available. MWI will only be available for Lync as the primary and not the Cisco IP Phone although the MWI for Lync will light no matter if the voicemail is received on Lync or CUCM. The UM  Server  reports only the primary dial plan and extension to the mailbox server when it receives a voicemail. The mailbox assistant works out whether the MWI should be lite based on the primary dial plan information and requests the SIP notify be sent by the UM server (that’s the simple version).

3. One of the interesting pieces to this configuration is that the users extension can be the same for each dial plan. As long as the extension is unique within the dial plan there is little issue with having the same number in both dial plans.

4.Each dial plan requires its own subscriber access number for inbound routing. How a user reaches Outlook Voice Access is really up to you but the secondary dial plan’s SA number will be the number a user accesses when they press the voicemail button on the Cisco IP phone. This is part of the voicemail profile in CUCM which has to be set to SA of the secondary dial plan. With two numbers to access SA it could be confusing for a users if they get prompted for extension and pin rather than just the pin. In the end it’s the same mailbox so you just have to decide what Extension and SA numbers a user has to use for OVA and communicate that effectively.

Below are some useful links:

Understand secondary dial plans in Exchange 2010 SP1:

Understanding MWI SIP Notify in Exchange 2010:

Configuring CUCM with Exchange 2010 UM:

Comments welcomed.


Lync Tabbed Conversations

Ever lost a conversation down in the system tray. Pretty annoying. Well now there is an app for that! The Lync Tabbed Conversations is a free download that PC users can use with their Lync client.

I really like this application. I ran it to begin with just to try it out and see how it worked. After restarting my PC I choose not to start the application up again and go without. What I found was I hated having all my conversations in different windows all over the place. It was much neater and simpler to have them in the one window all the time tabbed. Its pretty easy to remove a conversation from the application and still have it in a separate window though which is great feature. This feature is especially helpful when your in a meeting and sharing content but still need to see other conversations at the same time.


I believe this is a must have application for heavy Lync IM and conferencing users, like myself. Although it’s a separate application it doesn’t seem like it once you start using it. Windows automatically transfer to the Tabbed interface even though they first flash up on the screen independently, which at first seems confusing till you know what to expect. Out of all the plugins for Lync I have tried this is by far the one I have used the most.

Visit the Lync Adoption site to get more details and download this free application.


Blocking Calls in Lync Based on Caller ID

Sometimes you have to rely on others when you don’t poses the skills your self, well maybe this was more like hope someone comes to my rescue. This week I got a question about blocking caller ID. I knew what to use to solve it but didn’t know how to write the code. Luckily for me Keith from Got UC was able to help me out. Below is a MSPL script for blocking calls in Lync based on caller ID. Keith has also posted the code on gotUC as well.  I have also created a link to my SkyDrive so people can download it rather than copy and pasting from the post which can screw the code up.

One thing you will notice about the script is that you will need to create a text file called BlockedTelephoneNumbers.txt. This file contains the blocked telephone numbers with two columns. One is the telephone number and the second is the action which in this case only requires the word “block”. Also static="false" is set which means when you make a change to the script it will reload it so no need to do any manual restarts of the application in Lync.

This is a pretty simple script that only blocks on the inbound caller id and does no other checks. Hopefully you only block the right numbers. You can also add some checks to this script. Only invites from the mediation server is one that comes to mind. This would block only calls from the PSTN and would avoid the script checking every single invite against the file which could get quite large.

So the potential to add some more checks and balances are possible but this script presents a great base to build a more complex call blocking process.

<?xml version="1.0"?>
<r:applicationManifest r:appUri="" xmlns:r="">
  <r:requestFilter methodNames="ALL" strictRoute="true"/>
    <r:responseFilter reasonCodes="NONE"/>
    <r:file name="BlockedTelephoneNumbers" path="C:\Work\TelFilter\BlockedTelephoneNumbers.txt" delimitedBy="comma" keyColumnName="Phone" static="false">
        <r:column name="Phone" />
        <r:column name="Action" />

Module Name:   
    // Main program.
    Log ("Debugr", false, "We have a request - ", sipRequest.Method);
    Log ("Debugr", false, "From - ", GetUserName(GetUri(sipRequest.From)));
    Log ("Debugr", false, "To - ", GetUserName(GetUri(sipRequest.To)));

    action = BlockedTelephoneNumbers[GetUserName(GetUri(sipRequest.From))].Action;
    if(action == "block")
           Log ("Debugr", false, "Exit. Rejected by policy");
           Respond(403, "Forbidden");
           Log ("Debugr", false, "Exit. Allowed by policy");

Click below to download code:

MSPL scripts are a great tool. If you want to learn more check here. If you have a script you are willing to share let me know. Here is another example of MSPL use here.

Comment welcomed.


Kinect for Windows SDK Beta

Well its finally here. The Kinect for Windows SDK beta has been a while coming since the first Kinect was hacked just a few days after the initial launch but it is finally here. Its great to see Microsoft Research listening to the community to provide this free SDK.

My hope is that a UC developer out there somewhere sees the potential for the Kinect in the UC space especially with Lync. With it’s a ability to track sound and depth perception I have to think there is an application tie with Lync to take Telepresence to a place its never been before.

This SDK includes the following features (From the download site):
  • Raw sensor streams.Access to raw data streams from the depth sensor, color camera sensor, and four-element microphone array enables developers to build upon the low-level streams that are generated by the Kinect sensor.

  • Skeletal tracking. The capability to track the skeleton image of one or two people moving within the Kinect field of view make it easy to create gesture-driven applications.

  • Advanced audio capabilities. Audio processing capabilities include sophisticated acoustic noise suppression and echo cancellation, beam formation to identify the current sound source, and integration with the Windows speech recognition API.

Download it here:

Comments welcomed.


Microsoft Analytics for Twitter

Here is a great new free tool from Microsoft that plugs directly into Excel. Although this isn’t really a UC product as such I still find it useful and interesting for helping run my blog and other social network activities. In the example I did below I did a simple hash tag search on #lync and #jabber to see which of the two is generating more interest on Twitter. No surprises for which one came out on top.

With the recent interest in social mining of sites like Twitter I though this was an interesting free tool and worth talking about.

With this FREE add-in, you can:

  • Perform up to 5 parallel Twitter Searches (limited to 1500 results per query per day).
  • Drive ad-hoc analysis of tweets by day, by hour, by tweeters, by #hashtags and @mentions.
  • Customize your views (using slicers, DAX formulas or reference tables).


  • Twitter search queries are limited to the past 4 - 7 days and a maximum of 1500 tweets per day.
  • Available for Excel 2010 only.

You need to download the Twitter plugin for Excel as well as Power Pivot for Excel which are both free.

Twitter plugin:

Power Pivot for Excel:

Sample hash tag search:




Find a Microsoft UC User Group

There has been a big uptake in interest around Microsoft UC focused User Groups recently. The Lync resource page has been updated to include a directory to help folks find a group in their location.

You can also find UC/Lync user groups here:

If there is not a group in your location may be its time you started one!

Also check out the new community page to see the latest Lync related activity on the web.


Lync Training and Adoption Web Site

Back in OCS R2 when Microsoft released adoption material it was a great tool to have in your back pocket to help with rollouts. With the release of Lync it has been taken a step further with a complete web site focused on adoption. The site has a collection of great tools for a Lync rollout including workbooks, tools and apps (which I will talk about later). I have a favorite saying in, “Organizations over estimate the administration involved in Lync and underestimate the effort required for adoption services and end user training.” Its not that you need hundreds of people running around training people but organizations have a tendency to overlook what's required for end user adoption. Not everyone is a super nerd and picks up UC or Lync as fast as us IT pros.

The tools on this site will go a long way in helping organizations get the biggest bang for their buck as they rollout Lync. I really like the workbooks and the table that describes who will be a high and low touch user for training. Although this will vary from organization to organization it’s a great starting point.

See the link below:

I wanted to make special mention of the Tools and Apps section. Each of the Apps adds value and a certain cool factor. Below is the complete list of Apps available. Most of them take advantage of the client API’s in some respect.  One of the applications in particular is the Lync Custom Intranet Site. Although its not really an app as such it is a great adoption tool. It is a prebuilt help site that you can add your own content to and deploy internally at your organization. A great way to get end users the training they need to make a rollout go smoothly.

I will be going through some of the apps  in more detail over the next couple of weeks.