Entra IDHow-to

Entra ID memberOf dynamic rules stop updating on 3 November 2026: find and replace them

The memberOf preview ends on 3 November 2026: dynamic groups, administrative units and access package policies that use it freeze. Find them with Graph PowerShell, replace the rules and verify.

The memberOf operator let a dynamic group in Microsoft Entra ID pull in the members of other groups, which made it popular for licensing and app assignment. It never left preview, and Microsoft is ending that preview: after 3 November 2026, anything still using it stops updating. Nothing shows an error; access just quietly goes stale. In this post I'll explain what Microsoft has announced, give you Graph PowerShell to find every affected group, administrative unit and access package policy, and show how to replace them and prove the result.

How this guide is organized: What is changing → Who is affected → What breaks if you do nothing → What to do now → How to verify → TimelineFlow diagram of the article's sections in reading order: 1. What is changing. 2. Who is affected. 3. What breaks if you do nothing. 4. What to do now (4 steps: Find every rule that uses memberOf; Record what each group feeds; Choose a replacement for each group; Make the changes in a sensible order). 5. How to verify. 6. Timeline (milestone). Toolbox: Invoke-MgGraphRequest, Groups › All groups, memberOf, @odata.nextLink, MembershipRuleProcessingState.1What is changing2Who is affected3What breaks if you do nothing4What to do now5How to verify6Timeline1Find every rule that usesmemberOf2Record what each groupfeeds3Choose a replacementfor each group4Make the changes in asensible orderTOOLBOXInvoke-MgGraphRequestGroups › All groupsmemberOf@odata.nextLinkMembershipRuleProcessingStateHow this guide is organized: What is changing → Who is affected → What breaks if you do nothing → What to do now → How to verify → TimelineFlow diagram of the article's sections in reading order: 1. What is changing. 2. Who is affected. 3. What breaks if you do nothing. 4. What to do now (4 steps: Find every rule that uses memberOf; Record what each group feeds; Choose a replacement for each group; Make the changes in a sensible order). 5. How to verify. 6. Timeline (milestone). Toolbox: Invoke-MgGraphRequest, Groups › All groups, memberOf, @odata.nextLink, MembershipRuleProcessingState.1What is changing2Who is affected3What breaks if you do nothing4What to do now1Find every rule that uses memberOf2Record what each group feeds3Choose a replacement for each group4Make the changes in a sensible order5How to verify6TimelineTOOLBOXInvoke-MgGraphRequestGroups › All groupsmemberOf@odata.nextLinkMembershipRuleProcessingState
At a glance: how this guide is organized · 6 sections, from what is changing to the timeline

Status (November 2026): Microsoft announced the retirement in the Message center on 5 August 2026 (MC1448379) and sent reminders on 5 October (MC1488834) and 28 October 2026 (MC1529463). After 3 November 2026, dynamic membership groups, dynamic administrative units and entitlement management auto-assignment policies that use memberOf stop updating and stay in their last known state. This is a planned retirement of a preview feature, and action is required before that date. Microsoft says it's working on an alternative, with no date given. Re-check the Microsoft Learn page, because guidance can change.

What is changing#

A memberOf rule looks like this, and could only be written in the rule syntax box because the rule builder never supported it:

Text
user.memberof -any (group.objectId -in ['<groupObjectId1>', '<groupObjectId2>'])
device.memberof -any (group.objectId -in ['<groupObjectId>'])

Microsoft explains that during the preview it saw memberOf slow down dynamic membership processing for all groups in a tenant, even when only one such rule existed. That's why the preview is being retired instead of moving to general availability.

Who is affected#

Any tenant that used the operator in one of three places:

  • Dynamic membership groups (user or device).
  • Dynamic administrative units.
  • Entitlement management auto-assignment policies for access packages.

What breaks if you do nothing#

