GMM automates Microsoft Entra ID group membership synchronization at enterprise scale. The system reads membership data from various sources (Entra ID groups, SQL databases, etc.), calculates differences, and updates target groups via Microsoft Graph API.
- Synchronize users from various data sources into Entra ID security groups and Microsoft Teams channels
- Process thousands of security groups with millions of memberships
- Maintain accurate group memberships through automated workflows
- Web interface for managing sync jobs and configurations
| Document | Description |
|---|---|
| Deploying GMM | Complete deployment guide |
| GMM Resources Overview | All Azure resources created |
| Setting up a Demo Tenant | Demo environment setup |
| UI Roles | Roles as policy to gate functionality |
| Document | Description |
|---|---|
| Finding Logs in Log Analytics | Query logs for sync jobs |
| Troubleshooting with App Insights | Debug failures and exceptions |
| Unblock Email Issues | Resolve email delivery problems |
| Delete Environment | Tear down GMM |
| Document | Description |
|---|---|
| Set Sender Address | Configure email sender account |
| Notifier Function Setup | Configure the notifier function to send actionable messages |
GMM supports SQL-based membership synchronization using data from HR systems or other external sources. To help you get started, we provide a demo Azure Data Factory (ADF) setup that serves as a guide for building your own ADF pipelines and workflows to import data into GMM's SQL database.
| Document | Description |
|---|---|
| ADF Demo Setup | Demo ADF configuration to guide your own HR data integration |
Note: ADF resources are deployed to the data resource group. Use the demo as a reference to create pipelines tailored to your organization's HR data sources.
GMM uses a microservices architecture built on Azure Functions:
JobScheduler β JobTrigger β MembershipObtainers β MembershipAggregator β GraphUpdater
- JobScheduler distributes job scheduling to balance Graph API load
- JobTrigger initiates sync jobs when they are due
- MembershipObtainers retrieve membership from various sources (Entra ID groups, SQL, Teams channels)
- MembershipAggregator calculates differences (adds/removes)
- GraphUpdater applies changes to destination groups via Graph API
For a complete list of all services and resources, see the GMM Resources Overview.
| Layer | Technologies |
|---|---|
| Backend | .NET 8.0, C#, Azure Functions |
| Frontend | React, TypeScript, Fluent UI |
| Database | SQL Server, Entity Framework Core |
| Messaging | Azure Service Bus |
| Authentication | Microsoft Entra ID, Microsoft Graph API |
| Infrastructure | Azure (Functions, Key Vault, App Configuration), Bicep |
We welcome contributions! Please see our Contributing Guide for details.
This project is licensed under the MIT License - see the LICENSE file for details.