Category Archive : Exchange

How to Migrate Exchange Server 2016 to 2019 | Part 3

How to Migrate Exchange Server 2016 to 2019 | Part 3

Migrate Exchange Server 2016 to 2019 | Part 1
Migrate Exchange Server 2016 to 2019 | Part 2
Migrate Exchange Server 2016 to 2019 | Part 3

Preface

This is the third part of the three-part article series on How to Migrate Exchange Server 2016 to 2019. If you are landed directly to this page, please take some time, and go through the first two parts in the link above and come back to this part as this part is a continuation of the other two parts.

In this part of the article series, we are going to look at renaming the database, cutover mail flow, move mailboxes to Exchange Server 2019 including user mailbox, arbitration mailbox, and audit mailbox. In the end, we are going to look at decommissioning Exchange Server 2016 once all the workloads are migrated to Exchange Server 2019.

Rename and Move Default Mailbox Database

We are renaming the database as its long and random numbers in the default database name. So, giving a meaningful name to the database would be appropriate and move the path of the database to somewhere having enough disk space for the database to grow and location to store the transactional logs.

Get-MailboxDatabase -Server ex2019 | Set-MailboxDatabase -Name MBX-DB-2019

Move-DatabasePath -Identity MBX-DB-2019 -EdbFilePath C:\ExchangeDatabases\MBX-DB-2019\MBX-DB-2019.EDB -LogFolderPath C:\ExchangeDatabases\MBX-DB-2019_Log

Cutover Client Access

We have completed renaming the default database name and moving the database file location to other drives. The next step on this migration is to point Exchange server 2019 IP address to hostname records such as Autodiscover and exchange server FQDN hostname. The email clients internally will point to the exchange server for client access. We need to do the NAT settings on the firewall to point to Exchange Server 2019 as well. We are making these changes even though the mailboxes are still in Exchange Server 2016. Exchange server 2019 will act as a proxy to the mailboxes residing in Exchange server 2016.

Move Mailboxes to Exchange Server 2019 Database to Migrate Exchange Server 2016 to 2019

We have completed most of the Exchange server 2019 configuration-related settings and migration work. But the mailbox move is the meaty thing that we need to do next and it is the most time-consuming. We are migrating all mailboxes which are residing in Exchange Server 2016. We can do it through the Exchange Admin Center also.

Get-Mailbox -Database MBX-DB-2016 | New-MoveRequest -TargetDatabase MBX-DB-2019 -BatchName “MBX-DB-2016 To MBX-DB-2019”

Periodically you can check the mailbox move status by running the command

Get-MoveRequest | Get-MoveRequestStatistics

In this case, our mailboxes are less in size, so the mailboxes completed moving to Exchange 2019 server database.

We are going to move all arbitration mailboxes from Exchange server 2016 to 2019. The command to move arbitration mailboxes is

Get-Mailbox -Server ex2016 -Arbitration | New-MoveRequest

You can check if the arbitration mailboxes move completed by running the following command

Get-Mailbox -Arbitration | Get-MoveRequest

From Exchange Server 2016 onwards, there is one more system mailbox called Audit Log. You can check the Audit Log mailbox containing the server by running the following command

Get-Mailbox -AuditLog

You can move the audit log mailbox to Exchange 2019 server running the following command

Get-Mailbox -AuditLog | New-MoveRequest

The following command will show the status of the mailbox move.

Get-Mailbox -AuditLog | Get-MoveRequest

Migrate Exchange Server 2016 to 2019

Decommission Exchange Server 2016

We have completed moving all the workloads such as mailboxes and service points to Exchange Server 2019. In the process of moving all the workloads, we need to remove the Exchange server 2016 hostname from send connector. Login to ECP and go to mail flow\send connector. Edit the send connector and on the scoping page, remove Exchange 2016 server name from the list. If Exchange Server 2019 was not already added, add it now and remove the exchange 2016 server hostname.

Also, in the process of decommissioning Exchange server 2016, we need to remove the Exchange 2016 server mailbox databases. Run the following command from Exchange Management Shell to remove the Exchange server 2016 databases.

Get-MailboxDatabase -Server EX2016 | Remove-MailboxDatabase

Migrate Exchange Server 2016 to 2019

Now, it’s time to uninstall Exchange server 2016, log in to Exchange Server 2016 server desktop and go to control panel, Add Remove Programs and select Exchange Server 2016 from the list and uninstall.

Migrate Exchange Server 2016 to 2019

The Remove Exchange Server Wizard will open and click Next to continue.

Migrate Exchange Server 2016 to 2019

