Skip to content

Dynamic Group Rule Health

The question it answers: Which dynamic groups are paused or have a membership rule that matches nobody?

Dynamic groups drive licensing, app access and Conditional Access. A paused rule freezes membership - joiners get nothing, leavers keep everything - and a rule that matches nobody usually means an attribute was renamed or is not populated.

Where in the appEntra ID › Identity Hygiene › Dynamic Group Rule Health
WorkloadEntra ID
KindTable
DataBuilt from the tenant data IntensiveReports keeps in memory and refreshes in the background, so it opens at once.
LicenceMicrosoft Entra ID P1 (dynamic groups).
Report id (API and MCP)entra.groups.dynamic-group-health
ColumnKeyType
GroupDisplayNameLink
TypeSecondaryText
ProcessingCategoryStatus
FindingFindingText
MembersValueText
RuleDetailText
FilterKey (API)On when the page opens
Only groups with a findingfindingsYes

Licence: Microsoft Entra ID P1 (dynamic groups).

Application permissions on the IntensiveReports app registration (all permissions):

PermissionAPIWhat it allowsNote
Group.Read.AllMicrosoft GraphRead all groups
Data sources it reads
  • GET /v1.0/groups?$filter=groupTypes/any(c:c eq 'DynamicMembership')
GET /ir-api/v1/reports/entra.groups.dynamic-group-health?size=100
GET /ir-api/v1/reports/entra.groups.dynamic-group-health?filter=findings

An AI assistant reads it with the MCP tool get_report and the id entra.groups.dynamic-group-health. The client needs the Read grant for Entra ID. See Using the API.