#Lync Question 38: How do I control the Lync and Skype UI with the Skype for Business client

Some of what I am covering here has been cover in the Skype for Business Technical Readiness Webcast Series session on the client experience presented last week by Nikolay Muravlyannikov.  The link for registering for these sessions (and recording) was announced here:

Skype for Business sessions now included in Office 365 Summits

The Skype for Business client has two user interfaces (UI):

  • Lync UI
  • Skype UI

For organisation who have invested heavily in end-user training, the whole topic on the transition of the client and UI from Lync to Skype for Business is very important.

By having these UI’s this enable organisations already running Lync to control the roll-out of the newer Skype UI in order to update any in-house training material and communication.

Depending on what your server platform is the client will default the client UI as follows:

Platform Default Client UI
Lync Server 2010 Lync 2013
Lync Server 2013 Lync 2013
Skype For Business Server Skype for Business
Skype For Business Online Skype for Business

If your running on Skype for Business server, then there is a Client Policy setting to Enable Skype UI via in-band provisioning via the following cmdlet:

Set-CsClientPolicy –EnableSkypeUI $true

Obviously this Client Policy entry only exist in Skype For Business Server.  If you want to force disable the Skype UI you can just set EnableSkypeUI to $false.

Now what about if you running Lync Server 2013 on Lync Online I might hear you ask, well you’re in luck you can control the Skype UI too via in-band provisioning or via the client registry.

How? Having spent far too many hours looking the Lync 2013 client registry and in-band provisioning traces some settings are interchangeable even though they aren’t documented due to the way the client works.

Method #1: Client Registry

Using the client registry will probably be preferable for organizations running on Lync Online (and maybe Skype For Business Online) as they don’t have access to make client policy changes, so registry setting can be easily deployed via Active Directory group policy.

In the Registry under HKCU\Software\Microsoft\Office\15.0\Lync you need to create a 32-bit REG_BINARY called EnableSkypeUI with a value of 00 00 00 01 this will force the Lync UI (Disabling the Skype UI) or via the command prompt you can run:

reg add HKCU\Software\Microsoft\Office\Lync /v EnableSkypeUI /t REG_BINARY /d 00000001 /f

and if you want to force enable the Skype UI, then EnableSkypeUI needs to have a value of 1 or via the command line you can run:

reg add HKCU\Software\Microsoft\Office\Lync /v EnableSkypeUI /t REG_BINARY /d 00000001 /f

For these to take effect you have to complete restart the Skype for Business client (not just sign-out and sign-in)

Method #2: Lync Server 2013 In-Band Provisioning

Using Lync Server 2013 In-Band Provisioning will be preferable for organization running Lync Server 2013 can have yet to upgrade or are upgrading to Skype for Business.

Like Skype for Business we can control this via the client policy however unless you running the February 2015 update or later for Lync Server 2013 when the EnableSkypeUI entry was adding then it is a little different as the entry doesn’t exist. However we can actually still add the entry using either of the below:

$ClientPolicy = Get-CsClientPolicy "Global"
$ClientPolicyEntry = New-CsClientPolicyEntry -Name "EnableSkypeUI" -Value "0"
Set-CsClientPolicy -Instance $ClientPolicy


$ClientPolicyEntry = New-CsClientPolicyEntry -Name "EnableSkypeUI" -Value "0"
Set-CsClientPolicy -Identity "Global" -PolicyEntry $ClientPolicyEntry

this will again disable the Skype UI.

And if you want to enable the Skype UI use either of the below:

$ClientPolicy = Get-CsClientPolicy "Global"
$ClientPolicyEntry = New-CsClientPolicyEntry -Name "EnableSkypeUI" -Value "1"
Set-CsClientPolicy -Instance $ClientPolicy


$ClientPolicyEntry = New-CsClientPolicyEntry -Name "EnableSkypeUI" -Value "1"

Set-CsClientPolicy -Identity "Global" -PolicyEntry $ClientPolicyEntry

NOTE: Like the client registry settings, the Skype for Business client need to be restarted following the client policy being applied rather than a normal client logon as with other in-band settings

You can remove all Client Policy entries via Set-CsClientPolicy -Identity global -PolicyEntry $Null do take care have define other settings in the ClientPolicyEntry field as you will need to use something like this:

$y = Get-CsClientPolicy -Identity global
Set-CsClientPolicy -Instance $y

If you haven’t seen what the Skype for Business client looks like have a look here:

Lync Online is becoming Skype for Business

Special thanks to John A. Cook and Keith Hanna who helped validate all of this post and content.

