Analyse techniqueAutomatisation →

Gestion des erreurs dans l’automatisation de workflows : comment les processus restent fiables même en cas de panne

Un workflow n’est fiable que lorsqu’on sait ce qui se passe en cas de panne : réessayer, mettre de côté, signaler et garder la trace plutôt qu’échouer en silence.

Ceci est une étude conceptuelle, pas un compte rendu de projet client. Les processus et valeurs d'exemple décrits sont des hypothèses déroulées sur le papier, pas des résultats prouvés.

Rédaction PageLeo · · 12 min de lecture

Situation de départ
Une petite entreprise a automatisé plusieurs processus : demandes vers le CRM, documents vers le classement, rappels aux clients. Tant que tout fonctionne, rien ne se remarque.
Défi
Des interfaces tombent, des données arrivent incomplètes, des limites se déclenchent, des événements arrivent en double. Sans gestion des erreurs, ces cas s’évanouissent et personne ne s’en aperçoit à temps.
Approche
Nous classons les erreurs par type, ne réessayons que ce qu’il est utile de réessayer, rendons les étapes idempotentes, orientons les cas douteux vers une file de contrôle et signalons activement tout ce qui est pertinent.
Bénéfice
Le bénéfice, c’est moins de travail perdu et une réaction plus rapide. Il se mesure au taux d’erreurs, au délai de détection et au volume de la file ; l’absence d’erreurs ne peut pas être promise.

Lundi matin : trois demandes manquent dans le CRM, et personne ne sait depuis quand

L’alerte ne vient pas d’un système, mais d’une cliente. Elle a fait une demande par le formulaire de contact il y a une semaine et n’a jamais reçu de réponse. Elle est introuvable dans le CRM. Selon le journal, le formulaire a envoyé une confirmation, et le workflow affiche des coches vertes. Quelque part entre les deux, quelque chose s’est perdu, et il n’en reste aucune trace.

Dans ce scénario, une entreprise de services de deux douzaines de salariés exploite quatre automatisations : demandes de formulaire vers le CRM, factures de la boîte mail vers la comptabilité, rappels de rendez-vous par e-mail et un rapport hebdomadaire. Chacune a été construite séparément et a fonctionné de façon satisfaisante pendant des mois. Personne n’a jamais défini ce qui doit se passer lorsqu’une étape échoue.

C’est le cas normal, pas l’exception. En construisant un workflow, on pense au chemin qui fonctionne. Mais le quotidien se compose aussi de chemins qui ne fonctionnent pas : un service qui ne répond pas pendant une heure, un champ obligatoire qui arrive vide, une limite quotidienne atteinte à 15 heures. Qui ne conçoit pas ces cas les conçoit quand même, mais sans le vouloir et le plus souvent sous forme de perte de données.

Le plus dangereux n’est pas tant la panne totale que la panne partielle. Si une automatisation tombe complètement, on le remarque généralement dans la journée, car quelque chose d’habituel manque. Mais si elle ne perd qu’un cas sur vingt, tout échantillon paraît bon. Le dommage se répartit sur des semaines, est attribué à des personnes et n’apparaît comme cause dans aucune statistique. C’est précisément cette catégorie d’erreur qui transforme une automatisation pratique en un risque auquel on fait aveuglément confiance.

Un workflow qui ne fait rien en cas de panne fait en réalité quelque chose : il jette en silence.

Quatre types d’erreurs qui ne se traitent pas de la même façon

Le premier type est l’interface en panne. Un service répond par une erreur serveur, dépasse le délai d’attente ou est tout simplement injoignable. La cause échappe à votre influence et est souvent passagère. Ici, la patience aide sous forme de nouvelles tentatives contrôlées et, si cela ne suffit pas, d’une mise de côté propre avec signalement.

Le deuxième type, ce sont les données incomplètes ou invraisemblables : une adresse e-mail sans arobase, un montant sous forme de texte, un champ obligatoire que le formulaire a laissé passer. Réessayer n’a aucun sens, car le même enregistrement échouera encore et encore. Cela relève d’une personne qui décide s’il faut corriger, demander ou rejeter.

