Skype for Business CU1 Install

The Microsoft Skype for Business 2015 CU1 has been released (available here and installing it has added a few new challenges. Microsoft has added some new safety features to prevent you from messing with the fabric which is a good thing – getting them to actually work as documented is another challenge.

Starting with the CU1 in Skype for Business Microsoft has added an install blocker if the Skye services on the machine you are installing are running. Interestingly the check includes the Skype services and the Fabric but not the web services which the Stop-CsWindowsServices includes. If you attempt to patch a server without stopping the services a dialog similar to this appears.



The actual list of services will depend on the machine type that is being upgraded as well as the state of the services on that machine. Following the install documentation at it informs you to run Invoke-CsComputerFailover –NoStop –ComputerName <FQDN>. This is a new command that sounds great yet I was unable to get to add any value on a 3-node Pool.

As we know, the UpgradeDomains on a 3-node pool include one server per domain; so invoke the failover without stopping the services (-NoStop) adds no value and in my case just hung the process. On my first node I ran the command as instructed and sat with the feedback of the following:

I broke out of the command and performed a simple Stop-CsWindowsService on the computer and began the shutdown process. It did sit for a while at the Fabric but no longer than a minute.


Once the services were stopped I was able to run the Update and received the typical feedback windows showing me what was and was not up to date. In this case, everything was marked as out of date and there were even two new installs on the FEs (one on the Edge and PChat servers).

The installer worked its magic and upgraded all of the services just fine. Once complete I needed to start my services so Start-CsWindowsService –NoWait was invoked and the command to start all services was issued. I prefer the –NoWait as the services start quicker and I don’t have to sit there. It is a good idea to run Get-CsWindowsService at some point after issuing the start command to see what’s started, starting, and yet to be started.

Once everything was up and Get-CsPoolUpgradeReadinessState was 3/3, I moved on to the second node. Thinking that maybe the first node and its fabric was just in a weird state I attempted to invoke the computer failover again…and it hung again but this time it looked different.


Once again I broke out of the command and manually stopped the services so I could begin the upgraded. Once the install was complete I started all the services once again BUT when I ran the Get-CsPoolUpgradeReadinessState I received a Fabric warning.


Apparently the Invoke-CsComputerFailover was doing something and running Invoke-CsComputerFailBack –ComputerName <FQDN> corrected the problem.

Having so much fun with the CsComputerFailover command I attempted to use it once more on the third node, this time excluding the –NoStop option as again, if it had worked I would then be stopping the services anyway so it was invoked and what do you know - it worked. The services were draining and so the process took much longer than had I just stopped – although had I added the –Graceful option to the Stop-CsWindowsService command it would have done the same. I am in the opinion that if we are patching we have a maintenance window, so the sooner the services are down and we patch the better. Once patched the Invoke-CsFailback was used and bring everything back (including the starting of services) and we were done.

So – lessons learned…on a 3-node pool I would not use the CsComputerFailover command, I would simply stop the services, patch, and restart.

Update - thanks Korbyn

As a side – there is a single database update in this release - the QoeMetrics database was updated. Make sure you run the Install-CsDatabase command to update this followed by Test-CsDatabase -ConfiguredDatabases -SqlServerFqdn <FQDN>  | ft databasen*,Expe*,Inst*,Suc* -AutoSize and Test-CsDatabase -CentralManagementDatabase -SqlServerFqdn <FQDN>  | ft databasen*,Expe*,Inst*,Suc* -AutoSize and ensure your database numbers match.

Comments (2) -

  • Something else to note, the update for the front end service has a hard-set free space limit of 32GB on the system drive. I started installation on a system with about 25GB free space, when this component failed, and was unable to roll back - leaving a sick FE server. Only found the requirement after digging through the log file. Thankfully, in this age of virtualisation, adding the required extra space was easy, and re-running the installer completed the update. One to watch out for though.
  • There is a QoE database update with this CU, one that finally fixes the extremely slowness issue with Response Group reports.  So far this CU release has been one of the most poorly documented one by the Skype team, between the nostop switch, nothing about the DB update, and just having to click on every single link to see what's all fixed and what all needs to be done, not to mention not fixing the CMS failover issue...

Add comment