Insights

Moving Salesforce access from profiles to permission sets

Redesign profile-heavy Salesforce access using a worked role example, permission-set groups and tests of the access users actually receive.

Diagram combining a baseline profile and permission sets into a user’s effective access
Review the access a user receives from all assignments, then test it in the process.

What this covers

  • Separate baseline access from job and occasional-task permissions.
  • Understand why muting one group cannot revoke another source of access.
  • Use a pilot to test what users can and cannot do.

Permission sets make Salesforce access easier to assemble around a job. They do not automatically simplify what a user can do. A broad profile or another permission-set assignment can still grant access that the new design was meant to remove.

A useful redesign starts with effective access: the permissions a person receives from all relevant assignments, together with the record-sharing rules that apply.

Start with a role the business recognises

Take a sales operations role that maintains opportunities and helps with account handovers. The following catalogue is an illustration to discuss with the business, not a universal set of permissions to deploy.

Illustrative role design
LayerPurposeKeep separate
Baseline profileRequired profile settings and minimum viable accessPowerful administration and unrelated job capabilities
Sales operations permission setsNamed capabilities for the opportunity and account workTemporary elevated or exceptional access
Permission-set groupA maintained bundle for the common roleUnrelated capabilities added for a single exception
Occasional-task assignmentA separately approved additional taskPermanent broad access granted for a short-term need

Inventory assignments before redesigning them

List users, profiles, permission sets and groups, including integration identities and inactive users. Record the business owner of each current capability. The assignment query below is a starting point; it does not calculate every permission or record-sharing effect.

SELECT AssigneeId, Assignee.Username, PermissionSetId,
       PermissionSet.Name, PermissionSetGroupId
FROM PermissionSetAssignment
ORDER BY Assignee.Username

Inspect object and field permissions, system permissions, class and page access, custom permissions and the other settings your org relies on. Record types, ownership, roles, sharing and teams also affect what the user can do. A permission-set inventory alone cannot prove record access.

Understand what muting changes

A muting permission set changes the permissions supplied by its associated group. It does not revoke the same permission if a profile, another permission set or a different group supplies it.

Illustrative access check
AssignmentDelete permission supplied?Result to investigate
Sales group with Delete mutedNo, from this groupThis removes one source of the permission.
A separate permission set grants DeleteYes, from that setThe user may still have Delete despite the muted group.
A broad profile grants DeleteYes, from the profileThe profile must be included in the redesign.

This is why replacing a profile name with a neater group name is not enough. Identify every grant that matters, and check permission dependencies and licence requirements before changing it.

Prove a pilot user’s everyday work

Choose a small, representative user group. Record its existing behaviour, build the proposed model in a suitable test environment and check real tasks with the intended user permissions.

Illustrative acceptance tests
User taskExpected result
Edit an in-scope opportunityAllowed, including the fields and automation the role needs.
Complete an account handoverThe correct record, screen and related information are available.
Delete a record where the role should not have that capabilityDenied through the relevant user route.
Open a record outside the role’s agreed visibilityDenied by the intended record-access model.
Use a separately licensed featureAvailable only to a correctly licensed and authorised user.

A successful edit checks required access. It does not prove that powerful actions or visibility elsewhere have been removed. Keep the denied-action tests beside the positive ones, and investigate failures before extending the pilot.

Operate the new model

  1. Give each permission set or group a clear capability name and owner.
  2. Move the pilot only after its acceptance tests pass and a recovery route is agreed.
  3. Remove the superseded grants so the old and new access models do not accumulate.
  4. Route new access requests through the same capability catalogue.
  5. Review powerful permissions, integration identities and exceptions at an agreed cadence.
  6. Recheck representative users after relevant platform, licence and package changes.

The aim is for a business owner to explain why a user has access and for the technical team to change it without guessing which historical profile or exception supplied it.

Official references