| Previous | Next |
| XACT_E_XTIONEXISTS | XACT_E_INVALIDCOOKIE |
XACT_E_NOIMPORTOBJECT
XACT_E_NOIMPORTOBJECT is the failure HRESULT 0x8004D014 (signed decimal -2147168236, unsigned decimal 2147799060). Its severity bit is 1, facility is 4 (FACILITY_ITF), and the facility-specific code field is 0xD014.
Transaction propagation reached the import stage without an import object
This HRESULT means that an import object for the transaction could not be found. In DTC propagation, a resource manager uses ITransactionImport to transform an opaque transaction cookie into a transaction object before enlistment.
AllStat records the Windows message as: “An import object for the transaction could not be found.” This text should be interpreted at the transaction stage described below rather than as a generic COM failure.
The contract boundary to identify
The failure occurs before the receiving resource manager has a usable imported transaction object. It differs from a malformed cookie: the named condition is absence of the import facility or object needed to process the cookie. The caller should identify which DTC proxy core object and process boundary were involved.
Likely causes to separate
- The receiving process did not initialize or obtain the DTC proxy interface used for import.
- A cached proxy or import object was released, invalidated, or belongs to a previous DTC instance.
- Transaction propagation reached a component that supports local enlistment but not imported cookies.
- Service restart or process-lifetime ordering left the receiver with stale propagation state.
Evidence worth preserving
- Record the source and destination processes, transaction UOW, cookie length and hash, and DTC instance identity.
- Capture the result of obtaining
ITransactionImportseparately from the laterImportcall. - Log proxy initialization and service-restart events around the first failure.
- Preserve whether the same receiver can import a newly exported transaction after reinitialization.
Diagnostic sequence
- Verify that the receiver queries the DTC proxy core object for
ITransactionImportas documented. - Ensure the import interface remains alive until the cookie has been converted and the resource manager has enlisted.
- Invalidate cached proxy objects when MSDTC or the hosting process restarts.
- Test export and import in one process pair before diagnosing network propagation or resource-manager voting.
Retry and recovery
Recreate the DTC proxy/import path and export a fresh cookie for a transaction that is still active. Retrying an old cookie against a newly created import object may be unsafe if the original transaction has completed, so transaction status must be checked first.
What this HRESULT does not establish
This HRESULT does not say that the cookie bytes are invalid; XACT_E_INVALIDCOOKIE covers that condition. It also does not prove that the destination transaction manager is offline.
Difference from nearby transaction results
XACT_E_INVALIDCOOKIE means an import object received an invalid transaction cookie. XACT_E_DEST_TMNOTAVAILABLE identifies destination transaction-manager availability rather than the local import interface.
Practical scenario
A resource-manager service caches its DTC proxy across a coordinator restart. The next propagated transaction has a valid cookie, but the stale process state cannot provide the expected import object. The service recreates the proxy and imports a newly exported active transaction.
Guidance for software and telemetry
Treat proxy lifetime and transaction lifetime as distinct. Log cookie metadata without logging opaque transaction contents, and correlate export, transport, import, and enlistment as separate stages.
Official Microsoft references
- Microsoft: COM transaction error codes
- Microsoft: ITransactionImport
- Microsoft: transaction propagation to a resource manager
- Microsoft: DTC transaction object
- Microsoft: HRESULT values in MS-ERREF
Looking for a different code? Search another status or error code.