Update all of your Skype For Business Servers



Good Morning Class, Today I just wanted to put into your hands a needed cheat sheet that puts together all of the update changes in SFB into one simple upgrade document for any set of SFB servers.  So lets begin.

Pre-Requisite Install work for Skype for Business Updates

Updates should be done in the following groups, in the following order:

  • Standard Edition Servers
  • Front End Servers
  • Mediations Servers, Director and Edge Servers
  • Back End SQL Servers

To begin, If you have Skype for Business (SFB) Standard Edition, you will follow this process:

Standard Edition Updates for SFB Server Environment

  • 1 Stop-CsWindowsService
  • 2 net stop w3svc
  • 3 SkypeServerUpdateInstaller.exe
  • 4 Once this is complete move to step 5
  • 5 Open a new SFB Shell after closing the update window
  • 6 Stop-CsWindowsService
  • 7 net start w3svc
  • 8 Depending on your Database setup- you may run one or the other
    1. Install-CsDatabase -Update -ConfiguredDatabases -SqlServerFqdn <SQL Server FQDN>
    2. Install-CsDatabase -Update -ConfiguredDatabases -SqlServerFqdn <SQL Server FQDN> -ExcludeCollocatedStores
    3. Install-CsDatabase -Update -LocalDatabases

If you have Standard SFB, Stop. You have completed all you need for your Deployment. If you have SFB Enterprise, Follow the Steps Below.

SFB Enterprise Updates of Servers and SQL

Front End Servers Patched First. Patch One Pool At a time, One Server at a time.

Run: 1. Get-CsPoolUpgradeReadinessState

Only if you get a failure, and only if your results show a missing replica, then you run this command:

    • Get-CsPoolFabricState -PoolFqdn <PoolFQDN>
    • Reset-CsPoolRegistrarState -ResetType QuorumLossRecovery

Otherwise Continue

  • 2. (Ignore if non Clustered or Mirrored) Invoke-CsComputerFailOver -ComputerName <Front End Server to be patched>
  • 3. Get-CsWindowsService (services will be running) & Get-CsPoolFabricState (Fabric will show 1 less server in the pool)
  • 4. Run the latest Installer package
  • 5. Don’t Be impatient!!!
  • 6. Only when the updates are done, move to step 7 or 8
  • 7. (Ignore if non Clustered or Mirrored) Invoke-CsComputerFailBack –ComputerName <Front End>
  • 8. You may check for the pending restart. Be aware you may want to do the restart before moving to the next server

Mediations Servers, Director and Edge Servers Patch One at a time

The Steps are the same for this group of servers as well. However, they need to be completed as a separate group. So begin with the same steps and when complete, Make sure you have restated your servers if needed.Edge Servers should be done together as well.

Back end SQL Servers and other SQL Servers

Once all of these servers in your deployment are updated, You need to update the SQL instances:

  • 1.On the Back End SQL machines OR On the Master FE sever of your Pool (RTClocal) or Monitoring Database

      • Install-CsDatabase -Update -ConfiguredDatabases -SqlServerFqdn
  • If any of #1 is on the back end with the root BE database instance, Use:
      • Install-CsDatabase -ConfiguredDatabases -SqlServerFqdn <FEBE.FQDN> -ExcludeCollocatedStores -Verbose

Once you have completed the final step, you can then run the command Start-CSPOOL, and that should cause the SFB Pool to verify the pool fabric is happy and all will e started up again properly.

Thus having done this, you will have successfully updated you Skype for Business Environment. I hope this makes it a little easier to carry out Your updates.

Yours Truly.


How to Start and Stop log collection, and search the log file, for a hardcopy log, on a Skype For Business Server



Logging in Skype for Business has a lot of potential. However, it is made difficult by the need to use The command line. If you remember the Skype 2015 Resources tool kit, This kit contains CLSLogger And Snooper. This CLSLogger should be made part of the SFB product. It is a natural thing to do to help users gets the logs they need, without the size that command line logging can yield. If you Download CLS logger, I will show you in just a few steps, how to get the logs you need. Download the Performance toolkit from:

Microsoft.com CLSLOGGER

Once you have the tool in your hand, you simply run the default install, and the tool will be created in the path:

Start the application C:\Program Files\Skype for Business Server 2015\Debugging Tools\ClsLogger.exe

Before I even get started, I will tell you three times during this article, “Ignore the middle tab”. This is for advanced use. If you

