It is bad/broken design. Only going through TransactionManager/UserTransaction do you get thread-to-transaction association/disassociation. (Same as using Current in OTS). If you terminate the transaction directly through Transaction (equivalent to using the Terminator in OTS) then you the thread-to-transaction association is not modified. You'll need to either use TM/UT or do an explicit suspend afterwards on the calling thread.