Skype for Business and the Unified Contact Store (UCS) Step by Step

Step by Step Guide on how to Configure UCS with Skype for Business Server 2015

When Skype for Business Server 2015 and Exchange 2013 are deployed together, user contact lists can be stored on Exchange 2013 and called using EWS instead of SIP requests to the Skype for Business Server. By default, contact lists are stored in Skype for Business’s SQL database.

Enabling the UCS allows users to work with a single contact list across all the Microsoft Office applications.

The pre-requisites to enable the Unified Contact Store (UCS) are:

Exchange 2013 CU1 installed and configured 

Skype for Business Server 2015 or Lync Server 2013 configured

Ensure server-to-server authentication is in place using the OAuthTokenIssuer Certificate
(check another post of mine here)

By default, there is only one CsUserServicesPolicy; the Global policy. This controls whether UCS is enabled or not


Get-CsUserServicesPolicy shows information about the User Services policies

If you want granular control of this setting to users, you will need to create other policies using the New-CsUserServicesPolicy cmdlet and set the UcsAllowed parameter to $True. This level of control allows application at the global, site, or the per-user scope allowing administrators to configure users to store contacts in either SQL or Exchange 2013. This command will disable the CsUserServicesPolicy Global UcsAllowed parameter, perhaps something that should be done before even contemplating this feature:

Set-CsUserServicesPolicy –Identity Global –UcsAllowed $False


Set-CsUserServicesPolicy used to disable UCS in the Global Policy

A warning message appears when modifying a policy to set it to be disabled, informing that users already using Exchange 2013 UCS will not be affected by this command. Should you wish to move users you will have to use the Invoke-CsUscRollback cmdlet.

The following command will create an additional policy called UCSDublin and set the UcsAllowed parameter to $True

New-CsUserServicesPolicy –Identity UCSDublin –UcsAllowed $True


New-CsUserServicesPolicy used to set a new UCSAllowed Policy

You can assign the policy to a user as follows and confirm assignment:

Grant-CsUserServicesPolicy –Policyname UCSDublin –Identity

Run the following command to confirm assignment:



Grant-CsUserServicesPolicy to apply UCS Policy to a user

Let’s have a look at the Skype for Business client configuration and confirm that UCS is enabled.

Initially you receive a message in the Skype for Business client stating “Your system admin has made changes that affect your Contacts list. Please sign out and back in”

UCS Migrated

Contacts have migrated to UCS

signing back in from not having a choice, Ctrl-Right-Click the Skype for Business Client tray icon and select Configuration Information. You should see the following confirming UCS is enabled:

UCS Status

Ctrl-Right-Click the Skype for Business Client tray icon and select Configuration Information to confirm UCS status

As mentioned earlier, we can move a user’s contact store from Exchange 2013 back to SQL using the Invoke-CsUcsRollback.

Should for some reason, a user move to a legacy mailbox for example, you will require the need to move a user or group of users contact storage back to SQL from Exchange 2013. You must change the UcsAllowed parameter to $False in the UCS Policy or assign a policy that has this set to $False, and then run a further cmdlet to transfer the data. The cmdlet is Invoke-CsUcsRollBack. If you move a user to a non-Skype for Business or non-Lync 2013 pool using the Move-CsUser cmdlet, this will trigger an automatic rollback of the contacts from UCS to SQL.

In my test environment, the Global policy has the UcsAllowed parameter set to $False so I set the CsUserServicesPolicy assigned to the user to $Null and then run the Invoke-CsUcsRollback command:

Grant-CsUserServicesPolicy –PolicyName $Null –Identity

Invoke-CsUcsRollback –Identity

Select Y and press Enter


Remove UCS policy and run Invoke-CsUcsRollback to move contacts back to SQL

To confirm changes have been made, Ctrl-Right-Click the Skype for Business Client tray icon and select Configuration Information. You should see the following confirming UCS is now disabled:

Skype for Business Configuration Information Settings UCS

Ctrl-Right-Click Configuration Information showing UCS Status

How to Troubleshoot UCS Configurations

Remember: The user has to have signed in at least once, be homed on Skype for Business Server 2015 or Lync Server 2013 and have an Exchange 2013 mailbox.

You should ensure Exchange Autodiscover is configured and accessible from the client you are testing, without any certificate errors. You can obtain this URL from Exchange (Get-ClientAccessServer) and also set it if you need to.

Get-ClientAccessServer | fl identity, fqdn, auto*

Get-ClientAccessServer Exchange 2013 Autodiscover

Get-ClientAccessServer to confirm Exchange 2013 Autodiscover settings

Also confirm partner application configuration


Get-CsPartnerApplication OAuth

Get-CsPartnerApplication returns information about the partner application

Confirm that the user can see a new contact folder in Outlook called Skype for Business Contacts and that the contents match the contacts visible in the Skype for Business Client

UCS Outlook Skype for Business

Contact List in Outlook

You can test UCS connectivity using the Test-CsUnifiedContactStore command. In my lab, I run the following command:

Test-CsUnifiedContactStore –UserSipAddress –TargetFqdn -verbose

Test-CsUnifiedContactStore UCS

Test-CsUnifiedContactStore to confirm whether or not a user’s contacts can be accessed through the Unified Contact Store.

You can also use the following command to check the status of the UcsMode

Debug-CsUnifiedContactStore -Identity

Debug-CsUnifiedContactStore UCS

UCSMode Status running Debug-CsUnifiedContactStore

The above shows UCS enabled, but contacts are still residing on SQL – Ready to Migrate.

Once the UCS has migrated the following status of Migrated is shown:


UCSMode Status running Debug-CsUnifiedContactStore

UcsMode will be shown as Disabled when the user has a disabled policy

Confirm that a policy has been applied to the user (Get-CsUser) and the UcsAllowed parameter (Get-CsUserServicesPolicy) is set to True

You can also use the Skype for Business Server debugging tools with the Lync Storage Service and Unified Contact Store logging (LYSSandUCS) scenario.


Once moving a user back to SQL using the Invoke-CsUcsRollback cmdlet you cannot immediately move a user back to Exchange 2013. The unified contact store migration will be initiated again seven days after the rollback, as long as unified contact store is still enabled for the user in the user services policy.


All the best!


Leave a comment

Filed under OAuth, Skype for Business Server 2015, Step by Step, UCS, Unified Contact Store

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s