Caller ID is a wonderful invention. By showing you who's calling, it helps you prioritize incoming calls so you can decide if taking the call at that moment is more important than whatever you're doing. This is particularly important if you're on the phone a lot, if you have teenage kids, or if you like uninterrupted family meals. Caller ID is similarly useful in a work environment for basically the same reasons.

One of the cool features of Exchange Server 2007 unified messaging (UM) is that the UM server will attempt to replace the caller's phone number with a name. However, for several reasons Exchange doesn't use the name provided by the phone company to the PBX. First, the calling party number information might not be provided; second, even if it is provided, for business callers the number is likely not to match the actual caller's extension or information.

How does Exchange decide what name to use? The answer depends on whether the caller has a UM-enabled Exchange mailbox, which in turn dictates whether there's an existing proxyAddress value for the caller's UM mailbox. Recall that every mailbox will have at least one proxyAddress attribute, and it might in fact have several; that's how Exchange implements (among other things) foreign addresses for X.500, IBM Lotus Notes, and other systems, as well as multiple SMTP addresses.

Here are the four possibilities for how Exchange determines what name to use (courtesy of Microsoft's Dave Howe):

  • If the caller is UM-enabled, then the caller's mailbox will have an Exchange UM proxyAddress. The UM server finds the user by this proxyAddress value, so the voicemail message contains the display name of the caller as shown in Active Directory (AD).
  • If the caller is not UM-enabled but there’s a contact in the called party’s Exchange mailbox with a matching extension, the voicemail message contains the display name of the caller as it appears in Contacts. Note that this value will be whatever you put in, whether or not it matches what's in AD.
  • If the caller is not UM-enabled but you've added a custom Exchange UM proxyAddress for that caller containing an extension, the voicemail contains the display name of the caller.
  • Otherwise, the message contains only the extension or phone number of the caller. Whatever the PBX reports as part of the call diversion information is what you'll get.

This list raises an excellent question: How can you add a proxy address for users who aren't already UM-enabled? It turns out it's simpler than you might think—if you know the magic spell. You can do it with Adsiedit if you know the format, which is simply EUM:extID;phone-context=dialPlanName. So, for example, my EUM proxy address is EUM:7285;phone-context=redmondDP.3sharp.com

However, there's an even simpler way. You can use Exchange Management Shell and just say

Set-mailbox <i>mailboxName</i> -secondaryaddress <i>extension</i> -secondarydialplan <i>dialPlanName</i>

You can also use this command to add a secondary extension to user mailboxes. For example, let's say you want to add the extension of your conference room to the office manager's account so that calls from the room appear to come from the manager's extension. The command line above will take care of it.

The same matching scheme is used for missed call notifications, but the process takes on a few new twists when Microsoft Office Communications Server 2007 is added to the mix. I'll write about that in the future. In the meantime, I think I hear my phone ringing . . .