
Hoe maak je dynamische groepen op basis van HR attributen?
Marcel van Beek
8 min read
Een dynamische groep in Entra ID vult zichzelf op basis van een regel over gebruikersattributen, bijvoorbeeld iedereen met department Finance of jobTitle Teamleider. Je maakt hem aan via Entra ID → Groups → New group, kiest membership type Dynamic User en bouwt de regel in de rule builder. De groep werkt alleen zo goed als de HR attributen waarop hij draait: staan afdeling en functie niet betrouwbaar in Entra, dan doet de mooiste regel niets.
Dat laatste is in de praktijk het echte werk. De regel bouwen kost vijf minuten; zorgen dat department, jobTitle en employeeType voor élke medewerker gevuld en actueel zijn, is een doorlopend proces. Dit artikel behandelt beide kanten.
Quick facts
Feit | Waarde |
|---|---|
Benodigde rol | Minimaal Groups Administrator |
Waar | entra.microsoft.com → Entra ID → Groups → All groups → New group |
Licentie | Entra ID P1 voor elke unieke gebruiker in een dynamische groep |
Bruikbare HR attributen | department, jobTitle, companyName, employeeType, officeLocation, city, country, employeeHireDate, extensionAttributes 1 t/m 15 |
Rule builder | Max 5 expressies; complexere regels via de syntax editor |
Verwerkingstijd | Meestal minuten, gegarandeerd binnen 24 uur |
Limiet | Max 15.000 dynamische groepen per tenant |
Let op | Geen handmatige leden mogelijk; veiligheid hangt af van wie de attributen kan schrijven |
De regel is het makkelijke deel
De syntax van een membership rule is steeds hetzelfde patroon: attribuut, operator, waarde.
(user.department -eq "Finance") (user.department -eq "Finance") and (user.jobTitle -contains "Teamleider") (user.employeeType -eq "Medewerker") and (user.officeLocation -in ["Amsterdam","Utrecht"])
(user.department -eq "Finance") (user.department -eq "Finance") and (user.jobTitle -contains "Teamleider") (user.employeeType -eq "Medewerker") and (user.officeLocation -in ["Amsterdam","Utrecht"])
De operators die je het meest gebruikt: -eq en -ne voor exacte waarden, -contains en -startsWith voor gedeeltelijke matches, -in voor lijstjes en -any voor meerwaardige attributen. Met and, or en not combineer je expressies; de rule builder ondersteunt er vijf, daarna schakel je naar de syntax editor.
Gebruik de knop Validate Rules vóór je opslaat: je selecteert een paar bestaande gebruikers en ziet direct of ze wel of niet matchen, inclusief uitleg waarom. Dat voorkomt de klassieker waarbij een regel op "Financien" niemand vangt omdat HR "财务" of gewoon "Finance" aanlevert.
Welke attributen kies je
Kies attributen die een systeem vult, niet een mens. department en jobTitle komen idealiter uit je HR koppeling of AD synchronisatie. employeeType is waardevol om medewerkers, inhuur en stagiairs te scheiden. De extensionAttributes zijn de vluchtroute voor alles wat nergens anders past, zoals een kostenplaats of teamcode; documenteer dan wél wat er in welk nummer staat, want over een jaar weet niemand meer wat extensionAttribute7 betekent.
Twee attributen verdienen extra aandacht. employeeHireDate maakt regels mogelijk rond indiensttreding, maar de meeste HR koppelingen vullen dit veld niet standaard. En manager is géén bruikbaar attribuut in dynamische regels; wie op hiërarchie wil sturen, loopt hier vast.
De drie manieren waarop dit misgaat
Eén: lege of vervuilde attributen. Een dynamische regel evalueert wat er stáát, niet wat er zou moeten staan. Elke typefout in een afdelingsnaam is een medewerker zonder toegang, of erger, mét verkeerde toegang. Twee: schrijfrechten. De veiligheid van de groep is precies zo sterk als de controle op wie de attributen mag wijzigen. Kan een servicedeskmedewerker of een slecht ingerichte sync het department veld aanpassen, dan kan die persoon in feite toegang uitdelen. Controleer dit expliciet voor attributen die vanuit on-premises AD gesynchroniseerd worden. Drie: geen uitzonderingen. Aan een dynamische groep kun je niemand handmatig toevoegen. De stagiair die tijdelijk met Finance meedraait krijg je er alleen in door de regel te vervuilen of het HR attribuut te misbruiken, en beide keuzes wreken zich later.
Waarom je dit in Joinly wilt regelen
Dynamische groepen verplaatsen het beheerprobleem van groepslidmaatschappen naar datakwaliteit. Dat is winst, maar alleen als iets die datakwaliteit ook echt bewaakt. In de praktijk zie ik omgevingen met tientallen dynamische regels bovenop attributen die niemand onderhoudt: de logica versnippert over losse groepen, er is geen overzicht van welke regel welke toegang geeft, uitzonderingen zijn onmogelijk en elke gebruiker in zo'n groep kost een P1 licentie.
Joinly pakt het bij de bron. De HR koppeling met AFAS, HR2Day, Visma Raet, YouServe of Workday vult de attributen betrouwbaar én beheert de groepslidmaatschappen rechtstreeks vanuit business rules: afdeling plus functie bepaalt de groepen, in Entra ID en on-premises AD tegelijk. Uitzonderingen leg je gewoon vast, met reden en einddatum. En omdat Joinly de lidmaatschappen zelf uitvoert, heb je de dynamische regels en de bijbehorende P1 eis niet eens nodig. Wat overblijft is één centraal model met een audit trail per mutatie.
Wil je weten hoe betrouwbaar jouw HR attributen in Entra nu zijn? De gratis scan op scan.joinly.app laat het binnen tien minuten zien.
Installation guide
Stap 1: Controleer eerst je data
Trek een rapport van de attributen waarop je wilt sturen, vóór je ook maar één regel bouwt:
powershell
Connect-MgGraph -Scopes "User.Read.All" Get-MgUser -All -Property DisplayName,Department,JobTitle,EmployeeType | Group-Object Department | Sort-Object Count -Descending | Select-Object Name, Count
Connect-MgGraph -Scopes "User.Read.All" Get-MgUser -All -Property DisplayName,Department,JobTitle,EmployeeType | Group-Object Department | Sort-Object Count -Descending | Select-Object Name, Count
Elke variant, typefout en lege waarde die hier opduikt, wordt straks een gat in je groepslidmaatschap. Los dit eerst op in de bron (HR of AD), niet in Entra.
Stap 2: Maak de groep aan
Ga naar entra.microsoft.com, meld je aan als minimaal Groups Administrator.
Entra ID → Groups → All groups → New group.
Group type: Security. Naam volgens je conventie, beschrijving met het doel.
Membership type: Dynamic User.