Are just starting out, only pay attention to the first and third tab. Your going to run a trace and get a copy of the trace. That is

Our goal.

You are going to see three tabs, Ignore the Edit One


Begin at Tab1 Stop and Start Scenario




  1. 1. Choose the Stop and stop scenario (1) See Figure 1 Below
  2. 2. Choose “Incoming and outgoing call” from the Drop Down. This choice will work for most issues because we just need the S4 and Sip Stack Flags (2)
  3. 3. Check the Front end server- or what ever sever you want logs from. you should collect FE servers and Edge logs separately (3)
  4. 4. Choose “start scenario”, when you are ready to recreate issue. In our case we are making a call to another user. (4)
  5. 5. Once the call is finished chose “stop scenario” (5)


Figure 1


Now Tab 3 the Search CLS LOGS

(Skip tab2 in the middle, it will only confuse things)

Use Figure 2 below to help with instructions

Go to search CLS logs tab. (ignoring the Edit Tab) and follow these steps

1. Log File Folder: Output is going to be where you want your output log to be placed

2. Log level- We usually want “All”

3. Start and stop Time is most important. we want to include the period where the issue occurred. So be early and log a little longer to make Sure you captured the issue

4. Like I said generally select Sip Stack and S4 for SIP calls or IM’s (Voip yes I said it)

5. Finally, You should only select what you captured, an if you captured only front end traffic. Capture Edge traffic in a separate trace

  1. That’s It! Your log should be on your Desktop, or wherever you specified!


Figure 2.  clip_image003

Now you should have your log. You can open the log with SNooper, which is in the same folder as CLSLogger. Good Luck and I hope this

was helpful.

Snooper tool is located in C:\Program Files\Skype for Business Server 2015\Debugging Tools\Snooper.exe. By Default.


The Way to Decommission your Skype For Business Server s In Perpetuity


I wrote a blog the other night, about renaming your Skype for Business Pool. The joke of the article was you basically have to decommission the server!! The more I got to thinking about the changes in SFB, the more I got to realize the Skype Team is moving in the direction of the Exchange Team as far as decommissioning goes. Truly, if you expect to be able to use your server for a subsequent deployment, your going to have to get all the metadata cleaned up. In order to do this, you really need a good comprehensive removal process.


This is a shot at one anyway. Please comment if you come up with a situation where your not satisfied with my removal steps. I will adjust to make them as comprehensive as I can. Thank you in Advance.

Similar to Exchange Removal steps

Get-CSuser | Disable-CSuser

Get-CsConferenceDirectory | Remove-CsConferenceDirectory

Get-CsExUmContact -Filter {RegistrarPool -eq “lyncpool.your.domain”} | Remove-CsExUmContact

Get-CsRgsWorkflow -Identity:Service:ApplicationServer:lyncserver.your.FQDN| Remove-CsRgsWorkflow

Get-CsDialInConferencingAccessNumber | where {$_.Pool -eq “LyncServerPoolFqdn”} | Remove- CsDialInConferencingAccessNumber

Once you get to this point, you may Remove gateways from topology. But before you do,  that means disassociating them from routes etc. in SFB Control Panel. Go to Voice Routing. and the other tabs, and remove the gateway where ever it may appear. Then then delete it in topology builder.

Check your Progress

Get-CsVoiceRoute | select Identity,PstnGatewayList

Go into topology Builder and right click and choose remove deployment- Follow instructions

Uninstall Databases -There may be several of these commands, depending on what you have installed.

This is the format of the commands you will need to run-

Uninstall-CsDatabase -DatabaseType User -SqlServerFqdn sqlbe.contoso.com -SqlInstanceName name

Uninstall-CsDatabase -DatabaseType CentralMgmt -SqlServerFqdn sqlbe.contoso.com -SqlInstanceName name

See for database type below- you may have all these- so just keep runing them until you have the databases all removed!

  • Activemonitoring
  • Application
  • Archiving
  • Centralmgmt
  • Edge
  • Lyss
  • Monitoring
  • Persistantchat
  • Persistentchatcompliance
  • Provision
  • Registrar
  • SignInTelemetry

Now your databases are gone, so you can disconnect the CMS store from the Deployment.

  • Remove-CsConfigurationStoreLocation

Un Prep the domain –

Disable-CsAdDomain -Domain Contoso.com –GlobalSettingsDomainController DC.domain.Contoso.com -Force

