Granikos Technology Blog

Thomas Stensitzki | MVP
Thomas Stensitzki | MVP

MVP LogoThomas Stensitzki is a leading technology consultant focusing on the Microsoft messaging and collaboration technologies and the owner of Granikos GmbH & Co. KG.

He is an MVP for Office Apps & Services since 2018.

Thomas is an MCT Regional Lead for Germany and delivers Microsoft Learning training courses for Office 365, Microsoft Teams, and Exchange Server.

He holds Master certifications as Microsoft Certified Solutions Master Messaging and as Microsoft Certified Master for Exchange Server 2010. His experience makes him a subject matter expert for any messaging topic related to Microsoft Exchange, Exchange Online, Office 365, and Hybrid configurations.

Buch Cover Microsoft Exchange Server 2019 - Das Handbuch für AdministratorenBuch Cover Microsoft 365 Business Premium - Migration und Konfiguration

Podcast #MVPbuzzChat with Thomas Stensitzki

Follow Thomas on LinkedIn or Twitter

His sessions:

MVP Blog:
Personal blog:
Personal website: 
Thomas' Tech Talk:

Contact Thomas at


Today's virtualization options provide a wide variety to even virtualize business-critical enterprise applications. Distributed enterprise applications can easily be virtualized but require proper planning. Otherwise, you will end up with virtualized SharePoint Server Farm that does not scale well and perform badly.

This article will provide information on how to virtualize your production environment properly and will not necessarily cover development environments, as those tend to run in over-committed scenarios anyway.

The following table provides a simple overview of the SharePoint farm terminology:

Farm Size Farm Description
Small Farm A simple architecture consisting of two web servers and a single SQL Server.
One of the two web servers hosts the Central Administration while the other serves content to end-users.
A small farm is supposed to serve about 10.000 users.
Medium Farm A more complex architecture consisting of at least two Web Servers, at least two application servers and more than one SQL Server.
When you start with a small farm, you can easily scale out to a medium farm.
A medium is supposed to serve about 10.000 users per web server. 
Large Farm After scaling out your medium farm you will end up with a large farm.
In a large farm, you group your servers according to their role (web server, application server, SQL Server). If required you scale-out per group.


Never ever start a SharePoint production deployment with a single multi-role SharePoint Server.

The following figure illustrates the architecture of a SharePoint Server 2013 environment example.

SharePoint 2013 Example Architecture

Capacity and Performance: These two key aspects are the most important aspects when you plan your SharePoint virtualization infrastructure. You need to plan for enough disk capacity to host all of the content databases and data that is cached to disk by the web server and application server roles. Your overall capacity should be planned at least for a three year period. The requirements for CPU and memory sizing of the virtual hosts depends on your server requirements. A virtual host should always be equipped to the physical maximum. If you leave CPU sockets empty, there is no guarantee that you will get the CPU for that socket in the future. The memory banks should be filled in the proper ratio per CPU as well. Otherwise, you will not be able to fully benefit from the virtualization of your servers.


Virtualizing the Load Balancer

Mostly all of the major vendors of hardware load balancers offer virtualized load balancers as well. As long as the virtual load balancer is not running on an over-committed host, and sufficient performance is provided, there is no legitimate reason to not virtualize a load balancer. 

Especially when you maintain a large virtualization platform you are heavily interested to not add additional hardware complexity to your network infrastructure by adding hardware load balancers. Any additional layer of complexity adds an additional layer for support as well.

Some of the major vendors are (purely alphabetical):


Virtualizing the Web Server role

Web servers are easy to scale because web servers generally provide much better performance by adding additional CPUs and memory resources. This is the reason why the webserver role within a SharePoint deployment is the easiest to scale out. Because it is so easy to just add additional resources it is not automatically the right approach. Performance-wise you will reach a point where adding an additional web server makes more sense. This decision if you extend the resources of an existing server or add a new virtual machine depends on the overall virtualization infrastructure and the available hardware resources.

Another important topic to think about is the migration of virtual machines between hosts and the high-availability functionality of your virtualization platform. A virtual machine can be moved between virtual hosts more quickly when the virtual machine is not over-sized. The larger the assigned resources are, the more time it takes to migrate a virtual machine. You need to keep this in mind not only for migrations due to maintenance reasons or virtual hosts fail-overs. The same is true when you utilize the automatic load balancing of virtual machines.

