Category Archives: Unified Communications

Awarded Microsoft MVP, Communications Server!

I am very proud to announce that I have been awarded 2010 Microsoft MVP for Communications Server!


Here is a quote from the MVP site on what this means exactly:


The Microsoft MVP Award recognizes exceptional technical community leaders from around the world who voluntarily share their high quality, real world expertise with others. Microsoft MVPs are a highly select group of experts representing technology’s best and brightest who share a deep commitment to community and a willingness to help others. Worldwide, there are over 100 million participants in technical communities; of these participants, there are fewer than 4,000 active Microsoft MVPs.

At Microsoft, we believe that technical communities enhance people’s lives and the industry’s success by providing users with the opportunity to have conversations about technology that catalyze change and innovation. Technical communities help users adopt new technologies more quickly and more effectively. Also, they help Microsoft product developers understand the "pulse" of our users and better meet our customers’ needs. As the most active, expert participants in technical communities, MVPs are recognized and awarded for their inspirational commitment to technical communities.

In order to receive the Microsoft MVP Award, MVP nominees undergo a rigorous review process. Technical community members, current MVPs, and Microsoft personnel may nominate candidates. A panel that includes MVP team members and product group teams evaluate each nominee’s technical expertise and voluntary community contributions for the past year. The panel considers the quality, quantity, and level of impact of the MVP nominee’s contributions. Active MVPs receive the same level of scrutiny as other candidates each year.

MVP Award recipients reflect Microsoft’s global customer base and the breadth of Microsoft’s technologies. MVPs have been awarded in new categories such as Windows Live, Xbox, VSTO, Microsoft Dynamics, and Visual Developer Team System. A significant portion of new MVPs represent emerging markets in China, Russia, and Korea, as well as smaller markets like Ghana, Nepal, Macedonia, and Macao.

MVPs also represent the diversity of today’s technical communities. Respecting the user’s desire to get technical information in a variety of ways, Microsoft recognizes both online and offline community contributions. Reviewers consider the contributions that nominees make to traditional communities such as public newsgroups and third-party Web sites, as well as emerging community venues such as forums and blogs.

Microsoft MVPs are an amazing group of individuals. By sharing their knowledge and experiences and providing objective feedback, MVPs help people solve problems and discover new capabilities. It gives us great pleasure to recognize and award MVPs as our way of saying thank you for their demonstrated commitment to helping others in technical communities worldwide. We sincerely appreciate their efforts. Microsoft would like to congratulate and thank this year’s MVPs.


Thanks to everyone who views my blog, and finds this information useful. More great content to come this year!


OCS 2007 R2 Cumulative Updates- September 2010

So, if you recall, the July updates were pulled due to some issues with response groups. Today, the OCS team has released two September updates, one for the Response group, and one for web components.

Check this link here for all information and download links for the updates.

Exchange UM Auto Attendant Key Mappings Not Transferring Calls After SP1

After upgrading my Exchange 2010 environment to SP1 we ran into an issue where our Auto Attendant would not transfer calls to our OCS Response Groups and users. If you dialed by name or number, it would transfer, but if a key mapping was set to transfer to an extension, it would fail.


Primary AA

Key Mapping of 1 set to extension 1000

Extension 1000 is an OCS Response Group Workflow

Key Mapping 4 is set to a separate auto attendant that is speech enabled and intended for use with saying a persons name or extension to reach them.

When a caller pressed the 1 key, the attendant would say “The call could not be transferred”

When pressing 4, and then entering the same extension, 1000, the call would dial properly.

I setup a new AA to run some tests and tried everything imaginable to get this working. No matter what I did, the key mappings would not transfer to an extension, or a full DID of a user off of the auto attendant. All other dial by name or extension functionality worked.

Running traces on the OCS front end and mediation showed no sign of a refer happening, which would appear when the call transfer was attempted.

I finally broke down and opened a PSS case, they had me set a dialing restrictions rule on the Dial Plan and Auto Attendant to allow all numbers.