Once the readiness checks are completed click uninstall to uninstall Exchange Server.

Migrate Exchange Server 2016 to 2019

The Uninstall Progress will show the uninstall step and its progress.

Migrate Exchange Server 2016 to 2019

Once uninstall process is completed, click Finish Exit out of Uninstall wizard.

Migrate Exchange Server 2016 to 2019

Conclusion:

In this three-part article series, we have started with discussing Exchange Server 2019 installation on the Existing Exchange Server organization with prerequisites install followed by the exchange server setup. We have discussed configuring Exchange Server 2019 components such as Outlook Anywhere, Virtual Directories, Service Connection Point, and Certificate import from the old Exchange server. We have discussed Client access service cutover and mailbox move. In the end, we have decommissioned the old Exchange server which includes uninstallation of the Exchange server.

I had already created Exchange Server 2013 to 2019 migration, even though I mentioned Exchange server 2013 and 2016 migration is more or less the same, most of the users migrating Exchange server 2016 are not following that article. Also, I thought an exclusive article series just for Exchange Server 2016 to 2019 will help migrate flawlessly.

This is the end of the Exchange Server 2016 to 2019 migration demonstration; I look forward to connecting with you to clarify your questions and answer them and I will be helpful to solve the issues in case you come across any. I will join you in an instance with another article and would like to say goodbye for now. Thanks for following my article to migrate your Exchange server.

Migrate Exchange Server 2016 to 2019 | Part 1
Migrate Exchange Server 2016 to 2019 | Part 2
Migrate Exchange Server 2016 to 2019 | Part 3

How to Migrate Exchange Server 2016 to 2019 | Part 2

Migrate Exchange Server 2016 to 2019 | Part 2

Migrate Exchange Server 2016 to 2019 | Part 1
Migrate Exchange Server 2016 to 2019 | Part 2
Migrate Exchange Server 2016 to 2019 | Part 3

This article is the continuation of how to Migrate Exchange Server 2016 to 2019 Part 1, and we are going to discuss the configuration part of the Exchange Server 2019. We have completed installing Exchange Server 2019 and logged into the Exchange Admin Center using the hostname of Exchange Server 2019. The Exchange Server 2019 needs to be set with internal and external hostnames to resolve them from the network where the users accessing with their outlook client. We are also going to set internal and external URLs of Virtual directories such as OWA, OAB, EWS, and so on. We need to set the internal Autodiscover Uri to configure outlook with auto-discovery, this is called service connection point. At the end of this Part 2 article, we are going export the certificate from the Exchange Server 2016 and then import it to Exchange Server 2019. So, let’s start configuring these components on Exchange 2019 Server straight away.

Outlook Anywhere Setup

From the Exchange Admin Center navigate to the server from the left side navigation and on the servers list, we can find both Exchange 2016 and Exchange 2019 servers. Select the Exchange Server 2019 node and click on the edit button to configure Outlook Anywhere.

On the Server, configuration go to Outlook anywhere and type the FQDN of the hostname which can be accessible publicly also has the hostname in the certificate subject alternative name. Click save and exit.

Configure Virtual Directories of Exchange 2019 Server

Server_name = "ex2019"

$FQDN = "mail.getanadmin.cloud"

Get-OWAVirtualDirectory -Server $Server_name | Set-OWAVirtualDirectory -InternalURL "https://$($FQDN)/owa" -ExternalURL "https://$($FQDN)/owa"

Get-ECPVirtualDirectory -Server $Server_name | Set-ECPVirtualDirectory -InternalURL "https://$($FQDN)/ecp" -ExternalURL   "https://$($FQDN)/ecp"

Get-OABVirtualDirectory -Server $Server_name | Set-OABVirtualDirectory -InternalURL "https://$($FQDN)/oab" -ExternalURL   "https://$($FQDN)/oab"

Get-ActiveSyncVirtualDirectory -Server $Server_name | Set-ActiveSyncVirtualDirectory -InternalURL "https://$($FQDN)/Microsoft-Server-ActiveSync" -ExternalURL "https://$($FQDN)/Microsoft-Server-ActiveSync"

Get-WebServicesVirtualDirectory -Server $Server_name | Set-WebServicesVirtualDirectory -InternalURL "https://$($FQDN)/EWS/Exchange.asmx" -ExternalURL "https://$($FQDN)/EWS/Exchange.asmx"

Get-MapiVirtualDirectory -Server $Server_name | Set-MapiVirtualDirectory -InternalURL "https://$($FQDN)/mapi" -ExternalURL https://$($FQDN)/mapi

