Issues with Unified Contact Store in combination with Lync on-premises and Exchange Online
I've encountered an issue that popped up while I was testing a move from Exchange On-premises to Exchange Online (EXO) while Lync Server 2013 remained on-premises due to Enterprise Voice. Outlook Web Access (OWA) from Exchange Online can be integrated with on-premises Lync, this way OWA users can see presence and have limited IM functionality just like what's possible if both products are on-premises. For this to work you'll need Lync Edge servers because OWA EXO will act as an external Lync client. That setup is supported as we can see here: http://support.microsoft.com/kb/2614614 under 'Summary'. A description how to achieve this can be found here.
For our organization the OWA IM functionality is quite important as not all employees have the full Lync client or are working on devices that won't allow the installation of software. Unfortunately, we discovered that the OWA Lync integration didn’t work for mailbox users moved from on-premises to Exchange Online. The error in OWA was: "There's a problem with IM. Please try again later. If the problem continues, contact your helpdesk.". When everything was on-premises, OWA IM worked without a problem.
After a long process of troubleshooting, vague/unhelpful errors and calls to Microsoft Support, I came across the following Microsoft forum post which described my issue. Their solution was disabling the Unified Contact Store (UCS). I knew that UCS wasn't supported (see previous mentioned KB2614614 under 'More Information'), but I didn't expect it to break anything. It turned out that disabling UCS was indeed the solution.
Disable UCS per user via your on-premises Lync server before moving via Invoke-CsUcsRollback like this:
You could also create a Lync User Policy in which UCS is disabled and assign the policy to Lync users that you want to move to Exchange Online. You can then move the contacts manually with the invoke command, or wait seven days for an automatic move. Note that you'd probably have to wait seven days before moving to Exchange Online so I'd do it manually.
If the user was already moved to Exchange Online you cannot invoke the rollback without loss of Lync contacts. You either have to move the mailbox back to on-premises or force the rollback with loss of contacts in Lync. You can force the rollback with the -Force parameter (for instance if you cannot off board them due to lack of on-premises Exchange). You will be warned that the user contact list will not be exported back to Lync:
Invoke-CsUcsRollback firstname.lastname@example.org -Verbose -force
VERBOSE: CN=Dave Stork,OU=YOLO,DC=BREEP,DC=local
The cmdlet was called with the Force option. Because you used the Force option, the user's contact list will not be exported from Exchange before roll back. As a result, the user will lose the contact list.
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): y
VERBOSE: User was found in unified contact store mode. Contact list was successfully rolled back and any future migration attempts are postponed for a preconfigured time. If Force option was used, contact list was not exported from Exchange and was lost.
So take note of this little caveat before moving mailboxes to Exchange Online. It took me quite some time before figuring this out.