UPDATE #1 (17/04/2014)  Updated to reflect released version of Skype for Business client with change of registry key type and location.

My Journey to the #Lync MCM

Over the years not much has been said about the Microsoft Certified Master (MCM) or the soon to be called Microsoft Certified Solutions Master (MCSM) or the Exchange Ranger which it originally began as.

In my career I have been fortune enough to have worked with some great people who have been rangers or MCM/MCA’s or have gone on to become rangers or MCM’s.  I have also be honored to have working with a few individuals who I would consider as industry leaders and have either been trainers on the MCM or run it. One individual in fact taught me everything he knew about Exchange when he was a mere mortal like me and I will never forget his soapbox.

These experiences are very much what had driven me to follow this road and today be a member of this great community and collection of individuals who are very much the centre of excellence in each product.

From the outside it had seemed as if it was a secret society of secret handshakes.  Having seen first-hand two individuals go and attend the old Exchange ranger and very much come back different people just they if they been assimilated by the Borg maybe they had as they both work for Microsoft now.  Oh dear, should have thought about that before I went, I definitely diddrink the Microsoft coolade whilst I was there.  Maybe that why I’ve ditched my iPhone for an Nokia Lumia and I’m ditching my iPad for a Surface, too late now.

One experience which blow me away was when I was looking at a really weird public folder submission and replication issue and was well into the depth of diagnostic logging and tracing mail messages around the environment.  Having the availability of an Exchange Ranger as an architect on my project to QA things, I decided to ask his opinion.  So I described what I was seeing, he just knew the issue and spent 10 minutes describing how public folders worked under the covers and told me to go and look at an AD attribute which with a change and replication fixed my issue.  At the time I did go and Google that attribute and the only reference to it was in the list of AD attributes for an Exchange schema change.  This is just one of many Ranger/MCM experiences for me.

Attending the MCM is all about timing, if you’re going for the experience and to learn your probably going for the wrong reasons in my opinion.  Don’t get me wrong you will learn loads but this is no normal training course, it is pretty much assumed you know almost everything about the product at least that you can learnt from loads of deployment and in content available from Microsoft (helpfiles, document etc) and in blogs from MVP and other MCM’s.  At the end of the day the content and exams are level 400 whereby an standard MOC course and MCP exam is level 200, so don’t shocked to find things are really hard and when taking the practice exams (not available on all MCM courses) if you’re getting 20-30% which was about the class average in the first attempt on my rotation.  The course is geared toward increasing your understanding rather than teaching you new skills.

I am an MCM in Lync 2010 but could have followed the road with Exchange.  I did feel ready to attend back with OCSR2 however due to the rotation finishing in OCSR2 I couldn’t go.  In hindsight now I wasn’t ready and with a six month gap until the first Lync rotations and the major product change, it wasn’t ready until a further 12 months of deployment experience with Lync until I felt ready to apply again.

One thing which has always been conveyed by the MCM’s is important of testing/tracing and logging in looking at scenarios to understand the product and protocols.  In the four months between being accepted to attend and attending the rotation I spent most nights and weekends in my home lab doing what I hadn’t done in deployments and look at different scenarios.  In an ideal world I would have liked more time and done a later rotation, but due to family commitments I only had a window to be away for 3 weeks otherwise it would be been another 18 months or more before the time was right again.

There are a few blogs on the experience Jeff Guillet had posted his experience ‘Exchange MCM Training Comes to an End’ http://www.expta.com/2011/10/exchange-mcm-training-comes-to-end.html and also JonMck’s post “So…. You want to be a Lync Master?”  AKA LOST in Building 40 http://blog.lyncdialog.com/2012/04/so-you-want-to-be-lync-master.html and also Bojan Nenadic series on Born to Learn http://borntolearn.mslearn.net/careerfactor/b/bojan/default.aspx which are really good and should be read.

I won’t revisit what has already be said on other blog post but:

  • There was one single large study group on my rotation, but I think much smaller are probably better
  • Do plan ahead in term of eating in the evening
  • Eat well, eat lots of fruit and stay off the junk food and sugar drinks!
  • Coffee is your friend and your foe!
  • Enjoy the experience, do network, share experiences and socialize with others
  • Recording the audio from the session is a good idea, but you need to make hand/typed notes too as you won’t be able to review all before the exams
  • Do pay attention to everything said in class and also conversations
  • Do try and relax
  • Reread the content and repeat the lab if you have time, in fact read everything careful
  • With the Lync MCM, the Lync MCM insight content on the MS partner by the Unify Square folks was really good for revision