Troisièmement, les limites et les quotas. Presque chaque interface limite les appels par minute ou par jour et répond à un dépassement par un avertissement, le plus souvent le statut 429, souvent avec l’indication du temps d’attente. C’est une erreur qui exige des égards, pas de l’entêtement. Quatrièmement, les doublons : les webhooks sont parfois livrés plusieurs fois, les utilisateurs cliquent deux fois, une nouvelle tentative tombe sur une étape qui avait en fait déjà réussi.

La distinction est au cœur du sujet. Qui traite les quatre cas avec le même mécanisme, par exemple « en cas d’erreur, réessayer trois fois », fait des dégâts : il martèle un service bridé, répète des données désespérément erronées et, avec les doublons, en génère encore davantage.

  • Passager et externe : réessayer à intervalles croissants, puis mettre de côté et signaler.
  • Durable et lié aux données : ne pas réessayer, mais déposer pour contrôle manuel.
  • Limitation par le fournisseur : attendre comme l’indique le service et répartir la charge.
  • Arrivé en double : détecter et ignorer avant que quelque chose ne soit comptabilisé deux fois.

Où l’effort doit d’abord se porter : pondérer selon le dommage, pas selon la fréquence

Toutes les erreurs ne méritent pas le même soin. Un rapport hebdomadaire manqué est agaçant, une demande client perdue coûte cher, une facture envoyée deux fois est embarrassante et, selon le cas, juridiquement désagréable. La première analyse ne demande donc pas ce qui peut techniquement mal tourner, mais quelle serait, à chaque étape, la pire issue réaliste.

Pour cela, nous parcourons les workflows étape par étape et notons trois choses par étape : que se passe-t-il si elle échoue ? Que se passe-t-il si elle s’exécute deux fois ? Et qui s’en apercevrait, et quand ? La troisième question est la plus inconfortable, car la réponse est souvent « probablement la cliente, dans une semaine ». Ce sont précisément ces étapes qui passent en priorité.

S’y ajoute la dépendance à des systèmes tiers. Une interface que vous ne contrôlez pas finira par changer : un champ est renommé, une version abandonnée, une méthode d’authentification remplacée. La question n’est pas de savoir si cela arrivera. L’analyse consigne donc quelles étapes dépendent de quels services externes et à quelle vitesse un changement se remarquerait.

Des réponses naît une matrice simple de dommage et de risque de détection. Les étapes à fort dommage et faible visibilité reçoivent le traitement complet avec clé, file et alerte. Les étapes à faible dommage et forte visibilité, comme un rapport qui n’arrive pas et dont on remarque tout de suite l’absence, se contentent d’une simple nouvelle tentative et d’un signalement. Cela maintient l’effort proportionné et les processus compréhensibles.

Figure · Par où commencer judicieusement la gestion des erreurs

  • Rejet silencieux de demandes clientspriorité relative
  • Écritures ou e-mails en doublepriorité relative
  • Données incomplètes dans le CRMpriorité relative
  • Interfaces bridéespriorité relative
  • Rapports en retardpriorité relative
Représentation illustrative, sans valeurs mesurées. Elle montre une pondération possible selon le dommage et le risque de détection dans une entreprise fictive. Illustration à titre indicatif, pas de valeurs mesurées.

Mieux vaut échouer bruyamment que continuer discrètement

Le principe qui sous-tend toutes les mesures est le suivant : une erreur ne doit jamais rester invisible, et rien ne doit se perdre avant qu’une personne l’ait vu ou délibérément écarté. Il en découle un ordre des moyens. D’abord, le système essaie de s’aider lui-même, par exemple par une nouvelle tentative. Si cela échoue, il dépose le cas dans un endroit sûr. Ce n’est qu’ensuite qu’il se manifeste, et de façon ciblée.

Une alternative serait de signaler chaque erreur immédiatement. Cela semble rigoureux et finit, au bout de deux semaines, dans une boîte que plus personne ne lit. Les signalements pour des choses qui se résolvent d’elles-mêmes créent de la lassitude, et l’unique signalement important s’y noie. Nous misons donc sur des seuils : une simple requête réessayée relève du journal, un service qui ne répond plus depuis dix minutes mérite un appel.