Disable-CsAdForest -Force -GroupDomain Contoso.com

You may have to play with the syntax on the last few commands, to get the final steps correct. Don’t be shy. You have the structure, you just need to get the commands to be specific for you now. Good luck and I hope this was of some help.

I suppose the last step is to go into programs and features and remove all the lync applications. This should complete your removal. The final final step is to go into the ADSIedit and choose to login to the configuration partition. You should choose services and then highlight the RTC Service. Right click and Delete it and all its contents.



How do I change the name of the Skype for Business Pool?




Happy new year all! I will start the year off with the shortest blog ever. You don’t! Ok please keep those cards and letters coming!




As tempted as I am to just leave that as its own punch line, I have that responsibility to write this down for my future old self, who will not recall why I don’t want to delete the Skype for Business Pool and recreate it.

So to put this as mildly as possible, There is generally only one direction with Pools, and that is forward. You may change a pool by introducing another pool, and then moving your desired attributes out of the old pool and into the new pool. There may be various ways to do it in fact. But my experience is the only time you care about a pool name is when you named the pool with a hostname instead of an FQDN. In addition, this is at the beginning of your deployment.

I have learned enough in life to say that if you don’t feel 100% comfortable in the beginning of your Deployment, when are you ever going to be?

So in all my reading I could never pin down Microsoft as saying anything other then the following:

  • 1. You cannot rename the Pool
  • You have to remove lync and or Move the SFB CMS store.
  • Verbal and written word from MS is a consensus that you don’t want to rename the pool.

SO most articles discuss the scorched earth policy and command, enough to just make you want to leave it all alone:

Bootstrapper /scorch

I came up with the commands I use to get back to my install with the least about of trouble. I cant speak for the MS support for this, but I think this is as relevant as any of the other articles you may run into on the subject. Below you will find two steps, and then you can get back to your Deployment.

  • 1. Run the SFB command Remove-CsConfigurationStoreLocation
  • 2. Remove the RTC service (all inside too)  from the ADSIEDIT.MSC configuration partition.
  • 3. Start with checking the SFB configuration Wizard to make sure you get your AD schema, Forest and Domain Prepped. It will say partial now.
  • 4. Next Create a Clean Topology TBXml and publish it.
  • 5. Finally, go back to the Config wizard and Install your Config and the rest of the deployment is yours !
  • 6. In a rare circumstance, you may have to go in and correct the name of the file share in the topology, and re-publish the Topology. This should be the only sorts of issues you would find. Otherwise. don’t look for any Drama. Just move on.

Mind you, you really did wipe your environment but it did seem painless didn’t it? Be aware of the SFB users and other items that will also be blown away by the choices.

Have a Great 2017!


Testing Skype for Business with Test Cmdlets Script

This gallery contains 2 photos.

Happy Holidays to Everyone, I am trying to put together a little Skype Training class for some New Lync Students. I have found that some of my Scripts had gotten moldy and didn’t work anymore. The Test Skype Script is an important one for a new person to have, So they have some automated tools, […]

Collecting Sip Stack from Exchange Unified Messaging Server



Hello everyone. Welcome to more things Exchange and Lync or Skype. That sounds like a good title for an article. Maybe Some day. For today, I would like to just make a call out for a logging process, I have used many times in complex Unified Communication Call issues, normally involving lync.

I spent a lot of time Trying to use the event logs of UM to try to find the problem. The fact is the Sip communication is not happening in Exchange, as many of you know. So then what?

What is UCMA! UCMA takes care of the processing of the sip stack. Therefore, it world make sense that a Skype Engineer would be more interested in seeing the out put from its logs.

Maybe I could have read about IIS to find this out, or maybe I just don’t deal with it enough. So I relied on my friends in the Netherlands to help with the syntax. Please see their original article here

The bottom line is you need to know what is happening in UCMA. Check out this TechNet video. It may give you a start to the path you are about to go under:

Things to know: UCMA uses UCWA. UCMA is only for Voice. UCMA takes the sip messages and turns them into C sharp. This is as close to the Sip message as I have seen. Logs can be viewed in Skype with Snooper.

Now That you have watched the video, Please keep this information handy to begin to log UCMA for sip messaging. Did you know the following all rely on UCWA and UCMA? wow!

  • Mobile App
  • Web Client
  • Outlook web APP
  • Exchange UM

