code change · performanceAdministration & Setupofficial - Microsoftreviewed - checked by Opus

#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.

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

Also merged into

  • #12419 into releases/29.x on 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).