NUMA nodes are an additional important topic. Microsoft provides dedicated information to NUMA nodes SharePoint here. Even though the article is focusing on Hyper-V, the general NUMA node requirements are valid for other hyper-visor platforms as well. As per Microsoft performance can decrease by up to 8% when a virtual machine needs to access remote memory from another NUMA node.

The proper sizing of memory resources ensures that your web servers perform as expected. You need to ensure that the webserver does not require to swap memory and make heavy use of the page file. Any use of the page file results in unnecessary disk I/O. And depending on the disk subsystem the required I/O reduces the performance dramatically. Even though the operating system supports the hot-adding of virtual memory, not all application functions make use of added virtual memory. Some components recognized available memory during the start-up of the operating system and do not adjust themselves during run time (e.g. Distributed Cache).

Your SharePoint server running the webserver role should be configured with at least:

  • 2 CPU
  • 8 GB Memory
  • Single Volume hosting the operating system and the SharePoint Server application files


Virtualizing the Application Server role

The CPU demand of SharePoint application servers depends heavily on the applications that are running on those servers. Some applications might be more CPU resource-intensive (e.g. Search), others might be more memory intensive. To find the proper sizing for your specific requirements you need to monitor the system resources not only on a general level (e.g. System CPU usage, system memory consumption) but on a more granular level (per service, per application pool, per worker process). 

Your SharePoint server running the application server role should be configured with at least:

  • 2 CPU (4 CPU, if running multiple applications on a single server)
  • 8 GB Memory (16 GB, if running multiple applications on a single server)
  • Single Volume hosting the operating system and the SharePoint Server application files


Virtualizing the Database Server role

The virtualization of SQL Server is a separate topic that will be covered in more detail in a separate blog article. But it would be unfair to leave this section more or less empty.

First of all, it should be said that even SQL Server can be virtualized. If virtualizing SQL Server is an option for your IT infrastructure depends on the SQL Server and data warehouse design of your company. Some companies prefer to host SQL databases in central SQL Servers serving all data applications within the company. Other companies prefer to host SQL databases on different SQL servers and group those by SQL Server SLA and/or by the type of data stored in databases.

In this example, we assume that there are three SQL Server 2012 dedicated to SharePoint in use. The following table gives a brief overview of the recommended memory sizing for SQL Server virtual machines:

Combined size of Content Databases Recommended RAM
Small deployments 8 GB
Medium deployments 16 GB
Large deployments (< 2TB) 32 GB
Very large deployments (2 TB - 5 TB) 64 GB
Extremely large deployments (> 5 TB) 64 GB and more


SQL Server 2012 provides a new functionality called AlwaysOn Availability Groups (AAG). The AAG provides a much better experience and performance when it comes to database fail-overs. But at the same time, you need to plan resource requirements in a different way than you were used to with classic Windows Clustering capabilities. An AAG does have a primary replica of a database and many secondary (passive) replicas of the same database.

AAGs can be operated in two different availability modes:

  1. Asynchronous-commit
    The primary replica commits transactions without waiting for confirmation by the secondary replicas.
    This mode is similar to high-performance mode with database mirroring.
  2. Synchronous-commit
    The primary replica waits for the acknowledgment of all secondary replicas.
    This mode is similar to high-safety mode with database mirroring.

 In our example we have two different AlwaysOn Availability Groups configured:

  1. AAG1: Synchronous-commit
    This AAG supports the databases for Central Administration and the SharePoint configuration databases.
    These databases do not rely so much on database performance, but we want to make sure that the data is properly protected.
  2. AAG2: Asynchronous-commit
    This AAG supports all SharePoint content databases.
    We want to achieve the best performance for the content databases. 


The SharePoint 2013 farm example ends up in the following virtual host demands:

SharePoint Server Role CPU (Cores) Memory Disk
Web Server Role 3 x 2 3 x 8 GB 3 x 100 GB (OS, SharePoint)
Application Server Role 3 x 2 3 x 8 GB 3 x 100 GB (OS, SharePoint)
Database Server Role 3 x 4 3 x 16 GB

3 x 100 GB (OS, SQL Server)
3 x 1 TB (Databases)