Migrate Exchange Server 2016 to 2019

The commands must be returned with no errors in red text, and it has to be something similar to the screen capture below but with your exchange server name and server FQDN.

Service Connection Point or Internal Autodiscover service

The outlook clients connecting from the internal Active Directory would use the Service Connection Point, also called the internal Autodiscover service Uri to get the configuration details to configure it automatically. The command to set the internal Autodiscover service URI is given below.

Set-ClientAccessService -Identity EX2019 -AutodiscoverServiceInternalURI  https://mail.getanadmin.cloud/Autodiscover/Autodiscover.xml

Import Certification Authority Certificate to Exchange 2019

The third-party certificate installed on Exchange Server 2016 will be usable for Exchange Server 2019 as the subject alternative names are the same ones with both servers. So, we are going to export the certificate from Exchange Server 2016 and import it to Exchange Server 2019. We need the certificate exported in pfx format with a security passcode from the Ex2016 server.

Navigate to the server section on the left side navigation and select the Certificates tab from the top navigation. Select the Exchange Server 2016 server name in the Server name drop-down and the Certificate name of the third-party certificate assigned with IIS. Then, from the more options with the triple dots click on export Exchange certificate.

Give a UNC path for the file to be saved on a network location with a certificate filename with the pfx format and a password. Click OK to complete the certificate export.

Now we are going to import the certificate to Exchange Server 2019, select more options with triple dots and click import Exchange Certificate.

Migrate Exchange Server 2016 to 2019

Give the same path that you have given while exporting the certificate and the password that you gave given earlier, click next to continue importing the certificate.

Migrate Exchange Server 2016 to 2019

On the specify a server name, click add and select the EX2019 server and click add OK.

Migrate Exchange Server 2016 to 2019

Click Finish to complete the certificate import.

Migrate Exchange Server 2016 to 2019

Now the next step is to assign services to the certificate, choose Exchange Server 2019 server name from the Select server drop down and click the Edit button to open the Exchange certificate properties of the certificate that we have just imported.

Migrate Exchange Server 2016 to 2019

Select services from the left side navigation and click on SMTP and IIS checkboxes. If you are planning to use POP and IMAP, select them as well and click on save to assign services.

Migrate Exchange Server 2016 to 2019

Click Yes to overwrite the default SMTP certificate.

Migrate Exchange Server 2016 to 2019

Summary

In this article, we have gone through the configuration part of how to Migrate Exchange Server 2016 to 2019, and we have covered how to set the internal and external hostname of Outlook Anywhere. The Virtual Directories internal and external URLs have been set using a script and service connection point set for the internal Autodiscover service. In the end, we exported the third-party certificate from Exchange server 2016 and imported it to Exchange server 2019. This concludes part 2 of the article series, we are going to discuss mail flow cutover, mailbox migration, and Exchange Server 2016 decommission on the third and final part of this article series, so click the link below to go to part 3 of this article series.

Migrate Exchange Server 2016 to 2019 | Part 1
Migrate Exchange Server 2016 to 2019 | Part 2
Migrate Exchange Server 2016 to 2019 | Part 3

How to Migrate Exchange Server 2016 to 2019 | Part I

How to Migrate Exchange Server 2016 to 2019 | Part 1

Migrate Exchange Server 2016 to 2019 | Part 1
Migrate Exchange Server 2016 to 2019 | Part 2
Migrate Exchange Server 2016 to 2019 | Part 3

Preface:

The messaging system evolving day by day, but the fundamental elements of messaging doesn’t change. There is a new way of the email systems coming to use in the modern world and the Microsoft product Exchange servers have no exception. The exchange servers are shining with new updates every three months with cumulative updates and Microsoft fixing all the loopholes of the product with sending the security updates regularly for each exchange server version. But upgrading the Exchange server is important for an organization to keep the messaging environment up to date and fulfill the need for messaging functionalities. In this article, we are going to look at the Exchange server 2016 to 2019 migration step by step and in the end, we are decommissioning the Exchange Server 2016 server after we completely migrate the exchange server to Exchange server 2019.

We had already discussed the migration of Exchange server 2013 to 2019 in another article series if your email system is Exchange server 2013 and you want to migrate to Exchange server 2019, I have provided the link to jump into Exchange server 2013 to 2019 Migration and you can follow those article series to migrate your Exchange server 2013. Even though most of the steps are identical as far as migration to Exchange server 2019 from Exchange server 2013 or 2016, it is not satisfying to follow an article that does not discuss its own article series. So, I have decided to write a separate article series to migrate Exchange Server 2016 to 2019, and here are those articles just for you migrating from an Exchange server 2016. I encourage you to come up with your questions and feedback either it is positive or negative and shares your thoughts in the comments section after you follow the steps or go through it completely. I will be there always to help you solve your issue and if you want to resolve or migrate the Exchange server from 2016 to 2019 and need my consultancy, please do not hesitate to connect me on skype at the skype ID “mrigotech” or send an email to my email ID hello@getanadmin.com.

