Author Archives: Justin Morris

Microsoft UC User Group London – April 2012 Event

Q2 2012 is almost upon us, so we’re back again with another instalment of London’s only user group for Microsoft Lync Pros. This time it’s all about going deep on session management in Lync. We’ve got a great couple of presentations in store and a stylish venue for this quarter’s event thanks to AcmePacket.

First up is Adam talking about his experiences with Fixed-Mobile Convergence in Microsoft UC followed by me presenting about calls flow in Microsoft Lync. I’ll be explaining everything from how Lync clients talk to each other whether they’re internal, out on the internet coming in through the Edge Server, in conferences or dialling a PSTN number. Prepare to learn lots about SIP, SDP and RTP. 🙂

Following that, AcmePacket’s David Wray will be along to talk about their E-SBC (enterprise session border controller) offering for Microsoft Lync and how they do session management. Finally, Tom will close up the night with news, updates and latest resources relating to Microsoft Lync. AcmePacket are kindly sponsoring this event for us at the swish Eight Club in the city, and here’s where you need to be and when:

Where: Eight Club 1 Change Alley London EC3V 3ND (Map Link)
When: 6pm, April 19th 2012

So make sure you come along to learn more about Lync, share some stories with fellow IT Pros and stick around for a beer afterwards. For more info including the agenda and the registration link, check out the post on the MUCUG London blog here.

Look forward to seeing you there!

Doing it Right – Deploying a Lync 2010 Group Chat Multiple Server Environment

Deploying a resilient, highly available Lync Server 2010 environment is high on the list of requirements for most organisations during the design phase of their deployment and for companies deploying Group Chat, that’s no exception.

Each Group Chat server can support 20,000 users and you can deploy up to 3 of them in a pool, meeting all but the world’s largest companies requirements for scale. It’s not like this is an everyday deployment scenario, but it will be commonplace for those organisations requiring resiliency for Group Chat (think financial orgs, trading companies, global teams with “follow the sun” operations).

Unfortunately some of the TechNet documentation is a bit unclear around how to successfully deploy a multiple server Group Chat environment but during a recent Microsoft support case, we discovered the right way to do things. In this post I’ll cover how Group Chat servers interact with the Lync topology and how to correctly get your servers up and running.

Understanding a Multiple Server Topology

If we take a look at the Components and Topologies for Group Chat Server TechNet article, we can quickly get an idea of the two (single and multiple server) Group Chat Server topologies that can be deployed. The multiple server topology, as you can see below, has a lot of moving parts:

Lookup Service + Channel Service = Group Chat Server

Essentially a Group Chat Server is just two services that plug into a SQL database – the Lookup and Channel services – and the Web service.

The Lookup Service is how your Lync Front End pool speaks to each Group Chat Server (via the OCSChat@domain.com SIP URI) in the Group Chat pool. Once connected, this service then assigns a Channel Service to the user so they can access their chat rooms.
The Channel Service does most of the heavy lifting of chat room data in Group Chat and also acts as a relay to other Channel Services running on other Group Chat Servers. Finally, the Web Service acts as a front-end for clients to download file attachments in chat rooms.

Just to be clear here, the Lookup Service is able to perform load balancing because it’s just a SIP enabled account, so no need for a hardware load balancer in Group Chat (bonus right?). 🙂

For more in-depth info on how the Group Chat services work, check out this really good scenario article on TechNet (it refers to OCS 2007 R2, but it’s still relevant).

The SQL database is key

As I mentioned in my post about Group Chat migration, the database is the key component in a deployment as it holds all the configuration and critically, the chat room data that your users will create. The Group Chat Configuration Tool connects directly to it and reads/writes configuration to and from the tbl.Config table and the Channel Service connects to it to serve up chat rooms to users. Essentially, each Group Chat server in the topology will connect to this database and become the middle-man between users and the raw chat data stored in SQL.

Making this SQL database highly available (i.e. putting it on a SQL cluster) is important because we don’t want it to be the single point of failure in our topology.

Defining the Group Chat Pool in Topology

