Ticket
This document describes the core Ticket DTO model used by the Ticketing module, with full field-level references and TMF621 mapping.
1. Business Meaning
1.1 What a Ticket Represents
Ticket is the operational ticket record.
It captures classification, lifecycle, SLA context, and references to related entities and parties.
1.2 Lifecycle and Classification Governance
Ticket is intentionally small as a core operational record. The business policy is externalized to registries so operations teams can change behavior without changing API contracts.
Lifecycle and classification behavior is controlled by configurable code tables:
TicketTypeTicketStatusPrioritySeverityResolutionProblemTicketCategoryChannel
LinkType defines reverse naming semantics for ticket-to-ticket links.
This governance model separates runtime ticket data from governance data:
Ticketstores the case state and context,- registries define the controlled business vocabulary,
- workflows and automations evaluate registry values for routing, escalation, and SLA behavior.
Why this matters operationally:
- if
statusis free text, queue governance becomes inconsistent, - if
severity/priorityare not standardized, escalations are not comparable, - if
category/problemare inconsistent, RCA and trend reporting are weak, - if
resolutionis not normalized, closure quality and auditability degrade.
1.3 How to Configure Ticket Lifecycle and Classification
Recommended business-first setup (from policy to execution):
- Define business ticket families in TicketType (incident, request, complaint, preventive maintenance, partner issue).
- For each type, define allowed lifecycle checkpoints in TicketStatus and map them to your operating model (intake, triage, execution, validation, closure).
- Define impact model in Severity and urgency model in Priority so dispatchers can distinguish "how bad" from "how fast".
- Define intake sources in Channel (portal, call center, email, monitoring integration, partner API) for policy and analytics segmentation.
- Build reporting and assignment taxonomy in TicketCategory, then define recurrent root-cause groups in Problem.
- Define closure outcomes in Resolution to make closure reports and quality reviews consistent across teams.
- Define link semantics in LinkType and use TicketRelationship for parent-child, duplicate, and dependency structures.
Configuration principles:
- keep code tables stable and evolve labels/descriptions via localization/config,
- avoid duplicating meaning between fields (for example do not use both
problemandcategoryfor the same purpose), - keep "business language" in registries and "transaction facts" in Ticket,
- publish a short governance playbook so all teams apply the same classification rules.
When this model is configured, Ticket records become interoperable across care, assurance, and field operations. This is the key precondition for trustworthy KPI and SLA reporting.
1.4 Why These Attributes Exist
Business purpose of the core classification fields:
type: defines the business contract of the case, including default process, ownership boundaries, and reporting family.status: is the lifecycle checkpoint used for queue management, escalation, and SLA clock transitions.severity: expresses impact magnitude (customer, service, network, revenue, reputation).priority: expresses dispatch urgency and execution ordering.category: expresses organizational/service taxonomy for assignment and reporting.problem: expresses root-cause/problem-domain taxonomy for trend and prevention programs.resolution: expresses standardized closure reason/outcome for quality and compliance evidence.channel: expresses source of intake and supports channel-specific governance and analytics.key: exposes a human-readable business identifier used by operations and customer communication.externalId: links external alarm/case references for end-to-end traceability.
Typical policy interpretation:
- "
severitytells leadership how much damage exists." - "
prioritytells operations what to do next." - "
statustells everyone where the case is right now." - "
resolutiontells audit and quality why the case was closed."
1.5 Plain Explanation
If you explain the model to non-technical stakeholders:
type= what kind of case this is,status= where the case currently is,severity= how serious the impact is,priority= how quickly the team should work on it,category/problem= how we group and learn from cases,resolution= how the case ended,channel= where the case came from.
Reference links:
- Core ticket contract: Ticket
- Lifecycle and classification registries: TicketType, TicketStatus, Priority, Severity, Resolution, Problem, TicketCategory, Channel, LinkType
2. Entity Reference: Ticket
Ticket
Business role: core operational case object aligned with TMF621 Ticket. It represents one issue/request through its full lifecycle from intake to closure, including business priority, service-impact severity, ownership context, and auditability for compliance and KPI reporting.
| Field | Type | Required | Read-only | Description |
|---|---|---|---|---|
id | UUID? | No | No | Ticket unique identifier / primary key in UUID format. ID may be assigned by the client using UUIDv4 standard, or it is generated by TSM. This ID SHOULD NOT be displayed to the end user. Default: null. |
key | String? | No | No | Ticket unique identifier / business key in readable format. KEY may be assigned by the client using custom mnemonic, or it is generated by TSM. KEY generation is installation specific according to business rules. If no rules are available, the key is filled from a numeric sequence. This ID SHOULD be displayed to the end user. Default: null. |
name | String | Yes | No | Ticket name - a word, term, or phrase by which the ticket is known and distinguished from other tickets. The name should be unique, however it is not validated by TSM. |
description | String? | No | No | Free text to describe the ticket. It may contain HTML formatting. Default: null. |
type | String | Yes | No | Type of the entity. This value MUST be one of ticket type code from 'Ticket Type' registry FK TicketType.code |
channel | String? | No | No | Channel of the entity. This value MUST be one of ticket channel code from 'Channel' registry Default: null. |
severity | String? | No | No | Severity of the entity. This value MUST be one of ticket severity code from 'Severity' registry Default: null. |
status | String? | No | No | Status of the entity. This value MUST be one of ticket status code from 'TicketStatus' registry Default: null. |
priority | String? | No | No | Priority of the entity. This value MUST be one of ticket priority code from 'Priority' registry FK Priority.code |
resolution | String? | No | No | Resolution of the entity. This value MUST be one of ticket resolution code from 'Resolution' registry Default: null. |
problem | String? | No | No | Problem of the entity. This value MUST be one of ticket problem code from 'Problem' registry Default: null. |
category | String? | No | No | Category of the entity. This value MUST be one of ticket category code from 'Category' registry Default: null. |
closedDate | Date? | No | No | Close date Default: null. |
closedUser | UUID? | No | No | Closed user ID (UUID) Default: null. |
closedGroup | UUID? | No | No | Closed group ID (UUID) Default: null. |
creationUser | UUID? | No | No | Creation user ID (UUID) Default: null. |
creationGroup | UUID? | No | No | Creation group ID (UUID) Default: null. |
externalId | String? | No | No | External ID Default: null. |
chars | TsmChars | Yes | No | Chars. Default: TsmChars(). |
processingData | ProcessingData? | No | Write-only | Additional transient processing context. Not persisted as entity attributes; used only during processing and possibly stored in audit (sanitized). Use namespaced keys (e.g. 'routing', 'pricing', 'partner.o2'). Default: null. |
dataTags | List<String> | Yes | No | Data tags (aka Labels) for this ticket Default: listOf(). |
creationDate | Date | Yes | No | Creation date Default: Date(). |
sla | SlaValues? | No | No | Sla. Default: null. |
entities | List<RelatedEntity>? | No | No | Entities. Default: null. |
relatedParties | List<RelatedParty>? | No | No | Related Parties. Default: null. |
Enum TicketExpand
| Value | Meaning |
|---|---|
RELATED | Expand entities (RelatedEntity). |
RELATED_PARTIES | Expand relatedParties (RelatedParty). |
3. Entity Reference: Lifecycle and Classification Registries
TicketType
Business role: classifies tickets by business process (for example incident, request, complaint, maintenance). Type drives workflow routing, forms, privileges, and default process behavior.
| Field | Type | Required | Read-only | Description |
|---|---|---|---|---|
id | UUID? | No | No | Row unique identifier / primary key in UUID format. ID may be assigned by the client using UUIDv4 standard, or it is generated by TSM. This ID SHOULD NOT be displayed to the end user. |
code | String | Yes | No | Code of this value. It is used whenever the value is referenced from computer program or API. It MUST be unique and SHOULD contain only ASCII characters without spaces (best to use valid programming language identifier). |
name | String | Yes | No | Name of this value, this is displayed to the user. |
description | String? | No | No | Description of the value, it may be used as a tooltip. Default: null. |
validityFrom | Date? | No | No | Begin of the validity of the value. Default: null. |
validityTo | Date? | No | No | End of the validity of the value. Default: null. |
localizationData | LocalizationData? | No | No | Localization data of the record attributes Default: LocalizationData(). |
config | MutableMap<String, Any?> | No | No | Ticket-type config. Default: HashMap(). |
dataTags | List<String> | Yes | No | Additional data tags (aka labels). Default: ArrayList(). |
entitySpecId | UUID? | No | No | Entity Spec ID. Default: null. |
defaultProcessExpr | String? | No | No | Default Process Expr. Default: null. |
registry | MutableMap<String, Any?> | No | No | Ticket-type registry. Default: HashMap(). |
tsmModuleId | UUID? | No | No | Tsm Module ID. Default: null. |
ticketPrefix | String? | No | No | Ticket Prefix. Default: null. |
tabs | List<String> | Yes | No | Tabs. Default: listOf(). |
mnemonicCode | String? | No | No | Mnemonic Code. Default: null. |
processingData | ProcessingData? | No | No | Data are not stored to DB. Transient only Default: null. |
icon | String? | No | No | Graphic element displayed next to the type of notification Default: null. |
sla | String? | No | No | Sla. Default: null. |
createPrivilege | String? | No | No | Create Privilege. Default: null. |
tsmModule | String? | No | No | Tsm Module. |
TicketStatus
Business role: governs lifecycle state transitions and process checkpoints. It is the main control for operational queues, escalation policies, and closure governance.
| Field | Type | Required | Read-only | Description |
|---|---|---|---|---|
id | UUID? | No | No | Row unique identifier / primary key in UUID format. ID may be assigned by the client using UUIDv4 standard, or it is generated by TSM. This ID SHOULD NOT be displayed to the end user. |
code | String | Yes | No | Code of this value. It is used whenever the value is referenced from computer program or API. It MUST be unique and SHOULD contain only ASCII characters without spaces (best to use valid programming language identifier). |
name | String | Yes | No | Name of this value, this is displayed to the user. |
description | String? | No | No | Description of the value, it may be used as a tooltip. Default: null. |
validityFrom | Date? | No | No | Begin of the validity of the value. Default: null. |
validityTo | Date? | No | No | End of the validity of the value. Default: null. |
localizationData | LocalizationData? | No | No | Localization data of the record attributes Default: LocalizationData(). |
dataTags | List<String> | Yes | No | Additional data tags (aka labels). Default: ArrayList(). |
config | MutableMap<String, Any?> | No | No | Config of the value. Default: HashMap(). |
style | String? | No | No | CSS class style Default: null. |
statusCategory | StatusCategory? | No | No | Status category Default: null. |
localization | TsmChars? | No | No | Json structure of localization Default: TsmChars(). |
order | Double? | No | No | Order Default: null. |
Channel
Business role: identifies intake origin (customer portal, call center, monitoring system, partner API, etc.). Channel is used for operational analytics, SLA policy differences, and omnichannel service reporting.
| Field | Type | Required | Read-only | Description |
|---|---|---|---|---|
id | UUID? | No | No | Row unique identifier / primary key in UUID format. ID may be assigned by the client using UUIDv4 standard, or it is generated by TSM. This ID SHOULD NOT be displayed to the end user. |
code | String | Yes | No | Code of this value. It is used whenever the value is referenced from computer program or API. It MUST be unique and SHOULD contain only ASCII characters without spaces (best to use valid programming language identifier). |
name | String | Yes | No | Name of this value, this is displayed to the user. |
description | String? | No | No | Description of the value, it may be used as a tooltip. Default: null. |
validityFrom | Date? | No | No | Begin of the validity of the value. Default: null. |
validityTo | Date? | No | No | End of the validity of the value. Default: null. |
localizationData | LocalizationData? | No | No | Localization data of the record attributes Default: LocalizationData(). |
dataTags | List<String> | Yes | No | Additional data tags (aka labels). Default: ArrayList(). |
config | MutableMap<String, Any?> | No | No | Config of the value. Default: HashMap(). |
Priority
Business role: defines handling urgency and queue ordering. Priority is typically derived from impact and business criticality and is used for dispatch and escalation decisions.
| Field | Type | Required | Read-only | Description |
|---|---|---|---|---|
id | UUID? | No | No | Row unique identifier / primary key in UUID format. ID may be assigned by the client using UUIDv4 standard, or it is generated by TSM. This ID SHOULD NOT be displayed to the end user. |
code | String | Yes | No | Code of this value. It is used whenever the value is referenced from computer program or API. It MUST be unique and SHOULD contain only ASCII characters without spaces (best to use valid programming language identifier). |
name | String | Yes | No | Name of this value, this is displayed to the user. |
description | String? | No | No | Description of the value, it may be used as a tooltip. Default: null. |
validityFrom | Date? | No | No | Begin of the validity of the value. Default: null. |
validityTo | Date? | No | No | End of the validity of the value. Default: null. |
localizationData | LocalizationData? | No | No | Localization data of the record attributes Default: LocalizationData(). |
config | MutableMap<String, Any?> | No | No | config of the value, it may be used for another variables Default: HashMap(). |
dataTags | List<String> | Yes | No | Additional data tags (aka labels). Default: ArrayList(). |
style | String? | No | No | CSS class style Default: null. |
Severity
Business role: expresses technical/business impact magnitude of the issue. Severity is a key input for SLA objective selection, incident command level, and stakeholder communication.
| Field | Type | Required | Read-only | Description |
|---|---|---|---|---|
id | UUID? | No | No | Row unique identifier / primary key in UUID format. ID may be assigned by the client using UUIDv4 standard, or it is generated by TSM. This ID SHOULD NOT be displayed to the end user. |
code | String | Yes | No | Code of this value. It is used whenever the value is referenced from computer program or API. It MUST be unique and SHOULD contain only ASCII characters without spaces (best to use valid programming language identifier). |
name | String | Yes | No | Name of this value, this is displayed to the user. |
description | String? | No | No | Description of the value, it may be used as a tooltip. Default: null. |
validityFrom | Date? | No | No | Begin of the validity of the value. Default: null. |
validityTo | Date? | No | No | End of the validity of the value. Default: null. |
localizationData | LocalizationData? | No | No | Localization data of the record attributes Default: LocalizationData(). |
config | MutableMap<String, Any?> | No | No | config of the value, it may be used for another variables Default: HashMap(). |
dataTags | List<String> | Yes | No | Additional data tags (aka labels). Default: ArrayList(). |
style | String? | No | No | CSS class style Default: null. |
defaultValue | Boolean? | No | No | Severity default value flag Default: null. |
Resolution
Business role: records standardized closure outcome (for example fixed, workaround, duplicate, not reproducible). It supports quality analytics, RCA trend reporting, and regulatory evidence.
| Field | Type | Required | Read-only | Description |
|---|---|---|---|---|
id | UUID? | No | No | Row unique identifier / primary key in UUID format. ID may be assigned by the client using UUIDv4 standard, or it is generated by TSM. This ID SHOULD NOT be displayed to the end user. Default: null. |
code | String | Yes | No | Code of this value. It is used whenever the value is referenced from computer program or API. It MUST be unique and SHOULD contain only ASCII characters without spaces (best to use valid programming language identifier). |
name | String | Yes | No | Name of this value, this is displayed to the user. |
description | String? | No | No | Description of the value, it may be used as a tooltip. Default: null. |
validityFrom | Date? | No | No | Begin of the validity of the value. Default: null. |
validityTo | Date? | No | No | End of the validity of the value. Default: null. |
localizationData | LocalizationData? | No | No | Localization data of the record attributes Default: LocalizationData(). |
dataTags | List<String> | Yes | No | Additional data tags (aka labels). Default: ArrayList(). |
config | MutableMap<String, Any?> | No | No | Config of the value. Default: HashMap(). |
Problem
Business role: categorizes problem domain/root-cause family. It improves triage speed and enables consistent knowledge-base and problem-management reporting.
| Field | Type | Required | Read-only | Description |
|---|---|---|---|---|
id | UUID? | No | No | Row unique identifier / primary key in UUID format. ID may be assigned by the client using UUIDv4 standard, or it is generated by TSM. This ID SHOULD NOT be displayed to the end user. |
code | String | Yes | No | Code of this value. It is used whenever the value is referenced from computer program or API. It MUST be unique and SHOULD contain only ASCII characters without spaces (best to use valid programming language identifier). |
name | String | Yes | No | Name of this value, this is displayed to the user. |
description | String? | No | No | Description of the value, it may be used as a tooltip. Default: null. |
validityFrom | Date? | No | No | Begin of the validity of the value. Default: null. |
validityTo | Date? | No | No | End of the validity of the value. Default: null. |
localizationData | LocalizationData? | No | No | Localization data of the record attributes Default: LocalizationData(). |
config | MutableMap<String, Any?> | No | No | config of the value, it may be used for another variables Default: HashMap(). |
dataTags | List<String> | Yes | No | Additional data tags (aka labels). Default: ArrayList(). |
parentCode | String? | No | No | Parent code of the value Default: null. |
parent | UUID? | No | No | Parent ID of the value. FK self.ID Default: null. |
TicketCategory
Business role: provides hierarchical functional taxonomy for reporting, ownership boundaries, and assignment rules. Categories support portfolio-level incident analytics and routing segregation.
| Field | Type | Required | Read-only | Description |
|---|---|---|---|---|
id | UUID? | No | No | Row unique identifier / primary key in UUID format. ID may be assigned by the client using UUIDv4 standard, or it is generated by TSM. This ID SHOULD NOT be displayed to the end user. |
code | String | Yes | No | Code of this value. It is used whenever the value is referenced from computer program or API. It MUST be unique and SHOULD contain only ASCII characters without spaces (best to use valid programming language identifier). |
name | String | Yes | No | Name of this value, this is displayed to the user. |
description | String? | No | No | Description of the value, it may be used as a tooltip. Default: null. |
validityFrom | Date? | No | No | Begin of the validity of the value. Default: null. |
validityTo | Date? | No | No | End of the validity of the value. Default: null. |
localizationData | LocalizationData? | No | No | Localization data of the record attributes Default: LocalizationData(). |
config | MutableMap<String, Any?> | No | No | config of the value, it may be used for another variables Default: HashMap(). |
dataTags | List<String> | Yes | No | Additional data tags (aka labels). Default: ArrayList(). |
parentId | UUID? | No | No | Parent ID. FK self.ID Default: null. |
LinkType
Business role: defines semantics of relations between tickets (for example parent-child, duplicate, dependency) including reverse business wording for UI and reporting clarity.
| Field | Type | Required | Read-only | Description |
|---|---|---|---|---|
id | UUID? | No | No | Row unique identifier / primary key in UUID format. ID may be assigned by the client using UUIDv4 standard, or it is generated by TSM. This ID SHOULD NOT be displayed to the end user. |
code | String | Yes | No | Code of this value. It is used whenever the value is referenced from computer program or API. It MUST be unique and SHOULD contain only ASCII characters without spaces (best to use valid programming language identifier). |
name | String | Yes | No | Name of this value, this is displayed to the user. |
description | String? | No | No | Description of the value, it may be used as a tooltip. Default: null. |
validityFrom | Date? | No | No | Begin of the validity of the value. Default: null. |
validityTo | Date? | No | No | End of the validity of the value. Default: null. |
localizationData | LocalizationData? | No | No | Localization data of the record attributes Default: LocalizationData(). |
config | MutableMap<String, Any?> | No | No | Configuration of the value, it may be used for another variables Default: HashMap(). |
dataTags | List<String> | Yes | No | Additional data tags (aka labels). Default: ArrayList(). |
reverseName | String? | No | No | Reverse Name. Default: null. |
Enum StatusCategory
| Value | Meaning |
|---|---|
NEW | Newly created status. |
IN_PROGRESS | Work in progress status. |
RESOLVED | Resolved state before final closure. |
DONE | Final completed state. |
CANCELED | Canceled state. |
Enum TicketStatusExpand
| Value | Meaning |
|---|---|
LOCALIZATION | Expand deprecated localization block on status. |
4. TMF621 Mapping
TMF621 baseline mapping to tSM Ticket model:
| TMF621 field | tSM DTO field | Notes |
|---|---|---|
id | Ticket.id + business Ticket.key | tSM distinguishes technical UUID and readable business key. |
name | Ticket.name | Direct semantic mapping. |
description | Ticket.description | Direct semantic mapping. |
ticketType | Ticket.type | Code-table driven (TicketType.code). |
severity | Ticket.severity | Code-table driven (Severity.code). |
priority | Ticket.priority | Code-table driven (Priority.code). |
status | Ticket.status | Code-table driven (TicketStatus.code). |
creationDate | Ticket.creationDate | Direct semantic mapping. |
resolutionDate | Ticket.closedDate (project mapping) | Often used as terminal resolution timestamp in tSM projects. |
relatedEntity[] | Ticket.entities (RelatedEntity) | Related/impacted objects. |
relatedParty[] | Ticket.relatedParties (RelatedParty) | Involved parties and roles. |
troubleTicketCharacteristic[] | Ticket.chars | Characteristics map pattern (TsmChars). |
troubleTicketRelationship[] | TicketRelationship | Separate relationship entity in tSM. |
TMF621 status baseline values are: acknowledged, rejected, pending, held, inProgress, cancelled, closed, resolved.
In tSM, status codes are implementation-specific and configured in TicketStatus.code.
4.1 Source
TMF621_Trouble_Ticket_userguide-v5.0.1.pdf(Team Approved 23-03-2025, Version 5.0.1).