Now, normally ,this was only used to dial outbound, so if a user setup dialing rules on their mailbox, or the auto attendant or dial plan had to call a number outside of the organization. I had previously no rules that allowed for any internal number patters, only 10 digit external number patterns.

This is just a normal allow all rule:


By setting a rule to allow all dialing and applying it to the dial plan and auto attendant, the issue was resolved.

I will update as soon as I find out if this is a bug, or if it is how it is going to be going forward.

Little Improvements on Exchange 2010 SP1 UM Voicemail

So, I heard about a few improvements with Exchange 2010 SP1 being released. (Full List Here)

One cool thing I just saw, was presence inside the transcription on my voicemail. This may have been there in 2010 RTM and I just didn’t notice it, but this seems new to me.


As you can see, it detected my name, and put presence next to it, It also added presence to the phone number I left in the voicemail, allowing me to call directly out of the transcription text. This is just another one of the examples as to why the Microsoft Unified Communications package is truly amazing.



The  translation still isn’t perfect, but its getting better and better Smile

Communicator Mobile Update

An update has been released for COMO. If you are one of the lucky people out there running windows mobile, update now.

Issues that this hotfix package fixes
  • Provides home screen support for new home screens in Windows Mobile 6.5+ phones.
  • Provides integration within the phone dialer for Windows Mobile 6.5+ phones.
  • Enables Communicator Mobile 2007 R2 to recognize when the phone is roaming and by default prevents Communicator Mobile 2007 R2 from signing in to roaming networks.
  • Provides additional support for joining conference calls from a Windows Mobile appointment. To do this, press Menu, and then press Join Conference.
  • Lets users log on by using a user name in the format, in addition to the domain\user format.
  • Enables the functionality by which callbacks are now automatically accepted when the user uses the Call via Work option.
  • Resolves the problem in which the Microsoft Installer (.msi) installation fails on a Windows XP Service Pack 3 (SP3)-based computer. In this situation, users should install Communicator Mobile 2007 R2 by using a (.cab) installation.
  • Fixes the problem in which AT&T FUZE devices that are set for a High-Speed Downlink Packet Access (HSDPA) connection cannot handle voice and data at the same time. In this situation, calls that use the Call via Work option fail unless the device is reverted to 3rd Generation (3G) by disabling HSDPA.

Configuring and Using Call Park In Communications Server 2010 (Beta)

One of the new enhanced telephony features supported in Communications Server 2010 is Call Park.

This feature allows you to “park” a call, and allow another user to pick up this call from the assigned extension. This was a common scenario on traditional PBX systems. Think of  “Randy, you have a call on 12345”. I can go to any phone, dial 12345, and answer the call on hold for me.

This feature requires you to dedicate a block of numbers in your environment for call park. This set of numbers can also start with a * or  #.  You must also be using Communicator 2010 to retrieve a parked call. Below, I will outline how to create a basic call park number range, and how to use this feature in the communicator client.

Note: These commands and screenshots are from the Beta release of Communications Server, appearance of commands may change at release

Creating the Call park Number Range

You can create or modify call park ranges in powershell or in The communications Server Control Panel, the new silver light based control panel for Communications Server.


First, make sure you are on a machine or server with the CS 2010 Admin Tools Installed, Open the  Communications Server Management Shell


For the Beta, the set of commands related to the Call Park service are:


As you can see below, in my environment when I run a Get-CsCallParkOrbit I have a number range configured as park test already in my beta deployment:


The call park number ranges have very basic information associated with them, The identity, and a set of number ranges and a server.

Lets create a new call park range with the name Winxnet Parking Lot and the number range #900-#950

This configuration would allow for me to have 50 Parked calls based on that range.

The command we are concerned with here is New-CsCallParkOrbit

