One of the new features that have being introduced to new version of MS Lync is Skill based search. Which perform search for People in SharePoint 2010 Profiles instead of the contact lists or directory on the Lync Server.
Setting up the Lync to be able to integrate with SharePoint is not that hard as one would imaging. But there are few short comings on this version of the integration which may need some extra code development efforts to get them to fully functional with what you may need.
In this post I will be discussing one of the short coming that I faced and how I overcome that. But this may not be a shot coming, but with my efforts I failed to get it work the way I wanted it to be. Also this may not be the only solution and I am more than happy to accept any another better ways of doing this. The basic functionality of Lync-SP skill based search is to provide users with the ability to perform people searches with Lync Client against “built-in” or out of the box SharePoint user profile fields such as “Ask Me About”, etc . When I said built-in, I meant the default set of user profile properties. However my requirement is bit beyond that. What I wanted was to have couple of custom SharePoint Managed Metadata Columns in user profile and Lync client to be able to perform people search against all the built-in properties plus new custom fields.
Here is the solution that I have been asked to implement by one of my colleague.
- Have the normal Skill Based Search working
- Hide the one of the built-in fields form the SharePoint MySites.
- Let the hidden field being populated with the content on those custom fields.
- Have the SharePoint Search crawler to crawler to pick content form the hidden field and ready being picked on search results by the People Search.
The hardest part that I faced is to sync up the hidden field with the content form the custom fields. The initial idea that came to my mind is to have a SharePoint Event Receiver to capture any updates to user profile custom fields and trigger the sync on that event. Unlike usual SharePoint fields no Event Receivers can be wired up with User Profile Properties. So what most of the sites suggesting to use is a Timer Job to capture all the updated profiles and have it scheduled for frequency that will suit your requirement.
To accomplish this following are the steps that I followed,
- Setup User Profiles Sync and My Sites with SharPoint 2010
- Setup the Search Center to be able to search for People
- Configure the Lync Server with Public and Intranet URLs for Search Center and Search results page
- Implement a Timer Job to Sync up fields on change of another field( here the choosen out-of-the-box field will be updated with content on the custom user profile property on which the skill search needs to be run against)