Permission Types Reference
SimplePerm migrates 13 permission types from profiles to permission sets. Each type is listed below with its API name, category, and what it controls.
Supported Permission Types
| # | Type Name | API Name | Category | Description | Example |
|---|---|---|---|---|---|
| 1 | Object Permissions | objectPermissions | Core | CRUD access (Read, Create, Edit, Delete, View All, Modify All) on standard and custom objects | Account: Read, Create, Edit |
| 2 | Field Permissions | fieldPermissions | Core | Field-level security controlling read and edit access on individual fields per object | Account.Phone: Read, Edit |
| 3 | System/User Permissions | userPermissions | Core | Platform-level permissions controlling system-wide capabilities (~160+ available permissions) | ViewSetup, ManageUsers, ApiEnabled |
| 4 | Tab Settings | tabSettings | Core | Tab visibility settings controlling whether tabs appear for each app | Account: DefaultOn, Opportunity: DefaultOff |
| 5 | Apex Class Access | classAccesses | Access | Controls which Apex classes a user can execute | MyController: Enabled |
| 6 | Visualforce Page Access | pageAccesses | Access | Controls which Visualforce pages a user can access | MyPage: Enabled |
| 7 | Custom Permissions | customPermissions | Access | Custom permissions defined by packages or admins for feature gating | My_Custom_Perm: Enabled |
| 8 | Record Type Visibilities | recordTypeVisibilities | Visibility | Controls which record types are visible per object | Account.Business: Visible |
| 9 | Flow Access | flowAccesses | Access | Controls which Flows a user can run (Screen Flows, Autolaunched, Record-Triggered) | My_Screen_Flow: Enabled |
| 10 | Custom Metadata Type Access | customMetadataTypeAccesses | Access | Controls access to custom metadata types | My_MDT__mdt: Enabled |
| 11 | Custom Setting Access | customSettingAccesses | Access | Controls access to custom settings | My_Setting__c: Enabled |
| 12 | External Data Source Access | externalDataSourceAccesses | Access | Controls access to external data sources configured in the org | My_External_Source: Enabled |
| 13 | App Visibilities | applicationVisibilities | Visibility | Controls which Lightning/Classic apps are visible and which is the default | Sales: Visible, Default |
Non-Migratable Settings
These profile settings cannot be migrated because Salesforce does not support them on the PermissionSet object:
| Setting | Reason |
|---|---|
| Login Hours | Profile-only setting. No permission set equivalent exists. |
| Login IP Ranges | Profile-only setting. No permission set equivalent exists. |
| Layout Assignments | Layout assignments are a profile-level concept. Permission sets do not control page layouts. |
These will always show as differences when comparing a profile to its migrated permission set. This is a Salesforce platform limitation, not a SimplePerm gap.
Migration Behavior
These rules apply to all 13 migratable types:
- Enabled-only filtering: Only entries that are enabled (or set to true) on the source profile get migrated. Disabled entries are excluded.
- Name preservation: Object names, field names, class names, and other identifiers carry over exactly as they appear on the profile, namespace prefixes included (e.g.,
ns__My_Object__c). - Profile-only fields stripped: Some profile metadata fields (like
defaultflags on record types) have no permission set equivalent. They are read during extraction but dropped at the build step.
Category Breakdown
Core (4 types): Object Permissions, Field Permissions, System/User Permissions, Tab Settings. The most commonly configured and the backbone of any migration.
Access (6 types): Apex Class, Visualforce Page, Custom Permission, Flow, Custom Metadata Type, Custom Setting, External Data Source. These gate which platform resources a user can interact with.
Visibility (2 types): Record Type Visibilities and App Visibilities. Control which record types and applications a user sees.