Installing Exchange Server 2019 fails at Step 1 of 14: Organization Preparation – “…Microsoft.Exchange.Data.Directory.ADObjectAlreadyExistsException”

Problem

You’re installing Microsoft Exchange Server 2019 into an organization with Exchange Server 2013 and will use the installer to run Setup /PrepareAD:

The installer begins at Step 1 of 14: Organization Preparation but fails with the following error:

Error:

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

install-AdministrativeGroup -DomainController $RoleDomainController

” was run: “Microsoft.Exchange.Data.Directory.ADObjectAlreadyExistsException: Active Directory operation failed on dc05.contoso.com. The object ‘CN=Folder Hierarchies,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=contoso,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=contoso,DC=com’ 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.GuardedDirectoryExecution.Execute[T](String bucketName, Func`1 action, Int64& concurrency)

at Microsoft.Exchange.Data.Directory.PooledLdapConnection.GuardedSendRequest(String forestName, GuardedDirectoryExecution guardedDirectoryExecution, DirectoryRequest request, TimeSpan timeout, Func`3 sendRequestDelegate, Int64& concurrency)

at Microsoft.Exchange.Data.Directory.PooledLdapConnection.SendRequest(DirectoryRequest request, LdapOperation ldapOperation, Nullable`1 clientSideSearchTimeout, IADLogContext logContext, Boolean shouldLogLastFilter)

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, String callerFilePath, Int32 callerFileLine, String memberName)

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

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

at Microsoft.Exchange.Data.Directory.SystemConfiguration.ADConfigurationSession.Save(ADConfigurationObject instanceToSave, String callerFilePath, Int32 callerFileLine, String memberName)

at Microsoft.Exchange.Management.Deployment.InstallAdministrativeGroup.InstallConfigurationObject[TObject](ADObjectId id, Boolean force, TObject instance)

at Microsoft.Exchange.Management.Deployment.InstallAdministrativeGroup.InternalProcessRecord()

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

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

Solution

This has been a common problem with previous Exchange 2013 and 2016 environments where this step could fail during cumulative updates to the organization. The following TechNet Blog describes the issue:

https://blogs.technet.microsoft.com/manjubn/2013/09/02/1-exchange-server-2013-preparead-or-cumultive-update-installation-fails/

The remediation steps in the blog are fairly straight forward but can cause a bit of confusing when you reach these items:

Click More Attributes.

In the Select a class list, select msExchPFTreeType, and then click Next.

In the Edit Attribute box, type 1, click Set, click OK, and then click Finish

The following steps are the ones I took to correct this issue allowing Exchange Server 2019 to install:

Launch ADSIedit and navigate to:

CN=Configuration,CN=Services,CN=Microsoft Exchange,CN=Organization,CN=Administrative Groups,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Folder Hierarchies

Note that there are no objects defined on the right window in the screenshot above.

Right click on either CN=Folder Hierarchies or the blank space on the right window and select New > Object, select msExchPFTree as the class then click Next:

Type in msExchPFTree as the Value then click Next:

Complete the creation of the object by clicking Finish (don’t worry about the More Attributes button):

Note the new CN=msExchPFTree object created:

Open the properties of the object, navigate to the msExchPFTreeType attribute:

Update the <not set> value to 1:

Proceed with the install and the process should move past Step 1:

6 Responses

  1. Thank You! Damn Microsoft! The online Exchange Deployment Wizard needs to add this step.

  2. Thank you very much Terence Luk. It helped me a lot. I have spent lot of time researching this issue, could not resolve.

    After seeing your solution, I could resolve the issue and could install Exchange 2019 while Exchange 2016 already existed in the organization.

  3. Thank you very much Terence Luk. It helped me a lot. I have spent lot of time researching this issue, could not resolve.

    After seeing your solution, I could resolve the issue and could install Exchange 2019 while Exchange 2016 already existed in the organization