> ## Documentation Index
> Fetch the complete documentation index at: https://university.triggr-app.com/llms.txt
> Use this file to discover all available pages before exploring further.

# License Management

> Assigns or removes Microsoft 365 licences for one user in your client's tenant.

License Management changes which Microsoft 365 licences someone has. It assigns licences, removes them, or does both in one run, for example to move a user from Business Standard to Business Premium. It needs [Microsoft 365 connected](/core/get-started/connect-microsoft-365), with a GDAP role that can manage licences, such as [License Administrator](/integrations/microsoft-graph/recommended-roles).

<Frame caption="License Management in 50 seconds: what it asks, what it does and what you get.">
  <video controls preload="none" playsInline className="w-full aspect-video rounded-xl" poster="/images/videos/wf-license-management-overview.jpg" src="https://mintcdn.com/triggr/0aCLuL0-lL3gEqxH/images/videos/wf-license-management-overview.mp4?fit=max&auto=format&n=0aCLuL0-lL3gEqxH&q=85&s=0c68b00d781368b66f77be7905303cf5" data-path="images/videos/wf-license-management-overview.mp4" />
</Frame>

## What the form asks

| Field | |
| - | - |
| User | Required, always on. The person whose licences change, picked from the client's users |
| Licenses to assign | Optional, always on. One or more of the client's licences to add |
| Licenses to remove | Optional, always on. One or more of the client's licences to take away |
| Reason / ticket reference | Optional by default. For your records and the approver; not sent to Microsoft |

Fill in either licence list, or both.

## What it does

1. Creates a ticket in your PSA, if Ticketing is on.
2. Waits for approval, if Approval is Internal or External, or a conditional override matches.
3. Assign Licenses: adds the licences in Licenses to assign, in the client's Microsoft 365. Skipped when the list is empty.
4. Remove Licenses: takes away the licences in Licenses to remove. Skipped when the list is empty.

With Log actions to the ticket on, the ticket also gets a note when the run starts, after each step and when the run completes. The note after Remove Licenses names the licences it removed.

Licences are assigned before any are removed, so each new licence needs a free seat, even when the same run removes another one. If Microsoft can't assign a licence, the run stops there and nothing is removed.

## Configure it

Go to **Config** and click License Management, under Accounts & Access.

<Frame caption="Configure License Management: every option, step by step (1:25).">
  <video controls preload="none" playsInline className="w-full aspect-video rounded-xl" poster="/images/videos/wf-license-management-configure.jpg" src="https://mintcdn.com/triggr/0aCLuL0-lL3gEqxH/images/videos/wf-license-management-configure.mp4?fit=max&auto=format&n=0aCLuL0-lL3gEqxH&q=85&s=ec54a95cc51177d55d2e16ec63918823" data-path="images/videos/wf-license-management-configure.mp4" />
</Frame>

| Setting | Where | What it does |
| - | - | - |
| Availability | Header | Internal only, Public form only, Internal + public or Disabled. List on homepage needs a public form. Base config only |
| User, Licenses to assign, Licenses to remove | Form config | Always on: the automation needs them |
| Reason / ticket reference | Form config | Hidden, Optional or Required. Can differ per client |
| Add field, Add section | Form config | Your own questions. They're saved with the request and can go in ticket templates, but aren't sent to Microsoft. Add client section asks one client only |
| Approval | Approval | None runs on submit. Internal waits for a teammate or group; External waits for the client's approver, set on each client. Conditional overrides use a different approval when the answers match, for example when Licenses to assign is not empty. Let the approver edit the request lets them correct the answers first |
| Ticketing | Ticketing | Create a PSA ticket for each run, with its type, priority, status, subject and body. Log actions to the ticket adds an internal or public note as each action completes |
| User directory filters | User directory filters | Which users the User picker lists: licensed, active, no guests, and not in the Entra roles you exclude. Untick Licensed users only to list people without a licence. Exclude specific users at a client's scope |

Approval, Ticketing and User directory filters are set on Base config and apply to every client unless you override them for one. For how Base config and client overrides work, see [How configuration works](/core/get-started/configure-user-onboarding#settings-for-each-client).

## Troubleshooting

<AccordionGroup>
  <Accordion title="Someone isn't in the User list">
    Check User directory filters. Licensed users only is on by default, so people with no licence aren't listed; untick it on Base config or for that client. Active users only hides accounts whose sign-in is blocked.
  </Accordion>

  <Accordion title="“License assignment cannot be done for user with invalid usage location.”">
    Microsoft needs a usage location on the user before it can assign a licence. Set one in the Microsoft 365 admin center, then run it again.
  </Accordion>

  <Accordion title="Assign Licenses fails because no seat is free">
    Add a seat to that subscription, for example at your distributor, then run it again. The run stopped before removing anything.
  </Accordion>
</AccordionGroup>

## Related

* [Workflow catalogue](/core/reference/workflow-catalogue)
* [Run a workflow](/core/use/run-a-workflow)
* [Executions](/core/use/executions)
* [User Onboarding](/core/workflows/user-onboarding), which gives new starters their licences
* [User Offboarding](/core/workflows/user-offboarding), which can remove a leaver's licences


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.