When we run the Group Chat Deployment Wizard for the first time, pointing it to a new, empty database, we have to define the Group Chat Pool FQDN. In doing this, the Deployment Wizard creates a new Trusted Application Pool in the Lync topology with this name. Within this trusted application pool in our topology, it creates a trusted application for the first Group Chat server that is a member of the Group Chat pool. As we run the Deployment Wizard on subsequent Group Chat servers, it creates additional trusted applications underneath out Group Chat pool.

So basically within Topology Builder, the Group Chat pool looks like a Lync Front End pool (with servers sitting inside a pool), but it is represented as a trusted application pool because Group Chat isn’t a dedicated, topology aware server role.

Now it gets interesting, because you might think “I just set up DNS and certificate the same way I would a Lync Front End pool”, but that’s not strictly true..

Certificates and DNS for a Group Chat Pool

DNS records should be created the same way you would for a DNS load balancing Front End pool i.e. two A records for the pool FQDN pointing to the IP addresses of the two servers (e.g. gcpool.contoso.com) and an A record for each server’s FQDN. Pretty straightforward, but certificates are where it deviates.

You should get your certificates for Group Chat as per the TechNet article Obtaining certificates but the gotcha here is that you mustn’t have any SANs (subject alternate name) listed on the certificate assigned to your Group Chat servers. If you do, it will cause a divergence in chat rooms and you will hear reports of users only seeing some users in their chat rooms, let me set the scene:

  • User A will be in Chat Room 1 and see users B, C and D.
  • User E will be in the same chat room (Chat Room 1) but will perhaps see users B, F and H.

Basically, the Group Chat Channel Services don’t talk to each other properly and the member list of a chat room isn’t consistent. The only common name on the certificate assigned to each Group Chat server should be the pool FQDN e.g. gcpool.contoso.com. No SANs. 🙂

Summary

Group Chat is a great tool for a lot of businesses and ensuring it is available 24/7 is critical for organisations that rely on getting the same persistent message out to their teams. Making sure it’s resilient and supports your user base is key to providing a good service to the business.

There is a lot involved with getting a multiple server Group Chat topology up and running (especially after you’ve probably had some dramas just getting one server going) but hopefully this post has given you more of an insight into how Group Chat works in Lync Server 2010 and how to get a nice resilient, load balanced environment.

Cumulative Update 5 (CU5) for Lync Server 2010 Released

CU5 for Lync Server 2010 has arrived! This update fixes the “no video in RCC” behaviour (whereby an RCC cannot make a video call at all), as verified by Jamie Stark here on twitter.

Here are the download links:

  • Updates for Server. You just need the LyncServerUpdateInstaller.exe to update each server. Download here and view the corresponding KB article explaining what’s fixed.
  • Update for Client (64-bit) download here.
  • Update for Client (32-bit) download here.
  • Update for Group Chat Client download here.

Happy patching!

RCC gets video

Update – Fri 02 Mar 8:30am GMT

I wanted to touch on this a bit more in light of Jamie Stark’s post on NextHop overnight. Some important caveats are raised and I want to highlight a few here:

“For RCC-enabled users to make peer-to-peer video calls and join video conference calls, they need a webcam and a headset, handset, or speakerphone for their workstation or laptop.”

“The update does not support the scenario known as Split AV, where audio is delivered through the desk phone and video comes through the Lync client. The Split AV scenario provides an inconsistent and oftentimes suboptimal end-user experience, because the audio and video use different network paths and frequently lose sync. This means when a user starts an audio call using a PBX phone, they cannot add video to that call. If a call is started using the Lync client as the audio endpoint, it can be escalated to include video.”

“The February 2012 update is all client-side with Lync 2010.”

So if you run RCC today, you’re getting video back. Happy days!

Interview with a UC Pro Series on NextHop – Tom Arbuthnot

This month I’ve interviewed fellow Modality consultant Tom Arbuthnot over on NextHop, asking him about how he got into IT and what he loves about Microsoft Lync among other questions. This is the second in an ongoing series where I’ll be interviewing Lync bloggers, community contributors, business leaders and Microsoft staff every month on the Microsoft NextHop blog.

Check out the interview with Tom here. You can also check out previous interviews of UC Pros here on my blog and my last interview of Lync MVP Randy Wintle on NextHop here.

If you have suggestions for who I should interview next, feel free to drop me a line!

Talking about Lync 2010 Mobility on RunAs Radio