Une deuxième alternative est une approche du tout ou rien, où un workflow s’interrompt entièrement à chaque erreur et est annulé. Cela convient aux transactions de base de données, rarement aux processus qui touchent plusieurs systèmes tiers : un e-mail envoyé ne se rattrape pas. Il est plus praticable de concevoir les étapes de façon à pouvoir les réexécuter sans risque et de reprendre le cas là où il s’est arrêté.

Répétable plutôt que réversible : construire les étapes de façon qu’une seconde exécution ne provoque rien de nouveau.

Figure · Échec silencieux contre gestion active des erreurs

  • Une étape échoue, le processus s’interrompt, le cas disparaît.
  • Le message se trouve quelque part dans l’historique de la plateforme, personne ne le voit.
  • Un redémarrage manuel entraîne des écritures en double.
  • Une modification de l’interface tierce ne se remarque que par les réclamations de clients.
Description d’un workflow fictif, sans valeurs mesurées.

La structure : quatre couches de protection autour de chaque étape

Nous concevons la gestion des erreurs en couches qui agissent de l’intérieur vers l’extérieur. Au centre se trouve l’étape individuelle avec son contrôle des données d’entrée. Autour, la logique de nouvelle tentative, puis la mise en sécurité dans une file et, tout à l’extérieur, la surveillance avec signalements. Chaque couche rattrape ce que la précédente n’a pas pu résoudre et le transmet avec plus de contexte.

Le contrôle à l’entrée est important. Avant qu’une étape ne s’adresse à un système tiers, on vérifie les champs obligatoires, les formats et la vraisemblance : l’adresse est-elle bien formée, le montant se situe-t-il dans la fourchette attendue, la date n’est-elle pas dans le passé ? Ainsi, les données invalides n’entrent même pas dans un cycle de nouvelles tentatives, mais vont directement là où une personne les examine.

Fait aussi partie de la conception la décision de qui est responsable de quoi. Une file de contrôle sans personne désignée est un cimetière. Nous définissons donc qui l’ouvre chaque jour, combien de temps une entrée peut y rester et ce qui se passe si ce délai est dépassé. Dans les petites équipes, une personne avec un suppléant clair suffit souvent ; l’essentiel est l’engagement.

Un exemple de l’ensemble : le formulaire livre une demande avec un numéro de téléphone invalide. Le contrôle d’entrée la classe comme douteuse, la dépose dans la file avec le texte d’origine et avertit la personne responsable. Le contact n’est ni rejeté ni créé sans vérification. Quelques minutes plus tard, une personne corrige le numéro, confirme, et le processus reprend là où il s’était arrêté.

Figure · Couches de protection autour d’une étape de workflow

  • Surveillance et signalement

    Journaux, indicateurs, alertes avec seuil et destinataire désigné.

  • File de contrôle

    Les opérations échouées ou douteuses restent intégralement conservées et attendent une personne.

  • Nouvelle tentative avec backoff

    Uniquement pour les erreurs passagères, avec intervalles croissants et plafond.

  • Contrôle et idempotence

    Valider les données d’entrée, concevoir l’étape de façon qu’une seconde exécution soit sans danger.

Chaque couche rattrape ce que la précédente n’a pas pu résoudre.

Réessayer sans doubler : la mécanique en détail

Pour les nouvelles tentatives, un intervalle croissant appelé backoff exponentiel a fait ses preuves : par exemple après une, puis quatre, puis seize secondes, avec un plafond pour les tentatives et le temps d’attente. S’y ajoute une petite dispersion aléatoire pour que dix opérations échouées ne reviennent pas exactement en même temps et ne surchargent pas à nouveau le service tout juste rétabli. On ne réessaie qu’en cas de dépassement de délai, d’erreurs serveur et de bridage, pas pour des erreurs que l’appel a lui-même causées, comme des saisies invalides.

Si une interface indique, lors du bridage, combien de temps attendre, le workflow suit cette indication au lieu de faire son propre calcul. En cas de pression durable sur les limites, il vaut la peine de regrouper les appels ou de les répartir dans le temps. Une limite quotidienne ne se surmonte pas en réessayant ; elle exige une décision : reporter jusqu’à la prochaine fenêtre de temps ou adapter l’offre chez le fournisseur.

