Skip to main content
Version: 2.4

SLA and Advice

This document describes SLA definition DTOs and Advice DTOs used by Ticketing.

1. Business Meaning

1.1 SLA Definition

SLA behavior in Ticketing is defined using:

  • Sla as the main SLA definition,
  • Metric as measurable SLA dimensions,
  • Goal as concrete target values,
  • ConditionItem as event-driven start/end/pause/recalculation conditions.

This model separates policy definition from runtime execution:

  • policy is defined in Sla/Metric/Goal,
  • runtime clocks are controlled by lifecycle events evaluated through ConditionItem.

Business effect: organizations can evolve contractual logic without changing core ticket schema.

1.2 Advice and SLA Pause Semantics

Advice marks time intervals where SLA is typically paused.

Operationally:

  • AdviceType.impactOnSla indicates whether advice affects SLA timing,
  • Advice.dateFrom / Advice.dateTo represent actual pause interval bounds,
  • Advice.plannedDateTo and notificationMinutes support planned stop and reminders.

Typical business usage:

  • waiting for customer confirmation,
  • waiting for third-party supplier,
  • waiting for planned maintenance window,
  • waiting for physical access permit.

By explicitly storing these intervals, SLA fairness is transparent and auditable.

1.3 How to Configure SLA and Advice

Recommended business-first setup:

  1. Define SLA families in Sla per operational domain (type, moduleId) such as incident assurance, field dispatch, or partner handling.
  2. Define Metric objects for what must be measured, for example time to acknowledge, time to restore, and time to resolve.
  3. Define Goal thresholds per metric, including business calendar rules (working hours, holidays, 24x7).
  4. Define ConditionItem rules to map lifecycle events to SLA clocks (START, END, PAUSE_START, PAUSE_END, RECALC).
  5. Validate metric conditions against actual ticket workflow to avoid ambiguous or conflicting clock transitions.
  6. Define AdviceType records and explicitly decide which reasons affect SLA using impactOnSla.
  7. Operationalize Advice usage in procedures so pauses are entered with clear reason and planned end (plannedDateTo).
  8. Add reminder discipline via notificationMinutes so paused tickets reliably return to active handling.

Configuration principles:

  • keep metric semantics stable and business-readable,
  • keep goal calendars explicit to avoid false breaches,
  • keep pause reasons finite and auditable,
  • keep SLA and Advice governance aligned with contractual obligations and partner agreements.

1.4 Why SLA and Advice Attributes Exist

Business rationale:

  • SLA type and moduleId: bind policy to the right operating context and accountable organization unit.
  • metric conditions: convert lifecycle events into deterministic measurable clocks.
  • goals time and calendar: express contractual targets in business-time semantics.
  • advice impactOnSla: controls whether a pause reason should stop SLA time.
  • advice dateFrom / dateTo: preserve exact pause boundaries for audit, penalty review, and dispute handling.
  • advice plannedDateTo: introduces expected resume point for operational planning.
  • advice notificationMinutes: adds proactive reminder control to prevent stale paused cases.

Operational outcomes:

  • clearer contractual governance,
  • fewer false SLA breaches,
  • stronger auditability for partner/customer disputes,
  • improved operational discipline during waiting intervals.

1.5 Plain Explanation

Simple explanation:

  • Sla says which commitments apply.
  • Metric says what we measure.
  • Goal says what target must be achieved.
  • ConditionItem says when the SLA clock starts, stops, pauses, or recalculates.
  • Advice says "we are waiting now", and this is typically when SLA pause is recorded.
  • AdviceType says whether that waiting reason should pause SLA or not.

If teams use this consistently, SLA results become fair, explainable, and trusted by operations and business stakeholders.

Reference links:


2. Entity Reference: SLA

Sla

Business role: top-level SLA policy object defining which service objectives apply for a module/process context. It is the governance anchor for contractual response/resolution commitments.

FieldTypeRequiredRead-onlyDescription
idUUID?NoNoRow 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.
codeStringYesNoCode of the SLA. 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).
nameStringYesNoName of this SLA, this is displayed to the user.
descriptionString?NoNoDescription of the SLA, it may be used as a tooltip. Default: null.
validityFromDate?NoNoBegin of the validity of the SLA. Default: null.
validityToDate?NoNoEnd of the validity of the SLA. Default: null.
typeString?YesNoType of this SLA Default: null.
metricsList<Metric>?NoNoList of SLA Metric codes which are applied. Default: ArrayList().
moduleIdUUID?NoNoID of target TSM module for which the SLA is defined.FK TsmModule.id Default: null.
localizationDataLocalizationData?NoNoLocalization data associated with the SLA. Default: LocalizationData().
dataTagsList<String>YesNoAdditional data tags (aka labels). Default: ArrayList().
configMutableMap<String, Any?>NoNoConfig of the value. Default: HashMap().

SlaExpanded

Business role: read model variant of SLA used when metric detail must be delivered in one payload for UI/API consumers.