Total 24 96 GB 1,9 TB


To be able to have a single virtual host in maintenance, but still have redundancy we need to plan for at least three virtual hosts. But even in this case one of the two can fail. Therefore you need to protect yourself from a failure while having on a virtual host in maintenance. The disk subsystem is connected to each host by fiber channel or iSCSI on a dedicated 10GB network.

SharePoint 2013 Virtual Infrastructure 

  CPU (Cores) Memory
Virtual Host 1 24 96 GB
Virtual Host 2 24 96 GB
Virtual Host 3 24 96 GB





Weiterlesen »
Updated 2016-08-28

The mailbox default folders like Inbox or Sent Items are labeled depending on the locale settings of the mailbox.

Mailbox users are able to change the default user names by changing the primary language of the Office setup and starting Outlook with the command line parameter /resetfoldernames.

The same can be achieved by the Exchange Administrator by running the Exchange cmdlet Set-MailboxRegionalConfiguration.

When moving mailbox content to a new Exchange mailbox using a PST export/import approach it is important (besides other things) that the export and import mailbox locale match. Otherwise, you will end up with new folders being imported into the target mailbox. Folders are being mapped by the folder name during import.


The following screenshot shows the default folders of the mailbox in the locale de-DE.


The regional configuration settings can be checked on the Exchange Server.

[PS] C:\>Get-Mailbox askywalker | Get-MailboxRegionalConfiguration | fl

RunspaceId : f739bd99-9940-4dcf-abd5-6de080ac312d
DateFormat : dd.MM.yyyyLanguage : de-DE

DefaultFolderNameMatchingUserLanguage : False
TimeFormat : HH:mm
TimeZone : W. Europe Standard Time
Identity : Skywalker
IsValid : True
ObjectState : New

Changing the default folder names to en-US is straight forward. 

[PS] C:\>Get-Mailbox askywalker | Set-MailboxRegionalConfiguration -LocalizeDefaultFolderName:$true -Language en-us

The changes are reflected in Outlook without restarting Outlook.

Screenshot Mailbox Folder Structure en-US

[PS] C:\>Get-Mailbox askywalker | Get-MailboxRegionalConfiguration | fl

RunspaceId : f739bd99-9940-4dcf-abd5-6de080ac312d
DateFormat : M/d/yyyy
Language : en-US
DefaultFolderNameMatchingUserLanguage : False
TimeFormat : h:mm tt
TimeZone : W. Europe Standard Time
Identity : Skywalker
IsValid : True
ObjectState : New

When you now try to revert the configuration to de-DE receive an error that the locale does not match the current date and time format. This is even more interesting that the cmdlet was not complaining about the same issue when converting to the en-US locale.

Screenshot Set-MailboxRegionalConfiguration error

[PS] C:\>Get-Mailbox askywalker | Set-MailboxRegionalConfiguration -LocalizeDefaultFolderName:$true -Language de-de

DateFormat "M/d/yyyy" isn't valid for current language setting "de-DE". Valid formats include "dd.MM.yyyy, dd.MM.yy, yyyy-MM-dd, dd. MMM. yyyy".
+ CategoryInfo : NotSpecified: ( Skywalker:ADObjectId) [Set-MailboxRegionalConfiguration], DataValidationException
+ FullyQualifiedErrorId : [Server=CT01,RequestId=3bcd1191-c547-45ec-a7ad-dc5e8a1e34db,TimeStamp=05.02.2014 11:19:11] [FailureCategory=Cmdlet-DataValidationException] 2161B69F,Microsoft.Exchange.Management.StoreTasks.SetMailboxRegionalConfiguration
+ PSComputerName :
The TimeFormat "h:mm tt" isn't valid for current language setting "de-DE". Valid formats include "HH:mm, HH:mm' Uhr'".
+ CategoryInfo : NotSpecified: ( Skywalker:ADObjectId) [Set-MailboxRegionalConfiguration], DataValidationException
+ FullyQualifiedErrorId : [Server=CT01,RequestId=3bcd1191-c547-45ec-a7ad-dc5e8a1e34db,TimeStamp=05.02.2014 11:19:11] [FailureCategory=Cmdlet-DataValidationException] D603E2E8,Microsoft.Exchange.Management.StoreTasks.SetMailboxRegionalConfiguration
+ PSComputerName :

