Lync 2013 – Force the Lync client to always ‘show User Picture’ – video guide

Good Morning

This blog post and video guide describes how to force the Lync 2013 client to always show the end users Lync picture even after the user might have changed the setting not to show the picture.


To but a little bit of background around this, as with Lync 2010, Lync 2013 does not have the ability to block or stop a user from deselecting the option of showing their Lync picture.  This picture element is something I’m asked many times while working with customers.

I know this is something which we all would like as a option but as of today and as far as I’m aware this isn’t something close to Microsoft’s heart in fixing or providing a solution.

Also to confirm there isn’t any policies you can assign OR and registry setting to can associate to block the user changing their setting. So what solution and where is this setting stored….. Well its not in the xds database and actually its started within the front ends rtclocal database.

So to confirm before you go any further in the blog, I’m pretty certain that this solution will be one thats unsupported from Microsoft and also one that as we are going to change the rtclocal will be seen as a ‘borderline’ hack. Also i would like to point out I’ve ran this within my lab without issue for sometime, however i would suggest you test it within your lab area before you embark on using it in your production environment. <remember I hold no responsibility> 🙂

Ok no the small print is out of the way, what is the fix.. ?? Within the rtclocal there is a table called publishedstaticinstance which has a field that holds a massive binary value. As part of the challenge is to convert the binary into something thats readable and something we can update


Under the covers what this binary code states is DisplayADPhoto true/false.

So as part of the update we change for the status and update accordingly when the status is false.

As this is running on rtclocal, the way the guide runs this is via a scheduled task running a .ps1 powershell command. Also the SQL only checks the last 15 minutes of changes to reduce locks and database processing. Also the scheduled task I’ve created runs every 15 minutes so with the two you will never be out of sync with what a user is doing. (you could run this script more regular than every 15 minutes but given the requirement i think 15 is a good medium to use).

As for the SQL command some thanks go out to the tech net community as understanding the converts within the SQL was a slight challenge.

PS1. Script

function Enable-UserPhotos ($Domain, $OffSet) {(Get-CsPool (Get-CsComputer “$(hostname).$Domain”).Pool).Computers | % {Invoke-Sqlcmd -Query “update rtc.dbo.PublishedStaticInstance Set Data = CONVERT(image,convert(varbinary(4000),REPLACE(convert(varchar(4000),convert(varbinary(4000),Data)),'<displayADPhoto>false</displayADPhoto>’,'<displayADPhoto>true</displayADPhoto>’))) where [LastPubTime] >= DATEADD(mi,-$($OffSet),getdate()) AND convert(varchar(4000),convert(varbinary(4000),Data)) like ‘%<displayADPhoto>false</displayADPhoto>%’;” -ServerInstance “$($_)\RTCLOCAL”}
} Enable-UserPhotos -Domain ‘your domain name here’ -OffSet 15


Remember the script is changing the rtclocal database on the fronted and this will be seen as not supported by microsoft.!

Video guide below.


Iain Smith

Lync 2013 – Enabling Sharepoint SkillSearch within the Lync Client

Happy Lunchtime

Thursdays 1 a day Lunchtime blog post

In this blog we will look at how to enable SharePoint searching within the Lync 2013 client. This is super simple to implement as its only 4 powershell commands

step 1

Login into one of your frontend Lync server/s (if you are EE).

open up Lync Management Shell

Firstly what we will do is do a simple get command to get an understanding of whats already within the client policy

using PS type Get-CSClientPolicy


you will see the information associated with each identity. For this blog post I will be adding the sharepoint setting to the global policy

with this in mind run the bellow PS command specifying your sharepoint portal information
Set-CSClientPolicy -identity global –SPSearchInternalURL http://<server>.<domain>/_vti_bin/search.asmx
Set-CSClientPolicy -identity global –SPSearchExternalURL http://<server>.<domain>/_vti_bin/search.asmx
Set-CSClientPolicy -identity global –SPSearchCenterInternalURL http://<server>.<domain>/SearchCenter/Pages/PeopleResults.aspx

Set-CSClientPolicy –SPSearchCenterExternalURL http://<server>.<domain>/SearchCenter/Pages/PeopleResults.aspx

***Its worth running the URL into IE before you run these powershells into the policy.

Once you’ve completed this, using your lync client, logout and kill the lync process for the client then log back in. Now using CTRL-right click open up the lync configuration option

ensure that the paths are being picked up by the client.

now in the lync client type a search ie: Application Development and select ‘Skills’

if you return a lot of entries you will see the option at the bottom of the Lync client to open the results within SharePoint

And that’s it…

Sametime for tomorrow for Fridays Lunchtime blog

Lync 2013 – Configure Voicemail Escape

Hello All

Tuesday’s 1 a day lunchtime blog post for this week

For todays lunchtime blog posting, we are going to look at setting up and configuring Voicemail Escape.

What’s voicemail escape.??? well this is when you have simultaneous ringing set on your Lync 2013 with calls routing to both the Lync client and also to your Mobile/Cell via PSTN.

Why do I need voicemail escape.??? The gotcha and need is if your Mobile/cell is out of range OR busy OR turned off OR out of juice the call will get picked up straight away by the voicemail on the mobile/cell. What the voicemail escape does is it allows for this and ignores the mobile/cell trying to pick the call up instantly and sending it the the Mobile VM.

Adding the required powershell command will mean that if your mobile/cell is off etc, the call will continue to ring on your Lync client then it will route to the LYNC Voicemail as part of the Lync installation.

Using the Lync powershell command we need to add further config information to the Lync voice policies as part of the Lync installation.

Start the Lync Server Management Shell: <thanks to MS for the copy/Paste below>

Click Start, click All Programs, click Microsoft Lync Server 2013, and then click Lync Server Management Shell.

  • Specify the following parameters to Set-CsVoicePolicy:
    • EnableVoicemailEscapeTimer – Enables or disables the escape timer.
    • PSTNVoicemailEscapeTimer – Specifies the timeout value in milliseconds. The default value is 1500 milliseconds, and the value can range from 0 milliseconds to 8000 milliseconds.

<2000 milliseconds = 2 seconds>

Example of the powershell Command

Set-CsVoicePolicy <UserVoicePolicy> -EnableVoiceMailEscapeTimer $true – PSTNVoicemailEscapeTimer 2000

NOTE: its worth testing the milliseconds from smallest to higher number ie: 2000ms > 2500ms > 3000ms


once this is done, you can still in the powershell type Get-CSVoicePolicy ~ fl which will give you all the information/settings for the voice policies in Lync

That’s it for this blog posting. For your understanding now. Any calls to a user who has sim ringing enabled to their mobile/cell and to which there mobile/cell is turned off, the call will continue to ring and ignore the mobile/cell VM trying to pick up the call.

***Added note: you can take it a step further and add custom on-hold music etc as part of the voice policy etc. For information on this follow the TechNet article on configuring voice policies.


Iain Smith

Powershell 3.0 gets a new hidden GUI user interface

Evening All

i thought i would blog a quick snippet of information about a neat feature in powershell 3.0. On opening PS up from your windows 2008r2 server type <show-command> were you will be presented with a great guy for doing the day to day tasks. For me these are great for Lync commands.

have a go.