Order Model Reference
This document is the reference model for tSM Ordering core entities.
Scope of this page:
OrderPublic(Order) header model,OrderLinePublic(OrderLine) line model,OrderTypePublicregister model,OrderStatusPublicregister model.
Process behavior and runtime orchestration logic are documented in Order Process Handling.
1. Conceptual Model
2. Order (OrderPublic)
OrderPublic is the business envelope for one customer/partner request.
2.1 Field Reference
| Field | Type | Required | Meaning |
|---|---|---|---|
id | UUID | No (create) | technical primary key; UUID identifier. |
key | String | No (create) | business identifier; generated by mnemonic/sequence if missing. |
subject | String | Yes | order subject. |
orderType | String | Yes | FK to OrderTypePublic.code. |
status | String | Yes | FK to OrderStatusPublic.code. |
description | String | No | order description. |
orderDate | Date | No | order date. |
deliveryDateRequested | Date | No | requested delivery date. |
deliveryDate | Date | No | actual/committed delivery date. |
customerId | UUID | Yes | customer identity reference. |
accountId | UUID | Yes | account identity reference. |
personRoleIds | List<UUID> | No | related person roles. |
crmAddressRoleIds | List<UUID> | No | related CRM address roles. |
orderLines | List<OrderLinePublic> | No | embedded line list for create/update patterns. |
dataTags | List<String> | No | labels/tags. |
chars | TsmChars | No | dynamic order attributes. |
processingData | Object | No | transient write-only processing context. |
2.2 Example
{
"id": "b8dba9f9-fd3f-4a12-8d54-2de1f9ac10ab",
"key": "ORD-2025-000145",
"subject": "Business Internet activation - Site Prague 4",
"orderType": "SERVICE.ACTIVATION",
"status": "DRAFT",
"description": "New B2B internet activation with optional public IP.",
"orderDate": "2025-02-24T09:05:00.000+00:00",
"deliveryDateRequested": "2025-03-03T00:00:00.000+00:00",
"customerId": "b75aa001-36f8-4f8d-a4f3-813e8d4f77b0",
"accountId": "9c8aa879-b2de-45d2-9c11-13ca6f30d7f9",
"personRoleIds": [
"f51e0d4c-a7e8-4f57-90a8-38d3b8c3e824"
],
"crmAddressRoleIds": [
"221d2ff7-9db4-43f0-a091-61f4a533ad76"
],
"dataTags": ["B2B", "INTERNET"],
"chars": {
"salesChannel": "CC_INTERNAL",
"salesMode": "ACTIVE",
"campaignCode": "Q1-Internet"
},
"processingData": {
"routing": {
"sourceSystem": "selfcare"
}
}
}
3. Order Line (OrderLinePublic)
OrderLinePublic represents the executable unit inside an order.
3.1 Field Reference
| Field | Type | Required | Meaning |
|---|---|---|---|
id | UUID | No (create) | technical line identifier. |
orderId | UUID | No | FK to parent order. |
name | String | No | line label/title. |
entityCatalogSpecificationId | UUID | No | target catalog specification. |
entityInstanceConfigurationId | UUID | No | target runtime inventory configuration. |
entityInstanceConfiguration | Object | Read-only | expansion field for configuration payload. |
lineType | Enum | No | PRODUCT, SERVICE, WFM, PRICELIST, MATERIAL. |
operation | Enum | No | ADD, REMOVE, UPDATE, TAKEOVER, MOVE, LINK. |
parentOrderLineId | UUID | No | parent line for hierarchy decomposition. |
chars | TsmChars | No | dynamic line attributes. |
quantity | Int | No | quantity (default 1). |
vat | Float | No | VAT context. |
isValid | Boolean | No | line validity marker. |
validFor | TimePeriodAlt | No | validity window. |
| pricing fields | Decimal/Date | No | recurring/usage pricing and usage horizon. |
processingData | Object | No | transient write-only processing context. |
data | Map | No | custom line data map. |
3.2 Example
[
{
"id": "6fa9d942-f77b-4e4b-b906-f3b57f6f41c1",
"orderId": "b8dba9f9-fd3f-4a12-8d54-2de1f9ac10ab",
"name": "Business Internet Product",
"lineType": "PRODUCT",
"operation": "ADD",
"entityCatalogSpecificationId": "43cc8433-0477-4d2b-b5dc-15c33c0f3576",
"quantity": 1,
"chars": {
"bundleCode": "BIZ-INTERNET-100"
}
},
{
"id": "0c40d117-a1c6-4128-89a0-62d16bbfe7aa",
"orderId": "b8dba9f9-fd3f-4a12-8d54-2de1f9ac10ab",
"name": "Internet Service",
"lineType": "SERVICE",
"operation": "ADD",
"entityCatalogSpecificationId": "8bde2bfa-2de1-4775-9954-c48ef49ae89b",
"parentOrderLineId": "6fa9d942-f77b-4e4b-b906-f3b57f6f41c1",
"quantity": 1,
"chars": {
"internetService": {
"internetBandwidth": "100",
"internetServiceMaxSpeed": "1"
}
}
},
{
"id": "f17eb32e-2f6d-4b80-bf4f-591a5e9e6536",
"orderId": "b8dba9f9-fd3f-4a12-8d54-2de1f9ac10ab",
"name": "Existing Monitoring Service Update",
"lineType": "SERVICE",
"operation": "UPDATE",
"entityInstanceConfigurationId": "f1139a0c-e98c-42a5-a45c-5e70ea388ec1",
"quantity": 1,
"chars": {
"monitoringProfile": "PREMIUM"
}
}
]
3.3 Order Line Enums
OrderLineType:
PRODUCTSERVICEWFMPRICELISTMATERIAL
OrderLineOperation:
ADDREMOVEUPDATETAKEOVERMOVELINK
4. Order Type Register (OrderTypePublic)
OrderTypePublic is a code-table type entity used to parameterize ordering behavior.
4.1 Field Reference
| Field | Type | Meaning |
|---|---|---|
id, code, name | UUID/String/String | identity of register value. |
description, localizationData | String/Object | user-facing documentation/localization. |
validityFrom, validityTo, valid | Date/Date/Boolean | validity governance. |
orderSpecId | UUID | optional order specification binding. |
orderLineSpecId | UUID (deprecated) | deprecated line specification reference. |
entitySpecificationFilter | Any | filter for selectable entity specifications. |
defaultProcessExpr | String | process resolution expression. |
sortOrder | Int | UI ordering. |
mnemonicCode | String | key generation mnemonic template. |
json, registry, config | JSON maps | installation-specific configuration. |
tsmModule, icon, dataTags | String/String/List | module/UI/tagging metadata. |
4.2 Example
{
"id": "7d0b6ab2-6423-4b87-ad2f-4e8f770d9ea0",
"code": "SERVICE.ACTIVATION",
"name": "Service Activation",
"description": "Activation order for fixed internet service.",
"orderSpecId": "aaf29f4d-d71a-4b9f-a4ad-39bbdc2f2ea1",
"entitySpecificationFilter": {
"type": ["SERVICE", "PRODUCT"],
"category": ["Core.Services", "Value.Added.Services"]
},
"defaultProcessExpr": "'ORD.Process.ServiceActivation'",
"sortOrder": 30,
"mnemonicCode": "'ORD-' + #order.accountId.toString().substring(0,4) + '-' + T(java.time.LocalDate).now().getYear()",
"config": {
"allowMixedActions": false,
"requiredChecker": true
},
"json": {
"ui": {
"newForm": "Order.Forms.ServiceActivation.New",
"detailForm": "Order.Forms.ServiceActivation.Detail"
}
},
"dataTags": ["B2B"]
}
5. Order Status Register (OrderStatusPublic)
OrderStatusPublic is a plain status register for order lifecycle codes.
5.1 Field Reference
| Field | Type | Meaning |
|---|---|---|
id, code, name | UUID/String/String | status identity. |
description, localizationData | String/Object | user-facing semantics/localization. |
validityFrom, validityTo, valid | Date/Date/Boolean | validity governance. |
order | Double | optional display ordering of statuses. |
dataTags, config | List/Map | extension metadata. |
5.2 Example
{
"id": "1540cc9c-8ff2-4f32-885f-ece1b75ba1c7",
"code": "IN_PROGRESS",
"name": "In Progress",
"description": "Order is being fulfilled by orchestration and operational teams.",
"order": 30,
"validityFrom": "2024-01-01T00:00:00.000+00:00",
"validityTo": null,
"localizationData": {
"en": {
"name": "In Progress",
"description": "Order is being fulfilled"
}
}
}
6. Processing Data Reference
processingData is available on both OrderPublic and OrderLinePublic with the same principles:
- write-only API context,
- transient processing metadata,
- namespaced keys recommended (
routing.*,pricing.*,partner.*), - validation limits applied (top-level keys, payload size, nesting depth).