The propagation="REQUIRES_NEW" setting was only for the create* methods in the repository. And, no, you can't just set all the methods to REQUIRES_NEW and hope it will just work - the step implementations rely on the business transaction to co-ordinate with the meta-data transaction.

The single threaded case works because you only ever have one transaction, so there is no chance that the updates to the step execution are not visible to the repository. For a long-running job this is going to be *really* expensive (especially on rollback).