Subscription Licenses
Most modern software is sold as a subscription — Microsoft 365, Adobe Creative Cloud, Salesforce, Slack, GitHub Enterprise, Zoom. This page covers how to model subscriptions correctly in xAssets and which License Type to choose for the most common cases.
Choosing the License Type
There is a license type called SUBSCRIPTION (display name "Per Subscription"). The name suggests it for any subscription product, but it is specifically a per-device type — it counts one consumption per computer with the product installed. That fits per-device subscriptions (some Office 365 kiosk configurations, some Citrix per-device deployments) but not per-user SaaS, which is the more common shape today.
For per-user subscriptions — Microsoft 365 user plans, Adobe Creative Cloud, Salesforce, GitHub Enterprise, and so on — use USER or NAMEDUSER instead.
What to Use Instead
For per-user SaaS subscriptions — which is most of them — use:
USER("Per User") — for general per-user subscriptionsNAMEDUSER("Per Named User") — when the license is tied to a specific named individual
| Product | License Type |
|---|---|
| Microsoft 365 (E3, E5, F3, Apps for Business) | USER |
| Adobe Creative Cloud All Apps | USER or NAMEDUSER |
| Salesforce Sales Cloud / Service Cloud | USER |
| Google Workspace | USER |
| GitHub Enterprise (per-seat) | NAMEDUSER |
| Slack Pro / Business+ | USER |
| Zoom Pro / Business | USER |
| Atlassian Jira / Confluence (per-user) | USER |
For the rare per-device subscription case:
SUBSCRIPTION— when the contract is genuinely per-deviceSERVER— for per-server subscriptions like some Microsoft Server SKUs
What SUB Is (and Is Not)
There is also a license type called SUB (display name "Sub Component"). This is different again — it represents a component of a larger SKU bundle. Despite the name looking similar, SUB is not a subscription type. Do not use SUB for subscription products.
| Code | Display | Counts | Use For |
|---|---|---|---|
SUB |
Sub Component | Per device | License bundles with sub-components |
SUBSCRIPTION |
Per Subscription | Per device | Per-device subscriptions (rare) |
USER |
Per User | Per user | Most SaaS subscriptions |
NAMEDUSER |
Per Named User | Per named user | Subscriptions tied to specific individuals |
How to Model a Subscription Correctly
For a typical per-user SaaS subscription (e.g., 50 Microsoft 365 E3 seats):
1. Set the Catalog Entry
Open the catalog entry for "Microsoft 365 E3" (or create it). Set:
- License Type =
USER - Downgrade Rule = None (subscriptions usually do not have downgrade rights)
2. Create the License Record
Either via Standard License Import or Creating a License Record:
- Software Product = Microsoft 365 E3
- License Type =
USER(inherits from catalog if blank) - Seats = 50
- Date Purchased = subscription start date
- End Date = subscription end date (so the engine stops counting it after expiry)
3. Set the End Date
Subscriptions have a finite term. Set the End Date field on the license so the engine knows when to stop counting it. Without an end date, the license remains In Service indefinitely and you have to remember to manually expire it.
What happens at the End Date. When End Date is in the past, the engine stops counting the license toward capacity for periods after that date — but the license record itself stays In Service until you change its status. This is intentional: the record carries useful history (cost, supplier, contract reference) that you may want for audit purposes after the subscription has expired. For a clean register, periodically review expired licenses and set Status to Out of Service.
When the subscription is up for renewal, you can either:
- Update the End Date to the new term (continuation pattern)
- Mark the existing license Expired and create a new one for the new term (per-year audit trail pattern)
See License Status Codes for the renewal workflow.
Custodian Assignment for Named-User Subscriptions
For NAMEDUSER subscriptions, the typical pattern is to set a Custodian on each license record (or to use direct assignment). This binds the license to a specific person and makes the custodian visible in the licensing position.
For USER subscriptions where the seats are pooled (any of N users can have it), leaving Custodian blank lets the engine allocate freely.
Subscriptions and the Licensing Position
A USER-typed subscription appears in the position with consumption counted per user assigned to the product. The Outstanding Requirement column shows users with the product but no allocated seat.
For SaaS subscriptions where the vendor (not your discovery) is the source of truth for who has access, you may want to load user assignments from the vendor's API rather than from on-machine discovery. This is an integration topic — see the relevant page in the IT Asset Management Guide for SCCM and Intune integration patterns.
Related Reading
- Concepts: License Metrics — full list of license types
- License Status Codes — renewal patterns
- Importing Licenses: Adobe License Import — Adobe-specific subscription pipeline