L’idempotence signifie qu’une étape exécutée plusieurs fois donne le même résultat que si elle l’était une seule fois. Techniquement, cela passe par une clé par opération, par exemple l’ID du formulaire ou un identifiant formé de l’expéditeur, de l’objet et de la date. Avant de créer quoi que ce soit, l’étape vérifie si cette clé a déjà été traitée. Certaines interfaces prennent directement en charge de telles clés ; pour les autres, nous tenons notre propre petite table des opérations accomplies.

La clé doit être choisie à la fois stable et adaptée. Trop grossière, et deux vraies demandes de la même personne le même jour passent pour un doublon. Trop fine, par exemple avec un horodatage dans la clé, et le doublon n’est jamais reconnu. Il n’y a pas ici de solution générale, seulement la question de ce qui constitue la même chose dans chaque cas.

Figure · Le parcours d’une opération dans la gestion des erreurs

  1. Contrôler l’entrée

    Champs obligatoires, format, vraisemblance

  2. Contrôler la clé

    Déjà traité ? Alors sauter

  3. Exécuter l’étape

    Appel de l’interface

  4. Réessayer

    Uniquement en cas d’erreurs passagères, avec backoff

  5. File d’attente

    Opération sécurisée, signalement déclenché

Déroulement simplifié. Selon le type d’erreur, le chemin bifurque plus tôt.

Cas particuliers : opérations à moitié accomplies et interfaces qui changent

Le cas particulier le plus délicat est l’opération à moitié accomplie. Un workflow crée un contact dans le CRM, envoie une confirmation et échoue à la troisième étape, la création d’une tâche. Un redémarrage depuis le début produit un second contact et un second e-mail. C’est pourquoi le processus retient, pour chaque opération, quelles étapes sont faites et reprend à la première étape restée ouverte. Ce suivi d’état représente un surcroît de travail, mais il empêche justement les doublons qui causent le plus d’ennuis par la suite.

Un deuxième cas particulier : l’erreur ne se produit que parfois. Une interface répond dans deux pour cent des cas avec un champ vide qui ne l’est jamais autrement. Les messages d’erreur isolés en disent peu ; un journal avec contexte, beaucoup : quelle opération, quelle étape, quelle saisie, quelle réponse. On y voit le motif, par exemple que cela touche toujours les enregistrements avec des trémas dans un champ donné.

Troisièmement, la modification insidieuse des interfaces tierces. Un fournisseur ajoute un champ, change un format ou désactive une ancienne version. Dans le pire des cas, le workflow continue de tourner et livre à l’insu de tous des résultats faux, par exemple parce qu’un montant arrive désormais en centimes au lieu d’euros. Les contrôles de vraisemblance sur les résultats, les tests fonctionnels avec un jeu de test et la lecture des notes de modification du fournisseur, que nous planifions comme un rendez-vous fixe, aident à s’en prémunir.

Quatrièmement, cela concerne les personnes qui corrigent les erreurs. Une file de contrôle ne fonctionne que si chaque entrée contient tout ce qu’il faut pour décider : les données d’origine, la cause de l’erreur en termes compréhensibles, et un bouton ou des instructions pour l’action suivante. Si l’on doit d’abord chercher dans trois systèmes, la file sera évitée.

Ce qui s’améliore et à quoi vous le reconnaissez

Il faut s’attendre moins à une baisse des erreurs qu’à un changement de leurs conséquences. Les erreurs continuent de se produire, car les systèmes tiers restent sujets aux pannes. La différence : elles ne conduisent plus à des demandes perdues ou à des écritures en double, mais à une entrée dans la file et à un signalement. L’intérêt réside dans le fait que les pannes perdent leur coût, pas qu’elles disparaissent.

On peut le mesurer avec quelques indicateurs. Le délai entre la survenue et la détection d’une erreur devrait passer de jours à des minutes ou des heures. La part des cas résolus automatiquement, c’est-à-dire des erreurs réglées d’elles-mêmes par une nouvelle tentative, montre combien de travail le système retire. L’âge de la plus ancienne entrée de la file de contrôle révèle si quelqu’un s’en occupe. S’y ajoutent les réclamations ou questions de clients qui signalent des pertes.

