dcpromo fails with An error with no description has occurred on Server 2008R2

While working to get rid of all our 2003/2008 DCs to get our AD to a 2012 Native level I came across one 2008 DC that was extremely difficult to rid ourselves of. It was created about a year ago to replace our 2003 FSMO master, and had been running without major issue since then. After building a new 2012 VM, and DCPromo’ing it, I transfered the FSMO roles to a stable server and set out to demote and decommission the 2008 machine. Upon running dcpromo from an admin shell, the system began to detect the ADDS binaries, and failed. The message it failed with was an extremely helpful “Failed to detect if Active Directory Domain Services binaries were installed. The error was: An error with no description has occurred.” Lovely.
tl;dr

Going into roles and features to double check that the server knows ADDS is installed, but no roles show up. Ok, so just force the server to know that it’s actually got everthing installed:

dism /online /enable-feature /featurename:DirectoryServices-DomainController-ServerFoundation

Failed as well. The logs at %windir%logsDISMdism.log show the following:

2013-03-18 17:50:39, Error                 DISM   DISM Package Manager: PID=1148 Failed opening package Package_for_KB2790655_RTM~31bf3856ad364e35~amd64~~6.1.1.0. - CDISMPackageManager::Internal_CreatePackageByName(hr:0x800f0818)
2013-03-18 17:50:39, Error                 DISM   DISM Package Manager: PID=1148 Failed to get the underlying cbs package. - CDISMPackageManager::OpenPackageByName(hr:0x800f0818)
2013-03-18 17:50:39, Error                 DISM   DISM Package Manager: PID=1148 Failed opening package with the name "Package_for_KB2790655_RTM~31bf3856ad364e35~amd64~~6.1.1.0" - CPackageManagerCLIHandler::Private_GetPackageNameFromCommandLine(hr:0x800f0818)
2013-03-18 17:50:39, Error                 DISM   DISM Package Manager: PID=1148 Failed while processing command remove-package. - CPackageManagerCLIHandler::ExecuteCmdLine(hr:0x800f0818)
2013-03-18 17:50:39, Info                  DISM   DISM Package Manager: PID=1148 Further logs for online package and feature related operations can be found at %WINDIR%logsCBScbs.log - CPackageManagerCLIHandler::ExecuteCmdLine
2013-03-18 17:50:39, Error                 DISM   DISM.EXE: DISM Package Manager processed the command line but failed. HRESULT=800F0818

Checking the DCPromo logs at %windir%debug showed similar garbage:

dcpromoui 86C.EA4 0000 16:16:54.609 opening log file C:Windowsdebugdcpromoui.log
dcpromoui 86C.EA4 0001 16:16:54.609 C:Windowssystem32dcpromo.exe
dcpromoui 86C.EA4 0002 16:16:54.609 file timestamp 07/13/2009 21:39:02.901
dcpromoui 86C.EA4 0003 16:16:54.609 local time 03/18/2013 16:16:54.609
dcpromoui 86C.EA4 0004 16:16:54.609 running Windows NT 6.1 build 7600  (BuildLab:7600.win7_gdr.130104-1435) amd64
dcpromoui 86C.EA4 0005 16:16:54.609 logging flags 0001007C
dcpromoui 86C.EA4 0006 16:16:54.609 Enter wmain
dcpromoui 86C.EA4 0007 16:16:54.609   Enter CheckArgs
dcpromoui 86C.EA4 0008 16:16:54.625   Detecting WOW64
dcpromoui 86C.EA4 0009 16:16:54.625   Detecting OS product type
dcpromoui 86C.EA4 000A 16:16:54.625   Enter CheckIsServerCore
dcpromoui 86C.EA4 000B 16:16:54.625     It is not on server foundation
dcpromoui 86C.EA4 000C 16:16:54.625     HRESULT = 0x00000000
dcpromoui 86C.EA4 000D 16:16:54.625   Enter IsSKUSupported
dcpromoui 86C.EA4 000E 16:16:54.625   GUI mode: true
dcpromoui 86C.EA4 000F 16:16:54.625   Create mutex returns 0x0
dcpromoui 86C.EA4 0010 16:16:54.625   Enter Dialog::ModelessExecute
dcpromoui 86C.EA4 0011 16:16:54.625     Enter UnattendSplashDialog::OnInit
dcpromoui 86C.EA4 0012 16:16:54.625   Enter CheckInstallStates
dcpromoui 86C.EA4 0013 16:16:54.625     Detecting NetFx3 component install state
dcpromoui 86C.6B8 0014 16:16:54.641 Enter CbsGetUpdateInstallState
dcpromoui 86C.6B8 0015 16:16:54.641   The category is 3
dcpromoui 86C.6B8 0016 16:16:54.641   Enter FindRoleInfo
dcpromoui 86C.6B8 0017 16:16:54.641     Enter CheckIsServerCore
dcpromoui 86C.6B8 0018 16:16:54.641       It is not on server foundation
dcpromoui 86C.6B8 0019 16:16:54.641       HRESULT = 0x00000000
dcpromoui 86C.6B8 001A 16:16:54.641   Enter GetUpdateName
dcpromoui 86C.6B8 001B 16:16:54.641   Enter GetPackageName
dcpromoui 86C.6B8 001C 16:16:55.405     Failed to open package
dcpromoui 86C.6B8 001D 16:16:55.405     HRESULT = 0x800F0818
dcpromoui 86C.6B8 001E 16:16:55.514     Unable to find identity string for package name Microsoft-Windows-Foundation-Package
dcpromoui 86C.6B8 001F 16:16:55.514   Failed to retrieve the parent package name
dcpromoui 86C.6B8 0020 16:16:55.514   HRESULT = 0x800F0818
dcpromoui 86C.6B8 0021 16:16:55.514   HRESULT = 0x800F0818
dcpromoui 86C.EA4 0022 16:16:55.514     HRESULT = 0x800F0818
dcpromoui 86C.EA4 0023 16:16:55.514   Enter GetErrorMessage 800F0818
dcpromoui 86C.EA4 0024 16:16:55.514   MessageBox: Active Directory Domain Services Installer : Failed to detect if Active Directory Domain Services binaries were installed. The error was: An error with no description has occurred.
dcpromoui 86C.EA4 0025 16:17:08.166   Exit code is 64
dcpromoui 86C.EA4 0026 16:17:08.166   Enter UnattendSplashDialog::SelfDestruct
dcpromoui 86C.EA4 0027 16:17:08.166 closing log