So a few weeks ago I jumped on the phone with Richard Campbell from the legendary Microsoft IT Pro podcast, RunAs Radio to talk about mobility in Lync 2010. It was really great fun to just wax lyrical with him about the different mobile platforms, evolution of these, business impact of mobility and data issues.

From RunAs Radio:

“Richard talks to Justin Morris about the mobility component of Lync. Only just released, Microsoft has Lync clients for iPhone, Android, Symbian and Windows Phone 7. Justin talks about how the mobile Lync client extends Lync’s concept of presence to the smartphone, so that people working in the enterprise can connect and communicate with their fellow employees on the road the same way. The conversation digs into the challenges of data connectivity versus cell telephony, and how Lync provides a call-via-work mechanism to centralize and control cellular call costs. And don’t worry – Skype comes up in the conversation too!”

Head over to the RunAs Radio site and download the MP3 here. Make sure you subscribe to their show also as it’s a great resource for IT Pros. Hope you enjoy the show!

MUCUG London seminar at UC Expo

UC Expo is on again this year on the 6th and 7th of March at Olympia in London. It’s the premier UC event in the UK/EMEA for vendors and end-user customers to come together and see the latest developments in the industry along with lots of informative seminars. I’ve attended the last 2 years (including manning our Modality stand last year) and enjoy meeting new people, catching up with old ones and learning about the new and exciting tech coming out.

This year however, Tom, Adam and I have teamed up with UC Expo to present our own little MUCUGL seminar on Lync Mobility. We’ll be talking about the new client and how it can fit in with your existing or new Lync deployment, as well as getting in front of a few new faces and talking about how awesome our user group is. 🙂

When: 6th March, 3:50 PM – 4:20 PM

Where: Mobility Track

For more info and to add our seminar to your MYVISIT planner, check out the seminar page on the UC Expo site here.

Look forward to seeing you there!

Migrating Group Chat to Lync Server 2010

Group Chat is a bit of tricky beast in OCS 2007 R2/Lync Server 2010. It can take a bit of caressing to get it operating properly and I regularly see folks with problems on the TechNet forums that need a bit of a hand, so you’re not alone if you have problems deploying it.

Migration Pains

So when it comes to actually migrating your existing Group Chat environment from OCS 2007 R2 to Lync Server 2010, the whole process can be fraught with danger. The Microsoft TechNet library article does a decent job of explaining how to do this, but when it comes to running a SQL query to replace the necessary table entries it can become a bit of confusing.

The Process

In this post, I’ll show you a quick and easy way to get your data across and your GC up and running on Lync.

Moving the database

When you approach this, you might think “ok, let’s deploy a new Group Chat environment and then migrate the data over”, but this is where I stumbled first time also. Contrary to judgement, you don’t provision any new Lync Server 2010 Group Chat servers or databases at all. The first thing you need to do is move the database from OCS 2007 R2 before you do anything on the Lync side by following this process:

  1. Open Group Chat Server Configuration on the old Group Chat server/s and stop the Channel and Lookup services on all servers. This will stop any changes being made to the database like new chats in chatrooms.
  2. Log onto the old SQL server and open the instance that contains the Group Chat database.
  3. Backup the Group Chat database to file and move it to the new SQL server.
  4. Open SQL Server Management Studio on the new SQL server and restore the backup into the new instance you’re using.

Preparing SQL and modifying the database

Next, you need to make sure your new SQL server is setup for the Group Chat database and that your Lookup and Channel service accounts have the necessary access. Following that, you need to manually edit a table to allow a new configuration to be made:

  1. Assign your Group Chat Lookup, Channel and Web service accounts to the instance using this process and make sure they have dbowner rights on the database.
  2. Make your Group Chat Lookup, Channel and Web service accounts a member of the local Administrators group on your Group Chat server.
  3. Find the table called tbl.Config and remove all the rows that reference both your old OCS Group Chat servers and your OCS Front End pool or Standard Edition servers.

This will allow you to populate the table with new data when you install Lync Server 2010 Group Chat. Once you’ve removed all these rows, the fields in the Group Chat Server Configuration Wizard are free to be edited (and are no longer greyed out if you just point the wizard at the database without modifying these rows).

Installing Group Chat

