`
MySite

EduTeams – automatisering van Microsoft Teams provisioning

EduTeams beschrijft het modelleren en automatiseren van Teams provisioning in een onderwijsomgeving, met integraties tussen Microsoft 365, Magister en HelloID.

Hoewel EduTeams begon als een technische interface, ontwikkelde het zich tot een systeem waarin onderwijslogica expliciet werd gemodelleerd. Denk hierbij aan:

  • Structuur van klassen, jaarlagen en combinaties
  • Herleidbaarheid van Teams naar brongegevens
  • Regels voor lidmaatschap die verder gaan dan alleen groepslidmaatschap

Deze laag vormt nog steeds de basis, ook nu HelloID de orkestratie verzorgt.


What started as a simple request for a distribution list quickly exposed the limitations of hardcoded business rules and sprawling conditional logic. In this article I walk through the thought process that led from a growing collection of IAM provisioning rules to a declarative rule model based on conditions, condition sets and rule sets. That journey eventually resulted in StructMatcher: a generic rule evaluation engine that separates business logic from implementation.

A practical walkthrough of building a Microsoft Graph integration using Perl. Starting from simple curl-based experiments, evolving into a reusable module-based system, and eventually forming the foundation for a full EduTeams provisioning solution.

*State‑driven EduTeams provisioning met gecontroleerde inactive Teams* Ik bouw EduTeams niet als een lineair proces, maar als een state‑driven systeem. In plaats van Teams direct aan te maken, worden eerst een educationClass en de bijbehorende group opgezet. Pas daarna wordt deze gepromoveerd naar een Team — dat standaard **inactive** blijft. HelloID bepaalt welke acties nodig zijn en voert die lokaal uit of offloadt naar Azure Automation. Omdat Microsoft Graph asynchroon werkt, wordt het systeem ontworpen om zichzelf over meerdere runs te corrigeren. Niet alles hoeft meteen goed te gaan — als de gewenste state klopt, komt het systeem uiteindelijk vanzelf goed.

Dit artikel laat zien hoe je met curl en de OAuth2 client credentials flow een access token ophaalt en Microsoft Graph succesvol aanroept. Aan de hand van een eenvoudig Bash‑script wordt uitgelegd hoe je server‑to‑server authenticatie toepast, hoe je JSON‑output parseert met jq en waarom dit direct toepasbaar is in Perl‑scripts met LWP. Het biedt een praktische basis om Microsoft Graph‑integraties betrouwbaar op te zetten en te begrijpen vanaf de command line.