0X8004E00F

Fix CONTEXT_E_TMNOTAVAILABLE (0x8004E00F) COM+ MSDTC Error

This error shows up when COM+ can't reach MSDTC — usually after a Windows update or service crash. Here's how to fix it.

When This Error Shows Up

You're running a legacy line-of-business app — maybe an old ASP.NET site or a custom COM+ component — and it suddenly fails with CONTEXT_E_TMNOTAVAILABLE (0x8004E00F). The app logs say COM+ couldn't talk to the Microsoft Distributed Transaction Coordinator (MSDTC). This usually happens right after a Windows patch Tuesday update, or when someone tinkered with Services.msc and disabled MSDTC. I've seen it most often on Windows Server 2016 and 2019, but it also hits Windows 10 Pro machines running SQL Server Express.

The real trigger? A missing or misconfigured MSDTC service. COM+ relies on MSDTC to coordinate transactions across multiple databases or queues. When MSDTC isn't running, or its security settings block local or remote connections, you get this 0x8004E00F error.

Root Cause

Let's cut through the jargon. MSDTC is a Windows service that acts like a traffic cop for transactions that need to span multiple resources — say, updating two databases at once. COM+ components call on MSDTC to manage the commit or rollback. If MSDTC is stopped, disabled, or its firewall rules are wrong, COM+ throws CONTEXT_E_TMNOTAVAILABLE.

The most common causes I run into:

  • MSDTC service set to Manual or Disabled — Windows updates love to reset service startup types. I've seen KB5003635 do this.
  • Network DTC Access turned off — even for local transactions, the default security settings after a clean install block everything.
  • Firewall blocking port 135 and RPC dynamic ports — MSDTC needs these open.
  • Corrupted MSDTC logs — rare, but a crash can leave the log file in a bad state.

The Fix — Step by Step

Before you start, make sure you're logged in as an administrator. You'll need to restart services a few times. I usually run through these steps in order — don't skip around unless you're sure about the specific issue.

Step 1: Check MSDTC Service Status

  1. Press Win + R, type services.msc, and hit Enter.
  2. Scroll down to Distributed Transaction Coordinator. Double-click it.
  3. Look at the Startup type field. It should say Automatic.
  4. If the Service status is Stopped, click Start.
  5. Click Apply and then OK.

After this step, you should see the service status change to Running. If it fails to start, check the Event Viewer logs — we'll get to that later.

Step 2: Configure MSDTC Security Settings

  1. Open Component Services: press Win + R, type dcomcnfg, and hit Enter.
  2. In the left pane, expand Component Services > Computers > My Computer > Distributed Transaction Coordinator.
  3. Right-click Local DTC and select Properties.
  4. Go to the Security tab.
  5. Under Network DTC Access, check Network DTC Access.
  6. Under Transaction Manager Communication, check Allow Inbound and Allow Outbound.
  7. For Authentication Required, leave it on Mutual Authentication Required unless your app specifically needs No Authentication (rare).
  8. Check Enable XA Transactions if your app uses XA — otherwise leave it off.
  9. Click Apply and then OK. A dialog says "Changes will take effect after MSDTC is restarted". Click Yes.

After restarting, go back to Services.msc and verify MSDTC is still running. If it stopped, start it manually.

Step 3: Open Firewall Ports for MSDTC

  1. Open Windows Defender Firewall with Advanced Security. (Press Win + R, type wf.msc.)
  2. Click Inbound Rules, then New Rule in the right pane.
  3. Select Port, then Next.
  4. Select TCP, and in Specific local ports, type 135. Click Next.
  5. Select Allow the connection, then Next.
  6. Check Domain, Private, and Public (if the app is on a domain, Domain is enough). Click Next.
  7. Give it a name like "MSDTC RPC Endpoint Mapper". Click Finish.

But wait — MSDTC also uses a range of dynamic RPC ports. To keep it simple, I create a second inbound rule for the MSDTC process itself:

  1. Back in Inbound Rules, click New Rule again.
  2. This time select Program, then Next.
  3. Browse to C:\Windows\System32\msdtc.exe. Click Next.
  4. Select Allow the connection, then Next.
  5. Leave all profiles checked, give it a name like "MSDTC Service", and click Finish.

After adding these rules, open CMD as admin and run net stop msdtc && net start msdtc to restart the service cleanly.

Step 4: Reset MSDTC (If Still Broken)

If the error persists, MSDTC logs might be corrupt. Here's the nuclear option — but it's safe:

  1. Open an elevated Command Prompt (Win + R, type cmd, right-click and run as admin).
  2. Stop MSDTC: net stop msdtc
  3. Uninstall MSDTC: msdtc -uninstall
  4. Wait for the confirmation message, then reinstall: msdtc -install
  5. Start MSDTC: net start msdtc

This recreates the log files and resets all settings to defaults. You'll need to redo the security configuration from Step 2.

Step 5: Verify in Event Viewer

  1. Open Event Viewer (Win + R, type eventvwr.msc).
  2. Go to Windows Logs > System.
  3. Filter by source MSDTC or COM+.
  4. Look for event IDs 4100, 4101, or 4199. These tell you exactly why MSDTC failed — often a missing dependency like the Remote Procedure Call (RPC) service.

If It Still Fails

Three things I've seen trip people up:

  • The app runs as a specific user — that account needs Log on as a service rights. Check Local Security Policy > Local Policies > User Rights Assignment.
  • Third-party antivirus — some suites (looking at you, McAfee) block MSDTC even with the firewall rules in place. Temporarily disable it to test.
  • SQL Server is involved — if the app talks to SQL, make sure the SQL Server service account has permission to call MSDTC. Run dtcping from the SQL machine to test connectivity: dtcping <server>.

I've fixed hundreds of these. In 9 out of 10 cases, step 2 (security settings) and step 3 (firewall) are the culprits. Don't overthink it — start there.

Related Errors in Windows Errors
0XC00D10C8 Fix NS_E_WMPCORE_MEDIA_URL_TOO_LONG (0XC00D10C8) in Windows Media Player 0X0000209A Fixing ERROR_DS_ATTRIBUTE_OWNED_BY_SAM (0x0000209A) 0X8011041D Fix COMADMIN_E_DLLLOADFAILED (0X8011041D) – DLL Load Error 0XC01E0327 STATUS_GRAPHICS_PATH_NOT_IN_TOPOLOGY (0XC01E0327) Fix

Was this solution helpful?

EP
Erropedia Team
Tech Support Editors
The Erropedia editorial team researches and documents real-world tech errors from across Windows, Linux, macOS, networking, databases, cloud platforms, and more. Every solution is reviewed for accuracy and updated as software and systems evolve.