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
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
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
You can assign the policy to a user as follows and confirm assignment:
Grant-CsUserServicesPolicy –Policyname UCSDublin –Identity [email protected]
Run the following command to confirm assignment:
Get-CsUser [email protected]
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”
After
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:
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 [email protected]
Invoke-CsUcsRollback –Identity [email protected]
Select Y and press Enter
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:
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*
Also confirm partner application configuration
Get-CsPartnerApplication
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
You can test UCS connectivity using the Test-CsUnifiedContactStore command. In my lab, I run the following command:
Test-CsUnifiedContactStore –UserSipAddress [email protected] –TargetFqdn EnterpriseEDTN1.austinlab.com -verbose
You can also use the following command to check the status of the UcsMode
Debug-CsUnifiedContactStore -Identity [email protected]
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 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.
Remember:
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.