Now that we’ve prepped our database, we can log onto the new Lync Server 2010 Group Chat server and begin a new installation as documented here. When prompted to specify a server and database name, you’ll put in the FQDN and database name of the server and database you just worked with i.e. the new one. The GC Server Config Wizard will pick up some config (from the tbl.Config table), but it will mostly be blank so you can config new settings like your Lync 2010 Front End pool as the next hop.

Once the wizard is complete and you start your services for the first time, you’ll be prompted to upgrade the database from OCS 2007 R2 to Lync Server 2010. Press OK on this and let the wizard do it’s thing. Following this, your services should (hopefully) start (and stay started) OK. If they don’t, check the event log for database access or certificate related issues.

In Summary

As always, make sure you backup and make a copy of your database before you do this, just in case. If you have the resources, test this in a non-production environment beforehand so you don’t incur unnecessary downtime.

Hope this helps you understand Group Chat migration a bit better. I know it was a steep learning curve for me when I first attempted it.

Dial any number in Internet Explorer using Call Lync IE Accelerator

New guy on the block at Modality Systems, Tom Morgan has recently whipped up an awesome new app to fill in the gaps in functionality in Lync on the desktop.

Lync comes with an IE add-on by default which is supposed to enable you to dial any number from within Internet Explorer, but we frequently find that it only allows you to dial US formatted numbers, case in point:

 Lync picks up the US number ok, but..

When it comes to UK numbers, no dice.

This kind of behaviour is actually acknowledged by Microsoft and the resolution is that “Phone-number detection in Internet Explorer is not enabled when the phone number is not a United States number and does not start with a “+”.” and that there is “currently no workaround for this issue”.

Until now. Tom has written an accelerator for Internet Explorer that allow you to dial any number within IE easily and quickly.

How does it work?

First we install the IE accelerator from Tom’s blog over here and click on Install Accelerator. After that, we’re ready to go, it’s that simple.

Now when we find a number on a webpage we want to dial, all we need to do is highlight it, right-click it and click Call using Lync.

I’d only just installed the accelerator which is why I add to hover over All Accelerators, but you can move it to the left column by setting it as a default accelerator in the Manage Accelerators options in IE.

After we hit Call via Lync, Lync pops up with a conversation window, ready to dial the number. Notice that Lync has applied our company normalisation rules also? Pretty neat.

Once I click the yellow highlighted part, the call dials and I’m good to go.

It does display a new tab in IE that says “Smile! You’re in a Lync call!” but according to Tom it’s an unavoidable side effect:

“It’s a little finicky because in an accelerator you can only make an HTTP call. So, I’m making an call to a page, passing the selected number, then using JavaScript to invoke to call. That works fine, but the downside is that you’re left with a new page open in the browser. There’s really nothing I can do about that so I’ve stuck a big smiley face on it.”

But hey, it works right? Go and download it now from Tom’s blog and follow him on twitter as well.

Support for Large Meetings (up to 1000!) on Microsoft Lync Server 2010

A quick one to let you know that Microsoft have just released a document with advice on how to configure your Lync Server 2010 environment to support large meetings.

Previously the hard limit was always 250 participants per meeting. That was increased not too long ago to 1000, but there was no guidance regarding how you could plan or scale your environment for this, until now.

The catch is, you need a dedicated Front End pool for the meeting, and only one meeting can occur at a time. No users, no other services on it at all. I can see the reasoning behind this to achieve the best user experience but personally, I’d probably be sticking to the Live Meeting service if I needed to host meetings of this size.

When it comes to what can be presented in the meeting, we’re talking about most functionality. PowerPoint, application sharing, audio and video. No mention of application/desktop sharing though, so it sounds like that’d hit your resources hard in a huge conference like this.

The document also includes some interesting stats Microsoft found around how conferences are used on Lync. To find out more, download the document here from the Download Center.

Configuring Site Level Simple URLs in Lync Server 2010

Last month I deployed a new Lync 2010 environment with many regions/ pools globally coupled with multiple SIP domains of which we had to design a Meeting Join solution with simple URLs to accomodate the geographically dispersed nature. Let me set the scene.

The Problem

If we just had say, https://meet.contoso.com as our global meeting join URL (defined in the Lync Topology Builder) and pointed this to say, the EMEA Lync Front End pool, it would mean all users worldwide would be hitting that pool when they click the link in Outlook to join the meeting. Not ideal and not scalable.