Stap 3: Bouw en valideer de regel
Klik Add dynamic query.
Bouw de expressie in de rule builder: property
department, operatorEquals, valueFinance. Combineer metjobTitlewaar nodig.Klik Validate Rules, voeg drie tot vijf bestaande gebruikers toe en controleer of de uitkomst klopt, ook voor iemand die er juist níét in hoort.
Save en Create.

Stap 4: Controleer de verwerking
Open na een paar minuten Groups → jouw groep → Members en vergelijk het aantal met je verwachting uit stap 1. Wijkt het af, kijk dan bij Dynamic membership rules naar de processing status. Grote tenants kunnen tot 24 uur nodig hebben.
Stap 5: Koppel de toegang
Hang de groep nu aan de resources: app assignment via Enterprise applications, licenties via group-based licensing, rechten op SharePoint. Vanaf dat moment stuurt HR data de toegang: wijzigt het department van een medewerker, dan volgen lidmaatschap en alles wat eraan hangt vanzelf.
Alternatief: via PowerShell/Graph
powershell
New-MgGroup -DisplayName "ROL-Finance-Medewerker" ` -MailEnabled:$false -MailNickname "rol-finance-medewerker" ` -SecurityEnabled:$true ` -GroupTypes @("DynamicMembership") ` -MembershipRule '(user.department -eq "Finance")' ` -MembershipRuleProcessingState "On"
New-MgGroup -DisplayName "ROL-Finance-Medewerker" ` -MailEnabled:$false -MailNickname "rol-finance-medewerker" ` -SecurityEnabled:$true ` -GroupTypes @("DynamicMembership") ` -MembershipRule '(user.department -eq "Finance")' ` -MembershipRuleProcessingState "On"
Zo doe je dit in Joinly
In Joinly sla je de tussenstap over. De business rule staat niet in een losse groep maar in het centrale rollenmodel: conditie op de HR brongegevens (afdeling, functie, type dienstverband), gekoppeld aan de groepslidmaatschappen die daarbij horen, in Entra én on-premises AD. Joinly bewaakt bovendien de datakwaliteit uit stap 1 doorlopend, omdat de HR koppeling de bron is in plaats van een handmatig gevuld attribuut. Uitzonderingen met einddatum, elke mutatie in de audit trail, en geen P1 licentie nodig voor het lidmaatschapsbeheer.
Een dynamische groep in Entra ID vult zichzelf op basis van een regel over gebruikersattributen, bijvoorbeeld iedereen met department Finance of jobTitle Teamleider. Je maakt hem aan via Entra ID → Groups → New group, kiest membership type Dynamic User en bouwt de regel in de rule builder. De groep werkt alleen zo goed als de HR attributen waarop hij draait: staan afdeling en functie niet betrouwbaar in Entra, dan doet de mooiste regel niets.
Dat laatste is in de praktijk het echte werk. De regel bouwen kost vijf minuten; zorgen dat department, jobTitle en employeeType voor élke medewerker gevuld en actueel zijn, is een doorlopend proces. Dit artikel behandelt beide kanten.
Quick facts
Feit | Waarde |
|---|---|
Benodigde rol | Minimaal Groups Administrator |
Waar | entra.microsoft.com → Entra ID → Groups → All groups → New group |
Licentie | Entra ID P1 voor elke unieke gebruiker in een dynamische groep |
Bruikbare HR attributen | department, jobTitle, companyName, employeeType, officeLocation, city, country, employeeHireDate, extensionAttributes 1 t/m 15 |
Rule builder | Max 5 expressies; complexere regels via de syntax editor |
Verwerkingstijd | Meestal minuten, gegarandeerd binnen 24 uur |
Limiet | Max 15.000 dynamische groepen per tenant |
Let op | Geen handmatige leden mogelijk; veiligheid hangt af van wie de attributen kan schrijven |
De regel is het makkelijke deel
De syntax van een membership rule is steeds hetzelfde patroon: attribuut, operator, waarde.
(user.department -eq "Finance") (user.department -eq "Finance") and (user.jobTitle -contains "Teamleider") (user.employeeType -eq "Medewerker") and (user.officeLocation -in ["Amsterdam","Utrecht"])
De operators die je het meest gebruikt: -eq en -ne voor exacte waarden, -contains en -startsWith voor gedeeltelijke matches, -in voor lijstjes en -any voor meerwaardige attributen. Met and, or en not combineer je expressies; de rule builder ondersteunt er vijf, daarna schakel je naar de syntax editor.
Gebruik de knop Validate Rules vóór je opslaat: je selecteert een paar bestaande gebruikers en ziet direct of ze wel of niet matchen, inclusief uitleg waarom. Dat voorkomt de klassieker waarbij een regel op "Financien" niemand vangt omdat HR "财务" of gewoon "Finance" aanlevert.
Welke attributen kies je
Kies attributen die een systeem vult, niet een mens. department en jobTitle komen idealiter uit je HR koppeling of AD synchronisatie. employeeType is waardevol om medewerkers, inhuur en stagiairs te scheiden. De extensionAttributes zijn de vluchtroute voor alles wat nergens anders past, zoals een kostenplaats of teamcode; documenteer dan wél wat er in welk nummer staat, want over een jaar weet niemand meer wat extensionAttribute7 betekent.
Twee attributen verdienen extra aandacht. employeeHireDate maakt regels mogelijk rond indiensttreding, maar de meeste HR koppelingen vullen dit veld niet standaard. En manager is géén bruikbaar attribuut in dynamische regels; wie op hiërarchie wil sturen, loopt hier vast.
De drie manieren waarop dit misgaat
Eén: lege of vervuilde attributen. Een dynamische regel evalueert wat er stáát, niet wat er zou moeten staan. Elke typefout in een afdelingsnaam is een medewerker zonder toegang, of erger, mét verkeerde toegang. Twee: schrijfrechten. De veiligheid van de groep is precies zo sterk als de controle op wie de attributen mag wijzigen. Kan een servicedeskmedewerker of een slecht ingerichte sync het department veld aanpassen, dan kan die persoon in feite toegang uitdelen. Controleer dit expliciet voor attributen die vanuit on-premises AD gesynchroniseerd worden. Drie: geen uitzonderingen. Aan een dynamische groep kun je niemand handmatig toevoegen. De stagiair die tijdelijk met Finance meedraait krijg je er alleen in door de regel te vervuilen of het HR attribuut te misbruiken, en beide keuzes wreken zich later.
Waarom je dit in Joinly wilt regelen
Dynamische groepen verplaatsen het beheerprobleem van groepslidmaatschappen naar datakwaliteit. Dat is winst, maar alleen als iets die datakwaliteit ook echt bewaakt. In de praktijk zie ik omgevingen met tientallen dynamische regels bovenop attributen die niemand onderhoudt: de logica versnippert over losse groepen, er is geen overzicht van welke regel welke toegang geeft, uitzonderingen zijn onmogelijk en elke gebruiker in zo'n groep kost een P1 licentie.
Joinly pakt het bij de bron. De HR koppeling met AFAS, HR2Day, Visma Raet, YouServe of Workday vult de attributen betrouwbaar én beheert de groepslidmaatschappen rechtstreeks vanuit business rules: afdeling plus functie bepaalt de groepen, in Entra ID en on-premises AD tegelijk. Uitzonderingen leg je gewoon vast, met reden en einddatum. En omdat Joinly de lidmaatschappen zelf uitvoert, heb je de dynamische regels en de bijbehorende P1 eis niet eens nodig. Wat overblijft is één centraal model met een audit trail per mutatie.
Wil je weten hoe betrouwbaar jouw HR attributen in Entra nu zijn? De gratis scan op scan.joinly.app laat het binnen tien minuten zien.
Installation guide
Stap 1: Controleer eerst je data
Trek een rapport van de attributen waarop je wilt sturen, vóór je ook maar één regel bouwt:
powershell
Connect-MgGraph -Scopes "User.Read.All" Get-MgUser -All -Property DisplayName,Department,JobTitle,EmployeeType | Group-Object Department | Sort-Object Count -Descending | Select-Object Name, Count
Elke variant, typefout en lege waarde die hier opduikt, wordt straks een gat in je groepslidmaatschap. Los dit eerst op in de bron (HR of AD), niet in Entra.
Stap 2: Maak de groep aan
Ga naar entra.microsoft.com, meld je aan als minimaal Groups Administrator.
Entra ID → Groups → All groups → New group.
Group type: Security. Naam volgens je conventie, beschrijving met het doel.
Membership type: Dynamic User.

