At the recently completed Lync Conference 2013 Microsoft announced two new features coming for telephony in the February 2013 update, group pickup and location based routing. Having recently upgraded my lab after MS released the update I thought it would be handy to cover the process of setting up group pickup.
TLDR: skip down to “Configure Group Pickup”
When engaging with clients about Lync it’s not unusual to have a bit of a comparison between Lync telephony features and those on a more traditional PBX system. Group Pickup is one of those things that came up quite frequently.
Group Pickup is the ability to answer a ringing phone by dialling a special short code on your handset, commonly known as call pickup. When you dial the code the phone system will route any incoming calls to phones in a certain group to your handset for you to answer. This solves the problem of a phone ringing unanswered in the corner of the office as anyone nearby can answer the call on your behalf. This scenario worked great in the PBX world where things are fairly clear cut but doesn’t necessarily translate well into the Lync world – just because you are not at your desk to answer a ringing handset it doesn’t mean you can’t answer the phone. You might have “simi-ring to mobile” enabled or you might be able to answer the phone from your laptop at home…
A semi-solution to this problem in Lync 2010 & Lync 2013 RTM was to configure “team-call groups”. Team-call groups allowed each user to configure a group of people who would be notified about an incoming call if you didn’t answer it after a period of time. After receiving the notification they could choose to answer your call (or ignore it!). While this solution fits well with the user centric Lync model of putting a user in control of their own communications it doesn’t fix the problem of phones ringing unanswered in the corner of the office and irritating anyone in earshot.
Enter “Group Pickup”. Group Pickup is a feature introduced in the February 2013 update for Lync 2013 so it requires you to patch your system and then carry out some configuration to enable.
- Lync 2013 standard edition
- Server 2012
- Lync 2010 enterprise edition
- Telephony provided by a SIP trunk to a Mitel MXe3300
First you need to patch your 2013 environment. You can download the latest update here and it’s important you read about the install process as well at the respective KB article. Having taken appropriate backup precautions lets continue…
- First check if you have any active conferences or calls running in Lync by running “get-cswindowsservice” in powershell on your front end (I had three test conferences so was okay to continue)
- Next run the “LyncServerUpdateInstaller.exe” on your server and start the install process
- Once you have updated all your front-ends you need to update your backend database too (for more info check out the KB…)
- For my single standard edition this is a simple PowerShell command
- Install-CsDatabase -ConfiguredDatabases –SqlServerFqdn <StandardServerFQDN> –Verbose
- Check the output for any errors or warning messages
- Finally, to make sure you enable the mobility updates that are also included in Lync 2013, enable your topology again
Configure Group Pickup
Now that you’re patched up to date lets get on with enabling Group Pickup. Group Pickup is based around call-parking orbits (number ranges where you can send calls to be retrieved by anyone else in Lync) but they aren’t exposed in the GUI so you need to configure them via PowerShell. You create a range of “internal” extensions that you then assign users too. When someone hears a phone ringing they dial the extension for that persons pickup group and collect their call.
- First lets configure the pickup number range – 6990 to 6999 for me (this gives me 9 different groups I can assign users too)
- New-CsCallParkOrbit -Identity “Call_Collect” -NumberRangeStart “6990″ -NumberRangeEnd “6999″ -CallParkService “<LyncPool FQDN>” –Type GroupPickup
- It’s worth noting that you can’t see your new call pickup group from inside the Lync admin console
- so to check on your call parking / group pickup orbits you need to stick to PowerShell
Now we have a range configured we need to assign users against groups. You can assign as many people as you like to the same group pickup range & people don’t have to be in the same range to be able to answer each others calls.
I.e. if we have 4 people (Ben,Nat,Jen,Ian) and we assigned them as follows:
|Name||Group Pickup range||Area|
|Ben||6990||Upstairs – Tech|
|Nat||6991||Upstairs – Dev|
|Ian||6992||Downstairs – Admin|
|Jen||6990||Upstairs – Tech|
Then if Nat’s phone was ringing I could answer it even though we’re assigned different ranges… When planning for this I imagine you would generally assign people who have desks in close proximity to each other in the same pickup range.
The process of assigning users to a range is a bit of a PITA as you need to use SEFAUtil.exe to configure the range on a users behalf. SEAFAUtil.exe is a tool that lets you configure user settings on their behalf, things like configuring delegates or team-calling etc…
I won’t go into detail about how to setup or configure SEFAUtil as it’s quite involved and would require its own post, instead I recommend you go read some of the great posts that already exist about it – http://blogs.technet.com/b/jenstr/archive/2010/12/07/how-to-get-sefautil-running.aspx
Roughly speaking you need to do the following:
- Find a server that’s not a Lync Front-End (I used my OWAC server)
- Download and install the UCMA Runtime 4.0
- Download and install the Lync 2013 resource kit
- Configure a new trusted application for your new server
- Install the Lync Local Configuration Store on the server
- Assign it certificates
- Start Lync services (no need to bootstrap it, just put on the LCS)
- Cross your fingers and spin round twice on your chair
Now assuming you have a place to run SEFUtil.exe from you can use the following command to setup a user (where 6990 is the extension you want to use from the range you configured):
- SEFAUtil.exe /server:<Lync Pool FQDN> <Username> /enablegrouppickup:”6990″
- If it’s successful you should see some information come back, if you get nothing it means SEFAUtil hasn’t been able to run correctly (seriously – no error messages?! WTF)
Now to test pickup functions ring your test user and while the call is ringing dial their pickup extension from another Lync handset. If everything is correctly configured you should be able to collect the call & if you have Exchange UM in your environment the user will receive a notification that someone else took their call.
Things to note about Group Pickup:
- Only Lync 2013 users can pickup calls. Any 2010 users get an error when dialing the extension
- As the extensions are “internal” to Lync you can’t dial them from non-Lync devices (i.e from our Mitel over a SIP trunk to Lync)
- You might want to create contacts in the GAL so people don’t have to remember pickup extensions
Phew – so after all that you should now be good to go for Call Pickup. Chalk one back to Lync when having that PBX feature talk…