Here are the steps to get your logs.

  • 1. Open command window
  • 2.Go to cd C:\Program Files\Microsoft UCMA 4.0\Core Runtime\Tracing
  • 3. Type OCSTracer.exe Start  /Component:Collaboration,TL_noise,tf_component,tf_diag, tf_protocol,tf_connection
    /Component:S4,TL_VERBOSE,tf_component,tf_protocol / LogFileMode:NewFile,20
  • Reproduce our problem
  • OCSTracer.exe Stop /Component:Collaboration /component:s4  /OutputFile:traces.txt /View


I hope this is a helpful read and I hope you fix your Voice issues on UM or Lync or Skype, or Exchange or UCWA or UCMA or wherever they may reside!



How to Troubleshoot SQL, Skype, Windows, Active Directory, Exchange and Basic Server issues with one tool! Its called Multi-Perf!



Figure 1. Perfmon

Hello Everyone,

Well Multi-Perf sounds like it will do a lot! I don’t want to mislead anyone, so I will say up front, Yes it will troubleshoot all those products; One at a time. It is an industry Standard, that you only work on one problem at a time. Therefore, This tool will collect performance information, related to one of the topics of concern. Once the log is collected, you can then review it for specific problems, related to your installation.

1Figure Figure 2. Set-Execution Policy

The benefit of this tool, is That I have been fortunate enough to partner with one of my Best Friends; Tommy Paulk. He is a Master Engineer for Exchange Server. My title Is Skype Architect. See where I am going with this? Tommy created the Exchange Counter set. I created the Skype counter set. Each counter set has been created by a professional in their field of study. The bottom line is you get a script that gives you choices on what set of performance information you need.

So the Multi-Perf is run simply as “Multi-Perf  counter”, where the counters are Basic, Active, SQL, EXCH and Skype

0       Figure 3. Multi-Perf and Readme 

Lets go ahead and get started on explaining what you get for your money here. See Figure 1 at the top of this read? That is the result of any counter set; a sort of mix up of settings that you have to get into, dance with, and somehow survive victoriously. The particulars are beyond the scope of this article; but Begin here. No I take that back, I always make the first link, one I would never read myself. Ok, read this one- Windows Perfmon. Its pretty good.

Now that your up to speed, lets get you some instructions! Figure 2 is set-execution policy. You should open your PowerShell as admin, and run this command : Set-Execution Policy –Execution Policy Unrestricted.

Next you just have to know the syntax of the command:

.\Mult-Perf testname –computer mycomputer –instance my instance. Notice the red lines in figure 4? that represents the 3 data points you are responsible for.

0  Figure 4. Mult-Perf Syntax

If you are not using SQL, then you only have 2 items to put  in!. If you are running on the local computer, you only have to put the test name in! If you forget the test name, you automatically get the Basic counter pack.

So this means this tool will work, regardless of input. You wont get the detail you want, but you get a basic counter log, at a minimum. Let me now give you some example of running syntax.

Figure 5. Run Active test on computer 2

See above, you use the form: .\Program testname –computer computername

If you forget the computer name, it will automatically select the local computer:


Figure 6. Run as Program .\Multi-Perf.ps1 only


in this case you will have no difference in result, because you are giving the most important test variable in, the test type.


Figure 7. with SQL; If you forget to specify the instance, you will get another chance to put it in. 3

If you put the instance in, then that is fine. But if you did not, there is no penalty. This makes the Log tool, infallible and easy to use.

As the last example, I will take you over the case where a person starts the SQL trace, and does not input the Instance:


0   Figure A. No instance specified.  


Instead of failing, The Script looks up the SQL instances, and presents them for the customer. It also says the user must type the instance name themselves, so there is no accident.

1    Figure B

Once the user types in the instance in Figure B, we move to Figure C and we just ask how many seconds between snapshots. 1-60 is best.

2  Figure C


Finally, With Figure D, we are just asking for an Enter, to go ahead and create the counter object. Upon hitting enter, The confirmation that the Counter perfmon is started.

3    Figure D

Finally, with Figure E, you see performance counter is stated. As long as that is the end result, The interceding Steps were all successful. You can see the fruits of your labor in Figure F, which is the running Performance monitor!!


4    Figure E


Figure F is start-> run-> Perfmon

Untitled Figure F Permon running. Always called Perf.


The counter that is created is always called Perf. It will always deleted the old one before another one is created. If you want to keep the old one, just rename it.


Ok if you made it this far, you must want your copy. Please have it and go in Peace!

Download Me Here