#groups 11 articles
- "0 sent" hides whether anyone was even asked — boolean mail wrappers conflate refusal with an empty audiencegotchas / graphThe recipient side of the same trap: a denied group read becomes an empty audience, an empty audience becomes a benign false, and an approval queue notifies nobody
- $filter on /groups/{id}/members needs $count=true, not just ConsistencyLevelgotchas / graphThe header is only half the recipe; a permanently failing call hid behind a best-effort catch as a "temporary outage"
- A SharePoint group created by code hides its own membership — and Full Control does not get you ingotchas / securitysitegroups POST defaults to OnlyAllowMembersViewMembership: true, so only a member or the account that ran provisioning can read the members; Full Control does not help and identical permission masks prove it
- Adding or removing a group member via Graph needs the object ID — a UPN returns 400 "Invalid object identifier"gotchas / graphPOST /groups/{id}/members/$ref and DELETE /groups/{id}/members/{id}/$ref accept only the user's object ID (GUID); a UPN from a people picker returns 400 Invalid object identifier — resolve it with GET…
- An Entra group inside a SharePoint group is invisible to every membership check SharePoint offersgotchas / securitySharePoint accepts an Entra group as a member of a site group, then never expands it: currentuser/groups is direct-only and sitegroups/{id}/users returns the group, not its people — resolve with Graph checkMemberGroups…
- Checking someone else's group membership — ask the group, not the usergotchas / graph/me/checkMemberGroups only answers for you; ask the GROUP for its transitive members instead, and never turn "could not determine" into "not a member"
- Creating a team right after creating its Microsoft 365 group returns 404 — retry only the 404, and don't log the failure as successgotchas / graphPUT /groups/{id}/team fails with 404 for minutes after POST /groups (replication); retry only 404, surface a real failure as a warning
- moveto succeeds and your code reports a failure — action endpoints return an empty bodygotchas / rest-apiAction endpoints (moveto, removebyid) return an empty body, so response.json() throws after the operation happened and invites a retry; decide by status, parse only what you read
- Re-read fresh right before you bulk-remove group membersgotchas / graphThe roster you showed is a preview; strict fresh re-read before a removeMember loop, read-error aborts, vanished member = idempotent skip
- The memberOf operator in dynamic group rules stops working on 3 November 2026 — groups freeze instead of failinggotchas / graphEntra ends the memberOf preview operator in dynamic membership rules on 3 Nov 2026 (MC1448379): affected groups, dynamic admin units and auto-assignment policies keep their last membership and never update again.…
- There is no sitegroups/removebyname — delete a group by Idgotchas / rest-apiGroupCollection has GetByName but only RemoveById; resolve the Id first, then delete; verify with getbyname → 404