Buggy code:
class TransactionSubsystemAdd implements ModelAddOperationHandler , BootOperationHandler { static final TransactionSubsystemAdd INSTANCE = new TransactionSubsystemAdd ( ) ; private static final String INTERNAL_OBJECTSTORE_PATH = "jboss.transactions.object.store.path" ; private static final Logger log = Logger . getLogger ( "org.jboss.as.transactions" ) ; private TransactionSubsystemAdd ( ) { } @ Override public OperationResult execute ( final OperationContext context , final ModelNode operation , final ResultHandler resultHandler ) { if ( context instanceof BootOperationContext ) { ( ( BootOperationContext ) ( context ) ) . addDeploymentProcessor ( INSTALL , INSTALL_TRANSACTION_BINDINGS , new TransactionJndiBindingProcessor ( ) ) ; } final ModelNode compensatingOperation = Util . getResourceRemoveOperation ( operation . require ( OP_ADDR ) ) ; final String bindingName = operation . get ( CORE_ENVIRONMENT ) . require ( BINDING ) . asString ( ) ; final String recoveryBindingName = operation . get ( RECOVERY_ENVIRONMENT ) . require ( BINDING ) . asString ( ) ; final String recoveryStatusBindingName = operation . get ( RECOVERY_ENVIRONMENT ) . require ( STATUS_BINDING ) . asString ( ) ; final String nodeIdentifier = ( operation . get ( CORE_ENVIRONMENT ) . has ( NODE_IDENTIFIER ) ) ? operation . get ( CORE_ENVIRONMENT , NODE_IDENTIFIER ) . asString ( ) : "1" ; final boolean coordinatorEnableStatistics = operation . get ( COORDINATOR_ENVIRONMENT , ENABLE_STATISTICS ) . asBoolean ( false ) ; final String objectStorePathRef = "jboss.server.data.dir" ; final String objectStorePath = "tx-object-store" ; final int maxPorts = 10 ; final int coordinatorDefaultTimeout = 300 ; final ModelNode subModel = context . getSubModel ( ) ; subModel . get ( CORE_ENVIRONMENT , BINDING ) . set ( operation . get ( CORE_ENVIRONMENT ) . require ( BINDING ) ) ; subModel . get ( CORE_ENVIRONMENT , NODE_IDENTIFIER ) . set ( operation . get ( CORE_ENVIRONMENT , NODE_IDENTIFIER ) ) ; subModel . get ( RECOVERY_ENVIRONMENT , BINDING ) . set ( operation . get ( RECOVERY_ENVIRONMENT ) . require ( BINDING ) ) ; subModel . get ( RECOVERY_ENVIRONMENT , STATUS_BINDING ) . set ( operation . get ( RECOVERY_ENVIRONMENT , STATUS_BINDING ) ) ; subModel . get ( COORDINATOR_ENVIRONMENT , ENABLE_STATISTICS ) . set ( operation . get ( COORDINATOR_ENVIRONMENT , ENABLE_STATISTICS ) ) ; if ( ( context . getRuntimeContext ( ) ) != null ) { context . getRuntimeContext ( ) . setRuntimeTask ( new RuntimeTask ( ) { public void execute ( RuntimeTaskContext context ) throws OperationFailedException { final ServiceTarget target = context . getServiceTarget ( ) ; final XATerminatorService xaTerminatorService = new XATerminatorService ( ) ; target . addService ( JBOSS_TXN_XA_TERMINATOR , xaTerminatorService ) . setInitialMode ( ACTIVE ) . install ( ) ; final ArjunaRecoveryManagerService recoveryManagerService = new ArjunaRecoveryManagerService ( ) ; target . addService ( JBOSS_TXN_ARJUNA_RECOVERY_MANAGER , recoveryManagerService ) . addDependency ( OPTIONAL , JBOSS . append ( "iiop" , "orb" ) , ORB . class , recoveryManagerService . getOrbInjector ( ) ) . addDependency ( JBOSS_BINDING_NAME . append ( recoveryBindingName ) , SocketBinding . class , recoveryManagerService . getRecoveryBindingInjector ( ) ) . addDependency ( JBOSS_BINDING_NAME . append ( recoveryStatusBindingName ) , SocketBinding . class , recoveryManagerService . getStatusBindingInjector ( ) ) . setInitialMode ( ACTIVE ) . install ( ) ; final ArjunaTransactionManagerService transactionManagerService = new ArjunaTransactionManagerService ( nodeIdentifier , maxPorts , coordinatorEnableStatistics , coordinatorDefaultTimeout ) ; target . addService ( JBOSS_TXN_ARJUNA_TRANSACTION_MANAGER , transactionManagerService ) . addDependency ( OPTIONAL , JBOSS . append ( "iiop" , "orb" ) , ORB . class , transactionManagerService . getOrbInjector ( ) ) . addDependency ( JBOSS_TXN_XA_TERMINATOR , JBossXATerminator . class , transactionManagerService . getXaTerminatorInjector ( ) ) . addDependency ( JBOSS_BINDING_NAME . append ( bindingName ) , SocketBinding . class , transactionManagerService . getSocketProcessBindingInjector ( ) ) . addDependency ( AbstractPathService . pathNameOf ( TransactionSubsystemAdd . INTERNAL_OBJECTSTORE_PATH ) , String . class , transactionManagerService . getPathInjector ( ) ) . addDependency ( JBOSS_TXN_ARJUNA_RECOVERY_MANAGER ) . setInitialMode ( ACTIVE ) . install ( ) ; TransactionManagerService . addService ( target ) ; UserTransactionService . addService ( target ) ; <START_BUG> target . addService ( JBOSS_TXN_USER_TRANSACTION_REGISTRY , new UserTransactionRegistryService ( ) ) ; <END_BUG> TransactionSynchronizationRegistryService . addService ( target ) ; RelativePathService . addService ( TransactionSubsystemAdd . INTERNAL_OBJECTSTORE_PATH , objectStorePath , objectStorePathRef , target ) ; try { Class . forName ( "com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple" , true , getClass ( ) . getClassLoader ( ) ) ; } catch ( ClassNotFoundException e ) { TransactionSubsystemAdd . log . warn ( "Could<seq2seq4repair_space>not<seq2seq4repair_space>load<seq2seq4repair_space>com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple" , e ) ; } resultHandler . handleResultComplete ( ) ; } } ) ; } else { resultHandler . handleResultComplete ( ) ; } return new org . jboss . as . controller . BasicOperationResult ( compensatingOperation ) ; } }

Fix:
target . addService ( JBOSS_TXN_USER_TRANSACTION_REGISTRY , new UserTransactionRegistryService ( ) ) . setInitialMode ( ACTIVE ) . install ( ) ;