Scoping
Scoping refines source data in-memory — using filters and joins — to define the exact dataset that flows into downstream processing. It's available in every DSP rules engine: #Batch, #Data List, #Trigger, #Action Button, and #Data Loader.
Key functions:
Scope Filters (in-memory filtering) — Use DSP formulas and expressions to determine which source records proceed to Match, Mapping, and Action steps.
Source Joins — Combine source data with another object (from any Connection) or with a JSON array. DSP supports left joins and cross joins, enabling multi-source refinement and dynamic filtering.
Scoping is intended for advanced data shaping that can't be expressed in the initial SOQL query (Retrieve). It runs after data is retrieved or uploaded — but before Match, Mapping, and Actions.

Joiner | Defines a second record set to form a join with the retrieved source data by using the JOIN_JSON or JOIN_OBJECT function. If matching field(s) are provided, DSP performs a left join; otherwise, it defaults to a cross join (also known as a Cartesian product). Following the join, the combined record set will become the source data for the execution flow. To reference fields from the second record set in the filters or field mappings, utilize the symbol $Joiner (e.g. $Joiner.FieldA__c). |
Scope Filter | DSP expression that evaluates each source record for inclusion in processing; records for which it returns false or $SKIP_ASSIGNMENT are excluded from further processing. |
Scope Filter(Pipeline) | A concise (255-character) version of the "Additional Scope Criteria" specified in the associated Pipeline record. |
Scope Filter(Post Join) | DSP expression that evaluates each joined record after the Join process; records for which it returns false or $SKIP_ASSIGNMENT are excluded from further processing. |
Scope Filter(Before Insert Trigger) | Additional filter applied to evaluate the scoped records when being executed in the Before Insert trigger of the source object. |
Scope Filter(Before Update Trigger) | Additional filter applied to evaluate the scoped records when being executed in the Before Update trigger of the source object. |
Scope Filter(Before Delete Trigger) | Additional filter applied to evaluate the scoped records when being executed in the Before Delete trigger of the source object. |
Scope Filter(After Insert Trigger) | Additional filter applied to evaluate the scoped records when being executed in the After Insert trigger of the source object. |
Scope Filter(After Update Trigger) | Additional filter applied to evaluate the scoped records when being executed in the After Update trigger of the source object. |
Scope Filter(After Delete Trigger) | Additional filter applied to evaluate the scoped records when being executed in the After Delete trigger of the source object. |
Scope Filter(After Undelete Trigger) | Additional filter applied to evaluate the scoped records when being executed in the After Undelete trigger of the source object. |
Data List Joiner | Specifies a Data List Executable to act as a joiner. When set, clicking the Action Button opens the Data List for row selection; selected rows are cross-joined with the source data to enrich the scoped dataset. |
Data Lists Joiner | Specifies a Data List Pipeline to act as a joiner. When set, clicking the Action Button opens the Data Lists for row selection; selected rows are cross-joined with the source data to enrich the scoped dataset. |
Joiner Last Chained Data List | Read-only field automatically calculated to identify the last Data List in the Action Button’s Joiner chained flow. |
Joiner Last Chained Data Lists | Read-only field automatically calculated to identify the last Data List Pipeline in the Action Button’s Joiner chained flow. |
Use Page Record as Joiner Context? | Applies when a Data List(s) Joiner is configured for an Action Button Executable. By default, the Action Button input is used as the Context Record(s) for resolving dynamic filters in the Data List(s) Joiner. If enabled, the current page record is used as the Context Record instead. |