I know there is ParentNoSwitchIfCommitted to stop the parent being switched if the record has been saved.

That might be one possible solution. But it would mean us having to go through everything to check every DD for what should be allowed. I'm guessing it would throw an error too rather that updating the file buffer. Request_validate seems to work too, but has the same consequence of us having to go through everything with a fine tooth comb.

We haven't changed any code for this part of the system between using 19.0 and 19.1.

It works as (we) expected in 19.0, but not as (we) expected in 19.1.

The sample project I posted only had 1 user and 1 button so nothing multiuser going on here. Just the file buffer being changed by another part of the save process after the request_save is called. The DD has the correct record (until the second loop save).

It's also unusual that the top level DD could find the incorrect record as the constraint should mean that it shouldn't be able to.