51.4.2.0 51.4.1.1 51.4.1.0 51.3.0.0 51.2.0.17 51.2.0.12 51.2.0.11 51.2.0.5 51.2.0.2
51.4.2.0 51.4.1.1 51.4.1.0 51.3.0.0 51.2.0.17 51.2.0.12 51.2.0.11 51.2.0.5 51.2.0.2

Ticket synchronization


Default Ticket

Here is an example of a default ("out-of-the-box") ticket. For more details on each slot, refer to the Ticket documentation.

image-20250418-152021.png

For each ticket, you can manually edit its frozen slots (change their flags, displayName, value) and add as many custom slots as needed. However, to ensure consistency across your system, the BtibTicketing module introduces the TicketTemplate (and its TicketConfig), allowing you to define and manage all ticket customizations in one centralized place.

Important: Frozen slots are mandatory and cannot be removed from the tickets. They represent essential data required for the ticket to function correctly.

Default Ticket Template

A default ticket template is created along with the Ticket Service. This template has a TicketConfig component that defines the properties of the tickets associated with this template.

Currently, only one ticket template can be defined and modified. In a future version, it will be possible to define multiple ticket templates.

Here, we will focus on the TicketConfig of the Template

Here is an example of a TicketConfig.

image-20250717-102241.png

As you can see, each frozen slot in the Ticket is linked to a corresponding Slot Definition in the TicketTemplate.

Each of these Slot Definition will allow you to customize the associated Slot in the Ticket.

SynchronizeTemplate Action

Any modifications made to the template will only be applied to Tickets after triggering the “SynchronizeTemplate” action.

This action can only be triggered when

  • the ticket template status is ok

  • the updateStatus is equal to ‘OutOfSync’


While it is possible to manually customize your Ticket's slots, keep in mind that most of these modifications will be overridden/removed when the “SynchronizeTemplate” action is triggered.

Frozen SlotDefinitions

All tickets will necessarily have these different slots. Here is the list of Frozen Slot Definitions:

These slot definitions share the same structure and follow the same logic.

Here’s an exemple, the Template SlotDefinition, which will define the Template Slot.

image-20250717-103005.png

Customizing the Slot Display Name

Empty Value

Will set the default displayName of the slot (name of the ticket which is a human readable short id):

image-20250717-104457.png
Text Value

Will set the given displayName to a fixed value.

image-20250717-104830.png
SFormat

Allows you to use SFormat to define the DisplayName of your slot. The Base of the SFormat is the Slot Definition component.

image-20250717-105041.png
BFormat

SFormat also supports BFormat, enabling the use of lexicon for localization.
Pay attention to the [%%] notation, it is mandatory if you want to keep the raw BFormat value.

image-20250718-150100.png

(The keys and values in the lexicon might change)

Customizing the Slot Facets

In addition to the displayName and the flags, you can also customize the facets using the Facets slot.

image-20250616-140250.png

Exercise caution when overriding facets — this can lead to unexpected issues.

Customizing the Slot Flags

Any flags you set on the definition will be applied to the target slot

image-20250422-100346.png

The above example is intentionally a bad one —the transient flag does not save the value, and the template value is used internally by the system. The edit popup allows you to add or remove any flags, but be cautious: removing an existing flag may lead to unexpected behavior.

The main purpose of this feature is to be able to modify the operator, read only, summary, and confirmed action flags of ticket slots.


TicketStatusDefinition

The TicketStatusDefinition is based on a Ticket synchronization | Frozen SlotDefinitions .

Each Ticket includes a TicketStatus slot that defines its current status (which tracks ticket progress). Different domains may require different sets of statuses, and the TicketTemplate allows you to customize these to fit your specific needs.

In addition to defining the TicketStatus slot, each child StatusValueDefinition (available in the palette) will create three additional slots in the Ticket:

  1. toStatus<ordinal> – The action allowing you to switch to this status.

  2. status<ordinal>Comment – The Comment explaining the status change.

  3. status<ordinal>Timestamp – The timestamp when the ticket entered this status.

A Ticket cannot be reverted to the status with ordinal 0, so the toStatus0 action will not be generated.

The <ordinal> refers to the ordinal in the TicketStatusValueDefinition. It is used internally to manage the deletion or addition of slots even if they have modified displayName.

This structure provides full traceability for each status transition in the ticket’s lifecycle.

For example, this Component with two StatusValueDefinitions:

image-20250717-122209.png

will create 5 slots:

image-20250616-065230.png
image-20250717-122610.png
image-20250717-122711.png


Inherited Customization

As in theTicketFrozenSlotDefinition you will be able to customize the displayName, facets and flags of the TicketStatus slot.

Customizing the Slot's DisplayNames

In the same way as in Ticket synchronization | Customizing the Slot Display Name, you can customize the displayName value of your status slots using the ActionDisplayName, CommentDisplayName and TimestampDisplayName properties.

For exemple, synchronizing:

image-20250422-125817.png

Will result in:

image-20250422-125856.png


For simplicity, we used plain Text in the examples—however, this is not recommended. If you define multiple statuses using Text, all associated actions, comments, and timestamps will share the same display names, which can lead to confusion.

To ensure proper localization and clarity, use BFormat or SFormat instead. These formats allow you to dynamically generate display names and support internationalization through the lexicon.


TicketStatusValueDefinition

The TicketStatusValueDefinition allows you to further customize your created slots.

image-20250422-121858.png
  • ValueDisplayName: SFormat used to define the value displayed in the Ticket

  • Flags: The flags applied to the 3 slots created by this component.

Currently, there are no slots specifically dedicated to customizing facets. However, keep the following in mind:

  • The comment slot is created with the multiLine=true facet by default.

  • When running SynchronizeTemplate, slot facets will not be modified. This means you are free to customize them manually without the risk of your changes being overridden.


Customizing the Slots Values

Just like in Ticket synchronization | Customizing the Slot Display Name, you can customize the display value of your statuses using the ValueDisplayName property.

image-20260109-132505.png

The module already includes some lexicon keys for the statuses:

  • TicketStatus.new=New

  • TicketStatus.1=To do

  • TicketStatus.2=In progress

  • TicketStatus.3=Validate

  • TicketStatus.closed=Closed

  • TicketStatus.4=Frozen

Customizing the Flags

Just like in Ticket synchronization | Customizing the Slot Flags , you can customize the flags of your created slots using the Flagsproperty.

image-20250422-123855.png


TicketScopeDefinition

The TicketScopeSlotDefinition is based on a Ticket synchronization | TicketFrozenSlotDefinition.


Inherited Customization

As in the TicketFrozenSlotDefinition you will be able to customize the displayName, facets and flags of the Scope slot.


Ticket Views (and New Ticket Views) customization

ScreenThemeTicketView.png
ScreenThemeNewTicket.png

TODO Présenter les slots Web et NodePath

Filtering the components to which you can assign a Ticket

By default, you can only assign a Ticket to a Node or a Source (any Component with an InfoSource).

Using the predicates slot, you can apply additional filter.

Predicates syntax

There are two supported predicate syntaxes.

NEQL

You can write a neql to apply a filter. You will have to write the full neql including the scheme.

exemple: only Nodes

image-20260109-133032.png
BQL where predicate

You can also use the “where“ predicate of a bql. Here you won’t have to write the full bql, only the where part is required (Writing the whole bql won’t work).

exemple: only Sources

image-20260109-133106.png
Use SFormat

You can enhance your predicates using SFormat. The origin of the SFormat will be the source itself.

exemple: another way to target only Sources

image-20260109-133202.png

The base is a bql predicate in which we added some SFormat.

Use Multiple predicates

To prevent long or complex predicates, you can create multiple predicates.

exemple: Node or Source with the Equipment name or a name starting by Floor

76abc709-0ade-4a1e-9f4b-89987f0a2adc.png

When multiple predicates are defined, an 'OR' logic is used — if any predicate matches, the ticket becomes assignable to your component.


Additionnal predicates rules
Empty value
image-20250613-142809.png

If you leave an empty value, there is no additional filter.

If you have multiple predicates but one of them is empty, as one of your predicate return true, the other ones won’t be taken into account.

Syntax error

If there is a syntax error (invalid query, or invalid SFormat), you won’t be able to assign your Ticket.

If you have multiple predicates and none of them return true, you still won’t be able to assign your Ticket.


Customized Ticket Template

You can also add new SlotDefinitions to your Template. They are all avaible in the LinsperTicket palette:

image-20250717-123331.png


Adding a SlotDefinition to your template will create a new Slot in your Tickets. The type of the created slot is defined in the SlotType of the SlotDefinition.

image-20250616-140954.png

For example, here the String Slot Definition will create a String Slot.

Inherited Customization

As in the TicketFrozenSlotDefinition you will be able to customize the displayName, facets and flags of the TicketStatus slot.

AbsTimeSlotDefinition

The AbsTimeSlotDefinition will allow you to create an AbsTime slot and customize it.

image-20250616-143928.png

ExternalIdSlotDefinition

The ExternalIdSlotDefinition will allow you to create an ExternalId slot and customize it. This type of property is designed to store ticket ids used by third-party systems.

Additional rights check on ExternalId

ExternalIds contain sensitive data, so you may want to apply additional access controls to this field.

You can remove one’s users write rights on an ExternalID by removing the write rights on the associated ExternalIdSlotDefinition.

 

For exemple, with the following configuration

image-20250811-145324.png

 

A User with the User role will be able to see the ExternalIdSlotDefinition but won’t be able to change it.

image-20250616-144400.png

ResolvedStringSlotDefinition

The ResolvedStringSlotDefinition lets you create a String slot, customize it, and assign a value computed when the ticket is created.

image-20250811-151239.png

Be careful, the value is only set during the ticket creation.
Synchronizing the template will not change the value.

If you want to refresh the values, use the forceResolveSlot action in the Template.

SFormatSlotDefinition

The SFormatSlotDefinition will allow you to create a SFormat slot and customize it. Its main purpose is to be able to use localizable texts in tickets.

The SFormat will be stored in its raw value but displayed or exported with its resolved value.

image-20250616-151049.png

StrictListSlotDefinition

The StrictListSlotDefinition will allow you to create a String slot with a dropdown and customize it. You cannot write a custom value in this slot, only the values from the dropdown are allowed

The values present in the dropdown will be defined by the children StrictListSlotValueDefinition. Also, a User will only see the values on which he has the adequate write rights.


On template synchronization, if any StrictList slot in a open or archived Ticket is empty, the default StrictListValue will be set.

image-20250616-152454.png

Default StrictListValue

In the Tickets, the StrictList slots will always have a value. On creation if there is no given value or if the value is invalid, the default StrictListValue will be set.


The Default StrictList depends on the user doing the action:

  • If there is an User (In the API or in the NewTicketView for example), the default value is the first value on which the User has the adequate write rights. If the user hasn’t got the write rights on any value, the default value will be the first one.

  • If there is no User (TicketRecipient, RestTicketImport or RestTicketExport for example), the default value is the first one.

StringSlotDefinition

The StringSlotDefinition will allow you to create a String slot and customize it.

image-20250616-151208.png