Pages

Saturday, March 9, 2019

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 comments:

Joan Defrank said...

Excellent documentation, it saved me a lot of headaches. Thank you!

Unknown said...

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

Anonymous said...

Thank you very much!

Anonymous said...

The same issue with Exchange 2016.

This workaround solved my problem.

THANK YOU

Unknown said...

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.

Srikanth Giddey said...

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