Having worked and spoken with many rangers and MCM’s over the years I knew it would be really hard work, but I was still blown away.

I stayed in a hotel just a short walk from building 40 as I’m not really a morning person nor did I want to drive. Sleep is  very precious whilst at the rotation.  The unnamed hotel which I stayed at was the closest and quite basic (plus cheap) but I didn’t spend much time there enjoying it delights.

Classes start at 8am and finish at 7pm and then most people do about 2-4 hours of labs or whiteboarding after class. I was usually getting back to my hotel at 9-10pm and then eating doing a bit more reading and if I was lucky getting to bed for midnight and then my head was full of thoughts and ideas thus couldn’t sleep.  With the jetlag on the first week I probably had about 10 hours sleep in the first 5 days.  I think on the 2nd and 3rd weeks I was up to about 4 hours of sleep at night.

Saturday is a work day!  On our first Saturday we started at 9am (luxury) then did badly on practice test. Then at about 10.30 we start the first half of a practice lab.  At 2am (in the morning!) had lunch and then did a bit more till 4am and went back to the hotel.  Sunday is supposed to be a rest day or wash day.  I did 4 more hours in the lab on the Sunday.  That was week one for me, and if I knew how tough it really was I probably wouldn’t have gone, it’s no holiday and I thought I was prepared.  Week 2 for me was great and week 3 the classes were interesting but was all about the exams.

The standard of the MCM is incredibility high, there were 24 people on my rotation only about 10 passed the knowledge exam and just one (not me) passed the qualification lab exam at the first attempt.  Even the best TechEd speakers, authors and existing MCM’s haven’t passed at the first attempt, so I don’t feel so bad about needing a retake, but I shouldn’t have need one, if for my silly mistakes during the lab.  But I was well prepared and I did go to pass!

The rotations cover everything about Lync, the pre-attendance training covered the depths of telephony, SIP and SDP protocols and was eye opening. Then the sessions cover client and server internals, disaster recovery, cloud, UC development and voice or whale and sharks 🙂  Do read the pre-reading content, I would say at least twice, you should be confident on the whole product, end-to-end and deploying and configuring it in various scenarios and also integrating with other Microsoft and 3rd party products and most importantly without thinking and referring to the documentation.

There is a different mix of skills need to become an MCM, Flaphead’s blog article “Exchange Server 2010 MCM”, http://flaphead.dns2go.com/?p=2943 describes it as being a “Swiss army knife”, but it is more than this an MCM in my opinion is someone who can architect, design, deploy, troubleshoot as support the product who is both consultant and support engineer.  Also an MCM should have the depth and breadth of knowledge on the product and understands it business value and regardless of the situation or issue and do what is right for the customer or deployment.

The program has changed over the years with becoming more accessible with SharePoint hybrid delivery and also the new path for SQL and Exchange however the standard have remained high, if your think you’re an Exchange or SQL guru, you can see how good you think you are with trying the knowledge exam at your nearest Prometric exam centre, I for sure wouldn’t have passed my knowledge exam without attending the rotation.  With Lync and the physical aspects of phones and gateways learning is always going to be difficult and expensive, thus a hybrid delivery or remote learning is probably impossible.

As I said the MCM will soon become the MCSM and I can’t see the certification become easier in fact I would like to see it harder still with Lync and cover more 3rd party integration to really strengthen the value of the certification as ultimately businesses will be running their mission critical communications on the platform but you can say the same about SharePoint, Exchange and SQL too.

Beyond the MCM, I am still learning and understanding more about technology on deployments usually in 3rd party integration.  With troubleshooting or understanding problems I now think differently usually thinking about it at a protocol or architect level and then build upon there through tracing and logging.

If someone asked me “whether I would do it all again?” and “was it worth it?”  For me I really don’t know, a made a lot of personal suffices to be in a position to be able to pass.  I truly feel honored to be able to finally call myself an MCM and to be a member of great community of individuals and my name is on the hall of fame http://www.microsoft.com/learning/en/us/certification/master.aspx#meet

I wouldn’t say the MCM chapter is now closed, yet I have just completed the epilogue.  Now I am an MCM I am looking upwards and will probably attend a Lync 2013 rotation in the future and in the meantime continue to learn more yet I still need a write a new development plan, as I have somewhat been on a study vacation which sadly with this post is ending.

So about passing the exams….”what happens on the master stays on the masters”  Good luck and believe!

Reissuing Certificates for Lync Mobile

