Tuesday, 26 August 2014

Configure Sonus gateway to translate a 408 to 504 for Lync

During some DR testing recently I came across an interesting situation that caused calls to fail in the event 1 of my 2 SIP services went down. I wanted to prove than in the event of a SIP provider/network failure, my 2 Front End pools would continue to route calls via the secondary gateway.

To simulate a SIP provider failure I pulled the network cable from the back of the Sonus gateway. I noticed fairly quickly that the gateway reported that the SIP signalling group was down. I then made a test call from a Lync user who's primary gateway was the one with the simulated failure. The call did not go through! After running some traces I found that the gateway was sending a "408 Request Timeout" message back to Lync. This is a problem because Lync will treat response codes in the 400 range as final, and will not attempt to route the call via any other configured gateways. This actually makes sense as 400 range response codes are client failure responses.

So how do we get around this? If we where to send a server failure response code from the 500 range, Lync will recognise that the server/service is down and attempt to re-route the call. To achieve this we will need to use an outbound translation rule on the Lync signalling group to change a 408 (Client Request Timeout) to a 504 (Server Timeout).

First create a "Message Rule Table" to add the new rule to:






















Create a new "Status Line Rule" rule as follows:


Add the rule properties:



In my case I used a regex replacement to achieve a 408 to 504 re-write:



Once your translation rule has been added, go to the Lync "Signalling Group" and add as an "Outbound Message Manipulation"":



To verify the change has had the desired effect I used the Sonus LX tool. You should now see 2 invites - the first is an attempt to route the call via the primary gateway, the second is the call trying the secondary gateway.


The request to route via the down signalling group results in a 408 being generated:

The translation rule in the Lync signalling group translates the 408 to a 504 and sends it to Lync:





Wednesday, 13 August 2014

Lync 2013 August 2014 Client Updates Released

Updates for the Lync 2013 client have been released. For more information on updates and historic downloads see here.


Product Update
External KB
Lync 2013: August Update 2014
Lync 2013: August Update 2014 (Lynchelp)


Tuesday, 12 August 2014

Lync 2013 Meeting Icon Missing

Recently a client had an issue with the meeting icon not appearing in the Lync client. Initially I though this was an Exchange EWS integration issue, however upon further investigation found that all other EWS functions were working as expected. I had never come across this issue before so I took to the internet to see if anyone else had seen this..... Once again Ken Lasko to the rescue :)

It appears that the July 2013 (CU4) client update for Lync introduced some new icons (Q&A and Meeting), however the files that contain those icons were not updated as part of the same process. Rather stupidly these files are updated separately by Office updates. Moral of the story - If you see this issue make sure that your Office updates are up-to-date.

In summary:
  • MSO.DLL and MSORES.DLL contain the icons used by Lync, however these don't appear to be updated by Lync specific updates even though Lync relies on them
  • To ensure MSO.DLL and MSORES.DLL are updated to support the new Lync icons, make sure Office is updated at the same time. Look out for KB2817489 and KB2817491 (they appear to be the same update)
  • Compare the versions of these files before and after updates and make sure that they change. In Office 2013 x32 installations, those DLLs are found in C:\Program Files (x86)\Common Files\microsoft shared\OFFICE15


Thursday, 7 August 2014

Enable Extension Display in Lync 2010 and 2013 Clients

In order to display a users Line URI with extension number in the Lync client, you will need to add the following custom Lync client policy entry. This is useful in cases where you want to normalise user extensions in to the format tel:+<pilot number>;ext=<extension> e.g. tel:+6495231000;ext=1001, tel:+6495231000;ext=1002 etc




After adding it a client policy, you should see the following from a Get-CsClientPolicy in PowerShell:



Which in turn should result in this in the Lync client:


For more information check out Ken Lasko's blog about it here.


Lync Server 2013 Cumulative Update 5 Released

Its been a long time coming but the Lync Server 2013 updates are finally here:

Version 5.0. 8308.738
August 2014 (CU5)
http://support.microsoft.com/kb/2809243

For more information and downloads for historic updates see http://www.lync.geek.nz/p/lync-updates.html


Saturday, 2 August 2014

Lync Server Step by Step Installation Guide

This is a step by step guide to assist those new to Lync in deploying an Enterprise or Standard Edition topology (its still a draft at the moment).

Hardware Prerequisites
Microsoft recommends the following minimum requirements for Front End Servers, Back End Servers, Standard Edition Servers, Persistent Chat Servers, and Persistent Chat Store and Persistent Chat Compliance Store (Back End Server Roles for Persistent Chat Server):

  • Dual CPU with 6 Cores, 2.26GHz
  • 32Gb Ram
  • 72Gb Disk Space
  • 1GHz Network adapter

For Edge Servers, Standalone Mediation Servers, and Directors Microsoft's recommendations are slightly less:
  • Dual CPU with 4 Cores, 2GHz
  • 16Gb Ram
  • 72Gb Disk Space
  • 1GHz Network adapter

In reality these can be much less depending on the number of users and activity. To give you an example for a deployment of 500 users, a Lync Front End will happily run as follows:
  • Single CPU with 4 Cores, 2.26GHz
  • 12Gb Ram
  • 72Gb Disk Space
  • 1GHz Network adapter

Software Prerequisites
Before you get started you will need to decide on and operating system and install some prerequisits. Lync 2013 is supported on Server 2008R2, 2012, and recently 2012R2 with the October 2013 cumulative update.