To get the migration going, start the migration by installing Exchange server 2019 on a Windows 2019 server on the same Active Directory network as Exchange Server 2016 and follow the other part of the migration to get it migrated fully. Once the Exchange Server 2019 installation is completed, we are going to set the virtual directories with the internal and external URLs with the Exchange server’s common hostname with the certificate acquired from the third-party certification authority. Also, we are updating the internal and external server names of the ‘outlook anywhere’ settings on the server properties. We are completing the migration by moving the user mailboxes and arbitration mailboxes to the new exchange server and decommissioning the Exchange server 2016 once we verified Exchange Server is migrated to Exchange Server 2019 completely.

Concept:

Migrating Exchange Server 2016 to 2019 is the same as migrating Exchange Server 2013 to 2019. This article is written for the administrators who want to follow Exchange server 2016 to 2019 migration steps just as a specific migration step just for Exchange Server 2016. You may see this article is identical to the Exchange server 2013 to 2019 and if you are an Exchange server migration learner do not get surprised by seeing the same steps but medium changes between the articles.

Before starting the Exchange Server 2019 installation I would like to urge the need to update the Exchange Server 2016 to the latest build. When I was writing this article the latest cumulative update for Exchange Server 2016 is CU 22. You can find the Exchange Server build numbers in the link here. You need to download the cumulative update ISO file and mount it as an ISO drive and run the setup to update the Exchange Server 2016.

Migrating Microsoft Exchange Server 2016 to 2019

The following list of steps we are following to migrate Exchange server 2016 to 2019

  1. Install Exchange Server 2019 on the same Active Directory domain where Exchange Server 2016 Installed
  2. Configure Exchange Server 2019 roles such as Client Access, Mailbox, and Transport roles
  3. Move mailboxes from Exchange server 2016 to 2019
  4. Decommission Exchange Server 2016

Install Exchange Server 2019

We are going to discuss Exchange Server 2019 Server requirements and Prerequisite installation before installing Exchange Server 2019.

Exchange Server 2019 system requirements.

Before preparing the Windows server where the Exchange server 2019 is deployed, we are going to analyze some important system requirements that are the baseline to install the 2019 version of Exchange Server into the Organization.

The forest functional level of Domain controllers in the Active Directory Forest needs to be Windows Server 2012 R2. If you have any Domain Controller running older than Windows Server 2012 R2 that is not be supported and you need to decommission them or upgrade them to Windows Server 2012 R2 and raise the functional level. Without fulfilling this Active Directory requirement, you will get an error on the Exchange installation readiness check.

The Windows Server you are going to install Exchange Server 2019 must be Windows Server 2019 (at the time of writing this article the RTM version of Windows Server 2022 is not released). You can’t install Exchange server 2019 on Windows Server 2016 or earlier versions.

The MAPI client needs to be Outlook 2013 or later with Windows and Outlook 2016 on the MAC client.

Install Exchange Server 2019 Prerequisites

The following Exchange Server 2019 Prerequisites need to be installed on the server where the Exchange Server 2019 is installed, once the prerequisite installation is complete you can install Exchange Server 2019.

The following are the Prerequisites that need to be installed.

  1. Install .Net Framework 4.8
  2. Microsoft Visual C++ 2012 Redistributable
  3. Microsoft Visual C++ 2013 Redistributable
  4. Microsoft Unified Communications Managed API 4.0
  5. URL Rewrite 2.1
  1. Install .Net Framework 4.8

You can download the Don net Framework 4.8 from the following link

Install .Net Framework 4.8

Doble clicks the installer package and goes through the wizard to install it.

The following setup wizard will appear and click install to start the install wizard.

Exchange Server 2016 to 2019 Migration

Once the installation is complete, click finish and restart the Server.

Exchange Server 2016 to 2019 Migration
  • Microsoft Visual C++ 2012 Redistributable

Click on the link below to start the Microsoft Visual C++ 2012 Redistributable 2012 and double-click to start the installation.

Microsoft Visual C++ 2012 Redistributable

Click install to start the installation and close to coming out of the wizard.

Exchange Server 2016 to 2019 Migration
  • Microsoft Visual C++ 2013 Redistributable

