I've had to do this too, it has to do with these rules being part of a shim layer. XT.data() sometimes needs to grab the pkey or the uuid from the persist to use as the key in child persistence. Putting a returning in the rule is the most straightforward way to do this; it's only unfortunate that you have to put in all that nonsense to mimic the signature of the insert.