Microsoft 365 Licenses
Assign, reclaim, and forecast Microsoft 365 licenses — no more digging through the admin center.
Dex talks to the Microsoft Graph license endpoints (/subscribedSkus, /users/{id}/assignLicense, /users/{id}/licenseDetails) under the same tenant authorization it uses for the rest of Microsoft 365. Admins can list purchased SKUs, see who's consuming what, assign and unassign licenses by friendly name, and run forecasts against historical ticket data to catch license shortages before users notice.
What Dex does with Microsoft 365 Licenses
Dex handles both admin workflows and employee self-service — all policy-guardrailed and audit-logged.
For admins (CoAdmin)
- List every subscribed SKU in the tenant with total, consumed, and available seat counts
- Assign a Microsoft 365 / Office 365 / Power BI / Teams / Intune license to a user by friendly name or SKU
- Assign by email/UPN, Service Request ID, user name lookup, or firstName+lastName with domain fallback
- Automatically set usageLocation if missing (required by Graph before a license can be assigned)
- Unassign a license from a user — idempotent (checks that the user actually has the SKU before removing)
- Search users currently holding a specific license SKU (e.g. "who has Power BI Pro?")
- List every license assigned to a specific user, with service plan breakdown
- Forecast license exhaustion by analyzing historical ticket requests + current consumption
- Identify SKUs below an availability threshold (default 10%) and post consolidated alerts to a Slack channel
- Dry-run mode for both assign and unassign — validates inputs and availability without making changes
For employees (self-service)
- Request a license in plain language ("I need Power BI Pro for the new dashboard")
- Check what licenses are assigned to your account
Just ask Dex
Your team types a request in plain language. Dex investigates, plans, and executes — with the right guardrails.
Admin prompts
- >Assign Microsoft 365 E3 to jenna.rossi@acme.com
- >Unassign Power BI Pro from every user who hasn't signed in for 90 days
- >Show me all subscribed SKUs with less than 5 seats available
- >Which licenses does marco@acme.com currently have?
- >Find everyone with an Office 365 E5 licence on the Sales team
- >Forecast our M365 license usage for the next 4 weeks — flag anything we'll run out of
- >Dry-run: assign Visio Plan 2 to dan@acme.com — tell me if we have capacity and if his usageLocation is set
- >Post a license-shortage report to #it-alerts if any SKU drops below 10% available
Employee prompts
- >Do I have a Power BI licence?
- >I need a Visio Plan 2 licence for a client project
- >What Microsoft licences is my account using?
Policy actions
Every action Dex can take on Microsoft 365 Licenses is declared, scoped, and guardrailed. Admins control which apply, who approves them, and whether they're limited to self-service.
| Action | What it does |
|---|---|
m365_license_list_skus | List tenant SKUs with seat usage and availability |
m365_license_list_user_licenses | List licenses assigned to a specific user |
m365_license_search_licensed_users | Search users holding a given SKU or matching a filter |
m365_license_assign | Assign a Microsoft license to a user |
m365_license_unassign | Remove a Microsoft license from a user |
m365_license_forecast | Forecast license exhaustion based on historical ticket data and current consumption |
m365_license_monitor_alert | Post license shortage alerts to a configured Slack channel |
How to configure Microsoft 365 Licenses
Onboarding takes minutes. Dex validates your credentials before saving them.
Setup steps
- 1Microsoft 365 Licenses shares the same tenant authorization as the rest of the M365 suite — no separate credentials required.
- 2When the admin onboards their M365 tenant to Dex (global admin consent for Microsoft Graph), Dex automatically inherits the scopes it needs for license management: Organization.Read.All, User.ReadWrite.All, Directory.Read.All.
- 3On the first license operation, Dex calls GET /subscribedSkus to discover the tenant's purchased products and caches the SKU ID → friendly name mapping.
- 4If you add or cancel subscriptions in M365 admin center, Dex picks up the changes on the next discovery call (no reconfiguration needed).
- 5Optional: to enable the license monitor to post Slack alerts, configure the Slack channel integration and set the default channel on the monitor tool (e.g. #license-alerts).
No extra credentials
This integration is covered by your Microsoft 365 tenant authorization to Dex. There are no per-app credentials to create or rotate.
Requirements
- •A Microsoft 365 tenant already connected to Dex via global admin consent (the Entra ID / M365 base integration)
- •Graph scopes granted: Organization.Read.All (list SKUs), User.ReadWrite.All (assign/unassign), Directory.Read.All (user lookup)
- •Users must have a valid usageLocation set before license assignment — Dex auto-sets it from the tenant's default country if missing
- •License assignment respects group-based licensing — if a user receives licenses via a group, direct assignment by Dex can conflict with the group policy
- •The forecasting / monitor feature requires ticket history data (e.g. from the SysAid or ServiceNow connector) to estimate future demand
Related integrations
- Directory & Identity
Microsoft Entra ID
Manage Entra ID users, groups, licenses, and sign-in risk through Microsoft Graph.
Learn more → - Device Management
Microsoft Intune
Manage Intune-enrolled devices, compliance, and apps from plain-language requests.
Learn more → - Directory & Identity
SharePoint
Grant, audit, and query SharePoint sites and lists through Microsoft Graph.
Learn more →
See Dex run Microsoft 365 Licenses
Book a 30-minute walkthrough with our team and see how autonomous IT works in your environment — or get started for free.