How the commit order is chosen
The checker reads what every set creates, deletes and points to, then applies three rules in this order:
- Commit-time needs first. A table must exist before its fields, and a record must exist before another record points to it by sys_id. These are the dependencies that break a preview or a commit, so they decide the order.
- Newest version last. When a record is in several sets, the set with its most recently updated version goes after the others, so newer work is not overwritten by older work.
- Then in the order the sets were finished. Everything else follows the time of each set’s last change, which is how most teams already commit.
When two sets need each other, no order works for both. The checker says so; commit them together in a batch, or move the shared records into one set.
Commit time and run time
Some references must resolve as the update set is committed: a field on a table that does not exist yet, or a reference field that points
to a record by sys_id. Others are only read when the record runs: a script include called from a business rule, a property read with
gs.getProperty(), an event in a notification, a field in an email template. The first kind decides the order. The second kind
only needs every set to be committed before the feature is used, and the checker lists it under “Used across sets”.
What the checker cannot see
- The target instance. It cannot tell whether a group, table or newer local change already exists there. Preview every set on the target as usual.
- Platform records. Out-of-box tables and fields exist everywhere, so only custom ones (u_ and x_) count as created by a set.
- Every kind of reference. Dependencies are read from field values and scripts. A name built at run time, such as a table name in a variable, is not found.