Une phase de démarrage est également réaliste. Dans les premières semaines, la surveillance montre des profils d’erreurs qui n’avaient jamais été visibles, et le nombre de signalements augmente d’abord. C’est un succès de la visibilité, pas un recul. Ensuite, les seuils sont ajustés et les causes fréquentes éliminées. Nous ne donnons pas de garanties sur des taux précis, car ils dépendent des systèmes tiers, de la qualité des données et de la discipline de l’équipe.

Qui veut savoir plus précisément examine les erreurs par cause plutôt que par nombre. Si les dépassements de délai s’accumulent sur un seul service, une discussion avec le fournisseur ou un changement s’impose. Si les erreurs de données s’accumulent à un point de saisie, la solution se trouve dans le formulaire, pas dans le workflow. Ainsi, la surveillance conduit non seulement à une réaction plus rapide, mais, à long terme, à moins de pannes à la source.

  • Délai de détection d’une erreur, mesuré à partir du journal et de l’heure de l’alerte.
  • Part des opérations réussies après nouvelle tentative, sans intervention.
  • Nombre et âge des entrées de la file de contrôle.
  • Nombre de doublons détectés et écartés, rapporté à ceux qui se sont réellement produits.

Ce qui s’avère solide en exploitation

Premier principe : la gestion des erreurs fait partie de la conception, pas de la fin. Qui l’ajoute après coup doit reconstruire des flux de données qui tournent déjà en production. Pour les nouveaux workflows, nous posons donc la question de l’échec avant celle de la fonction. Cela coûte un après-midi lors de la conception et fait gagner des semaines plus tard.

Deuxième principe : les journaux ont besoin d’une structure et de règles de conservation. Une entrée devrait contenir l’ID d’opération, l’étape, l’instant, le résultat et la cause de l’erreur, mais pas de données personnelles inutiles en clair. La durée de conservation des journaux est aussi une question de protection des données, à clarifier avec votre conseil en protection des données. Nous le mentionnons ici à titre d’indication, non comme renseignement juridique.

Troisième principe : les workflows sont du logiciel et méritent versionnage et tests. Chaque modification est tenue comme une nouvelle version, avec une courte note sur ce qui a changé et pourquoi, et peut être annulée. Un petit jeu de cas de test, couvrant le cas normal, une panne de service, un doublon et un enregistrement défectueux, est exécuté après chaque modification. C’est moins d’effort qu’il n’y paraît et cela rattrape les erreurs consécutives les plus fréquentes.

Le quatrième concerne les alertes elles-mêmes. Un signalement vaut ce que vaut son contenu : il nomme le workflow, l’étape, l’opération, la cause et un lien vers l’endroit où l’on peut agir. Et il va à une personne ou à un canal qui est lu, pas à une adresse collective. La nuit, tout n’a pas besoin de sonner, mais pour les demandes clients et les flux de paiement, il devrait être clair qui regarde en premier le matin.

Le cinquième concerne le calendrier. Les nouvelles automatisations devraient passer par une phase de surveillance plus étroite avant d’être laissées à elles-mêmes. Et ensuite, il faut des rendez-vous fixes de maintenance, car même un workflow tranquille vieillit.

Un workflow silencieux n’est pas forcément un workflow en bonne santé. Vérifiez s’il se tait parce que tout fonctionne ou parce que personne n’écoute.

Figure · Un chemin possible vers des workflows fiables

  1. 1

    Semaine 1

    État des lieux : processus, étapes, systèmes tiers, pire issue par étape.

  2. 2

    Semaine 2

    Contrôle d’entrée, clés contre les doublons et règles de nouvelle tentative pour les processus les plus critiques.

  3. 3

    Semaine 3

    Définir file de contrôle, circuits de signalement, responsabilités et suppléances.

  4. 4

    Semaine 4

    Cas de test, versionnage, test fonctionnel contre les interfaces tierces.

  5. 5

    À partir de la semaine 5

    Surveillance plus étroite, ajustement des seuils, puis rendez-vous fixes de maintenance.

Calendrier à titre d’exemple, variable selon le nombre de processus et l’accès aux systèmes.

Conclusion : se demander d’abord ce qui se passe en cas de panne, construire ensuite