As part of installing and configuration Lync Server 2010 and the mobility service for Lync 2010 you will have to reissue and assigned your new certificates on your Director Servers, Front-End Servers and also on the Reverse Proxy to include the following new SAN’s.

Front-End certificate

  • lyncdiscoverinternal.<sipdomain>
  • lyncdiscover.<sipdomain>

Director Certificate

  • lyncdiscoverinternal.<sipdomain>
  • lyncdiscover.<sipdomain>

Reverse Proxy Certificate

  • lyncdiscover.<sipdomain>

Reissuing the Front-End and Director Certificate (post CU4 and Mobility and AutoDiscover service install)

If you have already installed CU4 and the Mobility and AutoDiscover service then in order to reissue the certificate for your Front-End’s and Director’s and if you using a Windows Enterprise Certificate Authority then it is easy enough using the following example command from the Lync Shell. (assuming you have permissions to issue certificate, otherwise using the –Output switch as used in the reverse proxy certificate request to generate a good old Certificate Signing Request or use the –CaAccount and –CaPassword switches to provide account details)

Request-CsCertificate –New –Type Default,WebServicesInternal,WebServicesExternal -Ca dc.contoso.local\myca –AllSipDomain –verbose -PrivateKeyExportable $true -DomainName “sip.contoso.com,sip.fabrikam.com” -Country US -State “State” -City “City” -FriendlyName “fe.contoso.com – Front-End Certificate” -Organization “Contoso” -OU “IT”

Note: You don’t need to make the certificate private exportable nor included the friendly name and location, just change the CA path to your ADDS CA server and also the CA name.

This will request and issue the certificate (per below)


In order to assign it, then note the certificate thumbprint from the previous command and then use the following command at the Lync Shell.

Set-CsCertificate -Type Default, WebServicesInternal, WebServicesExternal -Thumbprint <Certificate Thumbprint>

This will assign the certificate to Lync and also to IIS


At this point you should really restart the Lync services or reboot in order for Lync Server to make use of the new certificate, IIS is fine however.

Reissuing the Reverse Proxy Certificate (post CU4 and Mobility and AutoDiscover service install)

Again If you have already installed CU4 and the Mobility and AutoDiscover service then in order to reissue the certificate for your Reverse Proxy then use the following example command:

Request-CsCertificate –New –Type WebServicesExternal –AllSipDomain –verbose -PrivateKeyExportable $true -Output “C:\externalwebservices-certreq.req -Country US -State “State” -City “City” -FriendlyName “lsweb1.contoso.com – External Web Services Certificate” -Organization “Contoso” -OU “IT”

This will generate a certificate signing request to be sent to a 3rd public certificate provider such a Verisign, GoDaddy or Entrust to name a few Lync qualified provider.

Then to import the certificate from public CA and complete the request, do make sure you’ve imported any root and chain certificate before (if required) at the Lync Server:

Import-CsCertificate –Path “C:\externalwebservice-response.cer”

Then export the certificate using the Certificate MMC console with the private key and import it on the reverse proxy and then assign it to the web listener and make the necessary to the publishing rules.

Requesting the Front-End/Director and Reverse Proxy Certificate (pre CU4 and Mobility and AutoDiscovery service install)

In case you want to request to certificate with the correct SAN’s ahead of installing CU4 and the Mobility and AuthDiscover service

Then for the Front-End and Director certificate, use the following:

Request-CsCertificate –New –Type Default,WebServicesInternal,WebServicesExternal -Ca dc.contoso.local\myca –AllSipDomain –verbose -PrivateKeyExportable $true -DomainName “sip.contoso.com,lyncdiscoverinternal.contoso.com,lyncdiscover.contoso.com” -Country US -State “State” -City “City” -FriendlyName “fe.contoso.com – Front-End Certificate” -Organization “Contoso” -OU “IT”

And for the Reverse Proxy certificate, use this:

Request-CsCertificate –New –Type WebServicesExternal –AllSipDomain –verbose -PrivateKeyExportable $true -Output “C:\externalwebservices-certreq.req -Country US -State “State” -City “City” -FriendlyName “lsweb1.contoso.com – External Web Services Certificate” -Organization “Contoso” -OU “IT” -DomainName “lyncdiscover.contoso.com”

Have fun……

How NOT to install the Lync 2010 Mobility and Autodiscover Services

The Lync Server 2010 Mobility and Autodiscover services were released last night (McxStandalone.msi) with the documentation (LS_Mobility.doc)

