MVP - Most Valuable Professional

Just can't get enough of IT

This blog is about mostly anything in IT. But the primary focuses are Microsoft technologies like Exchange Server, Microsoft 365, Microsoft Teams, and Cloud Security.
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. These certifications make him a subject matter expert for any messaging topic related to Microsoft Exchange, Exchange Online, Microsoft 365, and hybrid configurations.

Follow Thomas: LinkedIn, Twitter

His sessions:

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

Contact Thomas at


Exchange Server 2016 LogoRecently I had to support the uninstall of Exchange Server 2016 CU10 on a Windows Server 2019 system. That this setup is not supported is a different topic. In this case, a new Exchange Server 2016 system was placed in service, and the old system needed to be removed from the on-premises Exchange organization.

We mounted the Exchange 2016 CU10 ISO, and ran the following command from an administrative command line:

Setup.exe /mode:uninstall


Prerequisites Checks

The prerequisites check failed with an odd error:

Querying for any incompleted public folder migration requests returned no results. But the prerequisites check insisted that there was an existing public folder migration request. In such a case you already know that you have to use ADSIEdit to find the object in question. 

It turned out that the prerequisites check was right, as we found a single public folder migration request in the Active Directory configuration partition. The request was an artifact of an unsuccessful migration attempt in 2019. After we have checked that the current modern public folder hierarchy worked as expected, we deleted the artifact from Active Directory.

Now the uninstall procedure passed the prerequisites check successfully and the uninstaller moved on removed Exchange Server 2016 step by step.



Uninstall Error

The uninstall step Language Files an Access Denied exception while executing MSIEXEC uninstall actions for each Language Pack.

Language Files                                                                                    FAILED

The following error was generated when "$error.Clear();
$PackageGUIDRegEx = "{DEDFFB[0-9a-fA-F]{2}-42EC-4E26-[0-9a-fA-F]{4}-430E86DF378C}";
$InstallPath = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\ExchangeServer\v15\setup').MsiInstallPath;

if(test-path ($regPath))
Write-ExchangeSetupLog -info ("Removing " +  $RoleLanguagePackType + " Language Packs.");
Get-ChildItem ($regPath) | foreach{
if($_ -match "(?<ProductCode>$PackageGUIDRegEx)") {
$langPackPackageCode = $matches['ProductCode'];
if($langPackPackageCode -ne $null -and $langPackPackageCode.Length -ne 0) {
Write-ExchangeSetupLog -info ("Removing package $langPackPackageCode");
$language = $langPackPackageCode.Substring(20,4);
$logFilePath = [IO.Path]::Combine($RoleLogFilePath,"Uninstall") + '.' + $language +
'.' + "Client" + "." + $RoleLogDateTime + ".msilog";
uninstall-MsiPackage -ProductCode ($langPackPackageCode) -LogFile ($logFilePath);
Get-Childitem -Path $InstallPath -include ".Localized.js",".Localized.min.js" -recurse | foreach ($) {remove-item $.fullname};
Write-ExchangeSetupLog -info "Remove Language Packs completed.";
" was run: "**System.UnauthorizedAccessException: Access is denied** ---> System.ComponentModel.Win32Exception: Access is denied
--- End of inner exception stack trace ---
at System.Management.Automation.Utils.NativeDirectoryExists(String path)
at System.Management.Automation.SessionStateInternal.IsItemContainer(CmdletProvider providerInstance, String path, CmdletProviderContext context)".


Interestingly, the ExchangeSetup log file showed that the uninstaller wrote the informational text Remove Language Packs completed successfully. 



After following an idea to remove the language pack-related registry keys and other fancy approaches, we did something trivial. We restarted the server, mounted the ISO file, and ran Setup.exe /mode:uninstall again. 

The uninstaller process now passed the step Language Files without any issues.

I sometimes like simple solutions.


Enjoy Exchange Server. 



Read More »

Cloud8 Virtual ConferenceI am honored to speak at CloudEight Virtual Summit 2021.

CloudEight is a conference about Microsoft 365 related topics and takes place for the third time. 


My session covers the topic "Microsoft Teams and On-Premises Mailbox - Why?"
What are the reasons for using Microsoft Teams with on-premises mailboxes, what are the technical requirements, and why is this approach not necessarily a good idea?

Register today.

Looking forward to seeing you at the virtual conference.





Read More »

The use of Microsoft Viva requires using a modern SharePoint site as a home site. 

The documentation for enabling Microsoft Viva describes how to set a new SharePoint Online Home Site, but lacks an important step.

You must swap the new home site and current home site, in addition to setting the SharePoint Online home site. The swap cmdlet archives the current home site. 

# Replace with the new home site URL
$NewHomeSiteUrl = ''

# Replace with current home site URL
$CurrentHomeSiteUrl = ''

# Replace with an archive URL
$ArchiveUrl = ''

Invoke-SPOSiteSwap -SourceUrl $NewHomeSiteUrl -TargetUrl $CurrentHomeSiteUrl -ArchiveUrl $ArchiveUrl





Read More »

Teams Admin Roles and Teams Admin Center


I am honored to speak at Teams Nation 2021 on 12th May about Microsoft Teams Admin Roles and Teams Admin Center

Register today and visit my session in room Teams Nation Germany (TCD). As suspected, the session will be in German.

Teams Nation is a community conference and offers 115 sessions in 11 tracks.

Visit the conference site and register today.



Read More »

Being in a situation where you need to recover IT components or even a whole IT infrastructure after a disastrous event can be stressful. It would help if you stayed concentrated while dealing with the constant status requests by the management.

In such a situation, it can help to isolate your mind by listening to music. Music that helps you focus your thoughts, anger, and feelings in such a moment.

Maybe you find my Spotify playlist helpful. The playlist contains about 12 hours of music.

Listening to music using a headphone is good, but playing music loud and feeling the rhythm and every single bass is much better.




Read More »