Guest Post from J. Christie
Fellow geeks and ladies, we have a guest post for you today! This comes from J. Christie in Scotland. He’s talking with us on creating custom Lync Presence states. Enjoy!
I’m the Director of ICT at an independent school in Scotland. After trialling (playing with) OCS 2007, I paid serious attention when Lync was announced. Like many businesses our PBX was aging. It was underused (in terms of features – voicemail, conference calling, call forwarding, etc.) due to its complexity. And it was a right royal pain wiring new extensions in old buildings!
So – Lync’s been installed. All staff have the Lync 2010 client. Reception staff have the Attendant for fielding calls. Department heads and non-teaching staff have USB handsets (Polycom cx200, Jabra dial 520 for ‘roaming’ staff). Mobile clients are now supported.
But there’s still a few niggles.
Custom Presence States: When You Must Be Able to Interrupt
For example, Calendar integration – wouldn’t it be nice if Lync not only read the calendar’s Free/Busy info, but could also set your status depending on the category assigned? And use a custom status to indicate, for instance, teaching?
There’s also the issue of DND (Do Not Disturb). DND is easily abused. Yes the user can add in contacts who can interrupt, but wouldn’t it be nice if Lync handled this a bit better. If Reception staff has to locate a pupil, they might need to interrupt a teacher to do that. But if the teacher’s status is DND, they can’t interrupt.
We badly needed that level of detail. With all the different roles education professionals play each day, I needed a way to identify what exactly everyone was doing at that moment AND still reach them in emergencies.
(We also want the ability to break through DND if necessary. But that’s another blog post!)
So I decided to implement custom presence states. Here’s how I did it.
Step 1: Create Custom Presence Code in XML
There’s a good article on TechNet which describes the steps necessary. Link: Configuring Custom Presence States – TechNet
I’ve used the code below to set 4 additional custom status presence states.
- Department Meeting
- Working from Home
The code reads as follows:
<customState ID=”1″ availability=”busy”>
<customState ID=”2″ availability=”busy”>
<activity LCID=”1033″>Department Meeting</activity>
<customState ID=”3″ availability=”do-not-disturb”>
<customState ID=”4″ availability=”online”>
<activity LCID=”1033″>Working from Home</activity>
As you see, I set “Interviewing” to Do Not Disturb level. But the others are set to either Busy or Online, so interruptions are permitted.
Name the file something easily recognizable and valid – like mine, CustomPresence.xml.
Step 2: Make the Code Available to Lync Clients using Powershell
There’s a couple ways to implement this code on clients. I could push it out via Group Policy/SCCM to copy a file locally, and set a registry entry. But that wouldn’t cover all clients.
Instead, using the client policy on the Lync server, I uploaded the custom states file to a server that’s available internally and externally. And referenced from there.
Open Lync Management Shell (Powershell) and make the new custom states available to everyone with this command (switch the URL with your own file’s location):
Set-CsClientPolicy –Identity Global –CustomStateURL “https://webserver.school.org.uk/CustomPresence.xml”
Step 3: Logout, Log Back In & Verify
Log out and back in to Lync and the new Presence states will appear (eventually). Don’t expect instant results, as the policy can take a while to kick in. Default is 3 hours according to TechNet.
At the school, the Lync windows clients are working. Mobile devices don’t yet show custom states (but we’re working on that). Here’s a screenshot of my own Lync client to show them:
Ta da! Custom Presence states, available on-click. Now we just have to encourage the teachers to use them.
Thanks for the post J! Great information.
Have you implemented custom Presence states in your organization? What was the motivation?