Firstly read the documentation if you don’t Lync Mobile won’t work as to get it to work is a bit of a minefield!

If you just happen to be trying to workout why it’s not working, do you remember this screen?


If you do you then should have never seen this and this is where you’ve gone wrong!

For people who are about the install then STOP right here!, just click cancel and end the installation and read the manual! (LS_Mobility.doc)

If you just happened to keep clicking next until you reach finish, then yes the binaries were installed but web components on the external web site are missing see below:


You should have copied the McxStandalone.msi to C:\ProgramData\Microsoft\Lync Server\Deployment\cache\4.0.7577.0\setup

and then at the Lync Shell, run C:\Program Files\Microsoft Lync Server 2010\Deployment\Bootstrapper.exeand you should have seen this:


But this is one of a number of steps required to get Lync Mobile running.

So go and read documentation!

Managing who can use Lync Mobile Clients

As we all wait for the mobility server installer to become available, something worth thinking about is how you manage the deployment of Lync Mobile Client out to users and what is the effect in terms of potentially large numbers of users having another endpoint connected.

Before you deploy the mobility installer you should be doing now

  1. Applying CU4 across your Lync Topology
  2. If using Enterprise Edition Front-End Pool, change the TCP/4443 and TCP/8080 HNLB virtual IP’s for you Front-End from SNAT persistence to Cookie based persistence load balancing (per next-hop article) http://blogs.technet.com/b/nexthop/archive/2011/11/03/hardware-load-balancer-requirements-for-lync-server-2010.aspx)

When applying do remember to update the database on the Front-End’s using

Install-CsDatabase -Update -ConfiguredDatabases -SqlServerFqdn < EEBE.Fqdn > -DatabasePaths <RtcDyn log path>, <RtcDyn data path>)

The database is upgraded again the DbVersionUpgrade should shown as 3 in the dbo.DbConfigInt table of the RTC database.  With CU3 the DbVersionUpgrade was 1


There will no doubt be other requirements too and I’m not going to second guess what they will be here.  But will be some new URL’s needing publishing on the reverse proxy and maybe updates to certificate (who knows?), At least the New-CsWebLink cmdlet for the Autodiscover service (Get-CsAutodiscoverConfiguration) introduced with CU4 would suggest so.

I would imagine the mobility server installer will probably need to be installed on each Front-End.  However this will obviously provide Mobility access to every user on an Front-End, which is probably less than ideal and I am a great believer in rolling out feature in a control manner.

Up until now there hasn’t really been to much reason to have more than one Client Version Policy doubt all the Lync Enabled users are set to automatic configuration.


Following applying CU4 within the Client Version Policy there is new MCX client defined


Therefore now if you want to Allow/Block specific users from using Lync Mobile Client by creating multiple client version policies and granting them to the users we can manage this and the rolling of using Lync Mobile to monitor load as we roll out.

No doubt the new help file will be out soon with all the detail we need.

From what I understand CU4 and Lync Mobile will be covered in the upcoming Mastering Lync Server 2010 book by Keith Hanna and Nathan Winters (ISBN-10: 1118089537; ISBN-13: 978-1118089538) due out early next year.

Amazon (UK): http://www.amazon.co.uk/Mastering-Lync-Server-Nathan-Winters/dp/1118089537/

Amazon (US) http://www.amazon.com/Mastering-Lync-Server-Nathan-Winters/dp/1118089537/

Four new cmdlet’s in Lync Server 2010 CU4

After installing Lync Server 2010 CU4 the three hidden cmdlet’s present prior to CU4 yet without help nor documented in the helpfile now have details of what they do. Plus also a new one found only in CU4.

Here they are:






Returns information about the Autodiscover configuration settings currently in use in an organization. The Autodiscover service provides a way for client applications such as Lync Web Access or Microsoft Lync Mobile to locate key resources such as a user’s home pool or the URL for joining a dial-in conference.


Get-CsAutodiscoverConfiguration [-Identity <XdsIdentity>] [-LocalStore <SwitchParameter>] [<CommonParameters>]

Get-CsAutodiscoverConfiguration [-Filter <String>] [-LocalStore <SwitchParameter>] [<CommonParameters>]


For client applications to make the most effective use of Microsoft Lync Server 2010 those applications need to know the location of key Lync Server 2010 components. For example, authenticated users must be able to locate their home pool; after all, they can only be authenticated by that home pool. Likewise, unauthenticated users must be able to do such things as locate the URL used for joining a conference.

