Transaction Safe or Full Assessment?

When records are being assessed for FormulaShare sharing changes, this will be done in one of two ways:

  • Transaction Safe means that rules assessed are only those which can be calculated without adding significantly to the processing overhead of a transaction. Transaction Safe assessment can be safely mixed with other automation on the object, and is the mode of operation for:
  • Full Assessment means all rules on the object will be assessed. This is safe for use in batch operations, and from synchronous apex and flow operations where records in objects involved in sharing have very low risk of data skew. This is the mode of operation for:

Because transaction safe operations don't include assessment of every type of rule, and because certain changes might not be picked up in triggers or record triggered flows (e.g. changes to parent records referenced in formula fields) it's important to use the full recalculation batch or targeted calculation jobs to make sure all sharing changes are applied.
 

Which Rules are Applied in Transaction Safe Operations?

Standard rules (those where the sharing field is on the shared object itself) are always applied to records in the scope of record triggered flows or apex triggers. More detail and considerations around formula fields are outlined in the standard rules section.

For cross-object rules, whether they're applied in transaction safe operations depends on the structure of the rule, which object is being updated and its relationship with the shared object. Full information is outlined in the cross-object rules section.

New sharing is always created for any rules assessed in transaction safe operations, however sharing which no longer meets the scope of a rule will only be removed if either:

  • The shared object is a custom object and the rule being assessed is a standard rule, or a cross-object rule where sharing is based on a parent record
  • The shared object is a standard object and all of the following apply:
    • Removal Strategy for the shared object are set to Fully Managed
    • All rules sharing the object are standard rules or cross-object rules where sharing is based on a parent record
    • The transaction is acting on the full set of rules on the object (i.e. the trigger or flow has not been configured to apply only specific rules)