feat: sourceRecordsFilter option added #936
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Resolves #935
Added the
sourceRecordsFilter
which behaves similar to targetRecordsFilter for the ScriptObject .Unit tests for this contribution are available here:
I've written some basic documentation below.
Overview
Purpose: This feature provides an additional method to apply filters only when retrieving them from the Source environment. The filters are not applied to the Target environment.
Use case: In some scenarios, the filter condition will only work in the context of the source environment. For example, a parent "Event" object whose "Start Time" depends on children "Block" objects, but the Block objects are not being migrated. This is especially important for
UPSERT
operations, as this relies on equivalent Source and Target objects (by theirexternalId
) to be matched to determine whether toUPDATE
orINSERT
. With the source-only condition never satisfying any Target objects, onlyINSERT
will be used, resulting in duplicate records.Examples of Using Source Record Filter
Supposed you have an Event whose Start Time is calculated by the minimum Block time:
The settings below will retrieve all Event records made after 2024 from the Source, then insert all records retrieved to the Target without applying the same filter.
Understanding the TargetRecordsFilter Syntax
The
sourceRecordsFilter
uses the same syntax as regular SOQL. Please note that this behaviour is slightly different from thetargetRecordsFilter
.