I also don't like the idea that the transaction needs an extra collection. But I realized that the failedList in BasicAction does not always contain all failed records. E.g. if there is a ONE_PHASE_ERROR inside onePhaseCommit then the record is not added to failedList. In this case after the onePhaseCommit neither BasicAction nor TransactionImple has any reference to the failed record. That is why I introduced the list of ExceptionDeferrers in TransactionImple. I will investigate further to find a solution.