One of the big changes in Lync 2013 was merging the Lync client and Group Chat (now called Persistent Chat) into a single client. The back end of Persistent Chat is also now an integrated component or role compared to the bolted on third party feeling of Group Chat. I hadn’t seen any companies deploy and use Group Chat until my last project which was to migrate all OCS 2007 R2 workloads to Lync 2013, including Group Chat.
Old Lync 2010 Process
The old OCS to Lync 2010 Group Chat migration was a bit of a big bang approach which used the old Group Chat database by backing up the SQL database, restoring it to the new server, adding user accounts and manual deletion of tables from SQL best summarised here by Justin Morris.
Lync 2013 Process
Luckily the process has been greatly improved with Lync 2013. The TechNet documentation covers in more detail http://technet.microsoft.com/en-us/library/jj205264.aspx but the basic overview is:
Define a Persistent Chat pool or server in the topology. A pool is recommended even if only one server is intended to be used as it allows additional servers to be easily added later if necessary. The same SQL instance and file store as the pool can be used if Group Chat will not be very heavily used
- Note: New databases will be created instead of using the old OCS database
- Install Lync on the server and create the certificate
- Stop the OCS Group Chat lookup and channel services and disable them
Export data from Group Chat
- Specific category using the scope
|Export-CsPersistentChatData -Level All -Scope OCStest -DBInstance aumelocs01.domain.net\RTC -dbname OCSChat -FileName ‘C:\PCexport\ExportCategory.zip’|
- All categories
|Export-CsPersistentChatData -DBInstance aumelocs01.domain.net\RTC -dbname OCSChat -FileName ‘C:\PCexport\ExportAll.zip’|
- Stop Lync 2013 Persistent Chat service
Import chat room information
- Specific category
|Import-CsPersistentChatData -DBInstance ‘AUMELLYNCDB.DOMAIN.NET’ -FileName C:\PCexport\ExportCategory.zip|
- All categories (importing over the test category or running more than once will not create duplicate entries)
|Import-CsPersistentChatData -DBInstance ‘AUMELLYNCDB.DOMAIN.NET’ -FileName C:\PCexport\ExportAll.zip|
- If required – copy files from the Group Chat file store. Lync 2013 Persistent Chat cannot view or upload files to chat rooms so this is only needed if OCS 2007 R2 Group Chat clients will still be used after the migration
|xcopy \\aumelocs01\c$\OCSChatWebService \\domain.net\lyncfs\1-PersistentChatService-2\PersistentChat /E /H /Y|
- Start the Lync 2013 Persistent Chat service
At this point users with the Lync 2013 client can access Persistent Chat however users with the old 2007 R2 Group Chat client cannot. If the Lync 2013 client has not been rolled out to all users a new endpoint must be created for the old Group Chat clients. Either a brand new endpoint URI can be created in which case the clients must modify the connection details, or the OCS default chat namespace must be deleted and recreated on Lync
- New endpoint
|New-CsPersistentChatEndpoint -SipAddress sip:email@example.com -PersistentChatPoolFqdn aumellyncpc.domain.net|
- Delete the OCS Group Chat AD object ‘firstname.lastname@example.org’
- Create a new endpoint with the ocschat URI
|New-CsPersistentChatEndpoint -SipAddress sip:email@example.com -PersistentChatPoolFqdn aumellyncpc.domain.net|
It sounds pretty easy – and it is, but assumes the most basic requirement which is where I was caught out. Not having used OCS Group Chat I assumed it was updated by the ‘ServerUpdateInstaller.exe’ but it is not and Group Chat has a separate updater. Complicating things is that this client was running a single OCS Standard Edition Server with Group Chat installed on the same server using the SQL Express instance which is not supported. The OCS Front End services were patched so I had not looked at the Group Chat side.
Export Group Chat data problem
When attempting to run the Export-CsPersistentChatData command it exported some information into the ZIP, but I got an error stating the following when it hit the ‘Export Add-ins’ part:
The text from the error is copied below as I could not find any mention of Exp_Siops on any searches I did and hopefully now nobody else will have to spend lots of time searching for the reason.
|Database has legacy schema.WARNING: Export-CsPersistentChatData failed.WARNING: Detailed results can be found at
Export-CsPersistentChatData : Command execution failed: Could not find stored procedure ‘Exp_Siops’.
The requirement I was missing was a patch and database schema update that I think was first introduced in July 2010 updates. The stored procedure did not exist in the OCS database which is why the export failed. To resolve this, the latest September 2012 update for Group Chat was installed http://support.microsoft.com/kb/2728998
Note: this update needs the database schema and stored procedures upgraded using ‘ServerConfigTool.exe’ as described in the KB article.
After that the export worked and I could import data into Persistent Chat.