Stap 3: Bouw en valideer de regel
Klik Add dynamic query.
Bouw de expressie in de rule builder: property
department, operatorEquals, valueFinance. Combineer metjobTitlewaar nodig.Klik Validate Rules, voeg drie tot vijf bestaande gebruikers toe en controleer of de uitkomst klopt, ook voor iemand die er juist níét in hoort.
Save en Create.

Stap 4: Controleer de verwerking
Open na een paar minuten Groups → jouw groep → Members en vergelijk het aantal met je verwachting uit stap 1. Wijkt het af, kijk dan bij Dynamic membership rules naar de processing status. Grote tenants kunnen tot 24 uur nodig hebben.
Stap 5: Koppel de toegang
Hang de groep nu aan de resources: app assignment via Enterprise applications, licenties via group-based licensing, rechten op SharePoint. Vanaf dat moment stuurt HR data de toegang: wijzigt het department van een medewerker, dan volgen lidmaatschap en alles wat eraan hangt vanzelf.
Alternatief: via PowerShell/Graph
powershell
New-MgGroup -DisplayName "ROL-Finance-Medewerker" ` -MailEnabled:$false -MailNickname "rol-finance-medewerker" ` -SecurityEnabled:$true ` -GroupTypes @("DynamicMembership") ` -MembershipRule '(user.department -eq "Finance")' ` -MembershipRuleProcessingState "On"
Zo doe je dit in Joinly
In Joinly sla je de tussenstap over. De business rule staat niet in een losse groep maar in het centrale rollenmodel: conditie op de HR brongegevens (afdeling, functie, type dienstverband), gekoppeld aan de groepslidmaatschappen die daarbij horen, in Entra én on-premises AD. Joinly bewaakt bovendien de datakwaliteit uit stap 1 doorlopend, omdat de HR koppeling de bron is in plaats van een handmatig gevuld attribuut. Uitzonderingen met einddatum, elke mutatie in de audit trail, en geen P1 licentie nodig voor het lidmaatschapsbeheer.
Bekijk meer van onze blogs
Kijken kost niets
Plan een vrijblijvende demo
In 30 minuten laat we je graag zien hoe Joinly toegevoegde waarde biedt voor de gehele organisatie.

Kijken kost niets
Plan een vrijblijvende demo
In 30 minuten laat we je graag zien hoe Joinly toegevoegde waarde biedt voor de gehele organisatie.

Kijken kost niets
Plan een vrijblijvende demo
In 30 minuten laat we je graag zien hoe Joinly toegevoegde waarde biedt voor de gehele organisatie.



