For a bit more info, it seems that the issue with transaction participation is peculiar to the newStatefulKnowledgeSession() call. When loading one from the database with JPAKnowledgeService.loadStatefuleKnowledgeSession(), it participates normally, and wrapping the UserTransaction around it causes issues, instead. Having to work with transactions in different modes like this really is bad for maintenance, as it adds a level of complexity to the whole system. I wasn't able to find anything in the Jira issues about this, is it a known issue already? I should be able to provide a unit test to replicate it without much effort, if that would help.