Suppose that we are synchronizing records from a SalesForce report. If a record is deleted within SFDC, this record won't be returned any more by your report. In other terms, deleting a record makes it "fall out" from the report.
Sales Cookie could decide to delete transactions for records which no longer appear in your report. This might be quite reasonable if a record was hard-deleted. However, other scenarios could also cause records to no longer appear in your report, in which case deleting transactions could be catastrophic.
Consider the following similar scenarios:
- By mistake, someone changed your report's definition (ex: added a filter). We would then delete transactions for records which no longer appear in your report.
- Your report had a filter such as "records updated within the last 30 days". After some time, older records will "drop off" the report. We would then delete transactions for records which no longer appear in your report.
- The report had a filter such as "status must be Closed Won". If a record is changed from "Closed Won" to "Closed Lost", it will drop off the report. We would then delete transactions for records which no longer appear in your report.
In summary, as we query the report, we could see fewer records for many different reasons. We don't know if records are gone because of a/ a hard delete, b/ a filter change, c/ they no longer match the filter. Deleting transactions for records which no longer appear in a report could spell disaster.
Instead of hard-deleting records, add a flag to indicate that those records should be ignored. Then, within plan logic, we can add a condition to ignore them.
For a related issue regarding excessive filtering, click here.