Click on the link below to start the Microsoft Visual C++ 2012 Redistributable 2012 and double-click to start the installation.

Microsoft Visual C++ 2013 Redistributable

Click install to start the installation and close to coming out of the wizard.

Exchange Server 2016 to 2019 Migration
  • Microsoft Unified Communications Managed API 4.0

The following link will take you to the Microsoft site where you can download the installer.

Microsoft Unified Communications Managed API 4.0

When you launch the install, the install wizard will show up, and click next to start the installation.

Exchange Server 2016 to 2019 Migration

After install complete close out the wizard by clicking Finish.

Exchange Server 2016 to 2019 Migration

The URL rewrite is a mandatory prerequisite starting from Exchange Server 2019 Cumulative Update 11, so, navigate to the link below and install URL rewrite.

Install URL Rewrite extension

Click install this extension to start the URL rewrite installation.

Click install to start the installation.

Exchange Server 2016 to 2019 Migration

When the installation is complete, click Finish to close out the install wizard.

Exchange Server 2016 to 2019 Migration

Install the following Windows Feature and once the installation of the feature is complete restart the Server.

Install-windowsfeature Server-Media-Foundation

Install-windowsfeature Server-Media-Foundation, NET-Framework-45-Features, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Clustering-CmdInterface, RSAT-Clustering-Mgmt, RSAT-Clustering-PowerShell, WAS-Process-Model, Web-Asp-Net45, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext45, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI, Windows-Identity-Foundation, RSAT-ADDS

Once all Exchange Server 2019 Prerequisites are installed and the server is rebooted, download the latest Exchange Server 2019 Build from the link below.

 The downloaded ISO file needs to be mounted and note down on the drive later. Launch a PowerShell window change the Drive to the drive letter where you mounted the ISO file and run the following commands.

Set-ExecutionPolicy Unrestricted

.\Setup.exe /Mode:Install /Roles:Mailbox / IAcceptExchangeServerLicenseTerms_DiagnosticDataON

Exchange Server 2016 to 2019 Migration

Summary:

In this article, we had gone through some Exchange server 2019 migration plans and system requirements. Afterward, we had gone through the Exchange Server 2019 prerequisites installation steps and then we installed some windows features required to install Exchange Server 2019. In the end, we deployed Exchange Server 2019 on the same organization where Exchange Server 2016 is running. We are going to configure Exchange Server 2019 in the next part, click the link below to go to Part 2 of this article series.

Migrate Exchange Server 2016 to 2019 | Part 1
Migrate Exchange Server 2016 to 2019 | Part 2
Migrate Exchange Server 2016 to 2019 | Part 3

[Solved] How to Resolve Offline Address Book Download Error

After upgrading from Exchange Server 2013 or 2016 to 2019, the address book download seems to give an error on offline address book download on Outlook desktop client. This issue happens because the Exchange Server 2019 Offline address book configuration on the Exchange server has incorrect server details and addresses book distribution. This can be resolved by enabling global web distribution and setting the virtual directory to null.

On the Outlook client when you expand the “send and receive group” drop-down and select download address book. You would see the popup something similar as below.

And you would see the error as below when you try to download. The error is

(0x8004010F): 'The operation failed. An object cannot be found.
Offline Address Book Download Error

This error can be resolved, and the offline address book can be downloaded by enabling global web distribution on the Exchange server using the Exchange management shell.

Run the below command to set the default offline address book with the command.

Get-Mailbox | Set-Mailbox -OfflineAddressBook "\Default Offline Address List"

Check the list of address books using the command below.

Get-offlineaddressbook

To resolve the above error run the command below to make the virtual directory to null. In this command, we are enabling global web distribution and shadow mailbox distribution as well.

Set-OfflineAddressBook -Identity "Default Offline Address Book" -VirtualDirectories $null -ShadowMailboxDistributionEnabled $true -GlobalWebDistributionEnabled $true

After running the above command restart the server. This will let the configuration changes to take effect on the Offline Address Book and the download error will be resolved. Test it on your outlook desktop client.

[Solved] Microsoft.Exchange.Data. Directory.ADOperationException: | Cumulative Update Error Exchange Server

One of my clients wants to upgrade Exchange Server 2013 CU8 to Cu23. When preparing the server for upgrade and started upgrade and at the first step of the upgradation process the upgradation errors out with the following error and needed to exit from it. Error: ” was run: “Microsoft.Exchange.Data. Directory.ADOperationException:

Error:

