Updated Exchange Server Role Requirements Calculator

The Exchange Server Role Requirements Calculator which you need for designing a proper Exchange 2013 or Exchange 2016 on-premises environment has been updates, currently the calculator is at version 8.4.

Some new functionality is added to this version:

  • Added support for ReplayLagMaxDelay
  • Added support for SafetyNetHoldTime in CreateDAG.ps1

And seven bug fixes in this version:

  • Improved the DAG auto-calculation results display to highlight deployment configuration in both datacenters
  • Fixed an issue that prevented DAG auto-calculation in single site DAG deployments
  • Fixed a SPECInt2006 validation issue with DAG auto-calculation
  • Fixed a bug with the DAG auto-calculation with Active/Passive deployments
  • Fixed conditional formatting issues with the transaction log table
  • Removed data validation from certain unused cells on the Input tab
  • Fixed bug in calcNumActiveDBsSF formula

The requirements calculator can be downloaded here: https://gallery.technet.microsoft.com/Exchange-2013-Server-Role-f8a61780

More information:

Exchange 2016 CU4

On Tuesday december 13, 2016 Microsoft has released its quaterly updates:

and Update Rollups:

Looking at Exchange 2016, what does this CU bring us?

There are minor changes to the user interface of Outlook on the Web or Outlook Web App, whatever you may call it. It’s not that dramatically, the formatting controls have been moved to the bottom of the frame containing the editing pane, as can be seen on the following screenshot.


And finally, there’s support for the .NET Framework 4.6.2. Using .NET Framework 4.6.2 is still optional (but recommended), but the upcoming release in March 2017 (Exchange 2016 CU5) will require the use of .NET Framework 4.6.2.

As you might have noticed, Exchange 2016 CU3 (the previous release) introduced support for Windows Server 2016. This was also announced at the Ignite 2016 in Atlanta. Unfortunately there was a major flaw in Windows 2016 clustering that caused issues with Exchange 2016 in a Database Availability Group configuration. This has now been fixed by the Windows team (KB3206632), and Exchange 2016 again fully supports Windows 2016. The hotfix is mentioned is mandatory, and the setup application does a check for this hotfix.

Exchange 2016 does not introduce any new schema changes, but you may execute setup.exe /prepareAD /IAcceptExchangeServerLicenseTerms to make sure any changes in the configuration partition are applied successfully.

As usual, and especially after the latest issues with Exchange 2016 CU3 and Windows 2016 I strongly encourage everybody to thoroughly test Exchange 2016 CU4 (or any other update that’s needed of course) in your lab environment before bringing it into production!

Install Office Online Server 2016

In Exchange 2013 you could use the Office Web Apps server in combination with Exchange server to view attachments online, without having to download these attachments first to the local workstation. Exchange 2016 is the successor of Exchange 2013, Office Online Server (OOS) 2016 is the successor of Office Web Apps 2013.

For an optimal user experience in Outlook on the Web you want an Outlook Online Server to view attachments online. Instead of downloading the attachment to your client workstation (not ideal when working on a non-trusted workstation) you can view it in your browser, and your browser will show something like this:


So how does this work?

Continue reading Install Office Online Server 2016

412 Cookies are disabled

This blogpost is more a note to self, but sigh, I hate it when it does this…. show the 412 Cookies are Disabled error message when trying to open the Exchange Admin Center (EAC) in Exchange Online:


I’m not sure if this issue shows up every time, but at least it shows up when you want to configure an Exchange Hybrid Configuration and you select Hybrid in the On-Premises EAC and select Sign In to Office 365.

To solve this, select the Tools menu in Internet Explorer, select Internet Options and click the Privacy tab.

Lower the slider just one click to Low and click Apply or OK.


Now when you refresh the page in Internet Explorer it should continue with the Hybrid Configuration page:


SuspendWhenReadyToComplete when using a migration batch in Office 365

Currently I’m working with a customer in a hybrid Exchange 2010 environment. There are multiple offices around the US, and one office in California will close soon. Therefore, all Mailboxes need to be moved to Office 365. The customer created multiple migration batches, and all batches are set using the -SuspendWhenReadyToComplete option. So, when a Mailbox migration in this batch reaches 95% the move will stop, and both Mailboxes will be kept in sync.

So, I started a Remote PowerShell session to Exchange Online (completing an individual move request as part of a batch is not possible in the Exchange Admin Console) and executed the following command:

Get-MoveRequest -Identity John@contoso.com | Resume-MoveRequest -Confirm:$false

While no error message was generated, the move requests were not finished. After some head scratching I realized that the -SuspendWhenReadyToComplete option is set on the migration batch, and that the move requests ‘inherit’ this setting. So, when resuming the move request it will automatically suspend again when hitting 95% (which is a matter of seconds).

So, I executed the following commands:

Get-MoveRequest -Identity John@contoso.com | Set-MoveRequest -SuspendWhenReadyToComplete:$false
Get-MoveRequest -Identity John@contoso.com | Resume-MoveRequest -Confirm:$false

Unfortunately, nothing happened and the move request stayed in the ‘synced’ state and was not willing to finalize. And of course no errors were logged.

At one point I realized I read something in the New-MoveRequest page on TechNet, where it says at the SuspendWhenReadyToComplete option:

“The SuspendWhenReadyToComplete switch specifies whether to suspend the move request before it reaches the status of CompletionInProgress. Instead of this switch, we recommend that you use the CompleteAfter parameter.”

This time I executed the following commands:

$Date = Get-Date
Get-MoveRequest -Identity John@contoso.com | Set-MoveRequest -CompleteAfter $Date
Get-MoveRequest -Identity John@contoso.com | Resume-MoveRequest -Confirm:$false

And this time the individual move requests in the migration batch were successfully finalized.