Un dĂ©clencheur crĂ©e des demandes sur un service sans que personne ne les saisisse : Ă une Ă©chĂ©ance, Ă la lecture d'une boĂźte mail, d'un fichier, etc. La demande suit le mĂȘme chemin qu'une demande saisie : le formulaire du service est rempli (sans ĂȘtre affichĂ©), le processus dĂ©marre, et le demandeur est le compte SystĂšme, sauf rĂ©glage contraire.
Les dĂ©clencheurs se rĂšglent dans l'onglet DĂ©clencheurs de la fiche du service (menu Administration âș Catalogue et workflow âș Catalogue, puis le service). Cet onglet apparaĂźt une fois le service enregistrĂ©. Il est ouvert aux Administrateurs et aux Administrateurs Scoop.
Les types de déclencheurs proposés dépendent des modules installés.
Réglages du service
- Commandable dans le catalogue (cochĂ© par dĂ©faut) : dĂ©cochĂ©, le service disparaĂźt du catalogue, de la recherche et du catalogue sans compte, et ne peut plus ĂȘtre commandĂ© directement. Seuls ses dĂ©clencheurs crĂ©ent alors des demandes.
- Plafond de demandes par passage (100 par dĂ©faut) : quand un passage produirait davantage de demandes, il n'en crĂ©e aucune. Il est BloquĂ© (plafond) et les responsables du service sont alertĂ©s. Le plafond protĂšge contre une source qui s'emballe. Exception : une boĂźte mail ou une Ă©chĂ©ance est une file qui s'Ă©coule â le passage crĂ©e les demandes jusqu'au plafond et laisse le reste au passage suivant.
Enregistrer valide ces deux réglages.
Ajouter un déclencheur
Choisissez le type dans Ajouter un déclencheur, puis Ajouter. La page qui s'ouvre demande :
- un Nom ;
- Actif : un nouveau déclencheur est inactif par défaut. Réglez-le, testez-le avec Aperçu, puis activez-le ;
- le Demandeur des demandes créées : Compte SystÚme, un Utilisateur désigné, ou Désigné par la source (par exemple l'expéditeur d'un mail ; à défaut, le compte SystÚme) ;
- les Réglages du type, propres à chaque type de déclencheur.
La liste des déclencheurs
Pour chaque déclencheur, la liste indique son nom, son type, son état (Actif, Inactif, Passage en cours) et son Dernier passage. Les actions :
- Modifier ;
- Activer ou Désactiver ;
- Lancer maintenant : lance un passage tout de suite (déclencheur actif), puis ouvre son journal ;
- Aperçu (pour les types qui le proposent) : montre ce qu'un passage recevrait, sans rien créer, et prévient si le plafond serait dépassé ;
- Journal ;
- Supprimer : le déclencheur et son journal disparaissent définitivement.
Un type marqué Type indisponible vient d'un module désactivé : le déclencheur reste enregistré mais ne fait plus rien.
Minuterie
Le type Minuterie crée une demande à chaque échéance d'une Planification (cron) à six champs : seconde, minute, heure, jour, mois, jour de la semaine. Par exemple 0 0 8 * * MON : chaque lundi à 8 h. L'heure est celle du fuseau de l'instance, affiché sous le champ.
Chaque demande reçoit trigger_date (2026-10-12), trigger_time (08:00) et trigger_datetime (2026-10-12T08:00:00+02:00) : un champ du formulaire portant ce nom est rempli, sinon la valeur devient une variable de la demande. DĂ©sactiver ou supprimer le dĂ©clencheur dĂ©sactive ou supprime sa tĂąche dans le planificateur. Une Ă©chĂ©ance passĂ©e pendant un arrĂȘt de l'application n'est pas rattrapĂ©e.
Quand un passage de la minuterie ne réussit pas, l'historique de sa tùche dans le Planificateur l'explique dans votre langue : éléments refusés (nombre affiché, la tùche est alors réussie en partie), échec du passage, plafond du service dépassé (nombre d'éléments affiché, aucune demande créée), déclencheur supprimé (supprimez la tùche). Le détail de chaque élément est dans Le journal du déclencheur.
RequĂȘte planifiĂ©e
Le type RequĂȘte planifiĂ©e exĂ©cute une requĂȘte du module RequĂȘtes selon une Planification (cron) et crĂ©e une demande par ligne du rĂ©sultat. Choisissez la requĂȘte parmi celles que vous pouvez exĂ©cuter, puis donnez une valeur fixe Ă chacun de ses paramĂštres (@nom). Le passage s'exĂ©cute au nom du compte SystĂšme.
Chaque colonne renseigne le champ du formulaire de mĂȘme nom ; sinon elle devient une variable de la demande. Une colonne article.<code> sĂ©lectionne un article. Les valeurs arrivent dans un format neutre : dates 2026-11-01, horodatages ISO 8601, nombres Ă point dĂ©cimal (1250.50), boolĂ©ens true/false. Aucune ligne : rien n'est créé. Plus de lignes que le plafond : le passage est bloquĂ© et les responsables sont alertĂ©s.
La requĂȘte doit Ă©carter les lignes dĂ©jĂ traitĂ©es, sinon chaque passage recrĂ©e les mĂȘmes demandes. Les valeurs des formulaires soumis sont lisibles dans la vue dynamicforms.v_submitted_field_values ; par exemple, avec un paramĂštre @service fixĂ© Ă l'identifiant du service :
SELECT c.code AS contrat, c.ends AS echeance
FROM contracts c
WHERE c.ends < current_date + 30
AND NOT EXISTS (
SELECT 1 FROM dynamicforms.v_submitted_field_values v
WHERE v.catalog_service_id = @service::uuid
AND v.field_slug = 'contrat'
AND v.value = c.code)
Avant d'activer le dĂ©clencheur, ouvrez l'Aperçu : il exĂ©cute la requĂȘte et montre, sans rien crĂ©er, les lignes qui seraient traitĂ©es, ce que devient chaque colonne (champ, article ou variable) et si la demande serait acceptĂ©e.
Fichier CSV
Le type Fichier CSV crée une demande par ligne d'un fichier que vous déposez. Dans la liste des déclencheurs, cliquez sur Déposer un fichier, choisissez le fichier, puis Aperçu : vous voyez les lignes lues, ce que devient chaque colonne (champ, article ou variable) et si chaque demande serait acceptée. Rien n'est créé avant Créer les demandes.
La premiĂšre ligne porte les noms des colonnes. SĂ©parateur ; ou ,, encodage UTF-8 (avec ou sans BOM), 5 Mo au plus ; un champ entre guillemets peut contenir le sĂ©parateur ou un retour Ă la ligne. Chaque colonne renseigne le champ du formulaire de mĂȘme nom, sinon une variable ; article.<code> sĂ©lectionne un article. Plus de lignes que le plafond : rien n'est créé et les responsables sont alertĂ©s.
contrat;echeance;article.badge
C-1001;2026-11-01;1
C-1002;2026-11-15;0
Un fichier aperçu mais jamais transformĂ© en demandes est oubliĂ© au bout d'un jour. Par l'API : POST âŠ/triggers/{id}/csv/preview puis POST âŠ/triggers/{id}/csv, fichier dans le champ file.
BoĂźte mail
Le type Boßte mail crée une demande par mail reçu dans une boßte relevée par le module Boßtes mail. Choisissez la boßte dans la liste ; Voir la configuration ouvre sa fiche, Déclarer une boßte en ajoute une. Dans sa configuration, la boßte doit avoir le gestionnaire servicecatalog, et une boßte ne peut alimenter qu'un seul déclencheur.
Chaque mail renseigne les champs from, from_name, to, cc, subject, body, body_html, received_at et message_id (sinon des variables) ; ses piÚces jointes vont dans le champ piÚce jointe du formulaire, les images insérées dans le texte sont ignorées. Choisissez le demandeur Désigné par la source : l'expéditeur devient le demandeur s'il est un utilisateur connu et actif, sinon c'est le compte SystÚme. Le plafond s'applique à chaque relÚve de la boßte : au-delà , les mails les plus anciens sont traités d'abord, les autres à la relÚve suivante.
Une rĂ©ponse Ă un mail dĂ©jĂ traitĂ©, ou un mail dont le sujet contient le numĂ©ro d'une demande entre crochets (par exemple [WF-000123]), ne crĂ©e pas de demande : il est ajoutĂ© en commentaire Ă cette demande, avec ses piĂšces jointes, mĂȘme si elle est close. Seules les demandes créées par ce dĂ©clencheur sont concernĂ©es : le numĂ©ro d'une autre demande est ignorĂ©, et le mail crĂ©e une nouvelle demande.
Attention : l'adresse d'un expéditeur se falsifie facilement. Limitez la boßte aux domaines de confiance avec les filtres d'inclusion du module Boßtes mail. La relÚve (tùche MailInboxPolling) est désactivée à l'installation : activez-la dans le Planificateur.
ĂvĂ©nement
Le type ĂvĂ©nement crĂ©e une demande quand un Ă©vĂ©nement du produit se produit : un ticket créé ou passĂ© dans un statut, une demande close, un objet de la CMDB modifié⊠Choisissez l'Ă©vĂ©nement dans la liste ; les valeurs qu'il transporte sont affichĂ©es en dessous. Chaque valeur renseigne le champ de mĂȘme nom, sinon une variable ; les valeurs imbriquĂ©es ont des noms Ă points (par exemple values.cpu).
La condition, facultative, limite les Ă©vĂ©nements retenus : une rĂšgle par ligne, de la forme chemin opĂ©rateur valeur, toutes devant ĂȘtre vraies. OpĂ©rateurs : =, !=, contient (majuscules et accents ignorĂ©s), > et < (nombres). Exemple : eventType = StatusChanged.
Un mĂȘme Ă©vĂ©nement ne crĂ©e jamais deux demandes. Le plafond du service s'applique par minute : au-delĂ , les Ă©vĂ©nements sont ignorĂ©s et notĂ©s au journal, avec une seule alerte. Une demande qui ne peut pas ĂȘtre créée est notĂ©e au journal, sans effet sur l'action d'origine.
Un dĂ©clencheur qui Ă©coute les demandes de son propre service (leur crĂ©ation, un changement de statut, leur clĂŽture) ne tourne pas sans fin : comme pour le type Demande d'un autre service, une chaĂźne s'arrĂȘte Ă la profondeur 5 (variable chain_depth). Le refus est notĂ© au journal et une alerte part aux responsables. La fin d'un passage d'un dĂ©clencheur ĂvĂ©nement, Seuil franchi ou Demande d'un autre service n'est jamais retenue comme Ă©vĂ©nement.
Seuil franchi
Le type Seuil franchi surveille une valeur numérique transportée par un événement, par exemple la quantité d'un article en stock. Choisissez l'événement, la valeur suivie (quantity), l'opérateur (<, <=, >, >=) et le seuil. L'élément surveillé est le chemin de la valeur qui identifie l'article ou l'alerte (stockItemId) ; vide, c'est le sujet de l'événement.
Une demande est créée quand la valeur franchit le seuil pour un élément, puis plus rien tant qu'elle reste de ce cÎté : une nouvelle baisse sous le minimum ne crée pas de deuxiÚme demande. Quand la valeur repasse de l'autre cÎté, le déclencheur se réarme ; le prochain franchissement crée une nouvelle demande. Chaque élément a son propre état. Un événement sans valeur numérique est ignoré.
Demande d'un autre service
Le type Demande d'un autre service enchaĂźne deux services : quand une demande du service source atteint l'un des statuts mĂ©tier indiquĂ©s (leurs codes, sĂ©parĂ©s par des virgules), ou se clĂŽt si la case est cochĂ©e, une demande de ce service est créée. Elle reprend les valeurs de la demande source (mĂȘme nom, mĂȘme champ ; sinon variable), plus source_request_id, source_request_number, source_status et chain_depth.
Avec le demandeur DĂ©signĂ© par la source, la nouvelle demande garde le demandeur de la source s'il est toujours actif, sinon le compte SystĂšme. Une demande source ne dĂ©clenche qu'une fois pour un mĂȘme statut, mĂȘme si elle l'atteint de nouveau. Une chaĂźne (A crĂ©e B, qui crĂ©e AâŠ) s'arrĂȘte Ă la profondeur 5 : le refus est notĂ© au journal et une alerte part aux responsables.
ĂchĂ©ance
Le type ĂchĂ©ance crĂ©e une demande quelques jours avant, ou aprĂšs, une date : la fin d'un contrat ou la fin de garantie d'un actif. Choisissez l'Ă©chĂ©ance, le dĂ©calage en jours (-30 = trente jours avant) et l'heure de vĂ©rification (planification, comme la minuterie).
Chaque élément concerné donne une seule demande pour une échéance donnée : les vérifications suivantes n'en recréent pas. Si la date change (contrat prolongé), une nouvelle demande est créée le moment venu pour la nouvelle date. Un jour de vérification manqué est rattrapé pendant sept jours. La demande reçoit les valeurs de l'élément, plus due_date et days_before. Plus d'éléments que le plafond : les échéances les plus proches d'abord, les autres à la vérification suivante.
Créer pour une partie des lignes
Dans l'aperçu d'une requĂȘte planifiĂ©e ou d'un fichier CSV, chaque ligne a une case Ă cocher. Cochez les lignes voulues (ou Tout cocher), puis cliquez sur CrĂ©er pour la sĂ©lection : une demande est créée pour chaque ligne cochĂ©e, telle qu'elle apparaissait dans l'aperçu. Une ligne refusĂ©e par la validation ne peut pas ĂȘtre cochĂ©e ; la raison est indiquĂ©e dans la colonne Validation. Le plafond s'applique aux lignes cochĂ©es. La sĂ©lection vaut 15 minutes et ne sert qu'une fois : au-delĂ , refaites un aperçu. Le journal indique un lancement manuel et qui l'a fait.
Webhook / API
Le type Webhook / API laisse un outil tiers (n8n, Zapier, Make, Power Automate, un outil de supervision, un script) créer une demande par appel. Choisissez le mode d'authentification et la limite d'appels par minute (60 par défaut), enregistrez, puis cliquez sur Générer un nouveau secret. Le secret n'est affiché qu'une fois : copiez-le aussitÎt. En générer un autre rend l'ancien inutilisable ; aprÚs un changement de mode, générez-en un nouveau.
- Jeton porteur : l'outil envoie l'en-tĂȘte
Authorization: Bearer <secret>Ă l'adresse affichĂ©e. - URL secrĂšte : pour un outil qui ne sait pas poser d'en-tĂȘte, il appelle l'adresse suivie de
/<secret>. - Signature HMAC : pour un outil qui signe selon Standard Webhooks (en-tĂȘtes
webhook-id,webhook-timestamp,webhook-signature) ; une signature de plus de 5 minutes est refusée.
L'outil envoie du JSON ou un formulaire encodĂ© (1 Mo au plus). Chaque clĂ© renseigne le champ de mĂȘme nom, sinon une variable ; un JSON imbriquĂ© donne des noms Ă points, par exemple ticket.priority ou items.0.name. L'Ă©cran donne des exemples curl pour chaque mode.
RĂ©ponses : 202 avec le numĂ©ro de la demande, 422 si les donnĂ©es sont refusĂ©es, 401 mauvais secret, 404 dĂ©clencheur inconnu ou dĂ©sactivĂ©, 413 contenu trop gros, 429 trop d'appels. Si l'outil renvoie le mĂȘme en-tĂȘte Idempotency-Key (ou webhook-id) dans les 24 heures, il reçoit la mĂȘme rĂ©ponse et aucune seconde demande n'est créée.
Une intégration qui a déjà un compte peut appeler l'API POST /api/v1/catalog/triggers/<identifiant>/fire avec son jeton, sans secret de déclencheur.
Le journal
Le journal liste les passages, du plus récent au plus ancien : Début, Statut, éléments Reçus, demandes Créées, éléments Refusés. Choisissez un passage pour voir ses éléments : la source de chacun, puis la demande créée ou les erreurs qui l'ont fait refuser.
| Statut | Signification |
|---|---|
| Réussi | Chaque élément a donné sa demande (un passage sans élément est réussi) |
| Terminé avec refus | Au moins un élément a été refusé (donnée invalide) ; les autres ont donné leur demande |
| Ăchec | Erreur technique, par exemple une source injoignable |
| Bloqué (plafond) | Trop d'éléments : aucune demande créée |
| IgnorĂ© (passage en cours) | Un autre passage du mĂȘme dĂ©clencheur tournait dĂ©jĂ |
Les passages de plus de 90 jours sont supprimés chaque nuit par la tùche planifiée PurgeServiceTriggerRuns, que l'on peut désactiver dans le planificateur.
Alertes
Un passage bloqué par le plafond, un élément refusé ou une erreur technique envoient une seule alerte par passage aux responsables du service (les personnes et les membres des groupes désignés dans l'onglet Général), selon les préférences de notification de chacun. L'alerte renvoie au journal du passage. Une boßte mail ou une échéance qui accumule plus d'éléments que le plafond envoie une alerte de retard, au plus une fois par 24 heures : relevez le plafond ou cherchez l'origine de l'afflux.
Export et import
Un service exporté emporte ses déclencheurs, sans leurs secrets (mots de passe, jetons) ni leur utilisateur désigné. à l'import, ils arrivent désactivés : l'import liste ce qu'il reste à ressaisir avant de les réactiver.
Voir aussi
- « Administrer le catalogue de services » : la fiche d'un service et ses responsables.
- « Superviser les demandes » : les demandes créées par un déclencheur montrent ses données sur leur fiche.