Changes in msExchCurrentServerRoles in Exchange 2013 and its impact on a disaster recovery scenario

Hello All , and welcome to another topic , where we are going to discuss the architectural changes in Exchange 2013 in comparison to exchange 2007 or 2010 .

We are going to focus on the disaster recovery scenario, which obviously is quiet simple, if everything goes well.

Caution : The steps listed below requires complete understanding of ADSIEDIT and registry. Incorrectly modifying them can cause severe issues to the operating system. Please follow them at your own risk

Now consider a scenario, where the disaster recovery has failed at the first stages of the operation (say the HT role) ,where , the options left with the Exchange Admins are to go through the setup logs , to find that some folder in the exchange server registry location was missing , in which case, we generally create the needed folder in the registry and start from scratch , or we modify the msExchangeCurrentServerRoles , to trick the server into believing that it is hosting lesser roles , than it actually is , by modifying the attribute from the <SERVERNAME> object , and skip on to the next phase of DR installation , which generally is the CAS role .

Now by known conventions, we have come to know that the server role integer value associated with each role for e2k7 /e2k10 are as follows;

Mailbox: 2

CAS: 4

Hub: 16

UM: 32

Thus the sum-up of all the roles are: MBX+CAS+UM+HUB = 2+4+16+32=54

Thus modifying the msExchangeCurrentServerRoles current server role, can actually make the server believe that the role is not installed, and as Disaster recovery reads this particular attribute, to determine, the state of server roles, the DR installation proceeds accordingly.

Now the change that I have noticed in 2013 is, if all the roles (MBX+CAS+UM+HUB), as UM is required for the installation process, the value changes to 16439.

This was pretty new to me, as not much documentation was done regarding the same in TechNet.

So I decided to install an Exchange 2013 CAS, and the value for the msExchangeCurrentServerRoles was 16385.

I went ahead and installed a separate mailbox server, and found the value of msExchangeCurrentServerRoles to be 54

Point to be noted: if we add up the values, we get a cumulative value of 16439 (16385 + 54 = 16439).

This got me thinking, as the mailbox server in 2013 is an integrated service of the roles MBX+CAS+UM+HUB, which adds up to 2+4+16+32=54.

Thus I came to the conclusion that, on a standalone CAS server, the msExchangeCurrentServerRoles is 16385, whereas on a box with all the 4 roles installed (MBX+CAS+UM+HUB) has a msExchangeCurrentServerRoles as 16385 + 54 = 16439

Thus to prove my point, I tried to simulate DISASTER RECOVERY on a 2013, with the /donotstarttransport switch OFF.

Please find the screenshots of the attribute before DR attempt

Figure 1: Att
ribute and its value

As we can see that the current server role is set to 16439.

Next I initiated a DR, which failed at the transport service start (see screenshot below)
Figure 2: Recover Server failed

Here I went ahead and changed the watermark key for the hub transport server in the registry from watermark to configured version, as the binaries are in place. The failure was due to a hard coded timeout period and removed the action key and renamed the key as .old.

Figure 3: Registry Path

Next phase of action was to calculate the weightage of the HT role, as HT in e15 is an integrated service.

This can be done easily by taking into consideration the following values:

  • Exchange 2013 CAS role number is: 16385
  • Exchange 2013 MBX role number is: 54
  • Added, we get 16385 + 54 = 16439
  • As hub is installed the value can be NEGATED AS : Hub installed : -32 (MINUS 32)
  • Thus (MBX+UM+HUB)-HUB =22 i.e. 54 -32 =22
  • Thus the value of the hub , without the integrated mailbox services is 22
  • Thus , to make the server believe that the hub role(individual) has been installed , we have to add the CAS SERVERROLE VALUE + THE INDIVIDUAL HUB ROLE VALUE : 16385 + 22 = 16407 (without the hub component) {i.e. hub component has already been installed}

Thus the value to install the other components would be 16407.
Figure 4: Attribute Value

After altering the currentserverrole, I initiated a DR again and it completed successfully.

Figure 5: Recovery Completed

Post installation completion, change the registry value of hubtransport.old to HubTransportrole and change the current server value back to 16439.

Figure 6: Registry Changes

Post this, reboot the server and ensure that the services are up and running.

Hope this was helpful.



Tagged , , , . Bookmark the permalink.

Comments are closed.