Note: This release is in preview. Features described here don’t become generally available until the latest general availability date that Salesforce announces for this release. Before then, and where features are noted as beta, pilot, or developer preview, we can’t guarantee general availability within any particular time frame or at all. Make your purchase decisions only on the basis of generally available products and features.

CustomPermissionDependency

Represents the dependency between two custom permissions when one custom permission requires that you enable another custom permission. This object is available in API version 32.0 and later.

Supported Calls

describeLayout(), describeSObjects(), query(), retrieve()

Special Access Rules

As of Spring ’20 and later, only users with View Setup and Configuration permission can access this object.

Fields

Field Name Details
CustomPermissionId
Type
reference
Properties
Filter, Group, Sort
Description
The ID of the custom permission that requires the permission that’s specified in RequiredCustomPermissionId.
This is a relationship field.
Relationship Name
CustomPermission
Relationship Type
Lookup
Refers To
CustomPermission
RequiredCustomPermissionId
Type
reference
Properties
Filter, Group, Sort
Description
The ID of the custom permission that must be enabled when CustomPermissionId is enabled.
This is a relationship field.
Relationship Name
RequiredCustomPermission
Relationship Type
Lookup
Refers To
CustomPermission

Usage

The following Apex class contains a method that returns the IDs of all custom permissions that are required for the given custom permission ID. To use this class, save it in your organization.
1public class CustomPermissionUtil {
2   public String[] getAllRequiredCustomPermissions(String customPermId) {
3      return getAllRequiredHelper(new String[]{customPermId});
4   }
5   
6   private String[] getAllRequiredHelper(String[] customPermIds) {
7      CustomPermissionDependency[] requiredPerms = [SELECT RequiredCustomPermissionId
8                                                    FROM CustomPermissionDependency
9                                                    WHERE CustomPermissionId
10                                                    IN :customPermIds];
11      String[] requiredPermIds = new String[]{};
12      for (CustomPermissionDependency cpd : requiredPerms) {
13         requiredPermIds.add(cpd.RequiredCustomPermissionId);
14      }
15      if (requiredPermIds.size() > 0) {
16         customPermIds.addall(getAllRequiredHelper(requiredPermIds));
17         return customPermIds;
18      } else {
19         return customPermIds;
20      }
21   }
22}
For more information about using Apex classes, see the Apex Developer Guide.