---
id: change/bcapps/11961
type: change
title: "#11961 Cache security group resolution in Effective Permissions"
summary: 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.
tier: official
language: en
tags:
  - performance
  - main
  - bc30
  - page effective permissions by set
  - codeunit effective permissions mgt.
system: administration
review:
  state: reviewed
  by: opus
  at: "2026-10-08T02:03:52.830Z"
  flags: []
generated:
  at: "2026-10-09T00:24:51.437Z"
  pipeline: 0.2.0
  prompts:
    extract-change: 1
  input_hash: 348376486c5d729c3d5be714695e0087cff0dac6
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/pull/11961
    title: "microsoft/BCApps#11961: Cache security group resolution in Effective Permissions"
    date: "2026-09-29"
    commit: 348376486c5d729c3d5be714695e0087cff0dac6
    t: null
    quote: Exporting one user's effective permissions to Excel made about 196K backend calls (about 4 minutes) for a tenant with 36 security groups
links:
  learn: []
  objects:
    - object/page/9853
    - object/codeunit/9852
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes: []
number: 11961
repo: microsoft/BCApps
source_id: bcapps-prs
url: https://github.com/microsoft/BCApps/pull/11961
kind: pr
base_branch: main
major: "30"
merged_at: "2026-09-29T14:29:07Z"
author: darjoo
author_type: User
community_contribution: false
labels:
  - "Team: Integrations"
change_class: code
change_kind: performance
behavior_change: true
breaking: false
files:
  count: 2
  additions: 6
  deletions: 1
  al: 2
apps:
  - Base Application
objects_touched:
  - key: page/9853
    page: page/9853
    type: page
    id: 9853
    name: Effective Permissions By Set
    app: Base Application
    status: modified
  - key: codeunit/9852
    page: codeunit/9852
    type: codeunit
    id: 9852
    name: Effective Permissions Mgt.
    app: Base Application
    status: modified
objects_unjoined: []
obsoletions: []
backports:
  - number: 12419
    base: releases/29.x
    url: https://github.com/microsoft/BCApps/pull/12419
fixes_issues: []
work_items:
  - 646528
systems:
  - administration
quote: Exporting one user's effective permissions to Excel made about 196K backend calls (about 4 minutes) for a tenant with 36 security groups
joined_against:
  major: "30"
  commit: ecbc028c25dbe83b61313bc566e6c1d41184bb1c
---

# #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](https://github.com/microsoft/BCApps/pull/11961) · 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"](../../objects/page/9853.md), Base Application: modified
- [Codeunit 9852 "Effective Permissions Mgt."](../../objects/codeunit/9852.md), Base Application: modified

## Also merged into

- [#12419](https://github.com/microsoft/BCApps/pull/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).