FieldTypeRequiredRead-onlyDescription
idUUID?NoNoRow 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.
codeStringYesNoCode of the sla. 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).
nameStringYesNoName of this sla, this is displayed to the user.
typeString?YesNoType of this sla Default: null.
metricsList<Metric>?NoNoMetrics. Default: null.

Metric

Business role: measurable SLA dimension (for example time-to-acknowledge or time-to-resolve) with start/end/pause rules and target goals.

FieldTypeRequiredRead-onlyDescription
idUUID?NoNoRow 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.
codeStringYesNoCode of the metric. 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).
nameStringYesNoName of this metric, this is displayed to the user.
descriptionString?NoNoDescription of the value, it may be used as a tooltip. Default: null.
tooltipString?NoNoTooltip. Default: null.
orderDouble?NoNoOrder. Default: null.
slaIdUUID?NoNoSla ID. Default: null.
conditionsList<ConditionItem>YesNoConditions. Default: ArrayList().
goalsList<Goal>?NoNoGoals. Default: emptyList().
startSpelExpressionString?NoNoStart Spel Expression. Default: null.
endSpelExpressionString?NoNoEnd Spel Expression. Default: null.
dataMutableMap<String, Any?>NoNoData of entity Default: HashMap().

Goal

Business role: concrete target threshold for an SLA metric, including calendar and optional conditional expression.

FieldTypeRequiredRead-onlyDescription
idUUID?NoNoRow 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.
metricIdUUIDYesNoMatric ID
spelExpressionString?NoNoSPEL expression Default: null.
timeStringYesNoTime in format hours:minutes
calendarStringYesNoCalendar
orderDouble?NoNoOrder. Default: null.

ConditionItem

Business role: event condition rule defining when metric measurement starts, ends, pauses, or recalculates during ticket lifecycle execution.

FieldTypeRequiredRead-onlyDescription
eventTypeStringYesNoEvent Type.
eventDataMutableMap<String, Any?>NoNoEvent Data.
typeConditionItemTypeYesNoType.

Enum SlaExpand

ValueMeaning
METRICSExpand SLA metrics.
METRICS_GOALSExpand SLA metrics and their goals.

Enum ConditionItemType

ValueMeaning
STARTCondition starts SLA metric measurement.
ENDCondition ends SLA metric measurement.
PAUSE_ENDCondition ends SLA pause interval.
PAUSE_STARTCondition starts SLA pause interval.
RECALCCondition triggers SLA recalculation.

3. Entity Reference: Advice

Advice

Business role: operational marker for waiting/dependency intervals where SLA clock is typically paused (for example awaiting customer, vendor, shipment, or planned maintenance window).

FieldTypeRequiredRead-onlyDescription
idUUID?NoNoRow 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.
ticketIdUUIDYesNoTicket this advice belongs to.
adviceTypeStringYesNoCode of the advice type.
impactOnSlaBoolean?NoYesImpact on SLA. Default: null.
adviceStatusAdviceStatusYesNoStatus of the advice. Default: AdviceStatus.VALID.
descriptionString?NoNoAdvice description - usually the reason why the advice was created. Default: null.
dateFromDateYesNoStart date of the Advice - date when SLA calculation should be paused (for adviceType with impact on Sla)
dateToDate?NoNoReal date when the Advice was stopped. Default: null.
plannedDateToDate?NoNoReal date when the Advice was stopped. Default: null.
notificationMinutesInt?NoNoIf set, the number of minutes before the plannedDateTo to send notification. Default: null.
dataMap<String, Any?>NoNoAny additional data in JSON format. Default: HashMap().

AdviceType

Business role: controlled taxonomy of advice reasons with explicit indicator whether the advice affects SLA timing.

FieldTypeRequiredRead-onlyDescription
idUUID?NoNoRow 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.
codeStringYesNoCode 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).
nameStringYesNoName of this value, this is displayed to the user.
descriptionString?NoNoDescription of the value, it may be used as a tooltip. Default: null.
validityFromDate?NoNoBegin of the validity of the value. Default: null.
validityToDate?NoNoEnd of the validity of the value. Default: null.
localizationDataLocalizationData?NoNoLocalization data of the record attributes Default: LocalizationData().
configMutableMap<String, Any?>NoNoconfig of the value, it may be used for another variables Default: HashMap().
dataTagsList<String>YesNoAdditional data tags (aka labels). Default: ArrayList().
impactOnSlaBooleanYesNoInformation from AdviceType - cannot be updated Default: false.

TaskState

Business role: compact state descriptor used for task-state representation in workflow-related ticket operations.

FieldTypeRequiredRead-onlyDescription
codeStringYesNoCode
nameStringYesNoName
descriptionString?NoNoDescription Default: null.

Enum AdviceStatus

ValueMeaning
VALIDAdvice definition is valid and available.
CANCELEDAdvice was canceled before completion.
CLOSEDAdvice finished and was closed.
ACTIVEAdvice is currently active.