The following error was generated when "$error.Clear(); 
	initialize-ExchangeConfigurationPermissions -DomainController $RoleDomainController

" was run: "Microsoft.Exchange.Data.Directory.ADOperationException: Active Directory operation failed on OrgDC.domain.com. This error is not retriable. Additional information: Access is denied.
Active directory response: 00000005: SecErr: DSID-03152612, problem 4003 (INSUFF_ACCESS_RIGHTS), data 0
 ---> System.DirectoryServices.Protocols.DirectoryOperationException: The user has insufficient access rights.
   at System.DirectoryServices.Protocols.LdapConnection.ConstructResponse(Int32 messageId, LdapOperation operation, ResultAll resultType, TimeSpan requestTimeOut, Boolean exceptionOnTimeOut)
   at System.DirectoryServices.Protocols.LdapConnection.SendRequest(DirectoryRequest request, TimeSpan requestTimeout)
   at Microsoft.Exchange.Data.Directory.PooledLdapConnection.SendRequest(DirectoryRequest request, LdapOperation ldapOperation, Nullable`1 clientSideSearchTimeout, IActivityScope activityScope, String callerInfo)
   at Microsoft.Exchange.Data.Directory.ADDataSession.ExecuteModificationRequest(ADObject entry, DirectoryRequest request, ADObjectId originalId, Boolean emptyObjectSessionOnException, Boolean isSync)
   --- End of inner exception stack trace ---
   at Microsoft.Exchange.Data.Directory.ADDataSession.AnalyzeDirectoryError(PooledLdapConnection connection, DirectoryRequest request, DirectoryException de, Int32 totalRetries, Int32 retriesOnServer)
   at Microsoft.Exchange.Data.Directory.ADDataSession.ExecuteModificationRequest(ADObject entry, DirectoryRequest request, ADObjectId originalId, Boolean emptyObjectSessionOnException, Boolean isSync)
   at Microsoft.Exchange.Data.Directory.ADDataSession.SaveSecurityDescriptor(ADObject obj, RawSecurityDescriptor sd, Boolean modifyOwner)
   at Microsoft.Exchange.Management.Tasks.InitializeConfigPermissions.InternalProcessRecord()
   at Microsoft.Exchange.Configuration.Tasks.Task.<ProcessRecord>b__b()
   at Microsoft.Exchange.Configuration.Tasks.Task.InvokeRetryableFunc(String funcName, Action func, Boolean terminatePipelineIfFailed)"

Solution 1:

There are two ways to work around on this issue. You use the first work around when you don’t have the built-in administrator account access.

You need to launch Active Directory Users and Computers and, on the view menu, make your advanced features on the view menu is ticked.

" was run: "Microsoft.Exchange.Data. Directory.ADOperationException:

Next, find the user that you are trying to install the exchange server with and open the properties and advanced settings on the security tab enable inheritance and click apply.

" was run: "Microsoft.Exchange.Data. Directory.ADOperationException:

Also make sure the account you are tying to install CU is member following groups.

Enterprise Administrators

Schema Admins

Domain Admins

Organizational Management

Relaunch the CU upgrade setup and the error won’t be there in this time.

Solution 2:

Or if you have administrators account password with you, just login with administrator account and launch the CU installation setup.

Hope this would help someone.

” was run: “System.UnauthorizedAccessException” | Exchange Server 2016 Cumulative Update Error

Today I was updating Exchange Server 2016 CU 18 on one of the client’s Exchange Servers and I came across the below error. The error is the original web.config file was not able to back up because of a web.config.bak file was already there in the %ExchangeInstall%\ClientAccess\ Autodiscover\. Error: ” was run: “System.UnauthorizedAccessException”

Error:

" was run: "System.UnauthorizedAccessException: Access to the path 'C:\Program Files\Microsoft\Exchange Server\V15\ClientAccess\Autodiscover\web.config.bak' is denied. at 
System.IO
.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at 
System.IO
.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost) at 
Microsoft.Exchange.Management
.SetInstallPathInAppConfig.InternalProcessRecord() at 
Microsoft.Exchange
.Configuration.Tasks.Task.<ProcessRecord>b__91_1() at 
Microsoft.Exchange
.Configuration.Tasks.Task.InvokeRetryableFunc(String funcName, Action func, Boolean terminatePipelineIfFailed) at 
Microsoft.Exchange
.Configuration.Tasks.Task.ProcessTaskStage(TaskStage taskStage, Action initFunc, Action mainFunc, Action completeFunc) at 
Microsoft.Exchange
.Configuration.Tasks.Task.ProcessRecord() at 
System.Management
.Automation.CommandProcessor.ProcessRecord()".

Solution:

In order to resolve this issue, I have backed up the existing web.config.bak file and removed this file from the location above. I reran the setup again and, Bingo! There was no error on the stage and the Cumulative update was completed with charm. I recommend this solution if you encounter this issue in your Exchange Server 2013/1016/2019 cumulative update upgrade.

Please feel to comment your thoughts and I will be right there to answer you in case of any questions.

Exchange Online-ApplicationAccount Already Exists | Exchange Server Upgrade Error

Preface:

When you upgrade Exchange Server 2013 or 2016 Cumulative Update, you sometimes see an error the Exchange-Online Application Account already exists on the first step of the upgrade. This issue arises if you have configured Hybrid Configuration for Office 365 and failed or you have Hybrid Configuration in place. The error would be something as below.

Error:

The following error was generated when “$error.Clear();

            #

            # O15# 2844081 – Create PartnerApplication “Exchange Online” in DC and On-Premise

            #

            $exch = [Microsoft.Exchange.Data.Directory.SystemConfiguration.WellknownPartnerApplicationIdentifiers]::Exchange;

            $exchApp = Get-PartnerApplication $exch -ErrorAction SilentlyContinue -DomainController $RoleDomainController | Where { $_.UseAuthServer } | Where { $_.IssuerIdentifier -eq “”};

            if ($exchApp -eq $null)

            {

                $exchAppName = “Exchange Online”;

                $exchApp = New-PartnerApplication -Name $exchAppName -ApplicationIdentifier $exch -Enabled $RoleIsDatacenter -AcceptSecurityIdentifierInformation $false -DomainController $RoleDomainController;

            }

            # Create application account for Exchange

            $appAccountName = $exchApp.Name + “-ApplicationAccount”;

            $appAccount = Get-LinkedUser -Identity $appAccountName -ErrorAction SilentlyContinue -DomainController $RoleDomainController;

            if ($appAccount -eq $null)

            {

                $appAccountUpn = $appAccountName.Replace(” “, “_”) + “@” + $RoleFullyQualifiedDomainName;

                $appAccount = New-LinkedUser -Name $appAccountName -UserPrincipalName $appAccountUpn -DomainController $RoleDomainController;

                Set-PartnerApplication -Identity $exchApp.Identity -LinkedAccount $appAccount.Identity -DomainController $RoleDomainController;

            }

            foreach ($roleName in (“UserApplication”, “ArchiveApplication”, “LegalHoldApplication”, “Mailbox Search”, “TeamMailboxLifecycleApplication”, “MailboxSearchApplication”, “MeetingGraphApplication”))

            {

                $roleIdentity = Get-ManagementRole $roleName -DomainController $RoleDomainController;

                $roleAssignment = Get-ManagementRoleAssignment -Role $roleIdentity.Identity -RoleAssignee $appAccount.Identity -DomainController $RoleDomainController;

                if ($roleAssignment -eq $null)

                {

                    New-ManagementRoleAssignment -Role $roleName -User $appAccount.Identity -DomainController $RoleDomainController;

                }

            }

        ” was run: “Microsoft.Exchange.Data.Directory.ADObjectAlreadyExistsException: Active Directory operation failed on ExchServer.domain1.local. The object ‘CN=Exchange Online-ApplicationAccount,CN=Users,DC=domain1,DC=local’ already exists. —> System.DirectoryServices.Protocols.DirectoryOperationException: The object exists.

   at System.DirectoryServices.Protocols.LdapConnection.ConstructResponse(Int32 messageId, LdapOperation operation, ResultAll resultType, TimeSpan requestTimeOut, Boolean exceptionOnTimeOut)

   at System.DirectoryServices.Protocols.LdapConnection.SendRequest(DirectoryRequest request, TimeSpan requestTimeout)

   at Microsoft.Exchange.Data.Directory.PooledLdapConnection.SendRequest(DirectoryRequest request, LdapOperation ldapOperation, Nullable`1 clientSideSearchTimeout, IActivityScope activityScope, String callerInfo)

   at Microsoft.Exchange.Data.Directory.ADDataSession.ExecuteModificationRequest(ADObject entry, DirectoryRequest request, ADObjectId originalId, Boolean emptyObjectSessionOnException, Boolean isSync)

   — End of inner exception stack trace —

   at Microsoft.Exchange.Data.Directory.ADDataSession.AnalyzeDirectoryError(PooledLdapConnection connection, DirectoryRequest request, DirectoryException de, Int32 totalRetries, Int32 retriesOnServer)

   at Microsoft.Exchange.Data.Directory.ADDataSession.ExecuteModificationRequest(ADObject entry, DirectoryRequest request, ADObjectId originalId, Boolean emptyObjectSessionOnException, Boolean isSync)

   at Microsoft.Exchange.Data.Directory.ADDataSession.ExecuteModificationRequest(ADObject entry, DirectoryRequest request, ADObjectId originalId, Boolean emptyObjectSessionOnException)

   at Microsoft.Exchange.Data.Directory.ADDataSession.Save(ADObject instanceToSave, IEnumerable`1 properties, Boolean bypassValidation)

   at Microsoft.Exchange.Configuration.Tasks.SetTaskBase`1.InternalProcessRecord()

   at Microsoft.Exchange.Configuration.Tasks.NewTaskBase`1.InternalProcessRecord()

   at Microsoft.Exchange.Configuration.Tasks.NewADTaskBase`1.InternalProcessRecord()

   at Microsoft.Exchange.Configuration.Tasks.Task.<ProcessRecord>b__b()

   at Microsoft.Exchange.Configuration.Tasks.Task.InvokeRetryableFunc(String funcName, Action func, Boolean terminatePipelineIfFailed)”.

Solution:

If you come across the error as above, open Active Directory Users and Computers and find the account “Exchange Online-ApplicationAccount” and delete this account and rerun the Cumulative Update Upgrade. The account will be recreated when the cumulative update or setup /PrepareAD invoked and office 365 connectivity and applications such as free/busy and so on will be working as before.

How to resolve Exchange Server 2013/2016 Content-Index state Disabled

Issue:

We will find a resolution for the Exchange server 2013 or Exchange server 2016 error on the database index. Yesterday, one of the users in my client’s place called but told me that they could not search the content on their outlook or OWA. The moment I received the call, I made sure it was related to the Exchange server database’s content index and directly login to ECP and checked the content index’s status and found that it was in a disabled state as in the image below.

Exchange Server 2013/2016 Content-Index state Disabled

Resolution:

The get-mailboxdatabase command on Exchange Management Shell shows the IndexEnabled parameter as False for the database where the problem mailbox exists.

The command to check the database index state is as below.

Syntax: Get-MailboxDatabase <database name>| Select Name, IndexEnabled

Example: Get-MailboxDatabase db01 | Select Name, IndexEnabled

The below EMS command will make the IndexEnabled value to true, which means the database content index is enabled.

Syntax: Set-MailboxDatabase <database name> -IndexEnabled $True

Example: Set-MailboxDatabase db01 -IndexEnabled $True

Once the above set command has been run restart the following services.

Microsoft Exchange Search and

Microsoft Exchange Search Host Controller.

After restarting the above services and wait for a few minutes, you can see the database status changed from disabled to Crawling. The crawl of the database will take time; based on the database size. So wait till the database content index to complete crawl and try searching the content on Outlook or OWA client, and you will find the results shown.

Exchange 2010 to 2016 Public Folder Migration error

When you migrate Exchange Server 2010 Public folders to Exchange Server 2016, you may come across the following error on the public folder mailbox sync. This error can be found on the report of the sync report.

[EXCH2016] Public folder “/Public Folder/Sub Folder” could not be mail-enabled. The error is as follows: “No mail public folder was found in Active Directory with object ID ‘78340878-dc63-40da-be4b-d24ec47c55c4′”

This can be resolved by disable-mailpublicfolder command by disabling the publicfolders one by one.

Disable-MailPublicFolder -Identity “/PublicFolder”

If you find you want to disable mailpublicfolders in bulk, you can use recurse switch and point the parent public folder. Here is the command to do so.

Get-PublicFolder -Recurse -Identity “/Projects” | Disable-MailPublicFolder

In this command /Projects is the parent folder where that folder and subfolders of Projects are mail disabled.

I hope this info would help someone looking for resolution for the above error. You may send me a note if you want more info or your questions.

Exchange Server 2010 to 2016 Public Folders Migration, Too Many Large items error

When you migrate Exchange Server 2010 Public Folders to Exchange 2016 you may come across large items error and if you download the mailbox report on the details page you would see the error as mentioned below

Fatal error TooManyLargeItemsPermanentException has occurred.

In this case, your open Exchange Management Shell and run the following command and restart the Migration batch. Bingo, the mailboxes completed syncing without any error.

Set-MigrationBatch -Identity PFMigration -LargeItemLimit 100 -BadItemLimit 100

I hope this info would help someone looking for a resolution for the above error. You may send me a note if you want more info or your questions.