LCM Schema Reference
Complete field reference for LCM contracts and licenses. Required and optional fields, value constraints, custom fields, and how the schema underpins the bulk upload template.
This is the complete field reference for LCM contracts and licenses, as used in the bulk upload template, the manual entry forms, and the underlying data model. Field names shown here are the canonical names. They match the column headers in the Excel template and the keys used by the API and integrations.
The schema is extensible at the project level via Settings templates, see Custom Fields and Templates. Constrained-value fields (like contract_type and status) accept a defined set of values which can be checked in the app on the manual creation form. Common values are listed below, but the canonical list is in the application itself and may grow over time.
Contract schema
A contract represents a single software agreement and contains all metadata about commercial terms, dates, vendor, and renewal information.
Required fields
| Field | Type | Description |
|---|---|---|
contract_number |
string | Unique identifier for the contract (e.g. AGR-12345). Used as the business key linking contracts to their licenses. |
contract_name |
string | A clear name (e.g. Adobe Creative Cloud 2025). |
contract_type |
string (constrained) | The kind of contract. See common values below. |
legal_entity |
string | The company within your organisation signing the contract (e.g. Acme Inc.). |
vendor_name |
string | The company providing the product or service (e.g. Microsoft). |
start_date |
string (YYYY-MM-DD) |
The date the contract begins. |
end_date |
string (YYYY-MM-DD) |
The date the contract ends. |
Optional fields
| Field | Type | Description |
|---|---|---|
status |
string (constrained) | Current state. Defaults to Automatic (derived from dates). |
business_owner |
string | Person responsible for the contract (name or email). |
po_number |
string | Purchase order number (e.g. PO-12345). |
invoice_number |
string | Invoice reference (e.g. INV-12345). |
total_value |
number | Total cost of the contract. |
currency |
string | Three-letter ISO currency code (e.g. USD, EUR, GBP). |
purchase_date |
string (YYYY-MM-DD) |
The date the contract was bought. |
renewal_date |
string (YYYY-MM-DD) |
The date to review for renewal. |
renewal_notice_days |
number | Days before renewal to be reminded. |
sla_terms |
string | Service level details (e.g. uptime guarantees). |
reseller_name |
string | The company that sold the product (if applicable). |
reseller_type |
string | The kind of reseller (e.g. distributor). |
notes |
string | Free-text internal notes. |
description |
string | Full explanation of contract coverage. |
Common values for contract_type
License Agreement, Enterprise Agreement, Support Agreement, Subscription Agreement, Reseller Agreement, Audit Agreement, Evaluation Agreement, Custom Agreement, Service Agreement.
The canonical list is available in the contract creation form in the app. New types may be added over time, when in doubt, check the app.
Common values for status
Automatic, Active, Expired, Future, Renewed, Terminated.
Automatic (the default) means LCM derives the status from the contract's start and end dates. Set this manually only when you need to override the derived value.
License schema
A license represents a specific entitlement granted under a contract. Each license is linked to a contract via contract_number.
Required fields
| Field | Type | Description |
|---|---|---|
contract_number |
string | The parent contract's contract_number. Required to link the license to its contract. |
license_name |
string | A clear name describing what the entitlement is. Used together with contract_number as the business key for matching during additive uploads. |
license_type |
string (constrained) | The kind of license. See common values below. |
quantity |
number | The number of units included. Set to 1 (or any value) when unlimited_quantity is True, quantity is ignored in that case. |
unlimited_quantity |
boolean | Whether the license allows unlimited use. Set to True for unlimited (e.g. site licenses); otherwise False. |
Optional fields
| Field | Type | Description |
|---|---|---|
status |
string (constrained) | Whether the license is active. Defaults to Automatic. |
use_contract_dates |
boolean | Whether the license inherits its validity dates from the contract. Defaults to True. Set False to use the license's own start_date / end_date. |
start_date |
string (YYYY-MM-DD) |
License-specific start date. Only used when use_contract_dates is False. |
end_date |
string (YYYY-MM-DD) |
License-specific end date. Only used when use_contract_dates is False. |
license_metric |
string | How the license is measured (e.g. per user, per device, per core). |
license_key |
string | The activation key or license code. |
sku |
string | A code identifying the specific product version. |
price |
number | Cost per unit. |
currency |
string | Three-letter ISO currency code for the price. |
has_maintenance |
boolean | Whether the license includes support or updates. |
downgrade_rights |
boolean | Whether the license allows using older versions. |
description |
string | Extra details about what the entitlement covers. |
website |
string | Link to the product or vendor site. |
product_publisher |
string | The company that makes the product. |
product_name |
string | The name of the product. Optional because some licenses (e.g. bundles or pooled entitlements) don't map to a single product. |
product_edition |
string | Specific edition (e.g. E3, Enterprise, Standard). |
product_version |
string | Version number or year. |
notes |
string | Free-text internal notes. |
Common values for license_type
Perpetual, Subscription, Open-Source.
Check the license creation form in the app for the canonical list.
Common values for status
Automatic, Active, Inactive.
Notes on schema behaviour
unlimited_quantity and quantity together. When unlimited_quantity is True, the value in quantity is ignored for entitlement calculations. Set it to any number (typically 1). Allocations against an unlimited license still consume from the license, but the Available count is meaningless because there's no fixed cap.
use_contract_dates defaults to True. Most licenses inherit their effective period from the parent contract, which is the right behaviour for the typical case of a contract granting one or more licenses for the same term. Use the license-level start_date / end_date only when the license has a different validity period (for example, a license that begins partway through a multi-year contract).
Constrained-value fields. For contract_type, status, and license_type, the bulk upload validates against the current allowed values. If your upload is rejected for one of these fields, check the app's manual creation form for the current canonical list.
Custom fields. The schema is extensible at the project level. See Custom Fields and Templates for the full mechanics. Per-record custom fields stay on individual records and aren't part of the bulk schema; Settings template fields become first-class fields at the project level and appear as columns in the upload template.
How the schema is used
This schema underpins:
- The bulk upload template (column headers map directly to these field names)
- The manual UI forms (labels are friendlier, but the underlying fields are these)
- The reports (field names appear as chart dimensions and column headers)
- Reporting and exports (use these field names as column headers)
- Integrations and the API (the data model exposed follows this schema)