Entonnoir de Support : Comment le Structurer dans GLPI

Comment construire un entonnoir de support dans GLPI couche par couche : mesurer le volume par catégorie, router par règle métier, publier vraiment le self-service et s'assurer que le cron déclenche l'automatisation - avec les pièges de terrain de la maintenance.

Dans cet article7 sections

La plupart des Service Desks fonctionnent en mode réactif : ils attendent que le ticket arrive et se précipitent pour le résoudre. L'entonnoir de support inverse cette logique - chaque couche filtre la demande avant qu'elle n'atteigne le technicien. Dans GLPI, l'entonnoir n'est pas un bouton que l'on active : c'est un agencement de catégories, de règles métier, de base de connaissances et de cron qu'il faut mesurer et ajuster. Ce guide montre comment construire chaque couche avec ce que GLPI fournit déjà, et les pièges que nous avons vus faire tomber des entonnoirs entiers lors de la maintenance d'environnements clients.

Avant de construire l'entonnoir, mesurez d'où vient le volume

L'erreur la plus courante est de construire l'entonnoir à l'envers : écrire des dizaines d'articles et de formulaires génériques en espérant qu'ils réduisent les tickets. En maintenance, nous faisons l'inverse - d'abord découvrir quelles catégories concentrent le volume, car c'est là que chaque couche est rentable. La requête ci-dessous, exécutée avec un utilisateur en lecture seule, liste les catégories qui génèrent le plus de demande sur les 90 derniers jours et sépare incident et demande, la distinction qui décide si la demande va au self-service ou au N1 :

-- Top catégories par volume (90 derniers jours) : où les couches de
-- prévention et de self-service rapportent le plus. Utiliser un utilisateur en lecture seule.
-- type : 1 = incident, 2 = demande
SELECT
    COALESCE(c.completename, '(sans catégorie)') AS categoria,
    COUNT(*)        AS chamados,
    SUM(t.type = 1) AS incidentes,
    SUM(t.type = 2) AS requisicoes
FROM glpi_tickets t
LEFT JOIN glpi_itilcategories c ON c.id = t.itilcategories_id
WHERE t.is_deleted = 0
  AND t.date >= DATE_SUB(CURDATE(), INTERVAL 90 DAY)
GROUP BY t.itilcategories_id
ORDER BY chamados DESC
LIMIT 15;

