Categorie: configuration Bijgewerkt: 2026-04-07 text-templates e-mail notificaties expressies placeholders workflows

Text Templates

Text Templates zijn tekstsjablonen die in Ultimo worden gebruikt voor automatische e-mails, notificaties en meldingen. Ze bevatten expressies (placeholders) die dynamisch worden gevuld met gegevens uit de database, waardoor berichten gepersonaliseerd en contextafhankelijk zijn.

Gerelateerd: messages, ../concepts/contexten, application-element-tree, process-settings


Wat zijn Text Templates?bewerken

Een Text Template bestaat uit: - Subject — het onderwerp (gebruikt in e-mails) - Body — de inhoud, in HTML-formaat (BodyType 1) of platte tekst (BodyType 0) - Taalversies — vertalingen per taalcode (NL, EN, DE, FR, etc.)

Templates worden aangemaakt en beheerd via:

UCT > User Interface > Text Templates

De lijstweergave toont circa 75 standaard templates met kolommen voor sjabloonnummer, data-mapping, afkorting en beschrijving.

Belangrijk: Text Templates worden aangeroepen vanuit workflows (Business Rules). De workflow bepaalt welke template wordt gebruikt en levert de variabelen aan die in de template worden ingevuld.


Template syntaxbewerken

Placeholders (variabelen)bewerken

Placeholders verwijzen naar entiteitsvelden en worden omsloten door ${}:

${Job.Id}                          → Job-nummer
${Job.Description}                 → Job-omschrijving
${Employee.Description}            → Naam medewerker
${Equipment.Id}                    → Installatienummer
${Contract.Id}                     → Contractnummer
${DomainObject.Id}                 → Generiek: ID van het huidige record
${DomainObject.Description}        → Generiek: omschrijving van het huidige record

Je kunt ook gerelateerde velden opvragen via punt-notatie:

${Job.WorkOrder.Id}                → PO-modelnummer van de job
${Job.BackOffice.Description}      → Naam van het backoffice
${ReservationOccurrence.Id.Reservation.Id}  → Reserveringsnummer via occurrence

De ?-operator maakt een veld optioneel (geen fout als het veld niet bestaat):

${Addressee.Description?}          → Geeft leeg terug als Addressee niet beschikbaar is

