BGBSetup.log “Fatal MSI Error - bgbisapi.msi could not be installed.” 0x8004D01B

During a Configuration Manager implementation I am working on for a customer at the moment I experienced an issue installing a management point role onto a server. This is a fresh build with new servers and the management point seemed to partly install. I could see components in IIS and I could see the relevant folders on the server but the status messages were telling me otherwise. In amongst the 4 messages:

image

I saw this one which obviously leads me into the log files.

Site Component Manager failed to install this component, because the Microsoft Installer File for this component (bgbisapi.msi) could not install.

Refer to the BgbSetup.log, the bgbisapimsi.log, as well as the ConfigMgr Documentation and the Microsoft Knowledge Base for further information.

After popping open the BgbSetup.log on the management point server I could immediately see there was an incomplete installation which was looping around every hour.

<04/14/15 09:04:05> ====================================================================
<04/14/15 09:04:05> SMSBGB Setup Started....
<04/14/15 09:04:05> Parameters: \\CMSERVER02.CORP.DOMAIN.COM\F$\SMS\bin\x64\rolesetup.exe /install /siteserver PSS01 SMSBGB 0
<04/14/15 09:04:05> Installing Pre Reqs for SMSBGB
<04/14/15 09:04:05>         ======== Installing Pre Reqs for Role SMSBGB ========
<04/14/15 09:04:05> Found 1 Pre Reqs for Role SMSBGB
<04/14/15 09:04:05> Pre Req SqlNativeClient found.
<04/14/15 09:04:05> SqlNativeClient already installed (Product Code: {49D665A2-4C2A-476E-9AB8-FCC425F526FC}). Would not install again.
<04/14/15 09:04:05> Pre Req SqlNativeClient is already installed. Skipping it.
<04/14/15 09:04:05>         ======== Completed Installation of Pre Reqs for Role SMSBGB ========
<04/14/15 09:04:05> Installing the SMSBGB
<04/14/15 09:04:05> Passed OS version check.
<04/14/15 09:04:05> IIS Service is installed.
<04/14/15 09:04:05> SMSBGB already installed (Product Code: {A78E8003-2307-4B70-B7CD-1A07C0A31D21}).  Upgrading/Reinstalling SMSBGB
<04/14/15 09:04:05> New SMSBGB is the same product code.  This is a minor upgrade.
<04/14/15 09:04:05> Enabling MSI logging.  bgbisapi.msi will log to F:\SMS\logs\bgbisapiMSI.log
<04/14/15 09:04:05> Installing F:\SMS\bin\x64\bgbisapi.msi REINSTALL=ALL REINSTALLMODE=vmaus CCMINSTALLDIR="F:\SMS_CCM" CCMSERVERDATAROOT="F:\SMS" USESMSPORTS=TRUE SMSPORTS=80 USESMSSSLPORTS=TRUE SMSSSLPORTS=443 USESMSSSL=TRUE SMSSSLSTATE=0 CCMENABLELOGGING=TRUE CCMLOGLEVEL=1 CCMLOGMAXSIZE=1000000 CCMLOGMAXHISTORY=1
<04/14/15 09:04:13> bgbisapi.msi exited with return code: 0
<04/14/15 09:04:13> Installation was successful.
<04/14/15 09:04:13> CTool::RegisterComPlusService: run command line: "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegSvcs.exe" /u "F:\SMS\bin\x64\microsoft.configurationmanager.bgbserverchannel.dll"
<04/14/15 09:04:14> CTool::RegisterComPlusService: Failed to unregister F:\SMS\bin\x64\microsoft.configurationmanager.bgbserverchannel.dll with .Net Fx 4.0
<04/14/15 09:04:14> CTool::RegisterComPlusService: run command line: "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegSvcs.exe" /extlb /tlb:"F:\SMS_CCM\microsoft.configurationmanager.bgbserverchannel.tlb" "F:\SMS\bin\x64\microsoft.configurationmanager.bgbserverchannel.dll"
<04/14/15 09:04:16> CTool::RegisterComPlusService: Failed to register F:\SMS\bin\x64\microsoft.configurationmanager.bgbserverchannel.dll with .Net Fx 4.0
<04/14/15 09:04:16> Cannot register BGB server channel DLL F:\SMS\bin\x64\microsoft.configurationmanager.bgbserverchannel.dll. Installation cannot continue.
<04/14/15 09:04:16> Fatal MSI Error - bgbisapi.msi could not be installed.
<04/14/15 09:04:16> ~RoleSetup().

You can see from the log file that it is trying to run the following commands:

”C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegSvcs.exe" /u "F:\SMS\bin\x64\microsoft.configurationmanager.bgbserverchannel.dll"

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegSvcs.exe" /extlb /tlb:"F:\SMS_CCM\microsoft.configurationmanager.bgbserverchannel.tlb" "F:\SMS\bin\x64\microsoft.configurationmanager.bgbserverchannel.dll"

When I ran the commands manually I got the following output which you will see includes a return code and some good clues as to the problem.

An unknown exception occurred during installation:
1: System.Transactions.TransactionException - The Transaction Manager is not available. (Exception from HRESULT: 0x8004D01B)
2: System.Runtime.InteropServices.COMException - The Transaction Manager is not available. (Exception from HRESULT: 0x8004D01B)

