Moteur d'expression de règles eADM

Présentation générale

Le moteur d'évaluation des expressions de règles évalue les fonctions entre crochets et les espaces réservés aux champs dans eADM. Les expressions apparaissent dans :

Consommateur

Utilisation courante

Ensembles de règles (Regelsett)

Filtrer les utilisateurs, les services et les groupes ; contrôler les flux de messages, les étapes de synchronisation et les autorisations

Modèles de messages

Destinataire, objet et corps du message dynamiques (HTML)

Exporter des modèles / synchroniser les lignes de flux des modèles

Mappage des attributs cibles

Configuration client

Expression du nom d'utilisateur, dénomination automatique des groupes, filtre de poste

Modèles de formulaires

Liaisons de champs de formulaire

Générateur d'expressions

Aperçu pour un utilisateur, un service ou un groupe de test

Comment fonctionne l'évaluation ?

  1. Le moteur analyse l'expression pour rechercher [...] jetons.

  2. [ARRAYFOREACH...] s'exécute en premier — avant le passage « innermost-first » — de sorte que les espaces réservés des modèles ??? et ???i lier chaque élément séparé par une barre verticale.

  3. Sinon, il résout d'abord la paire d'accolades la plus interne.

  4. Chaque fonction renvoie un résultat en texte brut qui remplace le crochet.

  5. Lorsqu'il ne reste plus aucune fonction, il reste [FieldName] les jetons sont remplacés à partir du objet actuel (et facultatif ligne d'historique dans les flux de messages).

  6. Les noms de champs non reconnus sont conservés tels quels [FieldName] dans la sortie.

Listes séparées par des barres verticales (|) sont utilisés pour les données à valeurs multiples — notamment dans le domaine des ressources humaines postes sur un utilisateur.

Données fictives utilisées dans les exemples ci-dessous

Sauf indication contraire, les exemples prennent pour hypothèse que le client est la commune d'Eksempel, avec :

Objet

Valeurs clés

Utilisateur : Kari Nordmann

Prénom=Kari, Nom de famille=Nordmann, DisplayName=Kari Nordmann, Nom d'utilisateur=kari.nordmann, E-mail=kari.nordmann@eksempel.kommune.no, Début=01.04.2026 00:00:00, Département=IT og digitalisering, NuméroDuDépartement=100

Positions des utilisateurs (alignées sur le tuyau)

APositionCodeId=POS-01|POS-02, AUnitId=IT-100|HR-200, APositionCodeName=Utvikler|HR-rådgiver, APrimaryPosition=true|false, APositionPercentage=100.0|20.0

Service informatique (type 2)

Id=2100, SourceId=IT-100, NuméroDuDépartement=100, OrgUnitnr=IT-100, ParentDepartmentNumber=0

Service RH (rattaché au service informatique)

Id=2101, SourceId=HR-200, ParentDepartmentNumber=100

Rôle système (autorisation)

Id=501, Nom=Bruker Fagsystem X, associé à l'identifiant système id=12

Autorisation concernant Kari

SystemRoleId=501, Responsable de =2100, Commentaire=Automatisk tildelt, Date d'expiration = vide

Identifiants de type d'objet (pour les recherches) : Utilisateur=1, Département=2, Groupe=3, utilisateur de l'API =14.


Conventions syntaxiques

  • Fonctions : [NAME;arg1;arg2;...] — arguments séparés par des points-virgules (;).

  • Champs : [FieldName] — valeur de l'objet actuel (sans distinction de casse).

  • Expressions imbriquées : les parenthèses intérieures sont évaluées avant les parenthèses extérieures.

  • Séparateur de liste : caractère « pipe » | (barre verticale) entre les valeurs — par exemple : POS-01|POS-02. Ne tapez jamais de barre oblique inversée ; | n'apparaît que sous forme d'échappement Markdown dans les fichiers source, et non dans les expressions.

  • Les dates dans les champs sont souvent stockées sous la forme dd.MM.yyyy HH:mm:ss; les importations peuvent utiliser yyyy-MM-dd et d'autres formats courants.

Mini-langage de requête

À l'intérieur [FOREACH], [IFTHENELSE], et avancé [OBJECT...] filtres.

Jeton

Signification

=

Égal

>, <

Supérieur à / inférieur à

!

Pas égal

*

Correspondance de motif (like)

#

Valeur dans la liste

&

ET la condition suivante

|

OU la condition suivante

Faites précéder les données de object., system., systemrole., objectpermission., etc.


Imbrication

D'abord le champ interne, puis la fonction externe

Étape

Fragment d'expression

Décide de

1

[start]

01.04.2026 00:00:00

2

[SUBSTRING;0;10;01.04.2026 00:00:00]

01.04.2026

Bloqué si le champ interne est manquant : [SUBSTRING;0;10;[UnknownField]] reste inchangé lorsque UnknownField ne se trouve pas sur l'objet.

Chaîne d'autorisations type (à lire de l'intérieur vers l'extérieur) :

[REFERENCE;DisplayName;UserId;1;[REFERENCE;Manager;Id;2;[OBJECTPERMISSION;ManagerOf;SystemRoleId;501]]]
  1. Autorisation → identifiant du service 2100

  2. Service → identifiant de l'utilisateur responsable

  3. Nom d'affichage de l'utilisateur → responsable

[ARRAYFOREACH...] est différent : il développe une liste séparée par des barres verticales avant fonctions internes dans l'exécution du modèle. Utilisez ??? pour l'élément courant et ???i en raison de son indexation à partir de 0. Imbrication [ARRAYFOREACH...] à l'intérieur d'un autre [ARRAYFOREACH...] n'est pas pris en charge — utilisez [ARRAYJOIN] / [ARRAYPREFIX] ou bien des appels entre frères et sœurs.


Niveaux d'accès

Fonction

Quelles sont les conséquences ?

Super manager

Aperçu du générateur d'expressions

Administrateur de la société

Liste complète des fonctionnalités dans le générateur ; [APITOKEN...], [SYNCSTEPPARAMETER...] en avant-première

Administrateur de l'organisation

Expressions modifiant des champs protégés dans l'aperçu

Super-administrateur

[UPDATE...], [DECRYPT...], [ENCRYPT...] — omis dans ce guide

