---
id: object/page/9852
type: object
title: Page 9852 "Effective Permissions"
summary: Page 9852 "Effective Permissions" in Base Application (System.Security.AccessControl). 1 public procedures, 1 events. Present since at least BC23, still in BC30, changed in BC29.
tier: official
language: en
tags:
  - page
  - base application
versions:
  introduced: null
  last_changed: "29"
  deprecated: null
review:
  state: derived
  by: null
  at: null
  flags: []
generated:
  at: "2026-10-11T00:31:51.816Z"
  pipeline: 0.2.0
  prompts: {}
  input_hash: e2889cec5787084c9c54f14e70064faf5935ccdbc4671be477471691bd7aebdb
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/System/Permissions/EffectivePermissions.Page.al
    title: src/Layers/W1/BaseApp/System/Permissions/EffectivePermissions.Page.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/11989
    - change/bcapps/10579
object_type: page
object_id: 9852
name: Effective Permissions
namespace: System.Security.AccessControl
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "29"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 3
  events: 1
  subscribers: 0
  controls: 13
  actions: 2
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 1
  calls: 3
  called_by: 0
  implements: 0
---

# Page 9852 "Effective Permissions"

> Page 9852 "Effective Permissions" in Base Application (System.Security.AccessControl). 1 public procedures, 1 events. Present since at least BC23, still in BC30, changed in BC29.

Base Application · System.Security.AccessControl · BC23-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/System/Permissions/EffectivePermissions.Page.al) · facts from BC29

## Properties

| Property | Value |
|---|---|
| Caption | Effective Permissions |
| SourceTable | Permission |
| PageType | Worksheet |
| UsageCategory | Administration |
| ApplicationArea | All |

## Fields on this page

Layout controls in source order, grouped by the container they sit in. Shows: the table field a control is bound to (or its expression as written); ToolTip: the control's own, else the bound field's (marked).

| Group | Control | Shows | ToolTip |
|---|---|---|---|
| General | User | `ChosenUserName` | Specifies the user that the effective permissions apply to. |
|  | Company | `CurrentCompanyName` | Specifies the company for which effective permissions for the chosen user will be shown. |
|  | Show All Objects | `ShowAllObjects` | Specifies if the effective permissions are shown for all objects or only for objects in the user's assigned permission sets. |
| EffectivePermissions | Object Type | `Rec."Object Type"` | Specifies the type of object that the permissions apply to in the current database. |
|  | Object ID | `Rec."Object ID"` | Specifies the ID of the object to which the permissions apply. |
|  | Object Name | `Rec."AL Object Name"` | — |
|  | Read Permission | `Rec."Read Permission"` | Specifies information about whether the permission set has read permission to this object. The values for the field are blank, Yes, and Indirect. Indirect means permission only through another object. If the field is empty, the permission set does not have read permission. |
|  | Insert Permission | `Rec."Insert Permission"` | Specifies information about whether the permission set has insert permission to this object. The values for the field are blank, Yes, and Indirect. Indirect means permission only through another object. If the field is empty, the permission set does not have insert permission. |
|  | Modify Permission | `Rec."Modify Permission"` | Specifies information about whether the permission set has modify permission to this object. The values for the field are blank, Yes, and Indirect. Indirect means permission only through another object. If the field is empty, the permission set does not have modify permission. |
|  | Delete Permission | `Rec."Delete Permission"` | Specifies information about whether the permission set has delete permission to this object. The values for the field are blank, Yes, and Indirect. Indirect means permission only through another object. If the field is empty, the permission set does not have delete permission. |
|  | Execute Permission | `Rec."Execute Permission"` | Specifies information about whether the permission set has execute permission to this object. The values for the field are blank, Yes, and Indirect. Indirect means permission only through another object. If the field is empty, the permission set does not have execute permission. |
|  | In User-Defined Permission Set | `ContainedInCustomPermissionSet` | Specifies if the object is included in a User-Defined permission set. |
| Content | ByPermissionSet | part [Page 9853 "Effective Permissions By Set"](../page/9853.md) | — |

## Actions

| Group | Action | ToolTip | Runs |
|---|---|---|---|
| Processing | Permission Sets | View or edit which feature objects that users need to access and set up the related permissions in permission sets that you can assign to the users of the database. | [Page 9802 "Permission Sets"](../page/9802.md) |
|  | Permission Set by User | View or edit the available permission sets and apply permission sets to existing users. | [Page 9816 "Permission Set by User"](../page/9816.md) |

## Events published

- `OnEffectivePermissionsPopulated(CurrUserId: Guid; CurrCompanyName: Text[30]; CurrObjectType: Integer; CurrObjectId: Integer)` (integration)
  - subscribers: [Codeunit 1351 "Telemetry Subscribers"](../codeunit/1351.md) EffectivePermissionsFetchedInPage

## Procedures

- `SetUserSID(UserSID: Guid)`

Plus 1 local procedures.

## Triggers

OnAfterGetCurrRecord, OnAfterGetRecord, OnInit, OnOpenPage

## Calls

From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an `Object::"Name"` argument. Interface dispatch and calls through events are not counted, so the list is not complete.

- [Codeunit 9852 "Effective Permissions Mgt."](../codeunit/9852.md) (3 calls: `FillByObject → PopulateEffectivePermissionsBuffer`, `OnAfterGetCurrRecord → PopulatePermissionRecordWithEffectivePermissionsForObject`, `OnOpenPage → DisallowViewingEffectivePermissionsForNonAdminUsers`)
- [Codeunit 457 "Environment Information"](../codeunit/457.md) (1 call: `FillByObject → IsSaaS`)
- [Codeunit 8714 "Audit Log"](../codeunit/8714.md) (1 call: `OnOpenPage → LogAuditMessage`)

## Recent changes

- 2026-09-30 [#11989 [Bug 500351] Allow Effective Permissions for delegated admins and helpdesk](../../changes/bcapps/11989.md) (main, BC30, fix)
- 2026-08-28 [#10579 [Bug 638696] Add teaching tip to Effective Permissions page 9852](../../changes/bcapps/10579.md) (main, BC30, feature)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC29

Source: AL metadata extracted from the code (names, ids, signatures, properties); no code bodies (D10).

## Ask your agent

Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: `bcatlas_resolve_node(object_type: "page", object_name: "Effective Permissions")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