To successfully convert back to the de-DE locale it is required to specify a valid date and time format for the target locale.

[PS] C:\>Get-Mailbox askywalker | Set-MailboxRegionalConfiguration -LocalizeDefaultFolderName:$true -Language de-de -DateFormat dd.MM.yyyy -TimeFormat HH:mm

When setting the regional time zone information, the time zone name must be used. A Granikos FAQ post lists the available time zones.



Weiterlesen »

If you ever wanted to know about the license requirements, architectural tasks and even the IT Pro responsibilities for the different Exchange Server 2013 deployment options, you can find the answer now in the Exchange 2013 Platform Options poster.

The single-page poster summarizes the most important topics and answers the most important questions for the four deployment options:

  • Exchange Online (Office 365)
    Exchange Online (Office 365)
  • Exchange Hybrid
    Exchange Hybrid
  • Exchange Server On-Premises
    Exchange On-Premises
  • Provider-hosted Exchange
    Provider-Hosted Exchange

Even further links are provided using QR-Codes.



Weiterlesen »

All attendees of the Microsoft Exchange Conference (MEC) in Austin received a printed version of the updated Exchange Server 2013 SP1 architecture poster.

Just three weeks after the conference the architecture poster is available for public download as well.

Microsoft Exchange Server 2013 Service Pack 1 Architecture Poster

The architecture poster is a valuable source of information, not only for the Exchange experts.


Weiterlesen »

Logo Exchange Server 2013Für die Konfiguration einer Exchange Server 2013 Hybrid Umgebung mit Office 365 ist es erforderlich, dass im Unternehmensnetzwerk eine Active Directory Federation Services (AD FS) Umgebung bereitgestellt wird. Diese kleine Serie erklärt in kurzen Artikeln, wie Sie Ihre AD FS Umgebung aufbauen können.

Zur Vorbereitung einer AD FS 2.1 Installation unter Windows Server 2012 müssen folgende Komponenten vorbereitet werden:

  • SSL Zertifikat eines Drittanbieters
  • Dienstkonto für den AD FS Dienst im Active Directory 

Die nachfolgenden Schritte beschreiben den Prozess des SSL Zertifikat Imports, welcher vor dem Ausführen des AD FS Wizards erfolgen muss. Es wird vorausgesetzt, dass das SSL Zertifikat als kennwortgeschützte PFX-Datei vorliegt.

Öffnen Sie eine leere MMC Konsole über die Kommandozeile und fügen Sie das Certifcates Add-In für den lokalen Computer hinzu. Anschließend starten Sie mit Import den Certificate Import Wizard.

Screenshot - MMC Zertifikatsspeicher


Klicken Sie auf der ersten Seite des Certificate Import Wizard auf Next.

Screenshot - Certificate Import Wizard


Wählen Sie die gewünschte PFX Datei aus und klicken Sie Next.

Screenshot - Certificate Import Wizard - Auswahl der PFX-Datei


Geben Sie das Kennwort für die geschützte PFX Datei ein und prüfen Sie, dass "Mark private key as exportable" nicht ausgewählt ist. Klicken Sie anschließend auf Next.

Screenshot - Certificate Import Wizard - Eingabe Kennwort


Prüfen Sie, dass als Zertifkatsspeicher Personal ausgewählt ist und klicken Sie Next.

Screenshot - Certificate Import Wizard - Bestätigung des Speicherortes


Prüfen Sie noch einmal die Zusammenfassung der Einstellungen und klicken Sie anschließend auf Finish, um das SSL-Zertifikat zu importieren.

Screenshot - Certificate Import Wizard - Abschluss des Zertifikatimportes


Das benötigte Dienstkonto wird im Active Directory in der gewünschten Organisationseinheit (OU) als normales Benutzerkonto erstellt. Da es sich um ein Dienstkonto handelt, sollte das Ablaufen des Kennwortes deaktiviert sein. Das Konto selber wird während der Installation der AD FS Rolle konfiguriert

Damit sind alle Voraussetzungen für die Installation und Konfiguration von AD FS unter Windows Server 2012 erfüllt.




Dieser Blogartikel erschien ursprünglich am 3. April 2014 in meinem Technologie-Blog bei der iCOMcept GmbH

Weiterlesen »