First Impressions of Microsoft Lync MX on a Microsoft Surface RT Tablet

Being in the technology field I often find myself on the bleeding edge when it comes to new devices and software. For me, hands-on is the only way I can learn about the technologies and really experience what my clients would encounter. The Microsoft Surface RT Tablet and Microsoft Lync MX are no exception.

I want to start with what I feel is an obvious observation but seems to be missing the masses – the Microsoft Surface RT Tablet is NOT a computer replacement. It is an alternative (and a superior one) to the other tablets in the market namely the Apple iPad (I personally have/use an iPad 2) and the various Android tablets (here I have a Samsung Galaxy Tab 10.1 and a Google Nexus 7). Hands-down, when comparing what I can do with the Surface natively and easily versus the other tablets, there is no comparison.

Not to digress too much, but such an example happened just this week. I had an outside appointment that I went to and had to leave my early-morning server patching process incomplete. Two servers were completing their patching when I left – one of them my TMG server for my Lync Reverse Proxy functionality. Because I could – and very easily – after the meeting from my car (parked of course) I connected my Surface to my mobile AT&T hotspot, launched Remote Desktop, and connected to each of my servers. From there I was able to validate the updates had completed successfully and rebooted them all from my Surface. Could I have done this from my other tablets? Yes (using a third-party app called iTap Mobile RDP by HLW Software Development GmbH). Would it have been as simple and seamless? No.

OK – moving on to Lync MX and what I have experienced and seen. Microsoft Lync 2013 RTM or Microsoft Lync 2010 with the October 2012 Updates is a requirement for the MX client to connect so if you have not installed the latest version or patch to 2010, this is not going to work. You must also have all your SRV records in your DNS space as expected (along with the lyncdiscover/lyncdiscoverinternal) as there is no way to manually set the server information.

Assuming the infrastructure is up and working as required, logging into Lync MX is simple – it asks for your SIP URI and then, because it is not domain joined, asks for your NT credentials (you do have the option for the tablet to cache/remember those credentials). The initial login may take a second or two but once completed you are presented with a beautiful default display. Assuming you have pictures linked somewhere (and who doesn’t with internal pics, LinkedIn, and Facebook), pictures are displayed for a softer approach.


From the picture, you can see a few options on the left – your Lync Meetings, Contacts, History, and Voice Mail. Because we are working with the surface the default gestures are all in play. Swiping from the top of the screen down brings up the navigation bar. Here we can go back to the home screen by selecting Lync, jump to contacts, history, and voicemail, or if there were active conversations, you can switch between them as they would be listed on the left.


This navigation is important as it was never obvious how to go ‘back’ to me when I initially launched the program which caused a bit of frustration. However, learning the basics of Windows 8 navigation it became obvious. I should also mention that using the touch keyboard or an external mouse on the surface, right-click brings up this same navigation menu.

Other important gestures include the charm menu – or the swipe from the right of the screen. There we find Options and Permissions which are used by the application. The first time Lync MX is launched it asks for permission to run in the background and to access your mic and camera. If you deny it access and change your mind (or vice-versa) the changes to those settings are found here.


If Options is selected here we find features such as call forwarding and IM history information. Like the Lync desktop client (and unlike the current mobile client), all communications which happen on the Surface may be saved to your Outlook Conversation History. This is a great feature and one that is lacking in the mobile client today – glad it was properly addressed. (In my picture the options are grayed out as they are enforced features by my Lync Server Client Policy (set-csClientPolicy)).

Other than call forwarding and PIM integration, not much more can be configured on this client. There is a metered connections option which will potentially limit the ability to use Lync MX over Wi-Fi connections configured as metered, enabling/disabling logs, and the option to have Lync MX automatically start at logon – but again, otherwise lacking.


