Friday, July 26, 2013

Lync Storage Service (LYSS)

Lync Storage Service (LYSS) is a storage framework in Lync Server 2013 intended to be used by different Lync Storage Service consumers for accessing storage platforms in a Lync Server 2013 system. To support high availability, LYSS accepts and saves copies of the data on multiple Front End servers in the pool temporarily, and removes that data once it has been delivered to its final long-term storage location (SQL or Exchange). LYSS reports to the event viewer Lync log as "LS Storage Service" and it is possible to use the Lync Server 2013 Logging tool to log events from "Lyss". LYSS is using a database named lyss which resides in the lynclocal instance of the SQL Server express on the Front End server.


LYSS is also used for the Archiving integration and Unified Contact Store. Currently the design allows for using Exchange Web Services (EWS) and SQL Server as the two storage platforms. LYSS uses the Exchange 2013 Autodiscover service to locate the Exchange 2013 Client Access server and uses the server-to-server authentication configuration to read and write from Exchange 2013. If a Lync user is enabled for Unified Contact Store, LYSS will move the contacts for the user to Exchange 2013. In Lync 2010 MSMQ was used by the Archiving components, but MSMQ is not required by Archiving in Lync 2013 due to LYSS (Persistent Chat Front End Servers still uses MSMQ.) With Lync no longer utilizing MSMQ the archiving functionality is now handled by unified data collection agents (archiving agents) who are installed on every Front End server or Standard edition server. Even though these agents are installed automatically they are not activated until archiving is enabled.

LYSS uses Windows Fabric for replication between the Front End servers in the pool. If data is deleted on a primary Front End Server, but the deletion on a secondary Front End Server fails, perhaps if there is an unexpected shutdown or error on the receiving Front End server data can be left behind and "orphaned." This orphaned data can cause performance to degrade and waste drive space. This condition will generate the events LYSS_DB_SPACE_USED_ERROR (Id=32058) and LYSS_DB_SPACE_USED_CRITICAL (Id=32059) in the event log on the Front End server in question. You could then check the performance counter on the Front End server under “LS:LYSS - Storage Service API” with the name "LYSS - Current number of Storage Service stale queue items." If this performance counter has a high value, for example greater than 50,000, then you should run the CleanuUpStorageServiceData.exe tool from the Lync Server 2013 Resource Kit which will delete all orphaned data from the pool.

Tuesday, July 16, 2013

Lync 2013 Cumulative Update 2

On July 1 Cumulative Update 2 for Lync 2013 became available from Microsoft. This is how I did an upgrade of my Enterprise pool sort of following the process outlined in KB2809243 and in the Technet article, Upgrade or Update Front End Servers

First I issued the command
to see if all my front-ends reported True on the IsReadyForUpgrade parameter.

Then I used services.msc to stop all Lync services on my first front-end before running LyncServerUpdateInstaller.exe on this server, and when done I rebooted this server. Once the front-end service on my first front-end came back to a running state again after the reboot I switched over to front-end number 2, and did the same, and finally completed front-end number 3. It is important that the upgraded server comes to a running state again before moving on to the next one, this to maintain quorum of the pool.

Next I wanted to verify the versions of my databases with the command

Test-CsDatabase -ConfiguredDatabases -SqlServerFqdn

Now some of the databases had different numbers for ExpectedVersion and InstalledVersion, so I issued the databse upgrade command

Install-CsDatabase -ConfiguredDatabases -SqlServerFqdn -Verbose

and naturally I wanted to verify that all the expected and installed versions now matched. To do that I added the following to my original test command

Test-CsDatabase -ConfiguredDatabases -SqlServerFqdn | Select DatabaseName, ExpectedVersion, InstalledVersion

This gave a somewhat easier-to-read output for comparing versions.

Next, I continued with my Edge Servers, Mediation servers and Persistent chat servers in that order, and finally I issued the command


Here is an overview of what database versions are expected with each version of Lync for all the databases - happy patching!

Saturday, July 13, 2013

Microsoft Sommarkollo 2013 - Lync Enterprise Voice

Microsoft in sweden arranged an event this summer called "Sommarkollo", which sort of translates to "Summercamp". It is simply seminars around Microsoft technology on various technical and non-technical levels. And this year I had the opportunity to present something around Microsoft Lync. I named my session "Lync Enterprise Voice – a call from the future"

During the 3 hour session which was quite laid back we received a lot of questions and had some great discussions on features in Lync enterprise voice. We also had a lab environment on stage with a Snom One PBX and Snom telephones present in addition to the Aastra and HP Lync telephones as well.

Here are some of the questions we discussed during the session with links to more information on the different topics. I had a great time presenting - thanks for Sommarkollo Microsoft - and hope to see you again next year!

Which PSTN connection method is the most expensive – IP-PBX, gateway or an operator based SIP Trunk?

Most organizations already have a telecom solution in place before looking at Lync Enterprise Voice, hence it might be the most cost effective to set up a SIP Trunk to an existing IP-PBX. If the organization does not have any infrastructure already an operator based SIP Trunk is probably the lowest cost alternative. If ISDN is available and already considered a committed cost an ISDN gateway is not a very costly hardware device in comparison with other network equipment.

Which protocols and codecs are used by the Lync telephones, Lync phone edition and 3PIP phones?

TLS, SIP and RTAudio

Can Lync telephones work without an internal CA, but rather use certificates from and external internet CA?


How often are Lync Cumulative update packages released?