Well, at least both sources are pointing to the same error while running: 800F0818. After a bunch of Googling, I came across the System Update Readiness Tool. Which goes through installed updates, and fixes what it can.

A log is kept in %windir%LogsCBSCheckSUR.log and will tell you what it was able to do. If you’ve got multiple passes to fix everything, the full log is kept in the .persist version, with the above log only containing the latest run. For me, I had 3 errors, two were fixed automatically:

Checking Windows Servicing Packages

Checking Package Manifests and Catalogs
(f)	CBS MUM Corrupt	0x00000000	servicingPackagesPackage_for_KB2506014_RTM~31bf3856ad364e35~amd64~~6.1.1.0.mum		Expected file name Microsoft-Windows-Foundation-Package~31bf3856ad364e35~amd64~~6.1.7600.16385.mum does not match the actual file name
(fix)	CBS MUM Corrupt	CBS File Replaced	Package_for_KB2506014_RTM~31bf3856ad364e35~amd64~~6.1.1.0.mum from Cabinet: C:WindowsCheckSurv1.0windows6.1-servicing-x64-2jan13.cab.
(fix)	CBS Paired File	CBS File also Replaced	Package_for_KB2506014_RTM~31bf3856ad364e35~amd64~~6.1.1.0.cat from Cabinet: C:WindowsCheckSurv1.0windows6.1-servicing-x64-2jan13.cab.
(f)	CBS MUM Corrupt	0x00000000	servicingPackagesPackage_for_KB2706045_RTM~31bf3856ad364e35~amd64~~6.1.1.0.mum		Expected file name Microsoft-Windows-Foundation-Package~31bf3856ad364e35~amd64~~6.1.7600.16385.mum does not match the actual file name
(fix)	CBS MUM Corrupt	CBS File Replaced	Package_for_KB2706045_RTM~31bf3856ad364e35~amd64~~6.1.1.0.mum from Cabinet: C:WindowsCheckSurv1.0windows6.1-servicing-x64-2jan13.cab.
(fix)	CBS Paired File	CBS File also Replaced	Package_for_KB2706045_RTM~31bf3856ad364e35~amd64~~6.1.1.0.cat from Cabinet: C:WindowsCheckSurv1.0windows6.1-servicing-x64-2jan13.cab.
(f)	CBS MUM Corrupt	0x00000000	servicingPackagesPackage_for_KB2790655_RTM~31bf3856ad364e35~amd64~~6.1.1.0.mum		Expected file name Microsoft-Windows-Foundation-Package~31bf3856ad364e35~amd64~~6.1.7600.16385.mum does not match the actual file name

Checking Package Watchlist

Checking Component Watchlist

Checking Packages

Checking Component Store

Summary:
Seconds executed: 723
 Found 3 errors
 Fixed 2 errors
  CBS MUM Corrupt Total count: 3
  Fixed: CBS MUM Corrupt.  Total count: 2
  Fixed: CBS Paired File.  Total count: 2

Unavailable repair files:
	servicingpackagesPackage_for_KB2790655_RTM~31bf3856ad364e35~amd64~~6.1.1.0.mum
	servicingpackagesPackage_for_KB2790655_RTM~31bf3856ad364e35~amd64~~6.1.1.0.cat

Ok, so how to fix the last guy?

Off to Microsoft Romania for these two articles, which explain in detail what’s happened and how to fix it. Then, read up a bit on how standalone updates work. So, with the KB that was broken, and the broken files listed, I downloaded the kb referenced, and extracted it by opening a command prompt and doing:

wusa /extract:path_to_extract_to kb2790655.msu

Then ripped the mum and cat files from one of the extracted cabs, and try to place them in %windir%servicingpackages, access denied since it’s a Trusted Installer folder. Take ownership, add permissions, paste the files.

Rerun dcpromo, everything worked.

At some point in all of this, I was Googling around and found this blog post, which was fantastically annoying since it sounded exactly like my problem, but the site doesn’t render the content in Firefox or Chrome (for me), so it was no help. Loading it in IE works though, so Kudos to that guy for doing all this before me.