Problem
You’re installing Microsoft Exchange Server 2019 into an organization with Exchange Server 2013 and will use the installer to run Setup /PrepareAD:
Image may be NSFW.
Clik here to view.
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)".
Image may be NSFW.
Clik here to view.
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:
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
Image may be NSFW.
Clik here to view.
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:
Image may be NSFW.
Clik here to view.
Type in msExchPFTree as the Value then click Next:
Image may be NSFW.
Clik here to view.
Complete the creation of the object by clicking Finish (don’t worry about the More Attributes button):
Image may be NSFW.
Clik here to view.
Note the new CN=msExchPFTree object created:
Image may be NSFW.
Clik here to view.
Open the properties of the object, navigate to the msExchPFTreeType attribute:
Image may be NSFW.
Clik here to view.
Update the <not set> value to 1:
Image may be NSFW.
Clik here to view.
Proceed with the install and the process should move past Step 1: