← Back to Platform & Technical
PLAT-017 Platform & Technical 20 min read For: Architects

Permission Sets vs Profiles: The Migration That Never Ends

Why Salesforce is retiring profiles, the Permission Set Group model and muting permissions, the migration strategy from profile-heavy orgs to permission-set-first designs, and common pitfalls in the transition.

VS

Vishal Sharma

Salesforce Architecture Specialist · Updated May 2026

What You'll Learn

Why Salesforce is retiring profiles, the Permission Set Group model and muting permissions, the migration strategy from profile-heavy orgs to permission-set-first designs, and common pitfalls in the transition.

Why Profiles Are Being Retired

Profiles have been the Salesforce security model for 20 years. Every user has exactly one profile, and that profile controls object permissions, field permissions, record type access, page layout assignments, and system permissions. The problem is that profiles are monolithic — you cannot partially assign them, and every change to a profile affects every user on that profile.

This design creates an antipattern that appears in virtually every enterprise org: profile proliferation. When one user needs a slightly different set of permissions from their colleagues, a new profile is created. Enterprise orgs frequently have 100-300 profiles — each one a management burden, each one duplicating 90% of the permissions of another profile. This is the problem Salesforce is solving with Permission Sets.

Insight Salesforce originally announced profile retirement for Summer 2026 but has deferred the hard deadline multiple times due to customer complexity. The architectural direction is clear — design new orgs as permission-set-first. But existing orgs should not rush migration without a structured programme: a bad permission set migration in a large org can lock out users from critical functionality overnight.

The Permission Set Architecture

Permission Sets are additive. A user with a minimal profile ("Minimum Access" — just login rights) can receive one or more Permission Sets that grant exactly the access they need. Adding or removing a Permission Set from one user does not affect other users. This granularity eliminates the profile proliferation problem.

Permission Set Groups (PSGs) aggregate multiple Permission Sets into a single assignable unit. A "Sales Representative" PSG might include: "Account Management," "Opportunity Management," and "CPQ Quoting" permission sets. Assign one PSG to onboard a new sales rep — no need to remember which individual permission sets are required.

Muting Permission Sets solve an edge case: sometimes a PSG grants too much access for a specific sub-group. Rather than building a separate PSG, you add a Muting PS that removes specific permissions from the group for a subset of users. This is additive architecture with surgical removal capability.

-- Permission set assignment in SOQL
SELECT Id, PermissionSet.Name, PermissionSet.IsCustom,
       AssigneeId, ExpirationDate
FROM PermissionSetAssignment
WHERE AssigneeId = '0055g000003FABCAA4'
ORDER BY PermissionSet.Name

-- Check if user has specific permission
SELECT Id, UserId,
       PermissionSet.PermissionsManageCases,
       PermissionSet.PermissionsViewSetup
FROM PermissionSetAssignment
WHERE UserId = '0055g000003FABCAA4'
AND PermissionSet.PermissionsManageCases = true

-- PSG assignment
INSERT INTO PermissionSetAssignment (AssigneeId, PermissionSetId)
VALUES ('0055g000003FABCAA4', '0PS5g000001PSGA1')  -- PSG Id
Key Point Permission Sets can only grant, not restrict. A user's effective permissions are the union of their profile (if any) plus all assigned Permission Sets. You cannot use a Permission Set to remove access that the profile already grants. This is why the "Minimum Access profile + granular Permission Sets" model works cleanly, but migrating from feature-rich profiles is non-trivial.

The Migration Challenge in Large Orgs

Migrating from a profile-heavy model to permission-set-first is conceptually simple but operationally difficult at enterprise scale:

  • Audit what permissions each profile actually grants: Many enterprise profiles have hundreds of permissions enabled, many of which are unnecessary holdovers from years of incremental additions. A permission audit before migration often reveals 30-50% of profile permissions are not actively used.
  • Map profiles to PSG equivalents: For each profile, define the equivalent PSG. This requires understanding which users are on the profile and which subset of permissions they genuinely need — not just what the profile has historically granted.
  • Test permission changes: Permission changes have no "undo" — they take effect immediately on save. Test every PSG configuration in a sandbox with a representative set of users before production deployment.
  • Handle profile-only features: Some settings are still profile-only in 2026 — Login IP ranges, session settings, password policies, and some system permissions are not yet available on Permission Sets. These settings must remain on profiles until Salesforce adds them to Permission Sets.
Warning Do not bulk-remove permissions from profiles in production without sandbox validation. A common migration mistake is to strip permissions from profiles and simultaneously assign Permission Sets, discovering after the fact that a subset of users lost access to a business-critical object because the PSG mapping was incomplete. Always validate against a representative user population before touching production.

New Org Design: Permission-Set-First

For new implementations, the recommended architecture:

  1. One minimal profile per licence type: "Minimum Access" (or a custom equivalent) for all users. This profile grants only login rights and the settings not yet available on Permission Sets.
  2. One PSG per business role: "Sales Rep," "Service Agent," "Sales Manager," "System Admin." Each PSG bundles all the Permission Sets that role needs.
  3. Atomic Permission Sets per feature: "CPQ Quoting Access," "Case Management," "Order Entry." These are the building blocks of PSGs. Build them at the smallest sensible granularity.
  4. Muting PS for exceptions: When a subset of a role needs fewer permissions, add a Muting PS to the PSG for that subset rather than creating an entirely new PSG.

Key Takeaways

  • Profiles are being retired — the architectural direction is permission-set-first, even if the hard deadline has been deferred.
  • Permission Sets are additive — they grant but never restrict. A user's access is the union of profile plus all Permission Sets.
  • Permission Set Groups aggregate multiple Permission Sets into a single assignable unit for role-based onboarding.
  • Muting Permission Sets remove specific permissions from a PSG without building an entirely separate group.
  • Some settings remain profile-only (login IP ranges, password policies) — profiles cannot be fully eliminated yet.
  • Audit actual permission usage before migrating — large orgs typically find 30-50% of profile permissions are unused.

Check Your Understanding

1. A user has the "View All Accounts" permission granted through their profile. Can you assign a Permission Set to remove this permission?

A. Yes — Permission Sets can grant and restrict permissions
B. No — Permission Sets are additive only. To remove the permission, you must modify the profile or switch the user to a less permissive profile
C. Yes, but only using a Muting Permission Set assigned directly to the user

2. What is the purpose of a Muting Permission Set within a Permission Set Group?

A. It disables all permissions in the PSG for users who are on probation
B. It removes specific permissions from the PSG for a subset of users, enabling exceptions without creating an entirely new PSG
C. It prevents the PSG from being assigned to users outside a specific role hierarchy

3. For a new Salesforce implementation, what is the recommended profile strategy in a permission-set-first design?

A. Create one comprehensive profile per business role with all needed permissions, and use Permission Sets for exceptions
B. Use one Minimum Access profile per licence type for all users, and grant all feature access via Permission Sets and PSGs
C. Clone the Standard User profile and customise it for each team — profiles are still the primary access model

Discussion & Feedback