A Solution for Skype for Business 2015 “Response groups may stop receiving calls after you run the Enable-CsTopology command”

Response group may stop receiving calls after you run the enable-CsTopology command


Good morning to everyone,

I have the first new ground in some time, for a Response group issue, I found in 2015, documented in 2016 and finally found it had been committed to KB4015898

Or Just SFB CU5!


I wrote this Piece on Response groups not ringing available agents, when the group members were in modes like longest Idle.

I said the only remedy available was to rebuild the response group and you may (or not) get a different result. Another viable step is

to “Use Attendant Mode.” This was my shtick in 2016.


So it turns out there had been an issue dating back 2015. I had personally run into this issue several times. It turns out somthing

you may do every day, turns out to be a “No No”. So if you have a need for “Re-Publishing” the topology Frequently, and you

have response groups, that may no longer be a good Idea, Even if there is a patch in place.


Just be aware, and make sure you update to CU5 or higher.



“Response group may stop receiving calls after you run the enable-CsTopology command


This needs to be installed on any server where you have installed the Skype for business. Back up your

Response groups for CU5.




Using Powershell and Excel to compare Microsoft Hotfixs on Servers and Virtual Machines.

Hello All,


Two Types of Comparisons Devised

I have been working several Clustering and Hyper-V cases Recently.  I have come to a point where I notice the Virtual Machines rarely have the same level of  Microsoft Updates that the Cluster Node does. I finally had a few minutes to look at this issue, and I even made an Excel Spreadsheet to compare updates to other machines.

Fortunately, When I got serious about making a Spread Sheet Script, I noticed there were some pretty good work already available. In fact, I found one that will likely serve to compare updates on all the Nodes, all the VMs and more. I am sure I can do cross checks using a Host as the standard, and a bunch of VM’S as the comparisons.

So we are basically showing off two different ways of doing the same thing.  The Gallery script vs. MyExcelHotfixCompare. These are different things for different reasons. But its good to have them in the same place, Because they both have their own purpose.



First thing you want to do have is a copy of the spread sheet, MYexcelHotfixCompare , and a copy of the The Gallery script


Why Two Comparisons

So I made one up, and I found the other by accident! That is true. However, I discovered these both served different purposes.

The First method came from Stane Monsik. What this count does, is aggregate the KB’s for every server in the survey. So your Final report answers the question “when you updated Server Group X with KB Group Summation(A-Z), did you do that same thing to all the other servers? This is what I started out to have answered! If the answer to this is no, then I always tell my customer to finish his updates right away.

However, another question I was often asking, was not being answered by this script. The Questions was, When we know that there are X updates packages for Technology Y, how many of those updates did you apply to your server? Then Question #2,  For X and Y, did you apply these updates to just the server which had problems? The answer to this question should be that you updated all the servers which contained technology Y, with every Update Package X. I found this question was often met with Guesstimates more than actual proof; this was an easy question to get a good guess on. It’s also an easy question to just accept the guess and move on.  In today’s complex world, that is no longer acceptable. So I set out to easily answer this kind of question.


Method1 Script

This script will take “a list of Machines” and show you what updates the entire list has and does not have. Every KB gets added to the list, no matter what server it was found on.

The Script, located at Gallery.Tech.net.Microsoft.Com , Goes to every server and pulls the list of hot fixes. Then it goes through the hot fix list and checks every computer, to see if the hot fix has been applied to the computer.

To make GetHotfixCompare_Gallery work, all you have to do is open the .PS1 file with notepad and add your list of computer names. You can add as many computers as you like, but realize it takes longer and longer and longer to complete. The text you are editing looks like this in the file:  See Figure 1. :

# —————————————————————————————————-

$computers = “ComputerName1”, “ComputerName2”, “ComputerName3”, “ComputerName4”, “ComputerName5”

# —————————————————————————————————-

The Result is a very nice HTML report:


Figure 1.



Once you populate the script with edits on the names of computers, you run the PS1 file by right Clicking the file and choosing Run With Power Shell. The Script runs (longer the more computers you select), then generates an HTML file of your KB’s. There is an orderly chart of stars telling you which KB’s have stars for the machine, and which do not have stars.


All in all, A  very good method. But in order for me to answer the technology related questions, I needed to use something different.


Method 2 Spread Sheet comparison (MY_excel_GetHotfixCompare)