If Options is selected here we find features such as call forwarding and IM history information. Like the Lync desktop client (and unlike the current mobile client), all communications which happen on the Surface may be saved to your Outlook Conversation History. This is a great feature and one that is lacking in the mobile client today – glad it was properly addressed. (In my picture the options are grayed out as they are enforced features by my Lync Server Client Policy (set-csClientPolicy)).

Other than call forwarding and PIM integration, not much more can be configured on this client. There is a metered connections option which will potentially limit the ability to use Lync MX over Wi-Fi connections configured as metered, enabling/disabling logs, and the option to have Lync MX automatically start at logon – but again, otherwise lacking.


If you want to make a call to a contact, clicking on their tile exposes the modality options – IM, Call, Video, and Contact Card. Notice the option to share content is not present. The Lync MX client can consume presentations from others (polls, screen sharing, PowerPoint, etc.), but does not have the option to present itself. In the case of a call, selecting the phone icon presents you with known calling endpoints. In this example, I have Lync call, Work, Mobile, and Voice mail.


Moving on to managing multiple communications. As mentioned before, this is possible by using the navigation bar (swiping from the top down) and selecting the conversation that you want from the list. Overall I would say this works although it is not nearly as nice as the tabbed view found in the desktop version of Lync 2013. I also found that notifications of new IMs in conversations in the background were often overlooked. There is no toast to inform you of new communication, only a hard to see flashing line at the top of the application.


Attending meetings from the Surface RT tablet can be fun as much as it is business – however joining those meetings may be a challenge. Internal meetings that you are attending appear in the Lync MX application and you can click to join when the meeting time gets near meeting time, but federated meetings on your calendar do not appear. If you are lucky enough to be invited to a meeting by a federated partner that is using Lync 2013 RTM you will be able to open the meeting invite and click to join. However, if the meeting came from a Lync 2010 deployment (pre October 2012 update) clicking on the join meeting brings you to the external partners Lync Web App page with no ability to join.


In general, the Microsoft Lync MX application on a Microsoft Surface RT tablet functions well. It is not (and I assume it was not designed to be) a replacement for the Microsoft Lync 2013 desktop client. However, this is also 1.0 of the application, Voice over IP and Video over IP is a reality in this application, and joining Lync 2013 meetings inside and outside the corporation is a reality. For those looking for a great tablet application Lync MX is a must look.

Creating Holiday and Business Hours in Lync 2010/2013 Response Groups

How to create hour sets

It is a common question – I see in Lync Response Groups the option to use a pre-configured hour set but I don’t see an interface to create them…how do I add them to Response Groups? Creating pre-configured hours for Business Hours is convenient when creating multiple Response Groups and a requirement when you want to set Holiday Hours. The trick – Lync Management Shell is required.

BUSINESS HOURS

The process is not difficult and requires limited skills to complete. We start by building a variable of dates and times and then apply the variable to a new Hours of Business or Holiday object.

If your business had hours of 8-5 Monday through Friday we would create the set as follows:

$weekday = New-CsRgsTimeRange -Name "Weekday Hours" -OpenTime "8:00" -CloseTime "17:00"

Again, this is simply the data set in our variable and has not actually created anything. Once this variable has been set we must use it to create the CsRgsHoursOfBusiness object. To create the object we would use the following command:

New-CsRgsHoursOfBusiness -Parent "service:ApplicationServer:lyncpool.domain.com" -Name "Business Hours" -MondayHours1 $weekday -TuesdayHours1 $weekday -WednesdayHours1 $weekday -ThursdayHours1 $weekday -FridayHours1 $weekday

As we can see, the options listed indicate the application pool where we are creating the object. The Name is the display name as we would see it when creating the Response Group; the MondayHours1, TuesdayHours1, etc. indicate the time block we are associating the previously defined variable. There is also a ‘2’ option for all days – helpful if your day is split such as open 8am – noon, closed for one hour, and then open from 1:00pm to 5:00pm.

HOLIDAYS