Membership freezes at its state on the retirement date. Joiners who are added to a source group don't get access, and leavers who are removed keep it. Microsoft lists the consequences: outdated Teams and SharePoint access, Conditional Access policies targeting the wrong people, group-based licenses that no longer follow staff changes, and stale access package assignments. Because the group still exists and still has members, nothing looks broken in the portal. Leavers keeping access is a security finding; joiners lacking a license is a helpdesk ticket.

What to do now#

Choosing a replacement for a memberOf dynamic groupDoes anything still use the group? if No: Delete the group (After checking licenses, policies and app assignments); if Yes: Were the source groups defined by user or device attributes? if Yes: Rewrite the rule on those attributes (Validate the new rule, then compare membership); if No: Can the consuming service use the source groups directly? if Yes: Assign the source groups directly (Group-based licensing doesn't support nested groups); if No: Convert to assigned membership (Give the group an owner or an access review)Does anything still use thegroup?OKDelete the groupAfter checking licenses,policies and appassignmentsNoWere the source groups definedby user or device attributes?FIXRewrite the rule onthose attributesValidate the new rule, thencompare membershipYesCan the consuming service usethe source groups directly?FIXAssign the sourcegroups directlyGroup-based licensingdoesn't support nestedgroupsYesNOTEConvert to assignedmembershipGive the group an owner oran access reviewNoNoYesChoosing a replacement for a memberOf dynamic groupDoes anything still use the group? if No: Delete the group (After checking licenses, policies and app assignments); if Yes: Were the source groups defined by user or device attributes? if Yes: Rewrite the rule on those attributes (Validate the new rule, then compare membership); if No: Can the consuming service use the source groups directly? if Yes: Assign the source groups directly (Group-based licensing doesn't support nested groups); if No: Convert to assigned membership (Give the group an owner or an access review)Does anything still use the group?NoOKDelete the groupAfter checking licenses, policies and app assignmentsYesWere the source groups defined by user ordevice attributes?YesFIXRewrite the rule on those attributesValidate the new rule, then compare membershipNoCan the consuming service use thesource groups directly?YesFIXAssign the source groups directlyGroup-based licensing doesn't supportnested groupsNoNOTEConvert to assigned membershipGive the group an owner or an access review
Figure 1 · Decision tree Choosing a replacement for a memberOf dynamic group. Decide per group, starting with groups that feed licensing and Conditional Access, and record what each group is used for first.

1. Find every rule that uses memberOf#

Run this with Microsoft Graph PowerShell. It needs read permissions only:

PowerShell
Connect-MgGraph -Scopes 'Group.Read.All','AdministrativeUnit.Read.All','EntitlementManagement.Read.All'

# Dynamic groups
Get-MgGroup -All -Filter "groupTypes/any(c:c eq 'DynamicMembership')" `
    -Property Id, DisplayName, MembershipRule, MembershipRuleProcessingState |
  Where-Object MembershipRule -match 'memberof' |
  Select-Object DisplayName, Id, MembershipRuleProcessingState, MembershipRule

# Dynamic administrative units
$au = Invoke-MgGraphRequest -Method GET -Uri 'https://graph.microsoft.com/beta/directory/administrativeUnits?$select=id,displayName,membershipType,membershipRule'
$au.value | Where-Object { $_.membershipRule -match 'memberof' } | ForEach-Object { "AU: $($_.displayName)" }

# Access package auto-assignment policies
$pol = Invoke-MgGraphRequest -Method GET -Uri 'https://graph.microsoft.com/v1.0/identityGovernance/entitlementManagement/assignmentPolicies'
$pol.value | Where-Object { ($_ | ConvertTo-Json -Depth 20) -match 'memberof' } | ForEach-Object { "Policy: $($_.displayName)" }

The two Invoke-MgGraphRequest calls return the first page only; follow @odata.nextLink if you have many units or policies. Microsoft's own guidance also suggests exporting dynamic groups from the Microsoft Entra admin center and searching the rules, which is a good cross-check.

2. Record what each group feeds#

Before you change anything, write down where each group is used: license assignments, Conditional Access, Intune assignments, Teams or SharePoint, app assignments. Also save the current member list, so you can compare later:

PowerShell
Get-MgGroupMember -GroupId '<groupId>' -All |
  Select-Object Id, @{n='UPN';e={$_.AdditionalProperties.userPrincipalName}} |
  Export-Csv .\before-<groupId>.csv -NoTypeInformation

3. Choose a replacement for each group#

OptionWhen it fitsWatch out for
Rewrite the rule on user or device attributesThe source groups were themselves defined by department, job title, location or an extension attributeValidate the new rule before you save it; the rule builder's validation works for attribute rules
Use the source groups directly in the consuming serviceThe service supports nested groups or multiple group assignmentsGroup-based licensing doesn't support nested groups, so assign the license to each source group instead
Convert to assigned membershipA small, stable group that someone will ownIt becomes a manual process; give it an owner or an access review
Delete itNothing uses it any moreCheck step 2 before deleting

To change a group's rule from PowerShell:

PowerShell
Connect-MgGraph -Scopes 'Group.ReadWrite.All'
Update-MgGroup -GroupId '<groupId>' -MembershipRule '(user.department -eq "Sales")' -MembershipRuleProcessingState 'On'

For administrative units, Microsoft's guidance is the same: replace the rule with supported logic or switch the unit to assigned membership. For access package policies, replace the memberOf logic with attribute-based rules where possible, or plan another assignment method, such as users requesting access or an admin direct assignment.

4. Make the changes in a sensible order#

Start with groups that feed licensing and Conditional Access, because stale membership there costs money or weakens security. Change one group, let processing finish, and check it before moving to the next: a rewritten rule that matches nobody removes everyone's license just as surely as a frozen rule leaves leavers in place.

How to verify#

  • Re-run the step 1 script: it should return nothing.
  • On each changed group's overview page in the Microsoft Entra admin center (Entra ID › Groups › All groups), the dynamic rule processing status shows processing has completed, and MembershipRuleProcessingState is On.
  • Compare the new member list with your before-*.csv export. Differences should be people you can explain, such as leavers the old rule hadn't removed yet.
  • Test a joiner and a leaver: add a test user to the attribute or source group and confirm they gain the license or access, then remove them and confirm they lose it.
  • For access packages, check the policy's assignments list for the same joiner and leaver.

If licenses don't follow the new membership, group-based licensing errors covers the common causes.

Timeline#

DateWhat happens
5 August 2026Retirement announced (MC1448379)
5 and 28 October 2026Reminders (MC1488834, MC1529463)
3 November 2026Configurations that still use memberOf stop updating and keep their last known membership
Not announcedThe alternative Microsoft says it's developing

If you're reading this after the date, the steps are the same: replacing or removing the memberOf configuration is still the fix, so work through the list in the same order and compare each group against its expected membership.

References#

Written and checked against current Microsoft Learn documentation. Test changes with a pilot group before rolling them out to everyone, and if an admin center path has moved since, search for the setting name instead.

Spotted a mistake, or did this fix work differently for you? Email me or message me on LinkedIn — corrections are credited in the article.

Written by

Omer Eltayeb

M365 Subject Matter Expert, former Microsoft Cloud Solutions Architect, Microsoft Certified Trainer and Microsoft Innovative Educator Expert (2024–26) and Microsoft Elevate Educator Expert (2026–27). I share practical, step-by-step guides, study plans, scripts and toolkits for Microsoft Intune, Configuration Manager, Microsoft Entra ID, Microsoft Defender, Exchange and Microsoft 365 with the community.

Microsoft Certified Trainer (MCT) 2026Microsoft Innovative Educator Expert 2025–2026Microsoft Elevate Educator Expert 2026–2027ISC2 Certified Information Systems Security Professional (CISSP)Microsoft 365 Certified: Enterprise Administrator Expert (MS-102)