I ran into an interesting issue while I was removing an Exchange 2016 server from an environment. The uninstall process failed on step 5 of 13 and threw an error. The error itself is not all that important for this article, since there are many different errors that might put you in the same position I found myself in, rare as that may be.
When Exchange setup fails on an uninstall the first thing you would logically try is another uninstall. Unfortunately, Exchange setup now throws an error message that…
An incomplete installation was detected. Run setup to complete Exchange installation.
Taking Exchange at its word, I tried to reinstall the partially uninstalled server by running setup again.
D:\>setup /m:install /r:m /iacceptexchangeserverlicenseterms Welcome to Microsoft Exchange Server 2016 Cumulative Update 3 Unattended Setup Copying Files... File copy complete. Setup will now collect additional information needed for installation. Languages Mailbox role: Transport service Mailbox role: Client Access service Mailbox role: Unified Messaging service Mailbox role: Mailbox service Mailbox role: Front End Transport service Setup previously failed while performing the action "Uninstall". You can't resume setup by performing the action "Install".
Thinking back to other Exchange setup-related disasters I’ve encountered, I remembered that Exchange stores some information about setup progress in the registry. There’s a tip about it here on the Exchange Masters blog. Setup is failing on the Front End Transport service in my case (see above), which is the “FrontEndTransportRole” in the registry.
After removing the Action and Watermark entries, I tried the Exchange install again. This time setup was able to complete the installation, which repaired the server. I was then able to run setup again to uninstall the server, which was successful.
Now, during all this I was asked whether we could just power off the server and remove it using ADSIEdit. As you hopefully already know, removing an Exchange server (or really, doing anything at all) in ADSIEdit is an unsupported method. Sure, there’s lots of war stories out there where people have gotten away with it and everything has continued to work okay in their environment (as far as they can tell), but I would never recommend it and certainly don’t do it for customers.
If you did have a server that was beyond repair and wanted to cleanly remove it from your environment in a supported manner, the correct approach is to use a recovery install. Recovery installs are available for all of the current versions of Exchange, and there’s really no excuse for not doing one if the scenario calls for it.
Hello, I ran into the same issue but keep getting this error Error: I’m running as an account that is Domain admin/enterprise admin/schema admin. If i try and run the CU23 update to run as a repair the same error below comes up so i’m stuck.
The following error was generated when “$error.Clear();
install-ExsetDataAtom -AtomName OrgLevelCt -DomainController $RoleDomainController -Organization $RoleOrganizationName
” was run: “System.Management.Automation.ParameterBindingValidationException: Cannot bind argument to parameter ‘DomainController’ because it is null.
at System.Management.Automation.ParameterBinderBase.ValidateNullOrEmptyArgument(CommandParameterInternal parameter, CompiledCommandParameter parameterMetadata, Type argumentType, Object parameterValue, Boolean recurseIntoCollections)
Any ideas ?
I am dealing with the above issue (Exchange 2016 uninstall failed after it could not stop all the services in time) and now it says that “an incomplete installation was detected”.
I cannot re-install because I have installed an Exchange 2019 to our domain. I even tried, but of course got the message that a newer server exists.
Roubi (an IT gal)
Love your articles. I have a good one that related to your post. I pulled a stupid while in the install Exchange 2016 phase of a SBS 2011 migration.
I thought i’d be all cool and specify the DB and LOG file paths parameters in my setup command but i failed to create the folders first and furthermore i failed to specify the .edb extension of the DB and LOG files i wanted to create.
therefore the setup program got stymied and failed at the MB role install phase.
I found and pulled the watermark then reran the command to install the mb role.
I’m really hoping that works.
Thanks for sharing this fantastic write-up. I’ve just exited a 3 day wrestling match with a failed Exchange 2016 server install (I’m an amateur) and the information you shared here and a couple other of your posts were key to me finding my way through the maze to resolution. VERY much appreciated.
Is there any way to locate a copy of Exchange 2013 CU 10?
I’d like to try the solution from Aleksey, but I don’t have CU10 anymore and it’s not available from MS anymore.
What I’m trying to do is uninstall 2013 after a 2016 migration, but it’s failing at step 6 – unified messaging service. It’s lookin for the UMLanguagePack msi and can’t locate it. I’ve tried to uninstall from th command from the /bin drive of the exchange installation location, but still fails.
I believe if I had CU10 I’d be able to get this sorted, but I’m stuck right now. Ha k for any help!
I want to uninstall edge transport role and encounter same error.But the registry container for edge transport role doesn’t have any watermark and action keys.Do you have any idea about that?
No, but the good news is that the Edge Transport server isn’t a domain member, and doesn’t store config info in your AD, so if you need to you can just decommission the server without cleanly uninstalling the server. That assumes you’ve already removed the Edge configs, which I would assume you have since you’re at the uninstall stage.
So far my Exchange 2016 experience was smooth, I don’t know if what I write here can be applied to 2016. But with Exchange 2013 it happened often enough.
Microsoft is very missleading (as usual).
“An incomplete installation was detected. Run setup to complete Exchange installation.”
What this actually means is that you shouldn’t open control panel, click uninstall programm, etc… You need to extract the distribution of your current version of exchange and run setup.exe in uninstalation mode.
Like “.\setup /m:uninstall”.
So far so good. Always worked for me, when normal uninstallation fails for any reason.
This answer did it for me. There’s was no Action or Watermark entry in my registry, and this was much easier than having to reinstall first. Excellent!
This worked for me too, just remove both registry values & run setup /m:uninstall from admin command prompt.
Exchange 2013 SP1 CU18, removing one exchange mailbox server.
Yep, still works perfectly on Exchange 2016. I didn’t even bother checking the registry. Thanks for this tip!
Will do that. Thanks so much for your Guidance Paul. And just so you know all this mess happened because when uninstalling Exchange, setup couldn’t stop the MSExchange Transport Service. It was stuck at Stopping. And eventually failed Setup failed. I think what I learned is that in the future I will make sure I reboot the servers before I uninstall Exchange, to have everything fresh. 🙂 Have a good day Paul.
Hi Paul and just to post how I solved it: I login into EAC and under Mail Flow>Received connectors> I deleted the 2 receive connectors for the Hub Transport role (Mailbox) for that server that the installation was complaining about that already existed. After that I was able to ran setup again and it worked! So it looks like the original failed uninstall process partially got rid off the mailbox role but left behind those 2 items (Connectors). Many thanks for your help, I learned a lot. I really appreciated.
Hi Paul, Thanks for your great articles. I have the same situation right now with an Exchange 2013. Mine Failed because it couldn’t stop the Transport Service. So that registry entry is there (Action REG_SZ Uninstall). Just to be clear, do I delecte the whole entry? Also in your example above, you tried Setup.exe /mode:install, but it shouldn’t it be mode:recovery? Also, do I need to reset the AD account for the server? or can I just simply do this on this same server:
1) Delete the Registry Key
2) Run setup.exe /mode:Recovery /IacceptExchangeServerLicenseTerms
I appreciate the help. First time recovering an Exchange server.
I removed the Action and Watermark entries.
Recovery install is used if you’ve had to completely rebuild the failed server from scratch.
WHEN I RUN SETUP OF EXCHANGE 2016 I GET THIS ERROR BELOW
Directory C:\Program Files\Microsoft\Exchange Server\V15\bin\Setup\ServerRoles\Common not found.
Hi Paul, I had bit more time to think and I apologize. 🙂 Yes, you do a /M:Install because its that same server, and so no AD reset either. I will do this only if I was installing Exchange in ANOTHER server. One more thing: I have a co-existence with Ex2016, so it will allow me to re-install 2013 anyways without breaking anything right? Thanks in advance.
If you still have 2013 servers, or your 2013 server is dead and needs recovering, then yes you can go ahead.
hi Paul, since is an Exchange 2013, I tried reinstalling typing setup.exe /m:install /r:clientaccess,Mailbox /IacceptExchangeServerLicenseTerms but it complained that the Client Access Role was already present. So I omitted the Client access and just typed /r:mailbox. When it gets to certain percentage it fails with an error exactly like this:
[07/19/2015 00:58:47.0354]  [ERROR] The following error was generated when “$error.Clear();
$defaultPort = 25;
$localServer = get-exchangeserver $RoleFqdnOrName -DomainController $RoleDomainController;
Write-ExchangeSetupLog -Info “Using port 2525 for the default hub receive connector since frontend role already present.”;
$defaultPort = 2525;
$bindingString1 = ‘0.0.0.0:’ + $defaultPort;
$bindingString2 = ‘:::’ + $defaultPort;
$binding1 = new-object Microsoft.Exchange.Data.IPBinding $bindingString1;
$binding2 = new-object Microsoft.Exchange.Data.IPBinding $bindingString2;
-Name (“Default ” + [String][System.Environment]::MachineName ) `
-MaxRecipientsPerMessage 5000 `
-Fqdn $RoleFqdnOrName `
-Bindings $binding1,$binding2 `
-RemoteIPRanges 0.0.0.0-255.255.255.255,[::]-FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF `
-DomainController $RoleDomainController `
-MaxInboundConnectionPerSource Unlimited `
-MaxInboundConnectionPercentagePerSource 100 `
” was run: “Active Directory operation failed on Server.walhouse.local. The object ‘CN=Default SERVER,CN=SMTP Receive Connectors,CN=Protocols,CN=SERVER,CN=Servers,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=Walhouse,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=walhouse,DC=local’ already exists.”.
[07/19/2015 00:58:47.0354]  [ERROR] Active Directory operation failed on Server.walhouse.local. The object ‘CN=Default SERVER,CN=SMTP Receive Connectors,CN=Protocols,CN=SERVER,CN=Servers,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=Walhouse,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=walhouse,DC=local’ already exists.
[07/19/2015 00:58:47.0354]  [ERROR] The object exists.
[07/19/2015 00:58:47.0354]  [ERROR-REFERENCE] Id=BridgeheadComponent___a525250ab5a4442c868ad368c34aad21 Component=EXCHANGE14:\Current\Release\Shared\Datacenter\Setup
[07/19/2015 00:58:47.0354]  Setup is stopping now because of one or more critical errors.
I really appreciate the help. This is an standalone server ready to be decommissioned.
Hard to say since I don’t know what happened in the lead up to this issue.
If it’s a server you’re trying to decom you could consider just wiping the server, reinstalling a fresh OS, doing a recovery install, then a clean uninstall.
Or consider opening a support case with Microsoft to see if they’ve got a better suggestion.
Another reason for running servers virtually. Backup (we use Veeam) is your friend.
How does that help in this situation?
I had a situation where prior to uninstalling the old exchange 2013 it died. though the new server is running fine. I would like to know how can we removed the traces of the dead exchange 2013 from our organization. I saw many articles for utilizing the adsiedit but nothing from Microsoft. can you please help me out
The supported method is to perform a recovery install of the old server, then cleanly uninstall it.
what if the recovery it self fail 🙂 ??
If a recovery install is failing you can build a new server with a new name and use database portability to mount the existing databases on the new server. Then there’ll be some cleanup efforts for the dead server.