We have a requirement to maintain every data(even deleted also) for approx 10-15 yrs with its Audit history. We have Salesforce-shield is enabled so maintaining Audit data is taken care of by it. However, for soft delete, we are checking ways. Here are certain problems with keeping something soft-deleted.

Assumption - On each object, we'll have is-deleted checkbox, which means its deleted.

  1. How we'll remove the permission of deleted records if we are having Master-Details(and I am deleting child record)?
  2. How we'll remove the permission of the deleted record if we shared by Roles? It'd still be visible to higher roles.

One option is to have all programmatic sharing, but we cant keep manual/programmatic sharing for all records for performance issues.

PS- This is for compliance requirement, so requirement can't be changed.

  • 1
    I have noted the PS, and just want to put my thoughts on this. In my opinion, storing huge historical data in Salesforce will eventually slow down the org. Also, there will be possibilities for data skews. Having an external system to store the data will be ideal. You can leverage the external objects to have data readily available in Salesforce. Jul 14, 2020 at 13:14
  • Yeah typically in salesforce instance we would do the same. But this system has to go through different compliance audits (FDS/Part-11/HIPAA), so I am being told to have data in the system only.
    – Ysr Shk
    Jul 14, 2020 at 14:03

1 Answer 1


What you're looking for are Big Objects. These are objects that have limited capabilities, but can store massive amounts of historical data. You could write triggers to copy the data from the object to big object on deletion or on a schedule. This way, you could delete the records normally and not have to worry about sharing, etc.

  • but that'll tamper Audit history reports(field history reports).
    – Ysr Shk
    Jul 14, 2020 at 16:38

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .