Skip to main content

What is a Form in tSM?

Forms in tSM are not merely UI screens — they are metadata-driven constructs that bridge the user interface, data model, and runtime behavior within the tSM platform. Their role extends far beyond simple data entry.

Core Purpose

A form in tSM serves two key purposes:

  • User Interface Construction: It defines how fields are laid out, grouped, and rendered in the frontend.
  • Entity Model Extension: It allows dynamic extension of entity data (via Characteristics) without schema changes.

Thus, forms serve both presentation and data modeling functions — enabling deep customization of the UI and underlying data structures for entities like Tickets, Customers, or Orders.

form

Where Forms Live in tSM

Forms are part of a broader configuration ecosystem and are typically linked to:

ElementRole
EntitiesThe core data models (Ticket, Customer, Order, etc.)
CharacteristicsCustom fields attached dynamically to entities
Configuration ProfilesDefine which forms and fields are available per entity profile
Processes / LogicAutomations and backend flows connected to the form runtime

Every form is attached to an entity through its Configuration Profile (Enity Specification in TM Forum specification) and loaded via a form selector such as tsm-customer-detail.

Key Components of a Form

Each tSM form is composed of multiple layers:

LayerDescription
JSON SchemaDescribes the structure of the form — fields, layout, validation
WidgetsIndividual UI elements (e.g., text inputs, dropdowns, listings)
Layout ComponentsUI containers (e.g., tabs, cards, columns) that group fields
Runtime LogicExpressions using JEXL for dynamic behavior (e.g., visibility, defaults)
BindingsLinks between UI and entity data via chars and entity properties
Context VariablesProvide runtime context: $context.form, $context.entity, etc.

Design-Time vs Runtime

Forms in tSM operate in two distinct contexts:

ContextDescription
Design-TimeForm is edited in the Form Designer. Static values only.
RuntimeForm is rendered in live UI. Full access to $context, real data, scripts

Important note: Certain expressions or logic (e.g., $context.form.customerType) will not work in Design-Time and must be tested in the live environment.

Form Types

Forms in tSM can appear in several UI contexts, depending on their purpose:

TypeDescription
DashboardWidget-based form embedded in dashboards. Used for summaries, charts, or data overviews.
DialogModal pop-up form, typically used for entity creation.
PageFull-page form used for displaying/editing entity detail (e.g., Ticket, Customer).
FormGeneric embedded form; used in custom tabs, panels, or widgets.
Custom FieldDeprecated inline characteristic editor.

Form type determines rendering context, but layout/configuration principles remain the same. The configuration and layout mechanisms remain the same across all types — only the rendering context changes.

Summary

Forms are dynamic, versioned, configuration-layer elements that:

  • Render UIs using JSON Schema, Layout, and Widget definitions
  • Extend entity behavior through dynamic fields and logic
  • Enable conditional behavior using scripting (JEXL/SpEL)
  • Operate across both static (design) and dynamic (runtime) contexts

They are one of the most flexible and powerful tools in tSM — forming the core of how data is entered, visualized, and transformed in the system.