Microsoft 365
Reads the licenses of all customer tenants from Microsoft Graph via GDAP (granular delegated admin privileges): what is booked ("Verkauft" = sold) and what is assigned to users ("Zugewiesen" = assigned).
Prerequisites
- A multi-tenant app registration in the partner tenant with the delegated Graph permissions
Organization.Read.AllandDelegatedAdminRelationship.Read.All. - A service account that is a member of the GDAP security group (the "Directory Readers" role is sufficient) — it reads all customer tenants on your behalf.
Credentials (gear icon)
| Field | Meaning |
|---|---|
| App ID (Client ID) | the multi-tenant app registration |
| Client Secret | secret of the app |
| Partner tenant ID | GUID or partner.onmicrosoft.com |
| Refresh token | do not fill in by hand — set via "Connect service account" in the view and renewed automatically |
Setup: fill in the gear dialog (without refresh token) → in the view, "Connect service account" → Microsoft login with the service account → done.
Metrics
Two rows per customer and product:
Verkauft › <Produkt>— licenses booked in the tenant (subscribedSkus)Zugewiesen › <Produkt>— licenses assigned to users
Free/bundled SKUs (e.g. Flow Free) are filtered out. The dashboard tile counts the assigned licenses.
ALSO comparison & product mappings
The view contains two additional tabs:
- ALSO comparison: sets purchases (ALSO) against the tenant inventory per customer — the join runs on stable IDs (tenant ID, skuId), name matching only as a fallback. Details: product mappings.
- Product mappings: merge list for diverging product names.
Specifics
- Tenant IDs are stable → automatic rename detection.
- Tenants without a readable display name initially appear with their GUID and are upgraded automatically as soon as the first real name arrives.