Conditionele logica (#if / #elseif / #else / #end)bewerken

Gebruik #if om delen van de template voorwaardelijk te tonen:

#if(${Employee} != Empty)
  Beste ${Employee.Description},
#else
  Beste lezer,
#end

Complexer voorbeeld met meerdere condities:

#if(${Job.Status} == 4)
  is gemeld.
#elseif(${Job.Status} == 16)
  is gereedgemeld.
#else
  heeft een statusupdate.
#end

Combineer condities met && (EN) en || (OF):

#if(${ProgressStatusHistory} != Empty && ${ProgressStatusHistory.RemarkText} != Empty)
  Omschrijving van de werkzaamheden:
  ${ProgressStatusHistory.RemarkText}
#end

Ingebouwde functiesbewerken

Functie Beschrijving Voorbeeld
#contextdescription() Contextbeschrijving van een record (kleine letters) #contextdescription(${Job}) → "werkorder"
#contextdescription_capital() Contextbeschrijving met hoofdletter #contextdescription_capital(${Job}) → "Werkorder"
#statusdescription() Statusbeschrijving van een record #statusdescription(${Reservation}) → "Goedgekeurd"
#geturl() URL naar een specifiek scherm genereren #geturl(${DomainObject} job101) → link naar job-scherm
#moduleenabled() Controleer of een module is ingeschakeld #moduleenabled('MultiTimeZone')

Omgevingsvariabelenbewerken

#{Environment.CurrentTimeZone.Name}  → Naam van de actieve tijdzone
#{UltimoSettings.XXX}               → Applicatie-instellingen

Veelgebruikte standaard templatesbewerken

Statuswijziging notificatiesbewerken

Template ID Beschrijving Gebruikt voor
00000000012 Wijziging voortgangsstatus E-mail bij voortgangsstatuswijziging van jobs/meldingen
00000000013 Record toegekend Notificatie bij toekenning van een job
00000000062 Wijziging voortgangsstatus (variant) Alternatieve voortgangsstatusnotificatie
00000000040 Job gemeld/gereedgemeld/statusupdate Selfservice-notificatie voor melders

Periodiek onderhoudbewerken

Template ID Beschrijving Gebruikt voor
00000000029 PO-job met externe start over 2 weken Vroegtijdige notificatie voor periodiek onderhoud
00000000059 Resultaat automatisch genereren PO-jobs Foutmeldingen bij PO-generatie
00000009000 PO-model notificatie Contextbeschrijving PO-model
00000009001 Overzicht PO-modellen Rapport met PO-model overzicht

SLA en doorlooptijdbewerken

Template ID Beschrijving Gebruikt voor
00000000032-35 Percentage doorlooptijd bereikt SLA-waarschuwingen (bijv. 70%, 90%)
00000000036-39 Percentage responstijd verstreken Responstijd-waarschuwingen
00000000028 70% van Resolution Deadline bereikt ITSM SLA-escalatie

Inkoop en contractenbewerken

Template ID Beschrijving Gebruikt voor
00000000014 Opzegtermijn contract Waarschuwing naderende opzegtermijn
00000000027 Opzegtermijn contract (variant) Contractnotificatie met ID
00000000053 Status bestelaanvraag gewijzigd Purchase request statuswijziging

Selfservice en meldingenbewerken

Template ID Beschrijving Gebruikt voor
00000010000 Bevestigen melding Bevestigingsmail voor selfservice-melder
00000010001 Melding gereedgemeld Gereedmelding naar melder
00000000066 Beoordeling/reactie gevraagd Klanttevredenheidsenquete
00000000067 Melding gereedgemeld (variant) Gereedmelding met details

Import/Export connectorsbewerken

Template ID Beschrijving Gebruikt voor
00000000048 FAILED: Export Foutmelding bij export
00000000049 SUCCESS: Export Succesmelding bij export
00000000050 FAILED: Import Foutmelding bij import
00000000051 SUCCESS (WITH ERRORS): Import Succesmelding import (met fouten)

HSE en veiligheidbewerken

Template ID Beschrijving Gebruikt voor
00000000055 Veiligheidsincident gemeld Notificatie bij nieuw HSE-incident
00000000056 Veiligheidsincident gereedgemeld Notificatie bij afhandeling incident
00000000094 Field Safety Notice Notificatie bij field safety notices (instrumenten)

Goedkeuringen (Approvals)bewerken

Template ID Beschrijving Gebruikt voor
00000000096 Nieuwe goedkeuring toegekend Notificatie bij nieuwe goedkeuringsaanvraag
00000000097 Goedkeuring goedgekeurd Bevestiging goedkeuring
00000000098 Goedkeuring afgewezen Notificatie bij afwijzing

Voorbeeld: complete e-mailtemplatebewerken

Dit is een vereenvoudigd voorbeeld van template 00000000012 (voortgangsstatuswijziging):

<style type="text/css">
.body { font-family: Noto Sans Regular, Verdana, Arial, Helvetica; font-size: 15px; }
.button { background-color: #0173D1; border-radius: 2px; padding: 8px 48px; text-align: center; }
.button a:link { color: white; text-decoration: none; }
.footer { font-size: 12px; font-style: italic; }
</style>

<table class="table" align="center">
  <tr><td>
    <img src="https://www.ultimo.com/storage/ultimo-purplebackground_dark-x150px.png" width="130">
  </td></tr>
  <tr><td>
    <span class="body">
      Beste#if(${Addressee.Description?} != Empty) ${Addressee.Description}#else lezer#end,<br><br>
      Hierbij willen wij melden dat de voortgangsstatus van
      #contextdescription(${DomainObject}) ${DomainObject.Id}
      #if(${DomainObject.Description} != Empty) - ${DomainObject.Description}#end
      is gewijzigd
      #if(${OldProgressStatus} != Empty) van ${OldProgressStatus.Description}#end
      naar ${NewProgressStatus.Description}.<br><br>
      #if(${ProgressStatusHistory} != Empty && ${ProgressStatusHistory.RemarkText} != Empty)
        Omschrijving van de werkzaamheden:<br>
        ${ProgressStatusHistory.RemarkText}<br>
      #end
    </span>
  </td></tr>
  <tr><td>
    <table class="button">
      <tr><td>
        <a href="#geturl(${DomainObject} job101)" target="_blank">Ga naar de melding</a>
      </td></tr>
    </table>
  </td></tr>
  <tr><td>
    <span class="footer">
      Dit is een automatisch gegenereerde e-mail.
      Het is niet mogelijk dit bericht te beantwoorden.
      #if(#moduleenabled('MultiTimeZone'))
        De tijden vermeld in deze e-mail zijn op basis van tijdzone
        #{Environment.CurrentTimeZone.Name}.
      #end
    </span>
  </td></tr>
</table>

Bewerkbare secties (Editable Content)bewerken

Sinds recente versies kunnen application managers bepalen welke delen van een e-mailtemplate de gebruiker mag bewerken bij het versturen. Gebruik de volgende tags:

<EDITABLE_CONTENT_SECTION_START>
Hier kan de gebruiker tekst aanpassen voordat de e-mail wordt verstuurd.
<EDITABLE_CONTENT_SECTION_END>

De gebruiker ziet een preview van de e-mail met alleen de bewerkbare secties als invoervelden.


Meertaligheidbewerken

Elke template heeft een standaard body en subject, plus vertaalde versies per taalcode:

Taalcode Taal
NL Nederlands
EN Engels
EN-US Engels (VS)
DE Duits
FR Frans
ES Spaans
IT Italiaans
PL Pools
TR Turks
NB Noors
SV Zweeds
DA Deens
FI Fins
SK Slowaaks
PT-BR Portugees (Brazilie)
HU Hongaars
ZH Chinees
EL Grieks
SL Sloveens

De taal die wordt gebruikt hangt af van de taalinstelling van de ontvanger (medewerker/gebruiker).


Templates aanpassen via UCTbewerken

Een bestaande template wijzigenbewerken

  1. Ga naar UCT > User Interface > Text Templates
  2. Selecteer de template in de lijst
  3. Pas de body aan in het Basic-tabblad
  4. Voeg taalversies toe of wijzig bestaande vertalingen
  5. Test de template met realistische data

Een nieuwe template aanmakenbewerken

  1. Maak een nieuwe template aan via de lijst
  2. Geef een uniek template ID en beschrijving op
  3. Kies het BodyType (0 = platte tekst, 1 = HTML)
  4. Voeg de body toe met placeholders
  5. Voeg taalversies toe
  6. Koppel de template aan een workflow via de <Email> instructie

Template gebruiken in een workflowbewerken

In een workflow verwijs je naar een template via het template ID:

<Email TextTemplateId="00000000012"
       To="${Addressee.Email}"
       Subject="${TextTemplate.Subject}">
</Email>

Waar worden Text Templates gebruikt?bewerken

Met de "Used in"-functionaliteit in UCT kun je opzoeken waar een specifieke template wordt gebruikt:


Best practicesbewerken

  1. Test altijd met realistische data — een verkeerde veldnaam resulteert in lege of foutieve waarden
  2. Gebruik #if voor optionele velden — voorkom dat lege velden zichtbaar worden
  3. Houd templates onderhoudbaar — gebruik CSS-klassen voor styling i.p.v. inline styles
  4. Consistente naamgeving — geef templates een beschrijvende naam die het doel aangeeft
  5. Taalversies bijhouden — bij wijzigingen aan de NL-versie, update ook de andere talen
  6. Gebruik de ?-operator — voor velden die niet altijd beschikbaar zijn: ${Veld?}
  7. Standaard templates niet verwijderen — pas ze aan, maar verwijder ze niet (workflows verwijzen ernaar)

Zie ookbewerken