L'automatisation (synchronisation, messages, exportations) évalue les expressions avec les privilèges du serveur. Une fonction qui fonctionne en production peut néanmoins être bloquée dans le générateur d'expressions pour votre rôle.


Espaces réservés pour les champs

Il ne s'agit pas de fonctions — elles sont remplacées à partir de l'objet actuel (ou de la ligne d'historique dans les flux de messages pilotés par les événements).

Exemple : Modèle Hello [GivenName] [Surname] à propos de Kari Nordmann → Hello Kari Nordmann

Espace réservé

Source typique

[GivenName], [Surname], [DisplayName]

Nom de la personne

[UserName], [Email], [Upn], [Mail]

Compte / e-mail

[Department], [DepartmentNumber]

École primaire

[Start]

Date et heure de début d'emploi

[Manager]

Référence du responsable fournie par les RH

[APositionCodeId], [AUnitId], [APositionCodeName]

Multiposition (séparé par des barres verticales)

Uniquement l'historique (flux de messages après la synchronisation) : [OldValue], [NewValue], [EntryType], [AttributeName], [Comment].


Référence des fonctions avec des exemples

Chaque entrée présente les paramètres, un exemple concret avec des données fictives et le résultat attendu.


Date et heure

[NÅ] / [NOW]

Renvoie la date et l'heure du serveur.

Paramètre

Objectif

(aucun)

Moment présent

+N / -N suffixe

Ajouter ou soustraire N jours

Expression

Date par défaut du serveur

Résultat

[NÅ]

17 juin 2026 14 h 30 min 00 s

17.06.2026 14:30:00

[NOW+7]

17.06.2026

24.06.2026 14:30:00 (même heure, +7 jours)

Utilisation : autorisation d'afficher les dates limites relatives dans les modèles.


[DATEFORMAT;date;format]

Reformate une chaîne de caractères représentant une date.

Paramètre

Objectif

date

Date de saisie, ou dates séparées par des barres verticales

format

Format de sortie (par exemple, yyyy-MM-dd, dd/MM/yyyy)

Expression

Données d'entrée (après résolution des champs)

Résultat

[DATEFORMAT;01.04.2026 00:00:00;yyyy-MM-dd]

2026-04-01

[DATEFORMAT;01.04.2026 00:00:00|15.06.2026 00:00:00;yyyy-MM-dd]

deux dates

2026-04-01|2026-06-15

Utilisation : formats d'exportation, dates au format ISO dans les charges utiles de l'API.


[DATEDIFF;date1;date2;unit]

Différence numérique entre deux dates.

Paramètre

Objectif

date1

Date ultérieure ou date initiale

date2

Date antérieure ou date de référence

unit

d jours (par défaut), y ans, m mois, h heures, mi minutes, s secondes

Expression

Résultat

Signification

[DATEDIFF;17.06.2026 00:00:00;01.04.2026 00:00:00;d]

77

77 jours entre le début et aujourd'hui

[DATEDIFF;17.06.2026 00:00:00;01.04.2026 00:00:00;y]

0

La même année civile dans cet exemple

Utilisation : vérifications de la durée de validité dans les ensembles de règles, « nombre de jours avant le début » dans les messages.


[DAYOFYEAR;date]

Paramètre

Objectif

date

Date à évaluer

Expression

Résultat

[DAYOFYEAR;01.04.2026 00:00:00]

91

Utilisation : règles saisonnières, astuces relatives à l'exercice comptable.


Manipulation de chaînes de caractères

[SUBSTRING;start;length;text]

Paramètre

Objectif

start

Indice de départ à partir de 0

length

Nombre de caractères à prendre en compte

text

Chaîne source (souvent un champ imbriqué)

Expression

Résolu text

Résultat

[SUBSTRING;0;10;01.04.2026 00:00:00]

01.04.2026

[SUBSTRING;0;4;POS-01]

POS-0

Utilisation : Affichage de la date uniquement (à partir d'une date-heure) dans les e-mails de bienvenue : [SUBSTRING;0;10;[Start]]01.04.2026.


[SPLIT;text;delimiter;index]

Paramètre

Objectif

text

Chaîne à diviser

delimiter

Séparateur (par exemple : |, ;, espace)

index

index des pièces à partir de 0, ou last / last-1

Expression

Résultat

[SPLIT;Kari|Nordmann;|;0]

Kari

[SPLIT;POS-01|POS-02;|;last]

POS-02

Utilisation : formule de politesse à partir du champ « nom composé » ; sélectionner le code de position finale.


[REPLACE;text;find;replace]

Paramètre

Objectif

text

Chaîne d'origine

find

Sous-chaîne(s) à remplacer ; pipe = plusieurs ; ^x = uniquement au démarrage ; x^ = uniquement à la fin

replace

Texte de remplacement

Expression

Résultat

[REPLACE;kari.nordmann;.;-]

kari-nordmann

[REPLACE;+4712345678;+47|;;]

12345678

Utilisation : normaliser les numéros de téléphone, inverser les séparateurs dans les noms d'utilisateur.


[REPLACELIST;text;fromChars;toChars]

Correspondance caractère à caractère (les deux listes de caractères doivent avoir la même longueur).

Paramètre

Objectif

text

Saisie

fromChars

Caractères à convertir

toChars

Caractères à associer à

Expression

Résultat

[REPLACELIST;abcåøæ;åøæaoe]

abcaoe

Utilisation : corrections apportées aux jeux de caractères hérités lors des importations.


[RTRIM;text;chars] / [LTRIM;text;chars]

Paramètre

Objectif

text

Entrée ; si elle contient |, chaque segment est rogné

chars

Caractère(s) à supprimer à la fin (RTRIM) ou au début (LTRIM)

Expression

Résultat

[RTRIM;POS-01|POS-02|;]

POS-01|POS-02 (segment vide final supprimé)

[LTRIM;; Kari; ]

Kari

Utilisation : Nettoyer les listes de canalisations après [ARRAYDIFF].


[RPAD;text;padChar;totalLength] / [LPAD;text;padChar;totalLength]

Paramètre

Objectif

text

Valeur à insérer

padChar

Caractère de remplissage

totalLength

Largeur cible

Expression

Résultat

[RPAD;42;0;5]

42000

[LPAD;7;0;4]

0007

Utilisation : numéros d'employés à largeur fixe dans les exportations de fichiers.


[RIGHT;length;text]

Paramètre

Objectif

length

Combien de caractères à partir de la droite ?

text

Source

Expression

Résultat

[RIGHT;4;12345678]

5678

Utilisation : derniers chiffres du numéro d'identification national dans les environnements de test.


[INITIALS;text;startWord;endWord]

Paramètre

Objectif

text

Nom complet ou expression

startWord

Index des mots à partir de (compté à partir de 0)

endWord

Fin de l'index des mots, ou last / last-1

Expression

Résultat

[INITIALS;Kari Marie Nordmann;0;last]

K M N (lettres et espaces tels qu'ils apparaissent)

[INITIALS;Kari Marie Nordmann;1;1]

M

Utilisation : codes abrégés dans les noms de groupes ou les alias de messagerie.


[PRETTIFY;text]

Majuscules après un espace ou un trait d'union.

Expression

Résultat

[PRETTIFY;kari nordmann]

Kari Nordmann

[PRETTIFY;it-og-digitalisering]

It-Og-Digitalisering

Utilisation : afficher les noms dans les messages lorsque le service des ressources humaines envoie des messages en majuscules.


[LOWER;text] / [UPPER;text]

Expression

Résultat

[LOWER;Kari.Nordmann@Eksempel.Kommune.NO]

kari.nordmann@eksempel.kommune.no

[UPPER;avdeling-it]

AVDELING-IT

Utilisation : Normaliser avant [CLEAN] dans les règles relatives aux noms d'utilisateur.


[CLEAN;text] / [STRICTCLEAN;text] / [CNCLEAN;text]

Supprimer ou remplacer les caractères non autorisés dans les noms d'utilisateur, les identifiants stricts ou les noms communs (CN) Active Directory.

Expression

Exemple de résultat

Utilisation

[CLEAN;Kari Åse Nordmann!]

kariasenordmann (caractères non alphabétiques supprimés, mise en minuscules)

Nom d'utilisateur / uid

[CNCLEAN;Kari (test) Nordmann]

Formulaire « CN-safe » pour AD

Nom commun (CN) du groupe ou de l'utilisateur

Le résultat exact dépend des règles de caractères définies par le client ; effectuez un test dans le générateur d'expressions.


[GETKEYVALUE;key;delimiter;metadata]

Nombre de lectures key<delimiter>value des paires contenues dans une chaîne de métadonnées séparées par des barres verticales.

Paramètre

Objectif

key

Clé à trouver

delimiter

Séparateur entre la clé et la valeur (souvent = ou :)

metadata

Liste de paires clé-valeur séparées par des barres verticales

Expression

metadata valeur

Résultat

[GETKEYVALUE;cost;=;cost=IT|site=Oslo]

IT

Utilisation : métadonnées d'importation personnalisées sur les attributs d'extension.


Logique et flux de contrôle

[IFTHENELSE;query;thenValue;elseValue]

Paramètre

Objectif

query

Condition relative à objet actuel (par exemple : ObjectTypeId=1)

thenValue

Renvoyé si la requête correspond

elseValue

Renvoyé si ce n'est pas le cas

Contexte

Expression

Résultat

Utilisateur Kari (type 1)

[IFTHENELSE;ObjectTypeId=1;Ansatt;Ikke ansatt]

Ansatt

Service informatique (type 2)

idem

Ikke ansatt

Utilisation : modèle unique pour des types d'objets mixtes.


[IFEMPTYUSE;primary;fallback;reversed]

Paramètre

Objectif

primary

Valeur à tester

fallback

À utiliser lorsque le champ principal est vide (par défaut)

reversed

Facultatif true: utiliser la solution de secours lorsque la solution principale est pas vide

Expression

Expiration de l'autorisation de Kari

Résultat

[IFEMPTYUSE;;Permanent tilgang]

vide

Permanent tilgang

[IFEMPTYUSE;15.12.2026;Permanent tilgang]

15.12.2026

15.12.2026

[IFEMPTYUSE;[Manager];;true]

Responsable =empty

`` (vide — inversé : recours à la solution de secours uniquement si le gestionnaire existe)

Utilisation : texte par défaut en cas d'absence de date d'expiration, de responsable ou de commentaire.


[EXISTS;value;resultIfNonEmpty]

Paramètre

Objectif

value

Chaîne testée

resultIfNonEmpty

N'est renvoyé que si value n'est pas vide

Expression

Champ « Kari Manager »

Résultat

[EXISTS;ola.hansen;has-manager]

ola.hansen

has-manager

[EXISTS;;has-manager]

vide

`` (vide)

Utilisation : Recherches imbriquées via des portes — exécuter uniquement [REFERENCE...] quand [Manager] est défini.


[TRANSFORM;input;mapping...]

Paramètre

Objectif

input

Valeur à mapper

key|value paires

Faire correspondre l'entrée à la sortie

*|default

Caractère générique si aucune clé ne correspond

Expression

[Sex] = F

Résultat

[TRANSFORM;F;M|Mann;F|Kvinne;*|Ukjent]

Kvinne

[TRANSFORM;X;M|Mann;F|Kvinne;*|Ukjent]

Ukjent

Utilisation : codes RH → afficher le texte dans les messages.


[CONTAINS;valueList;targetList;ifYes;ifNo]

Paramètre

Objectif

valueList

Aiguilles séparées par un tube

targetList

Une meule de foin séparée par des tuyaux

ifYes / ifNo

Chaînes renvoyées en cas de correspondance / d'absence de correspondance

Expression

Résultat

[CONTAINS;IT-100|FIN-300;HR-200|IT-100|SALG-400;ja;nei]

ja (IT-100 détecté dans la cible)

[CONTAINS;FIN-300;HR-200|IT-100;ja;nei]

nei

Utilisation : création de branchements de type « Ruleset » au sein d'un modèle.


Opérations sur les tableaux (séparés par des barres verticales)

Les listes se présentent comme suit : A|B|C. De nombreux postes dans le domaine des ressources humaines utilisent cette structure.

[COUNT;ignored;list]

Paramètre

Objectif

ignored

Espace réservé (inutilisé)

list

Valeurs séparées par des barres verticales

Expression

Résultat

[COUNT;x;POS-01|POS-02|]

2 (les segments finaux vides peuvent avoir une incidence sur le décompte — effectuez un test avec vos propres données)

Utilisation : « Combien de postes cet utilisateur occupe-t-il ? »


[ARRAYAPPEND;list1;list2]

Expression

Résultat

[ARRAYAPPEND;POS-01|;POS-02|POS-03|]

POS-01|POS-02|POS-03|

Utilisation : fusionner les listes de rôles issues de deux requêtes d'autorisation.


[ARRAYUNIQUE;list]

Expression

Résultat

[ARRAYUNIQUE;A|B|A|C|]

A|B|C|

Utilisation : dédupliquer les identifiants des services avant l'exportation.


[ARRAYFILTER;list;allowed]

Ne conserve que les éléments qui apparaissent dans allowed.

Expression

Résultat

[ARRAYFILTER;POS-01|POS-02|POS-99;POS-01|POS-02|]

POS-01|POS-02|

Utilisation : Ajouter des types de poste à la liste blanche pour un message.


[ARRAYDIFF;current;previous]

Éléments dans current pas dans previous.

Contexte

current

previous

Résultat

Ajout d'un nouveau poste

POS-01|POS-02|

POS-01|

POS-02|

Pas de changement

POS-01|

POS-01|

``

Utilisation : Détecter nouveau poste dans le flux de messages (à associer à [LASTVALUE;APositionCodeId]). Avertissement : peut poser problème si plusieurs postes sont modifiés au cours d'une même importation.


[ARRAYJOIN;list1;list2]

Fusionne deux listes par index.

Expression

Résultat

[ARRAYJOIN;Utvikler|HR-rådgiver;100%|20%]

Utvikler100%|HR-rådgiver20%

Utilisation : regroupez les colonnes parallèles pour obtenir des lignes d'exportation au format CSV.


[ARRAYFOREACH;array;template] / [ARRAYFOREACH;array;separator;template]

Parcourt un séparés par des barres verticales liste. Pour chaque élément non vide, remplace par ??? avec l'élément et ???i avec son index commençant à 0 dans le modèle, évalue les éléments imbriqués [...] dans le modèle, puis regroupe les résultats.

Paramètre

Objectif

array

Liste séparée par des barres verticales (souvent un champ de type [APositionCodeName])

separator

Chaîne de jonction facultative entre les itérations (par défaut |)

template

Texte ou expression imbriquée ; ??? = élément actuel, ???i = index

Expression

Kari APositionCodeName

Résultat

[ARRAYFOREACH;[APositionCodeName];Stilling: ???]

Utvikler|HR-rådgiver

Stilling: Utvikler|Stilling: HR-rådgiver

[ARRAYFOREACH;[APositionCodeId];, ;DEPT-???]

POS-01|POS-02

DEPT-POS-01, DEPT-POS-02

[ARRAYFOREACH;[APositionCodeId];[SUBSTRING;0;4;???]]

POS-01|POS-02

POS-|POS-

[ARRAYFOREACH;[APositionCodeName];???i:???]

Utvikler|HR-rådgiver

0:Utvikler|1:HR-rådgiver

Les segments de tuyau vides sont sauté (selon la même convention que [ARRAYUNIQUE] / [ARRAYPREFIX]).

Non pris en charge : [ARRAYFOREACH...] imbriqué à l'intérieur d'un autre [ARRAYFOREACH...] — L'évaluation de l'expression a échoué. Utilisez deux appels consécutifs ou [ARRAYJOIN] au lieu de cela.

Utilisation : formater chaque poste sur une ligne distincte dans un message ; ajouter un préfixe à chaque identifiant d'unité en vue de l'exportation.


[ARRAYPREFIX;list;mode;text]

Paramètre

Objectif

list

Éléments séparés par des barres verticales

mode

1 = faire précéder chaque élément de text; autre = suffixe

text

Chaîne de préfixe ou de suffixe

Expression

Résultat

[ARRAYPREFIX;IT-100|HR-200;1;DEPT-]

DEPT-IT-100|DEPT-HR-200|

Utilisation : identifiants externes d'espace de noms.


[ARRAYTRIM;list;delimiter;maxCount]

Expression

Résultat

[ARRAYTRIM;A|B|C|D;|;2]

A|B

Utilisation : Afficher uniquement les N premières positions dans un e-mail récapitulatif.


[PRUNEARRAY;list;regex;reverse]

Paramètre

Objectif

list

Éléments séparés par des barres verticales

regex

Expression régulière .NET

reverse

true = conserver les articles non correspondants, à la place

Expression

Résultat

[PRUNEARRAY;POS-01|TEMP-99|POS-02;^TEMP;false]

POS-01|POS-02

[PRUNEARRAY;POS-01|TEMP-99;^TEMP;true]

TEMP-99

Utilisation : supprimer les codes de poste temporaires de l'exportation.


[UNION;headers;list1;list2;...]

Fusionne des listes parallèles ligne par ligne pour former des lignes combinées, séparées par des espaces ou des barres verticales.

Expression

Résultats conceptuels

[UNION;Role|Dept;Admin|User;IT|HR]

Role Admin Dept IT|User HR (modèle : concaténer les colonnes par index)

Utilisation : blocs de texte à plusieurs colonnes dans les rapports.


Aléatoire, hachage, unicité

[RND;min;max]

Paramètre

Objectif

min

Nombre entier minimal (inclus)

max

Nombre entier maximal (exclusif en pratique — vérifiez votre plage)

Expression

Exemple de résultat

[RND;1000;9999]

4521 (varie à chaque représentation)

Utilisation : numéros de ticket dans les modèles de test.


[STRRND;minLen;maxLen;chars]

Paramètre

Objectif

minLen / maxLen

Plage de longueurs

chars

Jeu de caractères autorisés (vide = alphanumérique par défaut)

Expression

Exemple de résultat

[STRRND;8;8;abcdefghjkmnpqrstuvwxyz]

kthqwrnb (variable)

Utilisation : codes à usage unique lorsque la règle relative au mot de passe n'est pas appliquée.


[PASSWORD;ruleId]

Paramètre

Objectif

ruleId

Identifiant de la règle de génération de mot de passe configurée dans eADM

Expression

Résultat

[PASSWORD;3]

par exemple Xk9#mP2$vL (conforme à la règle n° 3 relative à la complexité ; variable)

Utilisation : mot de passe initial indiqué dans le message de bienvenue — à traiter avec la plus grande prudence.


[HASH;text]

Expression

Résultat (exemple)

[HASH;kari.nordmann@eksempel.kommune.no]

Chaîne hexadécimale MD5 de 32 caractères (valeur fixe pour une même entrée)

Utilisation : jetons opaques dans les liens (à ne pas utiliser uniquement pour le hachage dans le cadre de la sécurité).


[UNIQUE;base;fieldName;replacement]

Garantit base n'existe pas encore dans fieldName sur un autre objet ; ajoute 2, 3, … ou des insertions avant replacement.

Paramètre

Objectif

base

Nom d'utilisateur ou adresse e-mail proposé(e)

fieldName

Champ à utiliser pour vérifier l'unicité (par exemple, UserName)

replacement

Marqueur de suffixe facultatif à remplacer par un nombre

Scénario

Expression

Résultat

kari.nordmann gratuit

[UNIQUE;kari.nordmann;UserName;.]

kari.nordmann

kari.nordmann pris

idem

kari.nordmann2 ou kari2.nordmann selon le remplacement

Utilisation : Configuration client expression du nom d'utilisateur ainsi que [CLEAN] / [LOWER].


Recherche dans une base de données et relations

Ces données proviennent en temps réel du système eADM du client. Les identifiants doivent exister dans votre environnement.

[REFERENCE;returnField;whereField;objectTypeId;searchValue;exactMatch]

Paramètre

Objectif

returnField

Champ(s) à renvoyer à partir de l'objet correspondant (§ (rejoint plusieurs champs)

whereField

Champ à utiliser pour la recherche

objectTypeId

1 utilisateur, 2 département, 3 groupe

searchValue

Valeur à déterminer

exactMatch

true exact ; false motif

Expression

Match amical

Résultat

[REFERENCE;OrgUnitnr;Id;2;2100]

Code service 2100 = Informatique

IT-100

[REFERENCE;DisplayName;UserId;1;ola.hansen]

Gestionnaire d'utilisateurs

Ola Hansen

Utilisation : Numéro du service figurant sur l'autorisation ManagerOf id :

[REFERENCE;OrgUnitnr;Id;2;2100]

[OBJECTPERMISSION;returnField;whereField;filterValue;exactMatch;aggregate]

Lit les droits d'accès de l'utilisateur actuel.

Paramètre

Objectif

returnField

Champ d'autorisation (Comment, ManagerOf, ExpiryDate, SystemRoleId, …)

whereField

Champ à utiliser pour le filtrage

filterValue

Valeur de correspondance, ou * pour tous

exactMatch

Mode de comparaison de chaînes

aggregate

true = toutes les correspondances reliées par |; false = uniquement au début

Expression

Sortie (Kari)

[OBJECTPERMISSION;Comment;SystemRoleId;501;true;false]

Automatisk tildelt

[OBJECTPERMISSION;ManagerOf;SystemRoleId;501;true;false]

2100

Abréviation du nom du rôle :

Expression

Résultat

[OBJECTPERMISSION.SYSTEMROLE;Name;SystemRoleId;501]

Bruker Fagsystem X


[OBJECTHISTORIES;returnField;whereField;filterValue;exactMatch;aggregate]

Lit l'historique des objets de l'utilisateur actuel (journal d'audit issu de la synchronisation/de l'interface utilisateur).

Exemple de filtre

Expression

Exemple de résultat

Dernière autorisation ajoutée

[OBJECTHISTORIES;Comment;EntryType;AddPermission;false;false]

Tildelt av admin

Utilisation : « Qui a attribué cette autorisation ? » dans les flux de messages (souvent imbriqués dans [SPLIT] / [REFERENCE]).


[FOREACH;collection;query;returnFields;headers;format]

Paramètre

Objectif

collection

object, objectpermission, objecthistory, …

query

Filtre (critère « entreprise » ajouté automatiquement)

returnFields

Champs séparés par des virgules (facultatif) object.Field

headers

Titres de colonnes pour les fichiers CSV/HTML

format

csv, html, json, xml, eadm

Exemple (conceptuel) : Tous les utilisateurs ayant le rôle 501, CSV :

[FOREACH;objectpermission;SystemRoleId=501;object.DisplayName,object.Email;Name,Email;csv]

Sortie (variable fictive) :

Name,Email
Kari Nordmann,kari.nordmann@eksempel.kommune.no
Ola Hansen,ola.hansen@eksempel.kommune.no

Utilisation : rapport de gestion intégré au corps d'un e-mail.


[DESCENDANTS;rootId;returnField;parentKey;foreignKey]

Paramètre

Objectif

rootId

Identifiant d'objet du service à partir duquel commencer

returnField

Champ à récupérer à partir de chaque nœud

parentKey

Champ enfant pointant vers le champ parent (par exemple : DepartmentNumber)

foreignKey

Champ d'identifiant parent (par exemple : ParentDepartmentNumber)

Démarrer

Arbre

Expression

Résultat

Identifiant informatique 2100

Informatique → Ressources humaines

[DESCENDANTS;2100;SourceId;DepartmentNumber;ParentDepartmentNumber]

IT-100,HR-200

Utilisation : tous les sous-services relevant de la compétence d'un responsable.


[SYSTEM;type;id;field]

Paramètre

Objectif

type

system, systemrole, ou systemroles

id

Identifiant numérique ou *

field

Nom(s) de champ(s) à renvoyer

Expression

Sortie (variable fictive)

[SYSTEM;systemrole;501;Name]

Bruker Fagsystem X

[SYSTEM;system;12;Name]

Fagsystem X

Utilisation : coordonnées du propriétaire du système dans la notification d'administration.


[SELECTION;rulesetId;returnField]

Paramètre

Objectif

rulesetId

Ensemble de règles à évaluer pour chaque objet

returnField

Champ de chaque objet qui correspond

Expression

Sortie (variable fictive)

[SELECTION;1001;Email]

kari.nordmann@eksempel.kommune.no|ola.hansen@eksempel.kommune.no|

Utilisation : liste de diffusion regroupant toutes les personnes répondant aux critères de l'ensemble de règles « Nouveaux arrivants ».


[AVAILABLESYSTEM;field] / [AVAILABLEROLE;systemId;field]

Renvoie les valeurs séparées par des barres verticales correspondant aux systèmes ou aux rôles qui satisfont à la condition « Disponible pour » appliquée à l'utilisateur actuel.

Expression

Signification

[AVAILABLESYSTEM;Name]

Noms des systèmes pour lesquels Kari pourrait obtenir des autorisations

[AVAILABLEROLE;12;Name]

Noms des rôles du système 12 auxquels elle pourrait être affectée

Utilisation : listes de sélection dynamiques dans les formulaires ou les messages.


[AVAILABLEDEPARTMENTS;fields;targetUserId]

Paramètre

Objectif

fields

Champs de service séparés par des virgules

targetUserId

Utilisateur à évaluer ; vide = objet actuel

Utilisation : répertorie les services qu'un responsable peut gérer (à partir de « ManagerOf », des identifiants d'unité et des rôles « mega.eadm.no »).


[DATAOWNER;returnField]

Suit la relation « propriétaire des données » sur l'objet ; renvoie le champ correspondant au propriétaire.

Expression

Sortie (si le nom du groupe propriétaire est enregistré)

[DATAOWNER;Name]

IT dataeiere


[ANTECEDANTS.SYSTEMROLE;roleId;departmentId;returnField]

Les dirigeants détenant roleId sur ancêtre départements de departmentId.

Expression

Sortie (variable fictive)

[ANTECEDANTS.SYSTEMROLE;501;2101;Email]

it-leder@eksempel.kommune.no,

Utilisation : e-mail de remontée lorsque le service enfant des RH ne dispose d'aucun approbateur local.


[COUNTEMPLOYEE] / [COUNTMEMBERS]

Évalué respectivement au niveau du service ou du groupe.

Objet

Expression

Sortie (variable fictive)

Service informatique

[COUNTEMPLOYEE]

47

Groupe « Prosjekt Alfa »

[COUNTMEMBERS]

12


[GETLASTSYNCID]

Expression

Sortie (variable fictive)

[GETLASTSYNCID]

88421 (identifiant du dernier fichier d'importation pour l'entreprise)

Utilisation : dépannage des pieds de page dans les e-mails d'administration.


[LASTVALUE;attributeName]

Valeur précédente du champ issue de la dernière importation de l'historique RH, sinon valeur actuelle du champ.

Contexte

Expression

Résultat

Avant la synchronisation, Kari occupait un poste

[LASTVALUE;APositionCodeId]

POS-01|

Après avoir ajouté le POS-02

[APositionCodeId]

POS-01|POS-02|

À déguster avec [ARRAYDIFF;[APositionCodeId];[LASTVALUE;APositionCodeId]]POS-02|.


Postes (ressources humaines multipostes)

Les champs de position partagent l'index entre les tuyaux : index 0 = première position, 1 = seconde.

[POSITION;returnField;whereField;matchValue]

Paramètre

Objectif

returnField

Champ de position à renvoyer (par exemple, APositionCodeName)

whereField

Champ à faire correspondre (par exemple : AUnitId)

matchValue

Unité ou code à rechercher

Expression

Résultat

[POSITION;APositionCodeName;AUnitId;IT-100]

Utvikler

[POSITION;APositionCodeName;AUnitId;HR-200]

HR-rådgiver


[POSITIONS;returnField;whereField;matchValue]

Identique à [POSITION] mais renvoie une chaîne de caractères « | » alignée sur toutes les positions (avec un espace vide là où il n'y a pas de correspondance).

Expression

Résultat

[POSITIONS;APositionCodeName;AUnitId;IT-100]

Utvikler| (la deuxième position est vide selon le même schéma d'indexation)


[GROUPPRIMARYPOSITION;returnField]

Sélection primaire position : la plus élevée APositionPercentage, départage selon la date la plus proche APositionStartDate.

Postes chez Kari

Expression

Résultat

100 % informatique, 20 % ressources humaines

[GROUPPRIMARYPOSITION;APositionCodeName]

Utvikler


[ACTIVEPOSITIONCOUNT;asOfDate]

Expression

Résultat

[ACTIVEPOSITIONCOUNT;17.06.2026 00:00:00]

2 (ces deux postes étaient pourvus à cette date)


Messagerie et intégration

[COUNTMESSAGESENT;messageId;fromDate]

Paramètre

Objectif

messageId

Identifiant du modèle de message. Facultatif — s'il est omis (équivalent à 0, par exemple : [COUNTMESSAGESENT;]), voir MessageId omis ci-dessous

fromDate

Ne prendre en compte que les envois postérieurs à cette date (facultatif)

Expression

Sortie (variable fictive)

[COUNTMESSAGESENT;1936;01.06.2026 00:00:00]

1

Omis messageId: Si l'identifiant du modèle de message n'est pas fourni ([COUNTMESSAGESENT;] est égal à 0), l'expression est évaluée dans le contexte du modèle de message dont l'envoi a déclenché l'ensemble de règles. En d'autres termes, elle correspond à la question « le message en cours d'envoi a-t-il déjà été envoyé à ce destinataire ? », et non à un identifiant de modèle fixe. De ce fait, un même ensemble de règles peut être réutilisé comme protection contre les envois en double pour plusieurs modèles de message différents, au lieu de créer un ensemble de règles distinct pour chaque modèle.

Avertissement : L'aperçu de l'ensemble de règles dans le générateur d'expressions ne fonctionnera pas lorsque messageId est omis, car en dehors d'un envoi de message proprement dit, aucun modèle de message ne se déclenche pour fournir ce contexte.

Utilisation : condition « Déjà notifié ? » dans le flux de suivi ; condition commune de prévention des envois en double dans plusieurs modèles de message.


[SYSTEMOWNER]

Nécessite l'historique des modifications d'autorisation (autorisation d'ajout, de modification ou de suppression).

Contexte

Sortie (variable fictive)

Ajout d'une autorisation sur le rôle 501

fagsystem-eier@eksempel.kommune.no

Utilisation : propriétaire du système CC lorsque l'autorisation automatique est accordée.


[SYNCSTEPPARAMETER;key;companySyncStepId]

Paramètre

Objectif

key

Nom du paramètre lors de l'étape de synchronisation

companySyncStepId

Identifiant d'instance de l'étape de synchronisation client

Expression

Résultat

[SYNCSTEPPARAMETER;ApiBaseUrl;42]

https://api.example.invalid/hr

Accès : Administrateur de l'entreprise dans l'aperçu du générateur d'expressions.


[APITOKEN;apiUsername]

Paramètre

Objectif

apiUsername

Nom d'utilisateur de l'API (type d'objet 14)

Expression

Résultat

[APITOKEN;sync.service]

Chaîne de caractères du jeton de session opaque (variable)

Accès : administrateur de l'entreprise en version préliminaire. À utiliser uniquement dans des flux sécurisés côté serveur.


Aides HTML (modèles de messages)

[HTMLLISTMEMBEROF;displayField]

Pour un utilisateur membre d'un groupe: affiche la liste des groupes parents.

Expression

Résultat

[HTMLLISTMEMBEROF;Name]

<ul><li>Prosjekt Alfa</li><li>IT-utviklere</li></ul>


[HTMLLISTARRAY;list]

Expression

Résultat

[HTMLLISTARRAY;Utvikler|HR-rådgiver]

<ul><li>Utvikler</li><li>HR-rådgiver</li></ul>


Contrôles de modèle de formulaire

Utilisé dans les modèles de formulaire, et non dans les ensembles de règles standard.

Fonction

Objectif

[INPUTBOX;fieldId;label;default;value]

Saisie de texte liée à l'identifiant d'un champ de formulaire

[CHECKBOX;...]

Entrée booléenne

[LISTBOX;...]

Menu déroulant (cinq paramètres)

[RADIO;...]

Groupe radiophonique

[DATEBOX;...]

Sélecteur de date

[AREABOX;...]

Texte sur plusieurs lignes

[BUTTON;...]

Bouton d'action

Exemple de modèle : [INPUTBOX;1042;Avdeling;IT-100;] affiche la valeur saisie dans le champ intitulé « Avdeling » avec la valeur par défaut IT-100.

Marqueurs [NOTIFY...], [HIDDEN...], [SERVERFUNCTION...] Il s'agit de « hooks » de comportement, et non de fonctions de données.


Scénarios de bout en bout (données fictives)

E-mail de bienvenue — date de début uniquement

Ny ansatt [DisplayName] starter [SUBSTRING;0;10;[Start]].

Résultat : Ny ansatt Kari Nordmann starter 01.04.2026.


Ligne d'expiration de l'autorisation

Gyldig til: [IFEMPTYUSE;[OBJECTPERMISSION;ExpiryDate;SystemRoleId;501];Permanent tilgang]

Résultat : Gyldig til: Permanent tilgang


Responsable absent — transmettre au responsable du service parent

[IFEMPTYUSE;
 [EXISTS;[Manager];];
 [REFERENCE;Email;UserId;1;[REFERENCE;Manager;Id;2;[REFERENCE;ParentDepartmentNumber;DepartmentNumber;2;[DepartmentNumber]]]]]

Kari, responsable

Résultat

vide

ola.hansen@eksempel.kommune.no (adresse e-mail du responsable du service concerné)

ensemble

vide (branche EXISTS — adaptez la logique du modèle si vous avez besoin de l'adresse e-mail du responsable lorsqu'elle est disponible)

Adaptez la combinaison IFEMPTYUSE/EXISTS en fonction de l'objectif de votre modèle ; testez-la dans le générateur d'expressions.


Nouveau poste uniquement — destinataire du message

Après la synchronisation, les ajouts POS-02:

[REFERENCE;Email;UserId;1;[POSITION;APositionManager;AUnitId;[RTRIM;[ARRAYDIFF;[APositionCodeId];[LASTVALUE;APositionCodeId]];|]]]

Résultat : Adresse e-mail du responsable du service auquel appartient le nouveau poste (placebo : ny-leder@eksempel.kommune.no).


Nom du groupe de sécurité automobile (configuration client)

SG-[Department]-[CLEAN;[OrgUnitnr]]

Résultat : SG-IT og digitalisering-IT-100 (le résultat exact de CLEAN peut varier).


Mappage d'exportation — samAccountName

[UserName]

Résultat : kari.nordmann


Ensemble de règles — l'utilisateur dispose d'un rôle dans le système

Expression d'attribut de règle :

[OBJECTPERMISSION.SYSTEMROLE;Name;SystemRoleId;501]

Valeur calculée : Bruker Fagsystem X — opérateur « comparer avec » Er lik / opérateurs proposant des abonnements.


Générateur d'expressions

Article

Détails

Générateur d'expressions pour les icônes d'en-tête, éditeurs de modèles de messages, certains écrans d'eHub

Liste des fonctions

Tous les champs d'objet du type sélectionné, ainsi que les fonctions standard

Aperçu

Sélectionner un utilisateur/service/groupe de test ; nécessite des droits de super-gestionnaire

Ensembles de règles

Automatisation → Ensembles de règles — super-gestionnaire minimum

Deux modes de saisie pour la valeur d'une condition de règle

Chaque ligne de condition de l'onglet « Règles » d'un ensemble de règles comporte un champ « Attribut » (ou « Argument ») muni de deux petites icônes permettant de basculer entre les modes de saisie :

  • Mode menu déroulant (icône représentant des flèches haut/bas) — mode par défaut. Affiche un menu déroulant permettant d'effectuer une recherche parmi les valeurs d'attributs de l'objet, regroupées par type (attributs d'utilisateur, de groupe, de service ou de formulaire, selon l'ensemble de règles utilisé).

  • Mode texte libre (icône de clavier) — transforme le champ en zone de texte simple. Utilisez cette option pour saisir du texte figé ou une expression de fonction en utilisant la syntaxe entre crochets décrite plus haut dans cet article, par exemple : [COUNTMESSAGESENT;7166].

Le mode texte libre propose toujours la saisie semi-automatique : en tapant une partie du nom d'une fonction ou d'un champ (par exemple, [count) des surfaces présentant des caractéristiques et des fonctions similaires, telles que [COUNTEMPLOYEE], [COUNTMEMBERS], et [COUNTMESSAGESENT;message id].

Tester une expression à l'aide de la fonction « Modifier l'expression »

Lorsqu'un champ de condition est en mode texte libre, une icône supplémentaire située à côté de celui-ci permet d'ouvrir la boîte de dialogue « Modifier l'expression ». Utilisez-la pour tester une expression de fonction sur un objet réel avant d'enregistrer la règle.

La boîte de dialogue affiche :

  • Type d'objet — le type d'objet principal du jeu de règles (par exemple, « Utilisateur ») et les contextes secondaires disponibles (« Fonction », « Alias de fonction », « Événement », « Historique »).

  • Contexte: objet de test à utiliser pour l'évaluation. Utilisez la fonction « Rechercher » pour sélectionner un objet spécifique, ou « Choisir au hasard » pour laisser eADM en sélectionner un.

  • Expression — zone de texte modifiable, préremplie avec l'expression actuelle de la condition.

  • Résultat — le résultat du calcul, affiché après avoir cliqué sur « Exécuter ».

Lors de l'édition, lorsque vous passez la souris sur une fonction au sein d'une expression, une infobulle d'aide s'affiche, indiquant la syntaxe complète de cette fonction, une brève description et la signification de chaque paramètre. L'infobulle met en surbrillance l'expression entière en vert et affiche en gras la partie correspondant à la position actuelle du curseur, ce qui facilite considérablement la navigation dans les expressions longues ou profondément imbriquées.

Remarque : comme pour le générateur d'expressions en général, tester une expression dans la section « Modifier l'expression » nécessite des droits d'administrateur (voir « Niveaux d'accès » ci-dessus).


Dépannage

Symptôme

Cause probable

Action

Littéral [FUNCTION...] en sortie

Champ interne vide ou erreur de frappe

Corriger l'imbrication ; vérifier les noms des champs de l'objet

Erreur d'évaluation d'expression

Imbriqué [ARRAYFOREACH...]

Diviser en appels entre frères et sœurs ou utiliser [ARRAYJOIN]

Chaîne vide

Identifiant / autorisation introuvable

Vérifier l'identifiant du rôle système et l'identifiant système dans l'accès au système

Position incorrecte dans l'e-mail

Plusieurs postes ont été modifiés simultanément

Ne vous fiez pas uniquement aux fonctions ARRAYDIFF et LASTVALUE

Aperçu bloqué

Rôle ou champ protégé

Élever le rôle ou simplifier l'expression de test

Ça fonctionne dans le générateur, mais pas dans le message

Le flux d'événements a besoin de l'historique des objets issu de la synchronisation

Lancer l'importation ; vérifier le type d'entrée dans l'historique

Preview ne fonctionne pas / plante sans afficher de message d'erreur

[COUNTMESSAGESENT;] utilisé avec messageId omis

Comme prévu — le contexte du modèle de message déclencheur n'existe que lors d'un envoi effectif. Testez la logique associée sans cette condition, ou fournissez temporairement un véritable messageId à titre d'aperçu uniquement


Index rapide

Catégorie

Fonctions

Date et heure

NÅ, NOW, DATEFORMAT, DATEDIFF, DAYOFYEAR

Chaîne de caractères

SUBSTRING, SPLIT, REPLACE, REPLACELIST, RTRIM, LTRIM, RPAD, LPAD, RIGHT, INITIALS, PRETTIFY, LOWER, UPPER, CLEAN, STRICTCLEAN, CNCLEAN, GETKEYVALUE

Logique

IFTHENELSE, IFEMPTYUSE, EXISTS, TRANSFORM, CONTAINS

Tableaux

COUNT, ARRAYAPPEND, ARRAYUNIQUE, ARRAYFILTER, ARRAYDIFF, ARRAYJOIN, ARRAYFOREACH, ARRAYPREFIX, ARRAYTRIM, PRUNEARRAY, UNION

Sécurité

HASH, PASSWORD, UNIQUE, RND, STRRND

Recherche

RÉFÉRENCE, AUTORISATION D'OBJET, HISTORIQUES D'OBJET, POUR CHAQUE, DESCENDANTS, SYSTÈME, SÉLECTION, SYSTÈME DISPONIBLE, RÔLE DISPONIBLE, SERVICES DISPONIBLES, PROPRIÉTAIRE DES DONNÉES, ANTÉCÉDENTS.RÔLE SYSTÈME, NOMBRE D'EMPLOYÉS, NOMBRE DE MEMBRES, OBTENIR DERNIÈRE ID DE SYNCHRONISATION, DERNIÈRE VALEUR

Postes

POSITION, POSITIONS, POSITION_PRINCIPALE_DU_GROUPE, NOMBRE_DE_POSITIONS_ACTIVES

Messagerie

COUNTMESSAGESENT, SYSTEMOWNER, SYNCSTEPPARAMETER, APITOKEN

HTML

HTMLLISTMEMBEROF, HTMLLISTARRAY

Formulaires

ZONE DE SAISIE, CASE À COCHER, BOUTON, LISTE DÉROULANTE, BOUTON RADIO, ZONE DE DATE, ZONE DE SÉLECTION


Notes de l'assistant IA

  1. Préférer [DisplayName]les champs de type « - » avant de les encapsuler dans des fonctions.

  2. Demandez se trouve l'expression : ensemble de règles, message, exportation ou configuration client.

  3. Remplacer les identifiants fictifs (501, 2100) avec les données réelles du client rôle système et département identifiants provenant de accès au système.

  4. Le filtre de position appliqué lors de l'importation exclut les correspondances ; le jeu de règles de l'étape de synchronisation inclut les correspondances.

  5. Les flux de messages d'événement ont besoin de l'historique des objets issu d'une synchronisation.

  6. Créer des exemples imbriqués à l'envers — sauf que [ARRAYFOREACH...], qui se lie à ??? par élément avant l'exécution des fonctions de modèle.

  7. Ne pas imbriquer [ARRAYFOREACH...]; utilisez des appels entre frères et sœurs ou [ARRAYJOIN].

  8. [COUNTMESSAGESENT;] avec le messageId La fonction « omitted » s'applique au modèle de message en cours d'envoi ; ainsi, un même ensemble de règles peut contrôler plusieurs modèles de message — mais son aperçu ne fonctionnera pas en dehors d'un envoi réel.

  9. Il existe deux façons de définir la valeur d'une condition de règle : via un menu déroulant (sélecteur d'attributs) ou en saisie libre (icône du clavier, texte fixe ou expressions) ; en mode saisie libre, l'option « Modifier l'expression » permet de tester la condition sur un objet d'exemple.

  10. Termes : ensemble de règles (Regelsett), flux de messages (meldingsflyt), accès au système (systemtilgang), autorisation (tilgang), historique des objets (objekthistorikk).

Dernière mise à jour :