If you search that return code on the web you will see that it simply means exactly the same as what is in the message. Armed with some knowledge and logical thinking, this lead me onto checking the Distributed Transaction Coordinator service on the management point server. Low and behold it was disabled (I believe this may have been a local security policy for my customer but I am still investigating this). I changed the service startup type to manual (initially) and started the service. You can either wait an hour or if you have the luxury restart Configuration Manager or the whole primary site server and this will trigger another attempt. With the DTC service running the install now completed successfully:

<04/14/15 09:45:37> ====================================================================
<04/14/15 09:45:37> SMSBGB Setup Started....
<04/14/15 09:45:37> Parameters: \\CMSERVER02.CORP.DOMAIN.COM\F$\SMS\bin\x64\rolesetup.exe /install /siteserver PSS01SMSBGB 0
<04/14/15 09:45:37> Installing Pre Reqs for SMSBGB
<04/14/15 09:45:37>         ======== Installing Pre Reqs for Role SMSBGB ========
<04/14/15 09:45:37> Found 1 Pre Reqs for Role SMSBGB
<04/14/15 09:45:37> Pre Req SqlNativeClient found.
<04/14/15 09:45:37> SqlNativeClient already installed (Product Code: {49D665A2-4C2A-476E-9AB8-FCC425F526FC}). Would not install again.
<04/14/15 09:45:37> Pre Req SqlNativeClient is already installed. Skipping it.
<04/14/15 09:45:37>         ======== Completed Installation of Pre Reqs for Role SMSBGB ========
<04/14/15 09:45:37> Installing the SMSBGB
<04/14/15 09:45:37> Passed OS version check.
<04/14/15 09:45:37> IIS Service is installed.
<04/14/15 09:45:37> SMSBGB already installed (Product Code: {A78E8003-2307-4B70-B7CD-1A07C0A31D21}).  Upgrading/Reinstalling SMSBGB
<04/14/15 09:45:37> New SMSBGB is the same product code.  This is a minor upgrade.
<04/14/15 09:45:37> Enabling MSI logging.  bgbisapi.msi will log to F:\SMS\logs\bgbisapiMSI.log
<04/14/15 09:45:37> Installing F:\SMS\bin\x64\bgbisapi.msi REINSTALL=ALL REINSTALLMODE=vmaus CCMINSTALLDIR="F:\SMS_CCM" CCMSERVERDATAROOT="F:\SMS" USESMSPORTS=TRUE SMSPORTS=80 USESMSSSLPORTS=TRUE SMSSSLPORTS=443 USESMSSSL=TRUE SMSSSLSTATE=0 CCMENABLELOGGING=TRUE CCMLOGLEVEL=1 CCMLOGMAXSIZE=1000000 CCMLOGMAXHISTORY=1
<04/14/15 09:45:45> bgbisapi.msi exited with return code: 0
<04/14/15 09:45:45> Installation was successful.
<04/14/15 09:45:45> CTool::RegisterComPlusService: run command line: "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegSvcs.exe" /u "F:\SMS\bin\x64\microsoft.configurationmanager.bgbserverchannel.dll"
<04/14/15 09:45:51> CTool::RegisterComPlusService: Failed to unregister F:\SMS\bin\x64\microsoft.configurationmanager.bgbserverchannel.dll with .Net Fx 4.0
<04/14/15 09:45:51> CTool::RegisterComPlusService: run command line: "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegSvcs.exe" /extlb /tlb:"F:\SMS_CCM\microsoft.configurationmanager.bgbserverchannel.tlb" "F:\SMS\bin\x64\microsoft.configurationmanager.bgbserverchannel.dll"
<04/14/15 09:45:56> Successfully registered BGB server channel DLL F:\SMS\bin\x64\microsoft.configurationmanager.bgbserverchannel.dll
<04/14/15 09:45:56> CTool::InstallManagedAssembly: run command line: "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe" "F:\SMS\bin\x64\microsoft.configurationmanager.bgbserverchannel.dll"
<04/14/15 09:46:00> Successfully installed BGB server channel DLL F:\SMS\bin\x64\microsoft.configurationmanager.bgbserverchannel.dll
<04/14/15 09:46:00> VERBOSE: GetAccountNameFromSID: LookupAccountSid succeeded. Result = NT AUTHORITY\SYSTEM
<04/14/15 09:46:00> VERBOSE: GetAccountNameFromSID: LookupAccountSid succeeded. Result = NT AUTHORITY\LOCAL SERVICE
<04/14/15 09:46:00> VERBOSE: GetAccountNameFromSID: LookupAccountSid succeeded. Result = NT AUTHORITY\IUSR
<04/14/15 09:46:00> Successfully configured BGB server application
<04/14/15 09:46:00> CreateProcess: F:\SMS, C:\Windows\system32\inetsrv\appcmd.exe set config "Default Web Site/bgb" -section:system.webServer/serverRuntime /appConcurrentRequestLimit:"25600" /maxRequestEntityAllowed:"16384"  /commit:apphost
<04/14/15 09:46:01> CreateProcess: 0
<04/14/15 09:46:01> CreateProcess: F:\SMS, C:\Windows\system32\inetsrv\appcmd.exe set apppool "CCM Client Notification Proxy Pool" /autoStart:true
<04/14/15 09:46:01> CreateProcess: 0
<04/14/15 09:46:01> CreateProcess: F:\SMS, C:\Windows\system32\inetsrv\appcmd.exe start apppool "CCM Client Notification Proxy Pool"
<04/14/15 09:46:01> CreateProcess: 0
<04/14/15 09:46:01> ~RoleSetup().

So in summary for the skim readers amongst us – make sure the Distributed Transaction Coordinator service is running on the management point server.