On the Excel Help article, called “Compare two lists and highlight matches and differences” I use Example 4 of that section. Example 4 runs a comparison from column one (the update list of a server (get-hotfix)  against column two (the list of updates for the specific technology) .  The comparison Colorizes the two list columns to highlight where the updates match or are unique.

MY_ExcelGetHotfixCompare Is the name of the spread, and you just need to right click and save as to save the file as an XLSX file.

This method will always work, as long as you can find a list of key updates, Microsoft says is relevant. This list below is not unabridged. This is just areas where I work most often. Below are some Example Technology Patch lists, that will power column two, on your spread sheets.

Server 2012 and Exchange make you dig a little bit to get the actual KB list, but you get the Idea. The point is to get the list of “important hotfixes” and be able to use them to “audit” you current situation. So let’s get to the formulas and make a spread sheet!


Get Hot-fix Compare Spread Sheet

The Compare column Colorizes numbers in column A , that are also in column B. And Vice Versa. So there is only one caveat to this method. If the KB shows up twice in the same column, then the cell becomes colored, denoting that the patch has a match. But, This is an impossibility of the get-hot fix command. As long as your pasting in get-Hotfix results from only one machine per column, you will get a valid result. So the limitation of this, or any tool reviewing hot-fixes; don’t try to do two machines in one spread.

Steps to create:

  1. Open Excel and put your Values for Get-Hotfix (just the KB) into column 1.
  2. Copy the Hot-fix numbers for the relevant Microsoft KB numbers from your articles like above, into Column 2.
  3. With Excel at the Home Tab, Choose “Conditional Formatting” and Manage Rules . You will see a pop up window, New Formatting rule: (figure Below)




  1. Choose New Rule and “Format only unique or duplicate values”
  2. There is a little Drop down that says Duplicate or Unique- You will make that choice here



6.Then you see where it says no format set? (above) This is where you choose your color.

7. Hit the Format button. Then choose the Fill tab.

8. Now see the Fill tab below Choose your color and hit Ok.



9 Then Choose OK Below



10. Now Comes the important part. You simply highlight all values in both columns and there is a wizard that will form the formula for you based on how many rows each column has in it. I am showing the screenshot below, after I clicked into the “applies to field” and held down the left click of the mouse while I selected both columns and went down enough rows to cover all values in both columns. I also found that if you pre-select both columns, before clicking conditional format, then these vales will be there automatically


11.  The only thing you can’t see in the picture above is the dashed line that is now hovering over both columns. Once I hit OK or apply, it all goes away and my formula is:


Pre-Select your columns before you start with Conditional formatting

Now I found out some weirdness about the formula. If you have to go back and change the length of the column, you have to make the formula a little differently.  You click into the applies to field

and highlight Column one, then you type a comma, and then you highlight column 2. So the formula looks like this


The more general solution is coming up below:


I like the second formula better, because you can see the start and finish of each column. But the more general one covers all KB in both Columns. cant beat that. I am editing this sentence,

after the fact, and I found that if you select the columns, by Highlighting the columns entirely, you don’t have to deal with touching any formula aspect at  all.

Here the download again for My Excel HotfixCompare , You can also watch the video at the top and make your own spread.

Believe it or not, that is it! When you hit OK, your values immediately calculate out:



The next issue I tried to solve was the length of the column. It looks to me that this is the master formula, no matter how many KB s you have  (=$A:$A,$B:$B). This is for column A and B.

I do believe you could replace these values with columns a and c or b and E or whatever. This can help you move columns for your ease of use and you list can be as long or short as you want.

So use this in your Duplicate Values formula:


Again, I am coming back after the fact, and just saying to Highlight the columns you want to use, before you start, and you don’t have to deal with the formulas at all. I have a second Excel

Method for comparing up to 6 servers, but I will let you just download the Excel File and see how it works!!! Watch the video, I performed that in about 1 minute in the video. also

after the fact, and I found that if you select the columns, by Highlighting the columns entirely, you don’t have to deal with touching any formula aspect at  all.


How do I get my Hot-fix list = Get-Hotfix

So this is all we have left to cover. Below these are the steps I use to get that list of KB numbers isolated from the rest of the information you find when you run the Get-Hotfix command.


1. Open PowerShell as Administrator
2. You may run Get-Hotfix > c:\myhotfix.txt
3. Open Notepad ++ and Open myhotfix.txt
4. Hold Control and Alt Key on your keyboard at the same time
5. While (4) use the mouse to select just the KB column
6. once the KBs are highlighted Right click and choose copy.
7. Paste you KBs into notepad for transport to your work station.

That’s It! I hope you have enjoyed this article. In closing I have the original link for the script in the initial discussion. I also have a method to update your Hyper-V Cluster automatically with a script. That can be pretty handy.


Use a Baseline Database Generator Script for reviewing performance of SQL Instance

Use a Baseline Database Generator Script for reviewing performance of SQL Instance

For anyone trying to troubleshoot a Slow SQL server, I wanted to come up with a test that will take the SQL issue and generalize it. Why does this need to be generalized? I have found that a customer or a support team may introduce a bias in all aspects of the tests. Begin with the Data. Data is impossible to to show a unique result. You may say this database does not go as fast as my favorite one, on a separate server. you cannot accurately prove one server is faster or slower then another server. Why?; for a basic Idea, take look at another case, where I lay out some basic testing tenets to go by.I will re-state them here. They sound like car rules, but they are universal testing rules you can apply to any situation.

From Car Rules to Computers

  1. The performance should be documented and repeatable.
  2. More than one test should be run, and simple is usually more realistic.
  3. Tests should be standardized, down to a science, so that if applied to another matching scenario, you would expect similar results.
  4. Keep the time down to a short test. The longer the test, the more variables can be introduced.
  5. Do not focus on two separate car models not functioning the same, find a way to introduce a baseline into what a reasonable car will perform like. Then prove or disprove your baseline.

In order to get a good unbiased test result for SQL, I came of with a dynamically created SQL database, that gets created once. Once Created, you can run some test on this standardize database, and compare with results on, say your laptop, or another machine, where your processor, Memory and disk resources are similar. All you have to do is to follow the method. One simply must not use ones own data.

Read on-Grab the download from here or the top of the page.

The SQL Baseline for Customers who report server A is slow then Server B.


When a customer claims that one machine is slower than the other, there is always the possibility the customer has an actual baseline. However, when they say one is slower than another, this usually indicates they don’t know what a baseline is.

A Baseline is a collection of metrics, about the server, when it is installed at Greenfield time. When the Server is first Deployed with SQL, a baseline should be taken. Then, future claims as to a slow server, should be taken against itself; not another server.

When a person wants to compare two servers, this is almost an impossible ask. It’s like asking us to compare why two people do not complete a personality test in a similar way. From a support standpoint, it is a fruitless pursuit, and often creates a bad CE, in trying to fulfill their request.

The goal of this process, is to give Support and the customer a way to meet on common ground. The customer claim that the server is slow may as well be translated into, The Data on my servers does not match!! And they are correct. And we don’t support data. The Key word is Data. This question of “SLOW-ER” pulls us into the customers’ data sets.

This process gives us a way to use our own data set. The advantage cannot be understated. We will be telling them one machine is slower or it’s not.

Accepting that generally one machine is slower, do not underestimate this result, as the customer re-introduces his production elements. If the Baseline test show a machine 20% slower, then any difference, more than 20%, will be due to specific workloads introduced by the customer. All of the SQL Subject matter experts have known this, but we all spend weeks trying to find the leverage to prove it. Without an “absolute”, we could not substantiate that claim. This caused these cases to last for months. This method below, should cut these cases into a two day case, at most.


The Process


In the following test for SQL you will see four files, which compose of a method of base-lining SQL performance, without using Bias Data from the Customer, or a third party company. This Test Is devoid of the implication of using cashing or indexing, so it is a perfectly simple test to illustrate capabilities between two machines.

The reason this test has been devised is due to customer demand. Customers often ask us to compare two adjacent machines. Often times these comparisons can only be done using apples to oranges methods. Often times, these cases end up being a point of contention for the customer and for support teams. The goal of this test is to mitigate that disparity.


Here are the files you will need

Figure 1. Files you will need



The Excel Spread sheet is to be filled out and returned to Support. We keep a master copy of this spread to monitor the scripts performance against a variety of machines and situations. Over time, we will have a database of how this script performs, on average, across a multitude of platforms. And the simple measure we are obtaining, is time. How long does it take the baseline query to complete?


Test Parameters

The Results of the script, should answer the question, is my “server” really slower than average, or slower than another server? In order to do this, strict adherence to rules must occur. This test must be run, with all other operations terminated on the SQL server. There should be no Antivirus running, there should be no other applications running. Other than a baseline Windows machine, with core applications and services running, the server should be running SQL with no client connections. In other words the SQL machine needs to be out of production.  There are columns In SupportBaseline.xlsx, but it will be noted in the analysis, that the machine was in production, and the results may not reflect a true baseline.

Several baseline runs can be collected with the single variable as the total number of rows, this script will create. The default is set to 1 million. The recommendation is a million rows, on average. However, depending on how powerful the server is, or how much down time you are allowed, you can adjust this variable to fit into your needs CreateSupportTest.sql is the file where this change is made see below.


Figure 2. Where to adjust how long the script will run

How long do I run the initial test?

As a general rule, 1 million rows should take less than 15 minutes on a reasonable SQL server. However Performance degrades fast. For example, A SQL VM with only 3 GB of ram, will take 121 minutes to run the query. So the first run should be 100,000. Then multiply the length of time it takes to complete by 10.

This is how long a million rows should take to complete. You can judge how many rows you should choose, depending on the amount of time you want the query to take to complete.


  1. Determine how long you want to run the query. Follow How long do I run the initial test?
  2. Set the value of the # of Rows. Follow Test Parameters
  3. Record the initial values of the server in the XL spread SupportBaseline.xlsx
  4. Run the Query named CreateSupportTest.sql here is a how to if you need it
  5. Record the results in the Excel spread sheet SupportBaseline.xlsx. use start and stop time and it will auto populate the time of execution
  6. Repeat as necessary, populating the spread sheet, and returning to Louis Reeves in Support support. He is keeping the overall list of how the query runs in several different scenarios and can give you more information about how your query results compare to other machines running the same query
  7. When you are finished testing a server, there are two scripts that are cleanup scripts. Run DropSupportTest.SQL. here is a how to if you need it
  8. Then run DropSupportMaster.SQL. here is a how to if you need it

That’s it, Now you can complicate things, by running things like Diskspd against these machines, but, it will be best to just keep it simple and stay with the program laid out. If you desire to look at diskspd, go ahead and read The Fallcy of Performance or; Are you bringing your Support Agent Apples or Oranges? This will help you the plan for running Diskspd commands. So here you really have two ways to testing the claim of a SLOW:


I hope this series of articles is helpful in troublsehooting issues with model data.







Deploy Remote Desktop Services in a Workgroup or Domain Easily!


Update 10/9/2017


This article was the underlying document the post came from. Notice at the bottom it is valid for 2016 as well!

Applies to

Windows Server 2016 Datacenter, Windows Server 2016 Standard,
Windows Server 2012 R2 Datacenter, Windows Server 2012 R2 Standard,
Windows Server 2012 Datacenter, Windows Server 2012 Foundation



For all you Terminal Server or Remote Desktop Services or RDP Geeks out there, Let me spend a minute to clarify a call driver that continues to be popular.

The Scenario is deploying Remote Desktop Services in a work group. Call this a corner case, or call it what you will. The reason this is a popular support call is due to the fact that there are two articles needed to complete the setup.

Oh sure Microsoft does tell you to add a policy after your setup, but they specify you use GPEDIT. not much help there… Until Today!

First you need to Deploy the roles correctly. The Specific KB I chose for this article, is the one you would use for the simplest setup. One that keeps you clear of very common mis-steps of walking through the setup in the Server Manager. If you did your deployment correctly, you didn’t even need Server Manager.

So begin by reading this:

Guidelines for installing the Remote Desktop Session Host role service on a computer running Windows Server 2012 without the Remote Desktop Connection Broker role service

“”RD Session Host without the Connection Broker

To be clear about this deployment:

  • No Domain Controller
  • No Hyper-V
  • Install Remote Desktop Services.
  • You won’t get to select more until the end. You may install the following
      1. Remote Desktop Licensing and
      2. Remote Desktop Session Host
      3. RDWEB
      4. RD Gateway
  • For a work group you do not have to add the Terminal Server to the Terminal Server License server group. Why? With No DC, you don’t have to report to anyone.
  • Activate the Terminal Server using one of the three methods.. This is most common
  • Activate your RD Cal Licenses with KB2833839 or cc725890

So Far, so good. Now this is where we start to diverge from some existing Documentation

  • If you are in a work-group, go to “edit local users and groups”
  • Find the group folder and create a group for your RDP users and add your users to this group.
  • Alternatively, you may add your users to the RDP users group already there
  • Remember the group you are using. It becomes important
  • Now you are going to edit the Local Policy by doing the following:
      1. Start and Run GPEDIT.MSC
      2. Navigate to the following:

Local Computer Policy ->Computer Configuration-> Administrative Templates-> Windows Components-> Remote Desktop Services-> Remote Desktop Session Host-> Licensing

Figure 1. GPEDIT.MSCUntitled

You are going to see now, the two LSO (Local Security Object) you will be enabling.

Use the Specified Remote Desktop License Servers –Value- IP address of RD License Server.

Set the Remote Desktop Licensing Mode- Value – 2 or 4. 2 is for Device CAL and 4 is user Cal.

Figure 2. Local Policy. Untitled

Now there is another Policy to set. For this, you want to just go back to the top. Start out at Local Security policy like before (GPEDIT.MSC).See figure 3.


Figure 3 GPEDIT.MSCimage


Expand Computer –>Configuration,–> expand Windows Settings, –> expand Security Settings,–> expand Local Policies and then click User Rights Assignment.




Enable this policy and add the group you used earlier. It is highlighted in this article above. Add this group to this policy. In addition, add the Remote Desktop Users group to this policy if desired. Don’t and your administrator name here. The Admin already has access. If you ad your admin name, it will lock you out. So best to to stick to adding the Remote Desktop users group.



Notice it says administrators (Plural), that is fine, but the single administrator should not be in this list. there is a well known break here if you do that.  When you are finished, you just need to add the users you want to give access to, to the group we just added to the Policy (likely the remote desktop users group)

Step 8 comes right out of the KB2833839

  • Open an elevated Windows PowerShell prompt
  • Type the following command on the PS prompt and press Enter:
    $obj = gwmi -namespace “Root/CIMV2/TerminalServices” Win32_TerminalServiceSetting
  • Run the following command to set the licensing mode:
    Note: Value = 2 for Per device, Value = 4 for Per User
  • Run the following command to replace the machine name with License Server:
  • Run the following command to verify the settings that are configured using above mentioned steps:
    You should see the server name in the output.

You have now covered all your bases, and  your RDP should be happy!! It will be happy because you paid attention to all the rights things!

Now I did find an interesting article to which I cant really comment on. However, it is an interesting article. IT deals with some issues, you could run across.

Based on a comment to this article, I want to address this KB    “Best practices for setting up Remote Desktop Licensing (Terminal Server Licensing) across Active Directory Domains/Forests or Work group”

This is where it tells you not to use a work group server. So Please consider this against this KB_

Guidelines for installing the Remote Desktop Session Host role service on a computer running Windows Server 2012 without the Remote Desktop Connection Broker role service

One article says don’t use a work-group. The other says “This server can be part of a work-group or may be configured as a DC.” Which do you believe? They are both true. Microsoft does not want you to use it in a work-group, but you can because they provided a way for you to do it. The cost? Printer Redirection issues, and a few other small things, but you can do it if you need to. Bottom line is Install your Terminal Server in a Domain. But, If you have no other choice then use a work-group if you have to.


Well That is it. I hope this has been helpful for work groups or non-work groups. this basically  can be set up on either.



Switching Hyper-v CSV Clustering from Software teaming to Hardware isolation.

    I wrote this article for several reasons. There are a lot of reasons why you may want to go from a Software team to Hardware, or Vice Versa. I make no comments as to why you would do either.

    This is to say, There are some circumstances where you are better served with a Software team, and some where you will see better results with hardware and the NDIS driver.

    I will leave the why up to you. However, If you have the need, here is a rough guide to get you though the conversion of a Software Teamed 2012 or 2016 Cluster conversion of your network, To hardware NICS and Isolation.

    This article is high on text an low on screen shots. All I can do is apologize in advance.

    Some Additional titles:

    Converting the Windows Cluster from Software Teaming to Best Practices, Using Hardware Isolation.

    Another title to this article could be switching from Software teaming to Hardware isolation for CSV clusters.

    My software teamed cluster performs lousy.

    Two Standards in two Documents

    Why would you perform this change? You would do this if your using 1GB NICS for your cluster, and software teaming is not working well for you.

    I have found that the network changes around 2012 may be better suited to 10GB NICS then 1GB NICS. I find the 1GB NICS aggregation may not always be the best way to setup a cluster, depending on the needs of the customer, and the type of software running.

    I find that the original Network Best practices suit some customers from a maintenance perspective, as well as ease of understanding, when the IT persons are not full time network admins.

    This article demands that your Storage Networks are on a separate switch from the Clustering Networks.

    Furthermore, The Cluster Networks should be ideally isolated with Vlans, by Subnet, to prevent any collisions of packets from a unique subnet. If the Network is flat, That may not stop you from moving to this setup. Just know that some isolation is recommended. But, using a separate Subnet per Virtual network is still a must.

    The Design of your network should be based on the Initial Configuration Guide for Hyper-V networks for a CSV cluster (2010).

    If you do a Bing search for “network guide for Hyper-V clustering” , you will find this article,

    Hyper-V: Live Migration Network Configuration Guide (2010)

    And Bing “cluster guide for Hyper-V CSV cluster networks” and you should find:

    Network Recommendations for a Hyper-V Cluster in Windows Server 2012 (2013)

    The 2010 Documents lay out the Premise of Windows Clustering, with the goal of having CSV Live Migrations optimized. The 2013 Documents, Shows the embedded method of isolating the traffic within the Teamed interfaces.

    The Opinion Section

    Having been an Engineer lots of Hyper-V Cluster cases, the main reason for CSV cluster issues, was some form of mis-configuring the network, as per the best practices.

    In 2012, we have now added the additional choices of using a software Microsoft Team and or LBFO options using scripting to send the traffic down specific virtual network adapters.

    The change in server 2012 and 2016 has changed the perception of what can be done with the new technology. I now see the majority of Hyper-V networks using Microsoft teaming. Which is fine. Its fine, as long as you are using the virtual LANS; creating the isolation, along with the team. So the whole message of server 2012 and 2016 is Teaming and Isolation. What I am seeing all too often is just the teaming portion.

    For this reason, I am bringing back the original specifications, to make the statement, that Isolation is the Key element to a CSV cluster. Teaming can be fine, But Proper Isolation comes first.

    This means that if you are not a network person, and don’t have access to a network department to set things up for you, then you may want to stick with the original guidelines, which I am about to present to you. In this article, we are going to convert a Cluster from a Microsoft Teamed network, to a Vanilla Hardware Isolated, Cluster Network.

    The assumption here is that all of your Network adapters have been thrown into a team or two. In addition, No VLANS were created to isolate your traffic. If there were VLANS created, you simply use power-shell to delete them. See the following script, changing the commands new-LbfoTeam, to remove-LBFOteam and etc…

    Configuring networks 2/5

    Words of Caution

    You will start On a node, that is not being used by the cluster. We will make the changes to one node, at a time. When the first node is done, move to the next. 

    Please understand, This is a major change. You will likely have to take an outage to get this done across the whole cluster. I would make the changes on the first node (Node 1). Then shut all cluster nodes down, bringing up the node you converted. This will now be the primary cluster node, and as you update each additional node, they will come online, into the cluster represented by your Node 1 

     How to change you Cluster, One Node at a time

    So here are the steps:

    Pre Configuration

    1. Run Ipconfig /all > c:\ipconfig.txt on all cluster nodes.
    2. Pull the MACS on Software Teamed NICS in the Server Manager->NIC Teaming-> Teams 
    3. Save these files, even placing them in a spread, so you can match up the NICS you will be using. You need to make sure that you understand which NIC on each server will play each of the roles VMNIC, Live Migrate, CSV, Management, Storage, and Replication
    4. The columns of your spread are NIC name, NIC Description, MAC Address, OLD IP Address, New IP address, Cluster Workload and VLAN If Necessary
    5. Remember not to record NICS that have parenthesis around them or are multi-plex adapters. These will be going away. We will only rely on physical adapters.
    6. The Rows of your Spread are as follows:
      1. NODE X
        1. VMNIC (ex. no Subnet)
        2. LIVE MIGRATE (ex. 10.10.11.x)
        3. CSV  (ex. 10.10.12.x)
        4. HOST  (ex. 10.10.13.x)
        5. Replication  (ex. 10.10.14.x)
  • So your Subnets need to be assigned by #6 above. All VMNICS wont have an IP because they will all be dedicated to the Hyper-V switch. The easiest way to express this is to explain that Every Live Migrate will be on the 10.10.11 network. Every CSV will be on the 10.10.12 network. Every host will be on the 10.10.13 network. Every Replication will be on the 10.10.14 network.  Every host will have a dedicated NIC for each of these networks.
  • Replication above would be Ideal. If you don’t have enough NICS to have this network, then its ok. This NIC may also be called a Storage NIC. IF so, this NIC will Have MS Client sharing disabled, and uncheck register in DNS for this NIC.
  • the Cluster workload on your spread can be populated from the section below called workloads

Hopefully, these tidbits have helped you prepare for the actual work, because here we go. This will need to happen on every cluster Node.


    1. Go into every VM and change the NIC to not configured
    2. Remove all Network adapters from the Software teams.
    3. Delete the Virtual Hyper-v Network – if external
    4. Verify that all virtual NICS are gone. Restart server if they are not.
    5. Label 5 (or more) NICS as follows: (minimum 4)
      1. VMNIC
      3. CSV
      4. Management
      5. Replication
      6. Storage1, 2 etc.
    6. Go to Programs and Features and right click the Network adapter management application.
      1. Select the “Change” option
      2. Add NDIS if Broadcom, or whatever the 4 letter acronym is for advanced service of the NIC brand installer.
    7. Place an IP, Subnet, DNS and Gateway into the Management NIC.
    8. Place only an IP and subnet, for the Storage NICS. Disable for Microsoft Networks, and Uncheck Register in DNS
    9. Set Ip and subnet for Live Migrate, CSV, and replication
    10. Re-create the Hyper-v Network using the VMNIC. It will be external and dedicated to the VMS. (check the box)
    11. For 1GB nics – go to every NIC in device manager and disable for VMQing. If 10GB nics, leave enabled

    That’s it. Once you have done the second machine, make sure you can ping across to the other NIC on host1.

    As long as you pass the ping test, you may move to changing the other Nodes in the cluster.

    Once you have completed the changes, and all machines ping properly, you may restart the nodes in a round robin style if you have any kinks

    The only thing left to do, Is to set your priorities for the networks. The priorities are in the center pane of cluster manager. Choose network in the left selection plane.


    The settings should be changed to the following:

    1. VMNIC – NONE (dedicated to VMS)
    2. LIVE MIGRATE – Cluster Communication only
    3. CSV – Cluster Communication only
    4. Management- client only
    5. Replication- Cluster and client
    6. Storage1, 2 etc. – N/A no cluster communication

    And that’s it. Once you have that established, your cluster will now be working on physical NICS only.

    Now with the NICS you have left, you may go back and add selective hardware teaming where it makes sense. No Teaming on Storage NICS. Honestly, it may be better to wait to see if you have any area of weakness. For Example, If the VMs seem slow during intense workdays, you may remove the VMNIC, from Hyper-V, Team it, and then put the multiplexor back in as the VMNIC used for Hyper-V VMs.

    I hope this has been helpful. Please remember that this works automatically, because the Cluster is able to identify NICS on different servers, and automatically matches them to the same subnet. The NICs from the various servers will show up together in the network tab, because they are on the same subnet. As such, the cluster knows that they will be performing a specific job in the cluster, based on the settings laid out in this article.

    This is not better or worse then software teaming, but it may be the right choice for some IT teams, who are more familiar with hardware NIC assignments as part of their Job description.

    Also please understand the days of teaming with 1GB NICS is coming to a close. Very quickly 10GB NICS are becoming the standard. The difference in these setups becomes MOOT when your no longer using 1GB adapters for clustering.

    Thank you,

    Have a nice Day.

Windows Update Fails Lead you to Troubleshoot around update KB2919355 or other failed 2012 updates.




Hello everyone. I had a strange series of events lead me to this solution. I had three installs of windows, done on three different media, with a different version of Server 2012 on every install.

This includes all versions of Server 2012 and 2012 R2. The minimum media was RTM.  In every single install, Server updates failed, no matter what I did.

There is a variance of things seen in windowsupdate.log. However, you are ultimately going to find yourself looking at updates to remove, install or otherwise. If updates cannot be installed, manually, or otherwise, why don’t you go ahead and try this first. If it doesn’t work, go on with your troubleshooting. I think you will be surprised.


  • 1. Run GPEDIT.MSC
  • Choose Computer Configuration
  • Administrative Templates
  • Windows Components
  • Windows Update
  • Chose the 5th selection from the top in the center pane
    • “Specify Intranet Microsoft Update Service Location”
    • The policy default is not configured
    • Change this to disabled.

Now close the policy and restart the MS update service. Then go back to the Windows Update center, and you should notice that the screen has changed. If not, then go ahead and click the check for updates button.


In my case, There was a change that said MS update needs to update itself. It automatically send a file down and repaired itself. Then updates worked normally after that!!

I wanted to share this one, as it looks to me that this could be a very large call driver for support centers.

I hope this fix finds you and I hope you fixed your customer in a quick timeframe.

As Proof I have had a lot of windows update failures late, I present the weirdest one I have seen. It is called Audit Mode Failures to update. Take a look at that one, if this article does not fix you up. It does have some basic troubleshooting steps in it.

Thank you,


What you Should Not Do With Your VMware Lync Deployment


TO begin,  let me share an article that articulates what may of you have gone through to get to this point. Many of you started at lync 2010 and are now on Skype for Business. Are you using the same hardware? If so, your problems have come from the past to haunt you.

*Disclaimer: I use Lync and SFB and Skype for business, all to refer to the general term of Lync or Skype. I believe we are all moving to just Skype, but it would be nice if MS just rolled it all to just Skype! one word please!


This article is written for a customer I have in a nearby nation, to the United States. He has a well used Lync 2013 Deployment. He has also had a lot of trouble. From having calls fail on Fridays, to having the Web sites fail on Wednesday, every week, for several weeks in a row.

I had some time to look at this case from a distance, after being very close to the situation for several weeks in a row. As a series of chance activities, this customer ended up going to the VMware department, instead of Lync. This was a very good route! As it turns out, The VMware agent caught the Virtual Machine with 4GB of ram!.

What a coincidence! I had caught the same customer changing his resources myself! That was all it took. All the pieces were clear.

I need to express in no uncertain terms, how vigilant you must be if you decide to Virtualize Lync or Skype for Business! While there may be some issues with Lync and Hyper-V, I am being honest, when I say that most of the virtual issues have been with VMware. Now I know I may take flack for that statement. I am a Microsoft Support Agent, so I do have a bias. I don’t make that statement to support my own brand. I am a Lync Professional and I am telling you my honest experience over 7 years with Lync and Skype for Business.




With that said, let me break it down for you, as much as I can. Let me first bulletize what the supported Lync Server would look like on ESX:

Skype Server on ESX

  • 1. The VHDX needs to be fully expanded, and should not be an remote disk- ISCSI disk.
  • The Ram must not be dynamic, and must be a minimum of 24GB of ram. 32 or more is recommended.
  • The processors must not have NUMA complications, and Hyper threading should be disabled. The ESX should only be presenting physical processors on a machine where SFB is installed.
  • Networking is in flux. I think this is where some issues are still being resolved. Let me say that I recommend you use a dedicated physical nic to the VMware VM, which ever Nic type that is. VMXnet3 nics seem to have an issue, but please keep reading the documentation. Example and Example
  • The Balloon Driver needs to be disabled completely.
  • A Lync/SFB machine should not be moved, or migrated from host to host, even for maintenance.
  • Vms should be left alone to run, and cannot stand having resources change at all. This is a real time application, and cannot be live migrated like many machine types can.
  • Do not use snapshots on Vmware, as this will just cause an issue, if you ever tried to roll back. Just full back up, and restore if necessary.
  • Do not install Antivirus or threat protection on Lync systems.
  • Rely on the security provided by an Edge and reverse proxy server.

I suppose I could keep going. So there I said it! I don’t know if your getting the feeling that Lync should be on a physical machine? I have seen many VM lync deployments, and I wont go so far as to say that. I will say, If you choose SFB and you deploy to ESX, you must remain committed to the best practices. You cant even slip once. I guarantee you will see problem.


EDIT Due to Feedback from another Skype Fan

I was called out on the fact that I cannot maintain the Skype cannot be virtualized. In todays market, we must be able to function with any kind of Hypervisor. I do not disagree with that position. Believe me, I did not want to come off that way. So let me clarify, to say Virtualization is not the problem, so much as Resource control. I am not back tracking much. I am saying that your are not likely  going to be  free to just move a Lync server around, if you don’t want interruptions. The SDP protocol, is not built to be live migrated! My commenter below rightfully said that all three of the technologies I mentioned worked. I don’t disagree. The issue with real time voice, is in those parts of the day when things are busy, and you find you need to move resources around, or you have automation to move resources around. This not going to work with SKYPE! Skype needs dedicated resources, and you should not change them!

I hope it is clear what my intentions are!! I love VMware and I love Hyper-V. However, all of my problem environments are with VMWare. This is on Lync, not VMware! I can say simply that Skype is not very happy with resources that are changing dynamically. So now.. back to your article!





So before you go looking for where I am incorrect in these statements, Please start with the requirements for todays SFB server. Requirements for SFB server, are not small. and then, I don’t mind if you jump into the fire. Here let me supply some oxygen for you! Below find ways to enter the battle:

I think that is enough to get you started. So no matter what you think about Lync, it all boils down to two things, Compute resources, and the network. If either of those is a fail, then your lync deployment is a fail. Microsoft puts it more eloquently:

Lync Server is designed to consume the full capabilities of a physical server and will perform poorly if the required compute resources are not available when needed. To help the virtualization of Lync Server 2013 to be successful for your organization, follow the guidelines provided in this white paper


My friends, you came to this sight, perhaps to find out what not to do with your Lync Server. Look at the statement above. My experience is if you have been having issues for month’s, then there is a 69% chance your answer is in the blue text above. My chances of being right are much lower if you deploy your Lync server like the bullet points at the top of this article.

Fuel? Check. Oxygen? Check. Do you need a light?


Good evening all and I hope your VMS are tuned and your Free memory is abundant!