“Quite” often :-)
Lync 2010 Server
CU1 January 2011 (Version: 4.0.7577.108)
CU2 April 2011 (Version: 4.0.7577.137)
CU3 July 2011 (Version: 4.0.7577.166)
CU4 November 2011 (Version: 4.0.7577.183)
CU5 February 2012 (Version: 4.0.7577.190)
CU6 June 2012 (Version: 4.0.7577.199)
CU7 October 2012 (Version: 4.0.7577.203)
CU8 March 2013 (Version: 4.0.7577.216)

Lync 2013 Server
CU1 February 2013 (Version: 5.0.8308.291)
CU2 July 2013 (Version: 5.0.8308.420)

How many concurrent calls can a Lync 2013 Mediation Server handle?

A Mediation Server Collocated on a Front End Server (with 6600 Lync users homed on it) can handle around 150 concurrent calls, this is not an exact figure because we cannot say what the 6600 users will be up to at any given moment.

If you use a standalone Mediation Server following the hardware requirements of a 64-bit dual processor, hex-core, 2.26 GHz hyper-threaded and 32 GB of Memory such a mediation server can handle 1500 concurrent calls.

Is it possible to filter Lync debugging logs?

Yes, you can use the Edit Filters options to define filtering for log files so that only traffic to and from the addresses you specify is traced.

For a good description of the new centralized logging in Lync look here:

Could you configure “general” rules in the dial plan?

Yes, the "Catch All" rule "^(\d*)$" that people often put as the last normalization rule in a dial plan to catch any other number to pass it on, could be seen as a "general rule".

Also, UC Ken Lasko (aka. Hasselhof) have put a lot of work into the Lync optimizer page / tool. This is a tool that automagically will create dial plans for you in a sort of "wizard style" by asking you questions about the dialing habits of your users and your location.

Where do we configure the range of numbers used to park a call?

You can use the Lync Server Control Panel or the New-CSCallParkOrbit cmdlet to create the orbit ranges.

How do we configure private numbers for users?

With the Set-CsUser command.

What happens when you are busy on a call in Lync and receives yet another call?

Lync does not deliver a busy tone "out of the box". Rather a new incoming call is presented even if the user is on another call. IF you would like to change this behavior there are many third party products that can give Lync the option of actually sending a busy tone back to a caller, some are free others licensed.

Can we change the call forwarding setting using the outlook calendar?

Yes, and no, in outlook we have a concept of “working hours” which we can use to apply call forwarding during work hours or not. If you look at the call forwarding settings in Lync you will notice a setting that is named “These settings will apply”.

Using Exchange UM we can also configure “Find me” rules which can help to get the calls forwarded where we want them.

Is it possible to configure additional presence states in the Lync client?

Yes, to define custom presence states in Lync 2013, create an XML custom presence configuration file, and then specify its location by using the Lync Server Management Shell cmdlets New-CSClientPolicy or Set-CSClientPolicy with the parameter CustomStateURL.

Can we tie a voice policy to a group of users?

Yes, the "Voice policy scope" determines the hierarchical level at which the policy can be applied. In Lync Server, you can configure voice policies with the following scope levels (listed from the most specific to the most general) User, Site, Global.

Can we set up local access numbers to dial in to a Lync conference?

Yes, it is possible to set up several local numbers as a dial-in conferencing access number; any user from any location can call any dial-in access number to join a conference.

Can we monitor Lync peer-to-peer conversations to block files and URLs?

Yes, Lync contains an "IM filter" which can block URLs and files. There are also some interesting 3rd party software around that can enhance Lync IM with "Auto reply" and other features.

What are the options available for displaying and changing location in the Lync client?

This can be controlled in a number of ways depending on server settings, see this link for a good run through of the Lync 2010 options.

Also, please note that...

Is it possible to hide the Caller ID for outgoing Lync calls?

Configuring Lync 2013 to block private numbers is a simple task if you want it to be global, using the Suppress Caller ID option on the route. However, if you want to single out certain users to be hidden and others not, this is also possible but will require different sets of Voice policies, PSTN usages and Routes to be created. Also, you need a receiving end that understands the P-Asserted-Identity property in SIP correctly according to RFC3325, i.e. this will not work on any type of gateway, IP-PBX, SBC, etc.

Unfortunately there is no way of simply hiding my number for a single call like in GSM with a *31* code in front of the dialed number. (but could even this be implemented in Lync with some intelligent number conversion tricks? - let me know!)

We had more questions coming up during the event, but we did not manage catch all of them in this blog post. Please send in a comment to this post if I forgot to answer your question, and thanks for participating in "Sommarkollo" this year!

Saturday, July 6, 2013

Running Lync 2010 Server on Windows 2012

It is now possible to install and run Lync 2010 Server on Windows Server 2012, but there are a few things to keep in mind. First, the Lync 2010 system needs to be patched with at minimum Cumulative Update number 7 (of October 2012), but as always I would recommend you to use the very latest update available.

Upgrading the operating system of an existing installation of Lync Server 2010, or running Lync Server 2010 Group Chat Server are not supported with Windows Server 2012.

After publishing your topology, installing Lync and trying to login to the Lync control panel for the first time you will see the following message.

 A 404.17 - Not Found error message.

This is because the IIS Application Pools are using the .NET Framework Version v4.0 by default. This is displayed in the Application Pools configuration in Internet Information Services Manager.

Application Pools using .NET Framework Version v4.0

So, to fix the issue simply set all application pools named "Cs"-something to use .NET Framework Version v2.0 instead and then open a command prompt to issue an iisreset command.

Application Pools for Lync 2010 should use .NET Framework Version v2.0

If you now have your Lync Control Panel window still open, just hit refresh and the Control Panel will display fine.

For more info:
Supportability statement
404.17 - Not Found error message