#11961 Cache security group resolution in Effective Permissions
Effective Permissions Mgt. now caches the security-group access control filter per user, and page 9853 reuses the page's global instance, so Entra group membership is resolved once per user instead of on every row. This targets slow exports of effective permissions to Excel.
- 2files
- 2AL files
- 2objects
Pull request · merged into main (BC30) on 2026-09-29 by darjoo · 2 files (+6 -1), 2 AL · performance · tier official · reviewed (checked by Opus)
What changed
- GetAccessControlFilterForUser results cached in a Dictionary keyed by user security ID
- SetRecordAndRefresh on page 9853 uses the global EffectivePermissionsMgt instead of a local instance
- In the author’s measurement, moving through rows no longer adds GetMembers calls
- Cache lasts while the page is open and starts empty when reopened
- Group membership changes made while the page is open show only after reopening
- Behaviour changes for users or extensions.
AL objects touched
- Page 9853 “Effective Permissions By Set”, Base Application: modified
- Codeunit 9852 “Effective Permissions Mgt.”, Base Application: modified
Also merged into
- #12419 into
releases/29.xon 2026-10-08
Context
- Work items: AB#646528
- Labels: Team: Integrations
- Systems: administration
- From the description: “Exporting one user’s effective permissions to Excel made about 196K backend calls (about 4 minutes) for a tenant with 36 security groups”
Source: metadata of a merged pull request in microsoft/BCApps (bcapps): title, labels, changed paths and counts, with a summary in our words. No source text and no description beyond one short quote (D10, D61).