This weekend I finally got to upgrade our Lync 2013 servers to Skype for Business. The delay has been intentional as we have awaited at least the first cumulative update to be announced. We rely heavily on Lync/Skype for Business in our daily operations (1,362 A/V conferences over the last week and more than 103,113 participant conference minutes in our 250 pax company), both for telephony and collaboration, so any service disruption is poorly welcomed. As we are running an Enterprise pool with three Front Ends and the Lync 2013->Skype for Business requires an In-place upgrade this means quite some downtime as well as the added complexity of an Enterprise solution.
In the upgrade process I experienced several things that others might benefit from – so I thought I’d share some thoughts here.
First of all: remember to breathe! Things might fail on the way, but if you make a thorough plan of your upgrade you are more likely to succeed however things turn out. Also, the act of planning or thinking things through are as important as the official plan itself. Read through the Server requirements (https://technet.microsoft.com/en-us/library/dn951388.aspx), the upgrade planning guide (https://technet.microsoft.com/en-us/library/dn951396.aspx) and the guide for upgrading (https://technet.microsoft.com/en-us/library/dn951371.aspx) on Technet.
BE UP TO DATE!
Make sure your existing servers are up to date up-front. I use Andrew Morpeth’s blog to check for updates. Make sure the OS is up to date as well.
Make sure the back-end database is up to date as well. This is easy overlooked if you are a large company with someone else in charge of database servers, The requirement is CU6 if you run on SQL server 2014 or the latest service pack for SQL server 2012.
If you are running on Windows Server 2012 R2 note the prerequisite for KB 2982006 before upgrading. I looked into this, and according to
Microsoft’s KB 3013769 this was supposed to be included in the December 2014 update rollup, which I already had in place.
You still need to apply the KB, as the install process seems to look for the specific KB by number.
One of the strangest things you might want to install up-front is .NET 3.5 on your Edge servers. This was never and still isn’t is a requirement for Edge server, but the installer will stop and prompt you for it. For Windows Server 2012R2 the binaries are not directly available, so you need to apply the install media for the OS – which is why you better have it in place before you upgrade.
BE PREPARED TO GO BACK!
Make a snapshot of/backup all your servers, because it makes it easier to revert the changes on each server should you need to go back.
Make a good backup of your existing configuration in case you need to roll back. Snapshots do not fix everyting as CMS/databases are changed as soon you apply your new topology and go on upgrading. I prefer Lasse Wedø’s backup script as it takes care of everything real smoothly. Make sure to check out his blog as it has a lot of backup and restore examples as well.
Back up your databases as well. Connect to your SQL server and backup all of the databases that Lync Server 2013 is using. You can normally skip any database with “dyn” in it’s name, because it only holds dynamic (or current) information – for example like user presence state. But since database schema is upgraded through the process it makes it a whole lot easier to roll back if you have a backup.
GO ON UPGRADING!
If you have gone through the steps above then you are well prepared for the upgrade! Although the upgrade itself is “in-place” there is still a need for a separate server to run the Skype for Business Topology Builder. If you can afford it I would recommend a new and separate server for this – which you can dispose of when you are done updating (by then you can run it on your new Front End servers).
The documentation from Microsoft tells you to update the servers “inside – out”, that is start with your Front End pool, then Mediation etc and Edge at the end. To me it was not clear whether you should run the “Upgrade to Skype for Business server 2015” on all pools and publish, and then run the Deployment Wizard in that order, OR just publish the change on one pool at a time and run the Wizard. I did the latter and it worked out for me.
Once you have published the topology you need to wait for it to be replicated to all servers. When I ran the
Get-CsManagementStoreReplicationStatus cmdlet all I found was “Up-to-date: False” for every server – and it would not update. I checked the services on the Front End and noticed that MASTER replica service and the File Transfer Agent (FTA) service were both stopped. Restarting these only made them stop again shortly after, and reviewing Event Log told me that this was due to the fact that back-end database schema was updated and no longer compatible! It turns out that this is intentional, and taking a closer look at the replication status you will notice that the “last updated” time was around when you published the topology. So keep breathing and keep upgrading!
When you run the Deployment Wizard on the server/pool to be upgraded you are likely to experience some errors. In addition to any prerequisites not being satisfactory to the installer (explained above) you might also encounter errors that simply require you to reboot and start over. I experienced both an error telling me to reboot as well as one that simply stated that OCS core components installation failed:
Tom-Inge Larsen (a former colleague) actually blogged about this some time ago. I’m not sure why this error occurs, at least I did not have any of his suggested interfering applications running, but nevertheless: The solution is simple – reboot the server and restart the Wizard!
Once all the Front End servers have been successfully upgraded via the Deployment Wizard you simply start the pool by running
Start-CsPool from one of them. You might notice some warnings being displayed and the process takes at least 5 minutes, but in the end it will come around. Notice that even with the other pools/services still not upgraded all functionality has been restored.
From here you go back to your Skype for Business Topology Builder server and continue publishing upgrades for the remaining pools and servers – one by one, and “inside – out”.
TRUSTED APPLICATIONS COMPATIBILITY
Once all your Lync servers have been upgraded you’ll be happy to see that any third party Trusted Application servers are still working. In my case we were running a Competella Call Center as a UCMA version 4 application pool on our Lync Server 2013 solution, and this works well versus the Skype for Business pool. If you are upgrading from Lync Server 2010 then chances are that any UCMA version 3 application pools will work just as well – but you probably can’t have application pools on both UMCA version 3 AND 4 since collocation is stated to only support one of them.
It is probably a “best practice” to upgrade any application pools to the latest UCMA version as well, but in case your application does not support that you can rest assured that it will keep running even with Lync now being Skype for Business!
After your upgrade is over be sure to test all functionality, including conferencing sharing features, response groups, conferencing web app client and mobile client etc. Make sure that the end user will have his or her expected functionality in place for the upcoming work hours.
Remember to deploy Kerberos authentication over again if you had this is place before the upgrade. You will have to rerun the
New-CsKerberosAccount specifying the existing computer account (e.g. FABRIKAM\kerbauth) and
New-CsKerberosAccountAssignment specifying your site.
Finally you would want to make sure that users can take advantage of the new Skype Directory search from their client, instead of the old-fashion email address reference. To achieve this you will simply need to remove any previous Skype Public provider reference and replace it with an updated version – as the cmdlet now contains several new options. This is explained in detail here. Notice that the Skype for Business client needs to be restarted after you have updated the server-side settings.
So – if you made it to the end of this blog post you should definitely make it work for your own upgrade as well! Good luck!