If all your users logged on from behind the organization’s firewall discovering these locations would be a relatively simple task. However, this relatively simple task gets more and more complicated as users access the system from external locations using Microsoft Lync Mobile or Lync Web Access.

This is especially true in split-domain scenarios, scenarios in which some of an organization’s users have accounts on the on-premises version of Lync Server while other users have accounts on Microsoft Office 365. In cases such as this, user accounts might be located in different Active Directory forests. That can pose a problem: for example, if a US-based user logs on from Europe the system must be able to recognize his or her forest and then refer the logon request to the proper pool.

The Autodiscover service was introduced in the November 2011 release of Lync Server in order to address these issues. When a client application attempts to access Lync Server, the Autodiscover service parses the client SIP address and then redirects that request to the appropriate pool. Client applications connect to the Autodiscover service by sending an HTTP request to an Autodiscover URL; these URLs must be configured by administrators in order for the Autodiscover service to work. (Note that, in addition to configuring URLs, administrators must also create DNS records that correspond to these URLs.)

Autodiscover URLs are assigned to Autodiscover configuration settings; in turn, these settings can be applied to the global scope or to the site scope. The Get-CsAutoDiscoverConfiguration cmdlet provides a way to return information about the Autodiscover settings (and Autodiscover URLs) currently in use in your organization.


Online Version http://technet.microsoft.com/EN-US/library/221d26d6-0f77-4873-8872-d600913eb98b(OCS.14).aspx











sip: push@push.lync.com

Retrieves information about the Microsoft Lync Server 2010 Mobility Service configuration settings currently in use in your organization. The Mobility Service enables users of mobile phones such as iPhones and Windows Phones to do such things as exchange instant messages and presence information; store and retrieve voice mail internally instead of with their wireless provider; and take advantage of Lync Server 2010 capabilities such as Call via Work and dial-out conferencing.


Get-CsMcxConfiguration [-Identity <XdsIdentity>] [-LocalStore <SwitchParameter>] [<CommonParameters>]

Get-CsMcxConfiguration [-Filter <String>] [-LocalStore <SwitchParameter>] [<CommonParameters>]


Lync Server 2010 Mobility Service extends many of the capabilities of Microsoft Lync 2010 to mobile devices such as Apple iPhones, Windows Phone, Android phones, and Nokia phones. Among other things, users can use these phones to exchange instant message and presence information, and to receive notifications of new voice mails. Thanks to the push notification service (Apple Push Notification Service and Microsoft Lync Server 2010 Push Notification Service), users with iPhones or Windows Phones can receive these notifications even if Lync 2010 is running in the background. The Mobility Service also provides the opportunity for organizations to enable Call via Work. With Call via Work, users can make a call from their mobile phone and make it appear as though the call originated from their work phone; for example, Caller ID systems will see the user’s work number instead of his or her mobile phone number.

The Mobility Service itself is managed by using Mobility Service configuration settings that can be applied to the global scope, the site scope, or the service scope (for the Web server service only). These settings control such things as the maximum length of time for a Mobility Service session; whether or not the Microsoft Lync Server 2010 Autodiscovery Service (which directs Mobility Service users to the appropriate Registrar pool) is available to users who log on outside the organization’s firewall; and the location of the push notification service provider. The Get-CsMcxConfiguration cmdlet provides a way for administrators to retrieve information about all the Mobility Service configuration settings currently in use in their organization.


Online Version http://technet.microsoft.com/EN-US/library/a09c0d49-5377-4a22-89e6-2751030ccf20(OCS.14).aspx









Retrieves information about the mobility policies currently in use in an organization. Mobility policies determine whether or not a user can use Microsoft Lync 2010 Mobile. These policies also manage a user’s ability to employ Call via Work, a feature that enables users to make and receive phon e calls on their mobile phone by using their work phone number instead of their mobile phone number.


Get-CsMobilityPolicy [-Identity <XdsIdentity>] [-LocalStore <SwitchParameter>] [<CommonParameters>]

Get-CsMobilityPolicy [-Filter <String>] [-LocalStore <SwitchParameter>] [<CommonParameters>]


Lync Mobile is a client application that enables users to run Microsoft Lync 2010 on their mobile phones. Call via Work provides a way for users to make calls on their mobile phone and yet have it appear as though the call originated from their work phone number instead of their mobile phone number. Users who have been enabled for Call via Work can achieve this either by dialing directly from their mobile phone or by using the dial-out conferencing option. With dial-out conferencing, a user effectively asks the Microsoft Lync Server 2010 Mobility Service server to make a call for the m. The server will set up the call, and then call the user back on their mobile phone. After the user has answered, the server will then dial the party being called.

