---
title: "Catalogue des modules ISI (/admin/modules)"
module: platform
type: functional
status: active
updated: 2026-09-17
---

# Catalogue des modules ISI (`/admin/modules`)

> Doc fonctionnelle : décrit le **quoi** et le **pourquoi** (point de vue utilisateur / chef de projet).

## À quoi ça sert

C'est l'écran d'administration du **catalogue** : la liste des modules vendus aux clients
(Isi-Basic, Isi-Ticket, Isi-CRM…) et de leurs **modules enfants**, les fonctionnalités qu'un module
découpe en briques activables séparément (« Isi-Basic - Personne », « Isi-Pilot - Intervention »…).

On y crée un module, on corrige son libellé ou sa description, et surtout on **l'active ou on le
désactive** — ce qui décide de sa présence dans les menus et dans le catalogue proposé aux clients.

À ne pas confondre avec :

- [`my-account.md`](my-account.md) — ce qu'un client voit de **ses** modules et de ceux qu'il peut
  encore découvrir ;
- [`module-management-rules.md`](module-management-rules.md) — les règles d'engagement qui
  s'appliquent quand un client souscrit ou résilie.

## Comment ça marche (côté utilisateur)

Deux onglets, un tableau chacun, avec la recherche, les filtres, le choix des colonnes, le tri et
l'export communs à tous les tableaux de l'application.

### Onglet « Modules »

Une ligne par module : son identifiant, son nom, sa description, son **tag**, le nombre d'enfants
actifs sur le total, et son statut.

### Onglet « Modules enfants »

Une ligne par fonctionnalité, avec le **module parent** auquel elle est rattachée. Un enfant n'est
visible chez le client que si **son parent est actif** : désactiver un parent suffit à masquer tous
ses enfants, sans toucher à leur état — qui est retrouvé tel quel à la réactivation.

Un enfant dont le parent a disparu de la base est signalé en rouge (« Parent introuvable ») plutôt
que laissé avec une cellule vide.

### Le statut

La colonne **Statut** affiche l'état : pastille verte « Actif », grise « Inactif ». Elle est en
**lecture seule**.

Pour activer ou désactiver un module, ouvrez sa fiche avec le bouton **Modifier** et changez le
champ *Statut*. C'est volontaire : désactiver un module le retire de **tous les clients qui y sont
abonnés**, une conséquence trop lourde pour tenir à un clic dans une liste — et la fiche montre le
reste de la configuration au moment de décider.

> L'écran ouvrait auparavant sur un onglet « Statuts » : une carte et un interrupteur par module,
> plus une ligne par enfant, sans nom de tag ni description sous les yeux. Il a été retiré.

### Créer, modifier, supprimer

- **Créer** : le bouton de chaque onglet ouvre un formulaire (identifiant, nom, description,
  statut, tag ; plus le module parent pour un enfant). L'identifiant se choisit à la main, dans la
  continuité des modules existants — s'il est déjà pris, le message le dit et le formulaire reste
  ouvert pour en saisir un autre. Même chose si le **tag** est déjà porté par un autre module, ou
  si le module parent choisi n'existe pas.
- **Modifier** : le bouton en début de ligne, qui ouvre le formulaire générique du module — c'est
  aussi là que se change le **statut**.
- **Supprimer** : dans le menu **⋮** de la ligne, comme sur les autres tableaux. Après
  confirmation, la ligne disparaît du tableau sans quitter la page. Un module encore rattaché à des
  modules enfants ou à des configurations d'abonnement est **refusé**, en disant ce qui bloque :
  détachez-les d'abord.

Les fenêtres de création ne se ferment pas si vous cliquez à côté — seules la croix, « Annuler » et
la touche Échap les referment, pour ne pas perdre une saisie en cours.

## Règles d'accès

Écran réservé aux **membres ISI-DSI** (middleware `isidsi`) : il n'est visible d'aucun compte
client. Il se trouve sous `/admin/modules`, atteignable depuis la tuile **Modules** de la page
d'administration. Malgré l'adresse, il reste ouvert à tout ISI-DSI et pas seulement aux
super-admins. Les deux tableaux vérifient ce droit pour leur propre compte, y compris sur la bascule de
statut.

## Points d'attention

- Le **tag** est ce que lisent les middlewares qui ouvrent l'accès à un module
  (`hardEnsureHasModule:ticket`). Le renommer coupe l'accès au module pour tous les clients
  abonnés : c'est une donnée technique, pas un libellé d'affichage.
- **Désactiver un module le retire de tous les clients abonnés**, pas seulement du catalogue de
  vente. La confirmation le rappelle.
- La suppression d'un module est **définitive** (ces tables n'ont pas de corbeille).