Deux lectures en ressortent. Les catégories de demande répétitive (réinitialisation de mot de passe, octroi d'accès, installation standard) sont candidates au self-service et à l'automatisation : l'utilisateur ne devrait pas avoir besoin d'un technicien. Les catégories d'incident à fort volume pointent des pannes récurrentes que la couche de prévention devrait capter avant que l'utilisateur ne s'en aperçoive. Et si "(sans catégorie)" apparaît en tête, le problème est en amont de l'entonnoir : le tri est relâché et aucune règle ne peut router ce qui n'a pas été classé.

La matrice de décision : chaque demande dans sa couche

Un entonnoir n'est pas une hiérarchie de personnes, c'est du routage de demande. Chaque type de demande a une couche adéquate et un mécanisme natif de GLPI qui la soutient. La matrice ci-dessous est le point de départ que nous utilisons pour concevoir l'entonnoir d'un client :

Demande typiqueCoucheMécanisme dans GLPISigne que ça fonctionne
Panne d'infrastructure (disque plein, service arrêté)PréventionTicket ouvert par la supervision (Zabbix/Agent) avant le premier signalementIncident enregistré par la source supervision, pas par l'utilisateur
Demande standard (réinitialisation de mot de passe, accès, installation)Self-serviceFormulaire guidé + règle qui résout ou route toute seuleBaisse du volume de la catégorie correspondante
Question récurrente (« comment faire X »)Self-serviceArticle publié en FAQ (is_faq), visible sur le portailConsultations de l'article sans ticket ensuite
Incident nouveau ou complexeRésolution (N1)La règle métier affecte le groupe par catégorie + SLA par prioritéPart résolue au N1 sans escalade
Panne structurelle récurrenteRésolution (N2/N3)Escalade + enregistrement d'un Problème (Problem) lié aux ticketsTickets liés à un Problem, cause racine traitée une fois

Couche 1 - Prévention : le ticket né de la supervision

L'objectif de cette couche est le ticket que l'équipe (ou le système lui-même) ouvre avant que l'utilisateur ne remarque le problème. En pratique :

  • La supervision crée le ticket : Zabbix, GLPI Agent ou un autre collecteur déclenche un ticket par e-mail (collector) ou API lorsqu'un seuil est franchi - disque à 90 %, service arrêté, certificat qui expire. Le ticket arrive déjà catégorisé et dans le groupe infra.
  • Maintenance planifiée communiquée : avant une fenêtre, une annonce sur le portail et une notification évitent le déluge de « c'est en panne ? ».
  • Correction de la cause racine : les incidents qui se répètent deviennent un Problème (Problem) dans GLPI, traité une fois au lieu de N tickets identiques.

Le gain est mesurable : le taux de prévention est la part des incidents dont le premier enregistrement vient de la supervision, pas de l'utilisateur. L'intégration de Zabbix avec GLPI est le chemin le plus direct vers cette couche.

Couche 2 - Self-service : publier n'est pas la même chose qu'apparaître

C'est là que se cache le piège qui, le plus souvent, tue la couche self-service : l'équipe écrit des dizaines d'articles et pourtant le portail self-service ne montre rien à l'utilisateur. Dans GLPI, un article n'apparaît dans la FAQ publique que lorsque trois conditions coïncident :

  1. l'article est publié (avec une date de début de validité, pas un brouillon) ;
  2. il est marqué visible dans la FAQ (le champ is_faq) ;
  3. il a une cible qui inclut le profil self-service (ou « tous ») - sans cible, l'article n'est visible que pour son créateur.

Qu'il en manque une des trois et l'article existe en base mais reste invisible pour qui en a besoin. Ajoutez à cela la visibilité de la catégorie : une catégorie non marquée visible dans le helpdesk n'apparaît pas dans le formulaire d'ouverture, donc l'utilisateur n'y parvient même pas à se servir lui-même. Au-delà des articles, cette couche inclut des formulaires guidés (réinitialisation de mot de passe, demandes standardisées) qui résolvent ou routent sans intervention. Commencez la base de connaissances par les catégories que le SQL ci-dessus a placées en tête, pas par le manuel produit de A à Z.

Couche 3 - Résolution : router par règle, pas par e-mail

Ce qui n'a été ni prévenu ni self-servi doit atteindre vite celui qui le résout - et arriver au bon endroit. Le moteur ici, ce sont les règles métier de ticket (RuleTicket) : elles affectent le groupe, la catégorie, la priorité et le SLA selon des critères (catégorie, origine, mot dans le titre, demandeur). Le routage par règle est auditable et reproductible ; le routage par « transfère l'e-mail à untel » ne passe pas à l'échelle et disparaît quand untel part en congé. La requête ci-dessous liste les règles de ticket actives dans l'ordre où GLPI les exécute :

-- Règles métier de ticket (RuleTicket) actives, dans l'ordre d'exécution.
-- GLPI traite par `ranking` ; une action « arrêter le traitement » sur une
-- règle antérieure empêche les suivantes de s'exécuter. Utiliser un utilisateur en lecture seule.
SELECT ranking, name, `match` AS operador_criterios, is_active
FROM glpi_rules
WHERE sub_type = 'RuleTicket'
  AND is_active = 1
ORDER BY ranking;

L'ordre (colonne ranking) compte parce qu'une action « arrêter le traitement » interrompt les règles suivantes. L'erreur courante est de créer une nouvelle règle en fin de file en espérant qu'elle ajuste la priorité, sans voir qu'une règle antérieure, avec « arrêter le traitement » activé, a déjà clos le routage - la nouvelle ne s'exécute jamais. Les niveaux N1/N2/N3 sont des groupes ; l'escalade entre eux est une règle plus un SLA par priorité, pas une décision manuelle au cas par cas.

L'erreur qui fait tomber n'importe quel entonnoir : l'automatisation qui ne se déclenche jamais

Vous pouvez construire les trois couches avec soin et pourtant que rien ne se passe tout seul. Escalade de SLA, envoi de notifications, clôture automatique des tickets résolus, alertes - tout cela dans GLPI dépend des Actions automatiques (CronTask), et elles ne s'exécutent de façon fiable que lorsqu'un cron externe du système d'exploitation appelle GLPI. Dans le mode par défaut « GLPI » (déclenché par la navigation web), les actions s'exécutent de façon irrégulière, dépendent de quelqu'un qui ouvre l'interface et se bloquent sous charge. Le symptôme classique qu'on nous signale : « le SLA n'escalade pas », « la notification n'arrive pas », « le ticket ne se ferme pas tout seul » - et la cause est presque toujours la même. La ligne ci-dessous corrige cela (ajustez le chemin vers la racine de votre GLPI et l'utilisateur PHP) :