Both of these capabilities – the ability to run Lync 2010 Mobile and the ability to use Call via Work – are managed using mobility policies.

Mobility policies can be configured at the global, site, or the per-user scope, and information about those policies can be retrieved by using the Get-CsMobilityPolicy cmdlet.


Online Version http://technet.microsoft.com/EN-US/library/51ef83de-9cc2-4df8-b4f1-8d816b8de431(OCS.14).aspx








Retrieves information about the push notification configuration settings currently in use in your organization. The push notification service (Apple Push Notification Service and Microsoft Lync Server 2010 Push Notification Service) provides a way to send notifications about events such as new instant messages or new voice mail to mobile devices such as iPhones and Windows Phones, even if the Microsoft Lync 2010 application on those devices is currently suspended or running in the background.


Get-CsPushNotificationConfiguration [-Identity <XdsIdentity>] [-LocalStore <SwitchParameter>] [-Tenant <Nullable>] [<CommonParameters>]

Get-CsPushNotificationConfiguration [-Filter <String>] [-LocalStore <SwitchParameter>] [-Tenant <Nullable>] [<CommonParameters>]


The Apple Push Notification Service and the Microsoft Lync Server 2010 Push Notification Service enable users running Lync 2010 on their Apple iPhone or Windows Phone to receive notifications about Lync 2010 events even when Lync 2010 is suspended or running in the background. For example, users can receive notice for events such as these:

– Invitations to a new instant messaging session or conference

– New instant messages

– New voice mail

Without the push notification service users would receive these notices only when Lync 2010 was in the foreground and serving as the active application.

Administrators have the ability to enable or disable push notifications for iPhone users and/or Windows Phone users. (By default, push notifications are disabled for both iPhone users and Windows Phone users.) Administrators can enable or disable push notifications at the global scope by using the Set-CsPushNotificationConfiguration cmdlet. They can also create custom push notification settings at the site scope by using the New-CsPushNotificationConfiguration cmdlet.

The Get-CsPushNotificationConfiguration cmdlet provides a way for you to return information about the push notification configuration settings currently in use in your organization.


Online Version http://technet.microsoft.com/EN-US/library/ec2c17e5-ac4d-4d21-995a-642c5cf5c7bc(OCS.14).aspx

Lync Server 2010 reporting using Quest MessageStats (Part 3)

This is part 3 of a multi-part blog series looking at Lync Server 2010 reporting using Quest MessageStats

Disclaimer: I do not work for Quest Software, nor do I recommend using Quest MessageStats to report against Microsoft Lync Server 2010

For the next couple parts we will have a look at installing Quest MessageStats for reporting against Lync Server 2010

In my environment I installed MessageStats and all its components on a single server including SQL server, however do read the user guide for how best to install it for your environment for performance reason the MessageStats database should not share a SQL instance with any OCS or Lync databases.

Required Prerequisite Components:

Required Information

  • Installation Location: C:\Program Files (X86)\Quest Software\MessageStats\
  • Installation Type: Complete
  • MessageStats Database Server and SQL Instance: <ServerName>
  • MessageStats Report Server Name: <ServerName>
  • MessageStats Schedule Services Server Name: <ServerName>
  • Application Log Share: Share the Application Log folder
  • Web site where the Message Stats Reports application will be installed: Use Default Web Site (Recommended)
  • SMTP Server: <ServerName>
  • SMTP From Address: Messagestats@contoso.com
  • MessageStats Service Account: CONTOSO\MESSAGESTATS-SVC
  • SQL Server: <ServerName>
  • Database Name: MessageStats
  • Database Size: Small (Appropriate for 10 to 50 server installation)

Screenshot Procedure

Launch the Quest MessageStats Installation Program .\setup.exe

On the Welcome to the Quest MessageStats Installation Wizard page, click on Next


On the License Agreement page, select I accept the license agreement and click on Next


On the destination folder page, browse to the installation location and then click on Next


On the Select Installation Type, select the installation type


On the Select server location, enter the server name and click on Next


On the Application Log Share page, select the location required and then click on Next


On the Select Web Site page, select the web site where the Message Stats Reports application will be installed


On the Subscriptions page, enter the SMTP server and SMTP From Address and then click on Next


On the Service Account Setup page, Enter the MessageStats Service Account details and then click on Next


Wait while the Quest MessageStats Installs


On the Welcome to the MessageStats Database Setup Wizard click on Next


