The 10 Layers of Record Access
The 10 Layers of Record Access
Record access in Salesforce is evaluated as a series of ten distinct layers. A user must pass through all layers to view, edit, or delete a record. Understanding each layer helps you diagnose permission issues quickly.
Layer 1: Object Permissions
Before a user can access a record of any type, they need object-level CRUD (Create, Read, Update, Delete) permissions. These come from their assigned profile or permission sets.
- Read permission grants viewing rights to all records of that object type
- Create allows creating new records
- Update allows editing existing records
- Delete allows deleting records
The View All and Modify All checkboxes bypass all lower layers for that object — users with these checked get access to every record, regardless of ownership or sharing rules.
Layer 2: Org-Wide Defaults
Org-Wide Defaults set the baseline sharing model for each object: Private, Public Read Only, or Public Read/Write. If an object is set to Private, users can only see records they own or that are explicitly shared with them. If it's Public Read/Write, all users with Read/Update permissions can see and edit all records (assuming no other layers block them).
Layer 3: Ownership
In a Private org-wide default, record ownership determines access. The record owner and users above them in the role hierarchy can see and edit the record. Users below them in the hierarchy cannot, unless the record is shared with them via Layer 5 (sharing rules) or Layer 7 (manual shares).
Layer 4: Role Hierarchy
The role hierarchy creates a permission "flow" — users in parent roles can see and edit records owned by users in child roles (if the org-wide default and object permissions allow it). If a user's role is above the owner's role in the hierarchy, they inherit access. If below, they do not.
Layer 5: Sharing Rules
Sharing rules automatically grant access based on criteria (owner-based or criteria-based). An owner-based sharing rule says "if the record owner is in group X, also grant access to group Y." A criteria-based sharing rule says "if the record meets condition Z (e.g., Stage = Closed), grant access to group Y."
Sharing rules work at the object level and grant either Read-only or Read/Write access. They apply to all records matching the rule, automatically.
Layer 6: Territory Management
Territory management (if enabled) assigns records to territories, and territories to users. Users assigned to a territory can see all records assigned to that territory. Territory hierarchies also allow users to see records in child territories, similar to role hierarchy.
Layer 7: Teams
Teams (Account Teams, Opportunity Teams, and Case Teams) allow explicit, record-level sharing without formal sharing rules. The record owner adds team members directly to a specific record. Teams can grant Read or Read/Write access.
Layer 8: Manual Shares
Manual shares let the record owner (or admins) explicitly share a single record with a user or group. This is the "most granular" layer — one user gets access to one record. Manual shares can be Read-only or Read/Write.
Layer 9: Implicit Parent-Child Sharing
If a user has access to a parent record, they implicitly see child records (e.g., Contacts owned by a shared Account). This is automatic — you don't set it up, but it applies whenever a child field is a master-detail relationship.
Layer 10: System Permissions
System permissions like View All Data and Modify All Data override all other layers. A user with View All Data can see every record in the org, regardless of object permissions, org-wide defaults, ownership, sharing, or anything else. Modify All Data does the same for updates and deletes.
After Record Access: Field-Level Security & Layout Control
Even if a user passes all ten record access layers, two more gates apply:
Field-Level Security (FLS) — Applied per field within the object. If a user lacks Read permission on a field, they cannot see it even if they can see the record. If they lack Edit permission, they cannot modify it. Page Layout & Lightning Page Assignment — A user's assigned page layout determines which fields, sections, and buttons appear when they view a record. A field not on their page layout is hidden from their view, even if they have FLS Read permission. Similarly, Lightning Page assignments determine which components they see. Record Type Assignment — A user's record type assignment limits which record types they can create or access. If a user is not assigned a record type, they cannot work with records of that type.How Access X-Ray Maps the Layers
The Access X-Ray feature in the SFDC Police floating panel evaluates all ten layers for a specific record and user in real time. For each layer, it reports:
- Whether the user has access at that layer
- The reason (e.g., "owned by user," "shared via rule X," "user has View All Data")
- Actionable next steps if access is blocked
This helps you quickly identify which layer is the blocker. For example, if a user claims they can't edit a record, Access X-Ray shows whether the issue is object permissions (layer 1), org-wide defaults (layer 2), ownership (layer 3), or FLS (field-level gate).
See The 10 Layers of Record Access in the blog for real-world examples.