# GLPI - action automatique EXTERNE, toutes les 1 minute, en tant qu'utilisateur PHP.
# Sans cela, SLA/escalade, notifications et clôture automatique ne s'exécutent PAS.
# Ajustez le chemin vers la racine de votre GLPI (GLPI 10 et 11 utilisent front/cron.php).
* * * * * www-data /usr/bin/php /var/www/html/glpi/front/cron.php >/dev/null 2>&1

Ensuite, dans Configuration > Actions automatiques, passez le mode des tâches de « GLPI » à « CLI ». Sans cette étape, une bonne partie de l'entonnoir est décorative.

Du terrain : l'entonnoir qui n'existait que sur le papier

En reprenant la maintenance d'un environnement déjà en production, nous avons trouvé le scénario le plus courant de tous : l'entonnoir était dessiné sur la diapositive mais pas dans le système. La base de connaissances comptait plus de cent articles - tous enregistrés en brouillon, aucun marqué FAQ ni avec de cible, si bien que le portail self-service apparaissait vide pour l'utilisateur. Les règles d'affectation existaient, mais la troisième avait « arrêter le traitement » activé et avalait la moitié des tickets dans le mauvais groupe. Et le cron externe n'avait jamais été configuré, donc le SLA n'escaladait pas et la clôture automatique était à l'arrêt - le backlog gonflait de tickets résolus que personne ne confirmait. Nous avons exécuté le SQL de volume par catégorie avant de toucher à quoi que ce soit : réinitialisation de mot de passe et VPN représentaient une bonne part du total. Nous avons publié et marqué en FAQ une demi-douzaine d'articles de ces deux catégories, corrigé l'ordre des règles et activé le cron externe. En quelques semaines, le volume de ces catégories a baissé de façon visible dans le même rapport - non parce que le problème a disparu, mais parce qu'il a cessé de devenir un ticket. L'entonnoir n'était pas nouveau ; il n'était simplement jamais sorti du papier.

Construire l'entonnoir dans GLPI relève moins des plugins que de l'ordre : mesurer le volume, router par règle, publier vraiment le self-service et s'assurer que l'automatisation se déclenche. La maintenance GLPI de NexTool inclut exactement cette conception - de la matrice de catégories aux règles et au cron - et le suivi mensuel qui montre chaque couche réduisant la demande qui atteint le technicien.


Révisé par l'équipe NexTool Solutions.

Questions fréquentes

Parce qu'il manque l'une des trois conditions que GLPI exige pour afficher un article dans la FAQ publique : être publié (avec une date de début de validité, pas un brouillon), être marqué visible dans la FAQ (le champ is_faq) et avoir une cible qui inclut le profil self-service ou « tous ». Un article sans cible n'est visible que pour son créateur. Vérifiez aussi que la catégorie de l'article est visible dans le helpdesk.

Dans GLPI, le champ type sépare l'incident (1) de la demande (2). La distinction fixe la couche : une demande standard et répétitive (réinitialisation de mot de passe, accès, installation) est candidate au self-service et à l'automatisation ; un incident nécessite généralement la couche de résolution (à partir du N1). Mélanger les deux revient à automatiser ce qui exige une analyse et à escalader ce qui pourrait se résoudre seul.

Vérifiez l'ordre d'exécution (colonne ranking) et si une règle antérieure a l'action « arrêter le traitement » activée - elle interrompt les règles suivantes, qui ne s'exécutent jamais. Confirmez aussi que la règle est active, que les critères utilisent le bon champ (catégorie, origine, demandeur) et que l'opérateur entre critères (ET/OU) est correct. Il est fréquent de créer une nouvelle règle en fin de file qui ne se déclenche jamais parce qu'une précédente a déjà clos le routage.

Presque toujours parce que les Actions automatiques (CronTask) ne sont pas déclenchées par un cron externe du système d'exploitation. Dans le mode par défaut « GLPI », elles dépendent de quelqu'un qui navigue dans l'interface et s'exécutent de façon irrégulière. Configurez une entrée cron appelant front/cron.php toutes les minutes (en tant qu'utilisateur PHP) et passez le mode des tâches à « CLI » dans Configuration > Actions automatiques. Sans cela, l'escalade de SLA, les notifications et la clôture automatique ne s'exécutent pas.

Par la mesure, pas par l'outil. Exécutez une requête de volume par catégorie (90 derniers jours) en séparant incident et demande, et attaquez d'abord les catégories de tête : c'est là que le self-service et la prévention sont les plus rentables. Construire l'entonnoir sans ce diagnostic mène à une base de connaissances générique qui ne réduit pas le volume qui pèse vraiment.

Besoin d'aide ?