The Solution

To ensure only EMEA users connect to the EMEA pool (and not the APAC users as well, for example), we need to create site level simple URLs to ensure users only connect to the pool in their region and that these URLs take precedence over the default global level simple URLs.

For this scenario, I selected Simple URL Naming Option 2 from the Planning for Simple URLs article on TechNet, which gives me a bit of flexibility and means my simple URLs for EMEA for this scenario look like this:

https://lyncemea.contoso.com/meet
https://lyncemea.fabrikam.com/meet
https://lyncemea.contoso.com/dialin

and my APAC URLs for example, would look like this:

https://lyncapac.contoso.com/meet
https://lyncapac.fabrikam.com/meet
https://lyncapac.contoso.com/dialin

and so on per global region. Note that you can only have one dialin simple URL per site – you can’t have a different dialin simple URL for each SIP domain.

For this article, I’ll only be covering the meet and dialin URLs, not the admin URL for LSCP access.

Creating a new Simple URL Configuration

First we need to create a new simple URL configuration that we will end up applying new simple URLs to.

  1. The first command we need to run is Get-CsSite. This cmdlet retrieves the list of Lync sites in the topology.
  2. After we’ve identified the site name (EMEA), we run the New-CsSimpleUrlConfiguration cmdlet against the site e.g.
    New-CsSimpleUrlConfiguration -Identity site:EMEA

Creating new Simple URLs

After we’ve created the new Simple URL configuration, we need to first create simple URL entries bound to a variable in our current PowerShell session and then simple URLs bound to a different variable.

Simple URL Entries

We run the following cmdlets to create a new simple URL entry for each URL required and then bind it to the variable specified at the start of the cmdlet.

$urlEntryContosoMeet = New-CsSimpleUrlEntry -url “https://lyncemea.contoso.com/meet

$urlEntryFabrikamMeet = New-CsSimpleUrlEntry -url “https://lyncemea.fabrikam.com/meet

$urlEntryAllDialIn = New-CsSimpleUrlEntry -url “https://lyncemea.contoso.com/dialin

Simple URLs

Next, we need to actually create the new simple URL in Lync, set which component (meet or dialin) it will apply to, which SIP domain it’s set for, which simple URL entry it will use and then (phew!) bind it to the variable we specify at the start of the cmdlet. Run each cmdlet per simple URL you need to create:

$simpleURLContosoMeet = New-CsSimpleUrl -Component meet -Domain contoso.com -ActiveUrl https://lyncemea.contoso.com/meet -simpleurl $urlEntryContosoMeet

$simpleURLFabrikamMeet = New-CsSimpleUrl -Component meet -Domain fabrikam.com –ActiveUrl https://lyncemea.fabrikam.com/meet -simpleurl $urlEntryFabrikamMeet

$simpleURLAllDialIn = New-CsSimpleUrl -Component dialin -Domain * -ActiveUrl https://lyncemea.contoso.com/dialin -simpleurl $urlEntryAllDialIn

Bringing it all together

So now we have a bunch of variables floating around in our current PowerShell session, we need to apply them to something. To make it real, we need to add the variables of all our simple URLs from the previous step to the new site level simple URL configuration we created earlier by running this cmdlet:

Set-CsSimpleUrlConfiguration -Identity “site:EMEA” -SimpleUrl @{Add=$simpleURLContosoMeet,$simpleURLFabrikamMeet,$simpleURLAllDialIn}

Once that’s applied successfully, we need to run Enable-CsComputer to apply the configuration to IIS on the Front End server/s in the pool.

To review the changes committed, run the cmdlet Get-CsSimpleUrlConfiguration to retrieve the Global Simple URL configuration and the new Site level Simple URL configuration, each with the individual URLs we created.

Last Words

Make sure you take note of the difference between a Simple URL entry and a Simple URL, as they are different things in Lync Server Management Shell that are brought together to create a configuration.

To reiterate, note that you can only have one dialin simple URL per site – you can’t have a different dialin simple URL for each SIP domain.

Hope this makes it (a bit) clear on how to setup site specific simple URLs in Lync. As Lync grows in maturity and market share, we will see larger, more widespread organisations adopting it which means you’ll need to know how to get this kind of configuration going. 🙂