Below is the cmdlet help information on this command:


    Creates a new, named, range of extensions assigned for parking calls within
     an organization.


    New-CsCallParkOrbit -Identity <XdsGlobalRelativeIdentity> -NumberRangeStart
     <String> -NumberRangeEnd <String> -CallParkService <String> [-Confirm [<Sw
    itchParameter>]] [-InMemory <SwitchParameter>] [-Priority <Int32>] [-Tenant
     <Nullable>] [-WhatIf [<SwitchParameter>]] [<CommonParameters>]

    Parking a call assigns a received phone call to a specific extension for la
    ter retrieval. A call park orbit is the set of extensions defined to a spec
    ific call park server for this purpose. The New-CsCallParkOrbit cmdlet defi
    nes the extensions for a call park orbit and applies them to a specific a s
    ervice. Calls parked within the given range will be parked on the specified
     Call Park Service. Multiple call park orbits can be created; each must hav
    e a globally unique name and a unique set of extensions.


For my example, this command will read:

New-CsCallParkOrbit –Identity “Winxnet Parking Lot” –NumberRangeStart “#900” –NumberRangeEnd “#950” –CallparkService

Note the number range being in quotes because I am using a # symbol.

The output should look like below:


Communications Server Control Panel

The Communications Server Control Panel is the replacement for the old MMC snapin with previous OCS Versions. This is a silverlight based web client to manage majority of Communications Server Settings.

To complete the above configuration in the UI, first open Internet Explorer and navigate to your CSCP web page:


This UI may be changing a bit, so I will just cover what is involved in creating a call park group.

In the left navigation menu, choose Voice Features


You will see in the screenshot above the Call Park Number Range I previously created using powershell.

To create a New range Select New


You will be presented with a form to enter the same information as above. The only difference is that “Destination” is the CallparkService from your power shell command.

User Experience

Now that you have created a Call Park Number Range in your communications server environment, your clients should be able to place calls on park hold, and retrieve these calls.

While in a call, under the Transfer menu, you will have a new Option for Parking Lot


When you choose Parking Lot it will park the call, and notify you the call has been parked, and what number to dial to retrieve. You also have the option to Copy the text. If you copy the text it can be pasted into an IM or an Email to send to another user.


Now, in communicator I can dial the number specified in the message, to retrieve the call.


Once the call has been retrieved, the user will be notified that the call was retrieved, and the person retrieving the call will be connected to the user on the line.


The left side of the screenshot is the notice that the call was answered, and the right side is what it looked like when I retrieved the call.

This is one of the many great new functionalities coming with Communications Server 2010 later this year, to find out more please visit:

To learn more about CS 2010 Powershell, check out this awesome blog

Issue with DTMF While in Conference Call

I am currently investigating an issue I have internally, and have heard someone else having on the Technet forums:


The issue is that when in a communicator conference call, you cannot send DTMF tones to a PSTN participant. The scenario is as follows:

  1. Communicator call, or communicator conference call is initiated
  2. User invites a PSTN number to that conference call
  3. PSTN number requires DTMF tones, whether it is a conference bridge, or an attendant menu, could be various situations
  4. No DTMF is received by the PSTN number.

So far, I have been able to confirm a couple of things. This happens with CS2010 as well as OCS 2007 R2. Internally we use a Dialogic DMG2120 gateway, and I have confirmed that I do not see DTMF on the gateway’s SIP side from OCS.

I am using this post to hopefully get some partners and customers to try this scenario, and see if they have the same issue. I would find it hard to believe that this is a bug in OCS/CS2010 that Microsoft has not addressed, but I am hoping to find a common configuration among people experiencing this issue so we can maybe narrow it down.

Typically this is a gateway issue, however like I said, I have not seen any DTMF come from OCS to the gateway when in the conference call.

Please respond in the comments with a brief description of your OCS setup and gateway/SIP trunk, and if you experience this issue or not.




That was quick!;en-us;2254369&amp;sd=rss&amp;spid=12605

It is identified in the above article. AVMCU does not support DTMF Relay. Thanks to the commenter!

Configuring Warning Message in CS 2010

In OCS 2007 you could configure warning messages through group policy, along with a ton of other settings, reference to which can be found here:

In CS 2010 these settings can still be applied through existing Group Policy Objects, however CS has introduced Client Policies to replace these group policy settings. These client policies come down through in-band provisioning to the communicator client.

