
Tekunda Team

Tekunda Team

Short answer: an auditor does not want a tour of your org. They want three evidence packs: who had access and who approved it, what changed in production and who signed it off, and how long you keep records before deleting them. If those three exports are routine, an audit is a meeting. If they are not, it is a two-week fire drill.
Most Salesforce audit advice describes an internal health check: dead fields, unused reports, storage cleanup. That is useful housekeeping, but it is not what an external auditor tests. Under SOX, SOC 2 or ISO 27001, they sample and ask you to prove a control:
Almost every finding we have seen comes from one of those three, not from a messy page layout.
You decide first, then defend it. Scope follows risk, not the org chart:
Write this down as a one-page scope memo before the kickoff call. An auditor who has to define scope for you will define it generously.
Screenshots age badly and prove nothing about the other 51 weeks of the year. Export instead, on a schedule:
PermissionSetAssignment,
ObjectPermissions and FieldPermissions give you the real
picture, including everything granted through permission set groups.
Integration users deserve their own line. They usually carry the widest permissions and the least scrutiny, and auditors have learned to look there first.
This is where change sets hurt. They cannot separate the person who builds from the person who deploys, and they leave no linked approval. A pipeline answers with links: the work item and its business reason, the commit showing exactly which metadata moved, the pull request with a reviewer who is not the author, the test result, and the deployment record.
Two properties decide whether it passes. The evidence must be immutable, and it must be complete, meaning there is no route to production that bypasses it. A process covering most changes still fails, because the sample can land on the exception.
Native history helps but does not carry the whole load. Setup Audit Trail holds 180
days and is queryable through the SetupAuditTrail object before it is
purged. Field History Tracking keeps roughly 18 months in the UI and 24 through the
API, unless you licence
Field Audit Trail
with
Salesforce Shield and
set a retention policy. Audit cycles are annual, so keep your own copy in Git and your
DevOps platform.
Retention is the question teams answer worst, because nobody owns it. Three artefacts settle it:
The sandbox line is the one that surprises people. A full sandbox refreshed from production is a copy of the same personal data in a less controlled environment. Seed a subset and mask personal fields as part of the refresh job, so the control evidences itself.
That last step is the whole game. Teams that pass cleanly are not the ones with the tidiest org, they are the ones whose controls run on their own and leave a trail. Tekunda builds Salesforce this way as a certified SI, ISV and PDO, and we have taken managed packages through AppExchange security review in healthcare, logistics and manufacturing, where the evidence bar is set by someone else.
How long does Salesforce keep setup change history?
Setup Audit Trail retains 180 days, then purges. Export it on a schedule or keep the equivalent record in your DevOps platform.
Do we need Salesforce Shield to pass an audit?
Not necessarily. Shield extends field history retention and adds Event Monitoring, which helps, but the controls and their evidence matter more than the licence.
How often should we run user access reviews?
Quarterly for privileged and integration users, at least annually for everyone else, with a named approver recorded each time.
Is a full sandbox with production data a problem?
It can be. Treat it as a processing activity: seed a subset instead of cloning, mask personal fields during the refresh, and restrict access as you would in production.