Suppose that we are synchronizing records from a SalesForce report. Also, suppose that you specified a filtering criteria on your report, such as "status must be Closed Won". Sales Cookie will synchronize all records whose status is "Closed Won".
However, consider the following scenario:
- Sales Cookie synchronized record A because it was "Closed Won" and so appeared in the report
- Someone changes the record A's state from "Closed Won" to "Closed Lost"
- Record A no longer matches the report's filtering criteria (the record has "dropped off" the report)
- Sales Cookie's synchronization no longer sees record A when pulling data from the report
- Record A remains stuck with status "Closed Won" within Sales Cook
Perhaps, you would expect Sales Cookie to delete record A. For safety, we will not delete record A, just because it no longer appears in the report. Indeed, this would be very risky (ex: if someone alters your report, it could trigger deletion of hundreds of transactions within Sales Cookie). Also, some calculations may reference record A.
For this reason, your report should NOT filter records such that, if changed, those records would no longer be returned, as this will prevent synchronization of those changes.
Instead, remove your filtering criteria from your report. This allows Sales Cookie's synchronization to observe changes made to all records. Within Sales Cookie, we can filter records as needed (ex: only select records whose status is "Closed Won").
For a related issue regarding delete propagation, click here.