The example I will show here is one of the most common, and that is the IM Warning.

First, login to your CS 2010 server, and open the Communications Server Management Shell

To see your client policies, and the settings associated with them type the following and hit Enter:


As you can see, there are a lot of familiar settings available in these client policies.

As you can see, the policy in my Beta deployment is just the Global Policy. These policies can be configured, and then applied on a per user basis, with the default Global Policy getting applied to users if no other policy is specified.

Now on to the example here, configuring the IM Warning.

The Powershell command to set this is:

Set-CSClientPolicy -Identity Policyname -IMWarning “IM Warning Text Here”

If you only have one policy, you do not need to specify an identity, it will default to your Global policy.

To see a full description of the Set-CsClientPolicy and New-CSClientPolicy commands in Powershell simply type:

Get-Help Set-CsClientPolicy or Get-Help New-CSClientPolicy

In my ennvironment I will be entering in:

Set-CsClientPolicy -IMWarning “Communications Server 2010 Rocks!!”

To confirm the settings have applied correctly, type Get-CsClientPolicy and hit enter.

To apply these settings to your communicator client, exit the client and restart the client.

Now, open an IM Window to confirm the warning message is displayed:

As you can see, the future of CS management is in powershell, for even the smallest things like the IM Warning.

I will cover in more detail Client Policies and Voice/Conferencing policies soon on this Blog, but this should be a good introduction to what you can do with CS Client Policies and Powershell.

Reference: Setting Event Log Levels for Exchange UM

Exchange 2007 and Exchange 2010 allow you to configure different event logging levels for all Exchange services.

I commonly have to enable more detailed Exchange UM logging on UM servers to troubleshoot call flow issues, so here is a quick reference of how to do this.

First off, here is the technet reference to doing this for all services:

In Exchange 2007, you must do this through Powershell, Exchange 2010 however is available right in the Exchange MMC.

For Exchange 2007:

Start by opening your Exchange Management Shell

The following powershell commands are required for the Exchange UM services

set-eventloglevel -identity “MSExchange Unified Messaging\UMWorkerProcess” -level Expert
set-eventloglevel -identity “MSExchange Unified Messaging\UMCore” -level Expert
set-eventloglevel -identity “MSExchange Unified Messaging\UMManagement” -level Expert
set-eventloglevel -identity “MSExchange Unified Messaging\UMService” -level Expert
set-eventloglevel -identity “MSExchange Unified Messaging\UMClientAccess” -level Expert
set-eventloglevel -identity “MSExchange Unified Messaging\UMCallData” -level Expert

In Exchange 2010 the same powershell commands will work, however, if you are more comfortable with the UI, you can do it directly in the Exchange MMC.
First open the Exchange Management Console
Expand your On-Premise Organization and select Server Configuration

Select your UM server from the list of available servers, and you will notice on the right hand side, under Actions for that server you will have Manage Diagnostic Logging Properties

Select Manage Diagnostic Logging Properties and you will be prompted with a full list of services on your Exchange server to manage. Expand MSExchange Unified Messaging, for each service you wish to raise the level, select that service, and then select the option for whatever level you wish to enable. Expert is typically a good level to have if dealing with UM.
Once you have configured all of your service levels, choose configure. This will basically execute the Powershell commands listed above and confirm Completion.

Quick Tip: Exchange UM Powershell to list users in a specific dial plan

This is a basic one liner I needed to use today, but I didn’t find it documented that well anywhere.

Situation: Multiple exchange UM dial plans in a company, need to identify users associated with a certain dial plan for whatever reason. In this case it was to migrate them off that dial plan.

Going through the UI to do this would be way too time consuming, of course powershell comes to the rescue.

Using the Get-UMMailbox cmdlet with a basic filter we can identify a group of users with many different attributes in common, in this case we are concerned with UMDialPlan.

Command looks like this:

Get-UMMailbox | where {$_UMDialPlan –eq ‘DialPlanName’}

This will return a list of users in the dial plan you specify. You could of course add more filters in to narrow down the scope.