Une automatisation fiable ne se révèle pas en fonctionnement normal, mais le jour où quelque chose ne va pas. C’est alors que se décide si une opération reste sécurisée, signalée et traçable ou disparaît sans laisser de trace. La gestion des erreurs est la partie du travail qu’on ne voit pas ensuite quand elle est bien faite, et dont l’absence se remarque très nettement.

L’étape suivante est modeste. Choisissez l’un de vos workflows et parcourez-le étape par étape : que se passe-t-il si cette étape échoue ? Et si elle s’exécute deux fois ? Qui s’en apercevrait ? Si l’une des questions n’a pas de réponse claire, vous avez trouvé la première lacune. Nous examinons volontiers avec vous deux ou trois processus et vous disons clairement où le besoin d’action est le plus grand et où une simple alerte suffit déjà.

Une approche progressive est la plus réaliste. Vous n'avez pas à remanier tous vos processus d'un seul coup. Commencez par celui où la perte d'un dossier coûte le plus cher, puis transposez les mêmes schémas aux autres. Un simple contrôle des données entrantes, une clé contre les doublons et une alerte fiable changent déjà nettement la situation, même si l'ensemble du dispositif n'est pas encore en place.

Il faut toutefois en reconnaître une limite : aucune gestion des erreurs ne rend les systèmes tiers plus fiables, elle rend seulement vos processus plus résistants à leurs faiblesses. Et elle ne remplace pas une personne qui ouvre réellement la file d'attente. La technique et la responsabilité vont de pair.

Questions fréquentes

Qu'est-ce qui fait une bonne gestion des erreurs dans les automatisations de workflows ?

Un contrôle des données entrantes, des nouvelles tentatives avec backoff pour les erreurs temporaires, l'idempotence contre les doublons, une file d'attente pour les cas qu'une personne doit trancher, ainsi que des journaux et des alertes avec des seuils. L'essentiel est qu'aucun dossier ne se perde sans que quelqu'un ne le sache.

Combien de fois et pendant combien de temps faut-il relancer une étape échouée ?

Cela dépend du service et du préjudice possible. On procède généralement à quelques tentatives seulement, à intervalles croissants, avec une limite supérieure pour le temps d'attente total, complétées par de petites variations aléatoires. Ensuite, le dossier doit être mis de côté et signalé. Les erreurs dues à de mauvaises données ne sont pas relancées.

Que signifie l'idempotence dans les automatisations ?

Une étape est idempotente si l'exécuter plusieurs fois donne le même résultat que l'exécuter une seule fois. En pratique, on y parvient avec une clé par dossier, vérifiée avant toute création ou tout envoi. Ainsi, des webhooks livrés deux fois ou des nouvelles tentatives ne produisent ni contacts, ni réservations, ni e-mails en double.

Comment savoir qu'un workflow échoue en silence ?

Seulement grâce à une surveillance active. Sont utiles : le comptage d'événements attendus, par exemple « au moins une demande dans le CRM aujourd'hui », un récapitulatif quotidien des exécutions, un enregistrement de test envoyé régulièrement dans le flux et des alertes en cas de silence inhabituel. Un historique que personne ne consulte ne suffit pas.

Que faire lorsqu'un fournisseur modifie son interface ?

Lire régulièrement les avis de modification du fournisseur, vérifier la plausibilité des résultats et prévoir un test fonctionnel avec des données de test. Si le workflow continue de tourner mais avec d'autres valeurs, seuls des contrôles sur le résultat le révèlent. Les modifications doivent d'abord être essayées dans un environnement de test, puis déployées comme une nouvelle version.

Ai-je vraiment besoin d'une file de contrôle pour de petites automatisations ?

Pas toujours sous une forme élaborée. Pour les processus non critiques, un tableau des dossiers échoués et un e-mail quotidien suffisent. Dès que des demandes de clients, de l'argent ou des échéances sont en jeu, il vaut la peine de disposer d'un lieu fiable avec un responsable désigné, pour que rien ne se perde et que les décisions restent traçables.

Savoir ce que font vos processus en cas de panne

Citez-nous deux ou trois de vos automatisations. Nous les passons en revue avec vous et nous vous montrons où une erreur disparaîtrait aujourd'hui en silence et ce qui demande le moins d'efforts pour l'éviter.

Écrire une demande