Skip to content

Find orphaned groups — groups without owners or without members.

Ownerless groups cannot be administered (no one can approve changes); memberless groups are dead weight. Either is a cleanup candidate.

Permissions

Requires application permission Group.Read.All.

Reference

View source

from office365.graph_client import GraphClient
from tests.settings import client_id, client_secret, tenant


def main():
    client = GraphClient(tenant=tenant).with_client_secret(client_id, client_secret)
    groups = client.groups.get_all().execute_query()

    ownerless, memberless = [], []
    for group in groups:
        if not group.owners.get().execute_query():
            ownerless.append(group)
        if not group.members.get().execute_query():
            memberless.append(group)

    print(f"Without owners ({len(ownerless)}):")
    for group in ownerless:
        print(f"  {group.display_name}")
    print(f"\nWithout members ({len(memberless)}):")
    for group in memberless:
        print(f"  {group.display_name}")


if __name__ == "__main__":
    main()

← Back to Entra ID Groups