To make your life easier you can use Pat Richards prerequisites script for Server 2012 and 2012R2 - http://www.ehloworld.com/1697

Server 2008R2


Standard and Enterprise Edition Front Ends
  • .NET 3.5 (installed by default with Server 2008 R2)
  • SilverLight (Required from Lync Control Panel)
  • KB2646886 for IIS 7.5 - http://support.microsoft.com/kb/2646886/en-us *Install after PowerShell below is Run as it requires IIS to be installed

PowerShell for pre-req's:



Persistent Chat
PowerShell for pre-req's:


Director
PowerShell for pre-req's:



Edge
No additional prerequisites are required.

Mediation
No additional prerequisites are required.

Server 2012
  • Apply all Windows Updates
  • Microsoft .NET Framework 4.5 - http://go.microsoft.com/fwlink/p/?LinkId=268529
    • After Installation ensure WCF Activation and HTTP Activation are enabled
  • Windows PowerShell 3.0 (installed by default with Server 2012)
  • Windows Identity Foundation 3.5 (install from Server Manager)


Standard and Enterprise Edition Front Ends
  • .NET 3.5
  • SilverLight (Required from Lync Control Panel)

PowerShell for pre-req's:



Persistent Chat
PowerShell for pre-req's:


Director
PowerShell for pre-req's:



Edge
No additional prerequisites are required.

Mediation
No additional prerequisites are required.

Active Directory Preparation
Schema Update - Enable-CsAdServerSchema
Schema Check – Get-CsAdServerSchema


Forest Prep - Enable-CsAdForest -GroupDomain <domain to create security groups>
Forest Check - Get-CsAdForest



Domain Prep - Enable-CsAdDomain –Domain <domain to prepare>
Domain Check - Get-CsAdDomain



NOTE: After Active Directory preparation has completed it’s a good time to add the CSadministrator role to user account that will be performing the installation as well as any other account that will require full access to Lync. It is also worth adding RTCUniversalServerAdmins to the installation account.


DNS Records
Create the DNS records required to support the topology.

*Ensure that DNS round robin is enabled for DNS load balancing.


Lync File Share
The folder must be shared, however when the Topology is published the required NTFS permissions will be added.

Topology
Create your Lync Topology using the Topology Builder.

If you already have Lync 2010 installed select “Download Topology from existing deployments”, otherwise create a “New Topology”.


Standard Edition
Run “Prepare First Standard Edition Server” to install SQL Express and populate RTC databases. This step is only required for new deployments, and does not apply to migrations from Lync 2010.

Enterpise Edition
TBC

Install Backend Databases (this can be completed when publishing the topology)

Pre-req’s:

  • SQL sysadmin role is required to install Lync databases
  • Remote access to SQL must be configured and the relevant ports opened
  • If SQL mirroring has been defined then the SQL share and permissions must have already been created

Install-CsDatabase -CentralManagementDatabase -SqlServerFqdn <SQL Server FQDN>

NOTE: The databases can also be installed using the topology builder, however if the databases are not in the default path it is better to use PowerShell.



Publish the Lync Topology
When you publish the topology for the first time the backend databases are created. One if these databases, named XDS, holds data for the Central Management Store (CMS). This is an important database because it holds Lync Servers Topology, policy and configuration information.

  • Topology - Topology information that was generated by the Topology Builder tool
  • Policy - All of the policies that you configure in Lync
  • Configuration - Configuration information such as certificate and dial-in conferencing access numbers.

A replica copy of the XDS database is located locally on each Lync Server role as an instance of SQL Server Express named "RTCLOCAL"'.

Permissions required to publish the topology:


What should you check after the topology has been published successfully?

  • Check that the Lync Share has been populated


  • Check that the following Db’s have been created
    • LIS (Local Information Server)
    • XDS (Configuration Database)

Install Server Roles
Once the topology has been published you are ready to install the Lync Server roles on the pre-built servers. One of the nice things about Lync is the ease in which this is done. All you need to do is run the installer and work through the wizards. Each server will contact the Central Management Store (CMS) to learn the role it lays in the topology. With this information the required components will be installed.

For each server role the Lync Deployment Wizard needs to be run, here are the steps:

  1. Install Local Configuration StoreEdge Server

    Export-csconfiguration -filename c:\topology_export.zip
  2. Setup or Remove Lync Server Components

    Tip: The Edge Server requires that you add a DNS suffix to the computer name so that it matches the FQDN defined in the topology
  3. Request, Install or Assign Certificates

    Depending on your security requirements you may wish to create a certificate template that has a validity period equal to the period you expect the current version of Lync to be in service.
    • FE Certificate
      • SN: FQDN of Pool
      • SAN: FQDN of FE, meet, dialin, admin, lyncdiscoverinternal, lyncdiscover, web services internal, sip, sipinternal
      • OAuth – Lync servers use this to communicate between themselves
    • Mediation Certificate
      • SN: FQDN of Mediation server
    • Edge Server Certificate
      • Internal SN: FQDN of Edge server
      • External SN: Access FQDN
      • External SAN: Access FQDN, Conferencing FQDN, sip, sipexternal, xmpp
4. Start Services

After Lync server roles have been installed there is an additional step if you have deployed monitoring. From the Lync Deployment Wizard select “Deploy Monitoring Reports”. When asked for a read only group normally RTCUniversalReadOnlyAdmins would be selected.



Hope this helps, if you have any questions just leave a comment below.