On the Database Configuration Setting page, enter the database server and name details and then click on Next


On the Database Settings page, select the required database size and then click on Next


On the Summary of Option Selected page, verify the information and then click on Start


Wait while the database is created and installed


On the Installation results page, check the logfile and then click on Done


Click Yes to reboot the installation will continue automically after the reboot and logon


After a Reboot and Logon the installation should automatically continue

On the Resuming the Quest Message Stats Installation Wizard page, click on Next


Wait while the Quest MessageStats continues to Install


Wait while the Quest MessageStats is configured


On the Quest MessageStats Installation is complete page, click on Finish


See you soon for Part 4 of the multi-part blog series looking at Lync Server 2010 reporting using Quest MessageStats when we will look at installing the OCS/Lync Report Pack.

Manual creation of Lync 2010 Databases

Another quick post.

As great as the topology builder is at creating databases during publishing of the topology, I’m finding that apart from quick testing, coming production I usually have to create the databases via the Lync Shell whether manually or from the topology information via the InstallCSDatabase cmdlet to create the database and log files in specific location for performance.

When to use the Topology Builder to create the databases

  1. You don’t care where the databases and logs are created
  2. The SQL server\instance has configured the default database and log locations (within the SQL server properties) and this is where you want the database and logs for the Lync databases to be created


Why not to use the topology builder to create the databases (i.e. via the Shell)

  1. When you (Lync Admin) are not the admin of the SQL server (Split permission model)
  2. You want the database and log files to be created in specific locations (for performance and management reasons)
  3. You need to create an empty CMS database, prior to moving the CMS from one Front-End to another
  4. You going to publish the topology to an enterprise pool and you want the CMS and Front-End database and logfiles in specific locations on the back-end database server

You have two options for creating databases via the Shell:

Manually creating Database, i.e. empty databases

So this creates empty databases in very specific locations, prior to them being defined in the topology via a server role being defined specifying a given SQL store

for the CMS databases:

Install-CsDatabase -CentralManagementDatabase –SqlServerFqdn sqlbe.contoso.net -SqlInstanceName instance1 -DatabasePaths “D:\Logs”,”E:\Data”

For other databases:

Install-CsDatabase -DatabaseType <Application | Archiving | Monitoring | User | Provision> –SqlServerFqdn sqlbe.contoso.net -SqlInstanceName instance1 -DatabasePaths “D:\Logs”,”E:\Data”

Below a matrix on which databases get created with which switches:


Creating Database from the Topology

Firstly when publishing the topology, remember to deselect for the creation of databases during publishing on the Create database page.


Following the publishing and enabling of the topology, from the Lync Shell running the following (whether the Lync Admin or the SQL Admin)

Install-CsDatabase -ConfiguredDatabases -SqlServerFqdn SqlServerFqdn sqlbe.contoso.net -SqlInstanceName instance1 -DatabasePaths “D:\Logs”,”E:\Data”

A bit about SQL Split Permission Model

In large organisations, it is possible the Lync databases will be hosted on a SQL farm managed by a completely separately and a Lync Admin has no right over SQL and nor does a SQL admin have any right over Lync, See: Deployment Permissions for SQL Server http://technet.microsoft.com/en-us/library/gg398375.aspx

In this case, I would recommend the Lync Admin define the server roles and then the SQL Admin logons onto a Lync Server and then from the Shell runs the Install-CsDatabase -ConfiguredDatabases command, do make sure that the SQL Admin has permission over the file systems on the SQL server, I spent about a day troubleshooting a weird error code due to the SQL admin being a sysadmin yet not a local admin on the SQL server.

Planning a Lync Architecture

There are several planning decisions that will affect how Microsoft Lync Server 2010 is deployed, the number of servers and server roles required within a given architecture, here is some questions to ask yourselves:

On-Premise and/or Hosted

Lync 2010 features and functionally required

Geographic Distribution and User Volumes (Where are the users and how many)

Capacity Planning (Concurrency, What are they doing, how many FE’s are needed)

High Availability

No High Availability (SE and standalones only)

Limited High Availability (Typically just FE’s and SQL maybe Edge)

Full High Availability (If it support HA, do it including SQL)

Site Resiliency

No Site Resiliency (SE only)

Limited Site Resiliency (Voice Resiliency only and manual move users)

Full Site Resiliency (Metropolitan data center resiliency)


Fully virtualized deployment (somewhat depends on scale)

Limited virtualization within the deployment

No virtualization within the deployment (however do think about collocation)

Then compare notes with the planning tool