The same concept is used for creating a holiday set. The main difference for the holiday set is that it most likely will be created per year – so managed as a yearly object. Again, we start with creating our variables. Assuming there are multiple holidays you are observing in a single year there will be multiple variable we set; as an example of 2012 US expanded bank holidays we would set the following:

$newyearsDay = New-CsRgsHoliday -StartDate "1/2/2012 12:00 AM" -EndDate "1/3/2012 12: 00 AM" -Name "New Year's Day"
$civilRightsDay = New-CsRgsHoliday -StartDate "1/16/2012 12:00 AM" -EndDate "1/17/2012 12:00 AM" -Name "Civil Rights Day "
$presidentsDay = New-CsRgsHoliday -StartDate "2/20/2012 12:00 AM" -EndDate "2/21/2012 12:00 AM" -Name "President's Day"
$memorialDay = New-CsRgsHoliday -StartDate "5/28/2012 12:00 AM" -EndDate "5/29/2012 12:00 AM" -Name "Memorial Day"
$independenceDay = New-CsRgsHoliday -StartDate "7/4/2012 12:00 AM" -EndDate "7/5/2012 12:00 AM" -Name "Independence Day"
$laborDay = New-CsRgsHoliday -StartDate "9/3/2012 12:00 AM" -EndDate "9/4/2012 12:00 AM" -Name "Labor Day"
$columbusDay = New-CsRgsHoliday -StartDate "10/8/2012 12:00 AM" -EndDate "10/9/2012 12:00 AM" -Name "Columbus Day"
$veteransDay = New-CsRgsHoliday -StartDate "11/12/2012 12:00 AM" -EndDate "11/13/2012 12:00 AM" -Name "Veteran's Day"
$thanksgivingDay = New-CsRgsHoliday -StartDate "11/22/2012 12:00 AM" -EndDate "11/24/2012 12:00 AM" -Name "Thanksgiving Day"
$christmasEve = New-CsRgsHoliday -StartDate "12/24/2012 12:00 AM" -EndDate "12/25/2012 12:00 AM" -Name "Christmas Eve"
$christmasDay = New-CsRgsHoliday -StartDate "12/25/2012 12:00 AM" -EndDate "12/26/2012 12:00 AM" -Name "Christmas Day"

The variable names set are completely arbitrary and up to you – as well as the duration of the holidays. You can add/adjust/modify as required for your business. The holiday set object is then created using these variables using the following command:

New-CsRgsHolidaySet -Parent "service:ApplicationServer:lyncpool.domain.com" -Name "2012 Holidays" -HolidayList($newyearsDay, $civilRightsDay, $presidentsDay, $memorialDay, $independenceDay, $laborDay, $columbusDay, $veteransDay, $thanksgivingDay, $christmasEve,  $christmasDay)

In this command you can see we are calling the variable previously set and adding them to the holiday set list named 2012 Holidays.

MODIFYING A HOLIDAY SET

By creating the Business and Holiday sets we can now reference them when creating or modifying a Response Group. It also means, with a simply update to either set all Response Groups referencing the time and date sets take on the new schedule (preventing us from needing to update all Response Groups one-by-one which would be a tedious task if there were numerous Response Groups).

To modify a holiday set we would set a variable and then apply the variable to the holiday set. This is a multiple step process and starts with defining the variables.

$y = Get-CsRgsHolidaySet -Identity "service:ApplicationServer:lyncpool.domain.com"  -Name "2012 Holidays"
$newyearsEve = New-CsRgsHoliday -StartDate "12/31/2012 12:00 AM" -EndDate "1/1/2013 12: 00 AM" -Name "New Year's Eve"
$y.HolidayList.Add($newyearsEve)
Set-CsRgsHolidaySet -Instance $y

The first variable calls the Holiday Set in we wish to modify. The second variable defines the holiday times just as we did when we were creating the holiday set originally (in this case we decided to be closed the day before  New Years 2013 or December 31, 2012). We then build the command and commit it using the last two PowerShell statements.