0X8004D014: XACT_E_NOIMPORTOBJECT Transaction Import Object Missing
This COM+ error means DTC can't find the transaction import object. Usually a dirty MSDTC configuration or firewall blocking RPC. Here's exactly what breaks and how to fix it.
Quick answer for advanced users
Restart MSDTC with net stop msdtc && net start msdtc, then verify DTC security settings under Component Services — both "Allow Remote Clients" and "Allow Remote Administration" must be checked for the import object to register. If that doesn't take, the DTC registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security has likely gotten corrupted from a partial uninstall or registry cleaner.
Why this happens
What's actually happening here is the Distributed Transaction Coordinator (MSDTC) has lost its ability to create or find the transaction import object — a COM object that handles incoming distributed transactions from remote machines. You'll usually see this error in a COM+ application log, or when a client app calls ITransactionImport::Import and gets back this exact HRESULT. The root cause is almost always one of three things: (1) MSDTC was recently reinstalled or upgraded, leaving orphaned registry entries, (2) a firewall or group policy change blocked the RPC port range MSDTC uses (ports 1024-65535 by default), or (3) the DTC security settings got toggled off through a script or admin tool. Windows Server 2019 and 2022 are the most common victims because they tighten default firewall rules. I've also seen this on clustered SQL Server instances where a failover left DTC in a half-started state.
Fix steps (in order)
- Restart MSDTC cleanly — Open an admin command prompt and run:
This forces a full re-registration of the DTC COM objects, including the import object. Don't skip the uninstall/reinstall step — just restarting won't fix a corrupted object registration.net stop msdtc
msdtc -uninstall
msdtc -install
net start msdtc - Verify DTC security — Open
dcomcnfg, go to Component Services > Computers > My Computer > Distributed Transaction Coordinator > Local DTC. Right-click Local DTC, pick Properties, then the Security tab. Make sure these are checked: Network DTC Access, Allow Remote Clients, Allow Remote Administration, Allow Inbound, Allow Outbound. Authentication should be set to Mutual Authentication Required (or Incoming and Outgoing if you're on older systems). Apply, then restart MSDTC. - Check the registry key — Run
regeditand navigate toHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security. Look for a DWORD value namedImportedTransactionEnabled. If it's missing or set to 0, set it to 1 (hex). Also verify thatNetworkDtcAccessis 1 andNetworkDtcAccessTransactionsis 1. If these are missing entirely, you've got a deeper registry corruption — consider backing up the key and importing from a working machine of the same OS version. - Open the right firewall ports — MSDTC uses RPC dynamic port allocation. The easiest fix: run
netsh advfirewall firewall add rule name="MSDTC-TCP" dir=in action=allow protocol=TCP localport=135 program="%SystemRoot%\system32\msdtc.exe"for the RPC endpoint mapper, then allow all outbound TCP on ports 1024-65535 for the dynamic ports. If your security team balks at that range (reasonable), configure a fixed port range for MSDTC viaHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\Internet— setPortsto a narrow range like 5000-5100, andPortsInternetAvailabletoY. - Test with dtcping — Download the dtcping tool from Microsoft's site. On the client machine:
dtcping -s <server_name>. If it fails with "Ping failed with error 0x8004d014", the import object isn't reachable. Run the same test withdtcping -c <server_name>to check both directions. If the server can ping itself but the client can't, it's a firewall issue on the client side.
Alternative fixes if the main steps don't work
- Reinstall the MSDTC role — On Windows Server, go to Server Manager > Manage > Remove Roles and Features, uncheck Distributed Transaction Coordinator, reboot, then add it back. This rewrites all the COM registrations from scratch. I've seen this fix machines where even the uninstall script failed to clean the registry.
- Check for third-party antivirus interference — Symantec Endpoint Protection and McAfee have both been known to block MSDTC's inter-process communication. Temporarily disable the AV, restart MSDTC, and test. If the error disappears, add an exception for
msdtc.exein your AV policy. - Use a single-machine DTC test — If you can't get cross-machine transactions working, try running two test transactions on the same machine. If they succeed, your problem is definitely network-related. If they also fail, you've got a local DTC corruption that requires the full role reinstall mentioned above.
Prevention tips
Don't let Windows Update or third-party registry cleaners touch the MSDTC registry keys. Each time you update the OS, check that DTC security settings survived — I've seen cumulative updates for .NET Framework reset the DTC security to defaults. Document the firewall port range your DTC uses, and pin it to a fixed range if you can, so you don't get surprised by a dynamic port conflict after a reboot. On clustered servers, always stop DTC gracefully with net stop msdtc before a failover. For SQL Server environments, enable the sp_configure 'remote proc trans' setting only after you've confirmed DTC works, because enabling it without a working DTC will break all distributed queries.
Was this solution helpful?