Extensions¶
Le magasin d'extensions (Admin → Extensions) installe des extensions signées par l'éditeur qui ajoutent des capacités spécifiques au client — contenu de métamodèle supplémentaire, intégrations, tâches d'arrière-plan et même de nouvelles pages — sans modifier le cœur de Turbo EA (principe « clean core »).
Les extensions s'installent de deux manières : en un clic depuis la Boutique intégrée (si l'instance a accès à Internet) ou en téléversant directement les fichiers — l'extension est un paquet .teax signé et la licence un fichier texte signé, tous deux généralement envoyés par e-mail. Le flux par fichiers ne nécessite ni compte de magasin ni connexion sortante ; il fonctionne donc à l'identique sur des instances isolées (air-gapped).
La page comporte deux onglets : Boutique parcourt le catalogue d'extensions de votre fournisseur avec installation en un clic, et Installées gère les licences et installe à partir de fichiers.
Les extensions sont conçues et signées par Turbo EA — elles ne sont ni auto-développées ni ouvertes à des tiers. Si vous avez besoin d'une fonctionnalité adaptée à votre organisation, nous pouvons la développer et la licencier pour vous. Voir le conseil Turbo EA.
Guides pour chaque extension¶
Chaque extension publiée dans la boutique dispose de son propre guide : ce qu'elle fait, comment la configurer et comment l'utiliser au quotidien. Voir Extensions.
Fonctionnement de la confiance¶
Deux vérifications indépendantes protègent votre instance :
- Provenance (signature). Chaque paquet porte une signature Ed25519 de la clé de l'éditeur. Turbo EA la vérifie au téléversement et à chaque démarrage du backend. Les paquets non signés, altérés ou tiers sont refusés — une extension installée est garantie être exactement ce que l'éditeur a construit.
- Activation (licence). Un fichier de licence signé liste vos droits — un par extension, chacun avec sa propre échéance. Une extension installée ne fonctionne que tant qu'un droit utilisable existe. Les licences sont liées à l'ID de votre instance — une licence émise pour une autre instance est refusée.
Extensions gratuites¶
Certaines extensions sont gratuites et ne nécessitent aucune licence. Elles s'installent et s'exécutent immédiatement : aucune étape d'achat, aucun fichier de licence à coller. Les extensions gratuites sont signalées par un badge Gratuit dans les onglets Boutique et Installées, et les actions Acheter et Renouveler sont masquées pour elles. La vérification de signature s'applique toujours exactement comme pour les extensions payantes (une extension gratuite est elle aussi signée par l'éditeur), de sorte que la provenance est garantie dans tous les cas. Comme elles ne requièrent aucun droit, les extensions gratuites n'expirent jamais et n'entrent jamais dans une période de grâce.
L'ID de votre instance¶
Chaque installation génère une seule fois un ID d'instance unique (TEA-XXXX-XXXX-XXXX), affiché en haut d'Admin → Extensions avec un bouton de copie. C'est votre identité de licence : indiquez-le lors de l'achat (la Boutique intégrée l'envoie automatiquement ; le paiement de la boutique en ligne le demande) afin que chaque extension achetée pour cette instance — par n'importe quel administrateur, sous n'importe quelle adresse e-mail — aboutisse dans une licence unique combinée. Il identifie seulement votre instance ; ce n'est jamais un identifiant secret, vous pouvez donc le partager sans risque avec votre fournisseur.

L'ID voyage avec un transfert d'espace de travail : une migration vers un nouvel hôte conserve donc une licence valide. Après une réinstallation complète, l'instance reçoit un nouvel ID — demandez à votre fournisseur de réémettre votre licence pour celui-ci (un simple « re-key » de son côté).
L'onglet Boutique¶
L'onglet Boutique fonctionne sans aucune configuration et liste les extensions publiées par le fournisseur sous forme de grille de tuiles compactes — logo, nom, état de licence et prix. Cliquez sur une tuile pour ouvrir une grande fenêtre de détails : d'un côté une galerie de captures d'écran — parcourez-la avec les flèches ou les vignettes, cliquez sur une capture pour l'afficher en taille réelle — et, à côté, la description complète, les étiquettes de catégorie, les crédits de source et de licence et les actions. Lorsque la boutique publie des notes de version pour l'extension, les deux versions les plus récentes apparaissent sous Nouveautés, avec un lien Journal des modifications complet vers la page de l'extension sur la boutique. Les extensions sans visuel affichent une tuile générée portant leurs initiales.

- Acheter ouvre la page de paiement dans un nouvel onglet du navigateur. Dès que le paiement est confirmé, votre licence s'applique automatiquement (une copie arrive aussi par e-mail).
- Certaines offres sont vendues selon deux formules : mensuelle et annuelle, l'annuelle étant généralement remisée. Leur fenêtre de détails propose alors Achat mensuel et Achat annuel au lieu d'un seul bouton ; les deux mènent au même paiement.
- Installer (ou Mettre à jour lorsqu'une version plus récente est publiée) vérifie d'abord votre licence — si l'extension n'est pas encore licenciée, une boîte de dialogue propose d'acheter ou de coller une licence, puis continue automatiquement — et télécharge le paquet via exactement la même vérification de signature et le même aperçu à blanc qu'un téléversement manuel. Les extensions avec démo affichent un lien Voir en action. Le bouton indique Mettre à jour uniquement pour une extension déjà installée ; sinon il s'agit d'un simple Installer qui récupère la version publiée.
Le catalogue est organisé en cinq sections — Stratégie, planification & transformation, Gouvernance & automatisation, Intégrations, Réglementations et Services — chacune avec son propre titre, pour voir d'un coup d'œil de quel type d'offre il s'agit ; tout ce que le catalogue n'a pas classé apparaît sous Autres à la fin. Dans les sections, les pastilles de tags (gratuit ou commercial, plus des thèmes comme intégration) servent de filtre : une barre de filtres apparaît au-dessus de la liste, cliquer sur des pastilles la restreint (plusieurs pastilles se combinent), les sections sans correspondance disparaissent et Tous réinitialise la vue.
Une offre de service — quelque chose qui ne s'installe pas, comme un abonnement de support — se vend et se licencie comme une extension, mais sans bundle. Sa tuile et sa fenêtre de détails ne proposent que Acheter, n'affichent aucune version et le disent clairement ; une fois l'achat confirmé, la même pastille de licence (Se renouvelle le …) apparaît sur la tuile, et votre e-mail de confirmation explique comment utiliser ce que vous avez acheté.
L'onglet Boutique est en lecture seule et anonyme : pas de compte, pas de jeton, et aucune information sur votre instance n'est transmise — seul le catalogue public du fournisseur est lu. Les instances isolées n'ont rien à configurer — l'onglet affiche alors simplement une indication conviviale — et utilisent le flux basé sur les fichiers ci-dessous ; le site de la boutique du fournisseur offre les mêmes achats et téléchargements depuis n'importe quel navigateur connecté à Internet. Si quelque chose entre votre instance et la boutique bloque la requête — un proxy, un pare-feu ou une protection anti-bots devant la boutique —, l'onglet le signale et indique le statut HTTP reçu, afin qu'une instance bloquée ne soit jamais confondue avec une instance isolée.
L'instance vérifie également le catalogue une fois par jour et signale les changements, afin qu'une nouvelle extension — ou un correctif de sécurité pour une extension déjà utilisée — n'attende pas que quelqu'un ouvre cette page par hasard. Les administrateurs (toute personne dont le rôle accorde admin.manage_extensions) reçoivent une notification dans la cloche lorsqu'une nouvelle extension est publiée dans la boutique, et une autre lorsqu'une extension installée dispose d'une version plus récente. Chaque changement est annoncé une seule fois, et un jour de sortie chargé arrive sous la forme d'une notification par catégorie plutôt qu'une par extension. Rien n'est téléchargé ni installé — la notification vous amène simplement ici. La vérification quotidienne peut être totalement désactivée dans Admin → Paramètres → Notifications de mise à jour.
L'onglet indique également quand la boutique a été lue pour la dernière fois, avec un bouton Vérifier maintenant qui lance la vérification immédiatement et rapporte ce qu'elle a trouvé : vous confirmez ainsi que la vérification quotidienne fonctionne sans attendre un jour. En cas d'échec, la raison s'affiche ici au lieu de rester silencieuse.
Essais¶
Certaines extensions payantes proposent un essai gratuit de 30 jours — repérez le bouton Démarrer l'essai de 30 jours dans l'onglet Boutique (ou l'option d'essai sur le site de la boutique). Démarrer un essai fonctionne comme un achat sans paiement : aucune fiche bancaire n'est requise, votre licence se met à jour automatiquement (une copie arrive aussi par e-mail pour les installations isolées), et l'extension fonctionne avec toutes ses fonctionnalités pendant 30 jours.
- Chaque instance Turbo EA peut essayer une extension donnée une seule fois.
- Un essai se termine exactement à sa date de fin — il n'y a pas de période de grâce. L'extension cesse alors de fonctionner jusqu'à ce que vous vous abonniez ; vos données ne sont jamais supprimées, et tout revient dès qu'une licence d'abonnement est appliquée.
- L'onglet « Installées » affiche les droits d'essai sous la forme Essai jusqu'au ….
- Les essais se terminent d'eux-mêmes — il n'y a rien à annuler et rien n'est jamais facturé.
Installer une extension¶
- Si ce n'est pas déjà fait, appliquez d'abord votre licence (voir ci-dessous).
- Ouvrez Admin → Extensions, cliquez sur Installer depuis un fichier… au-dessus du catalogue dans l'onglet Boutique ou au-dessus de la liste dans l'onglet Installées (et dans le message affiché lorsque la boutique est injoignable) et téléversez le fichier
.teaxreçu. - Turbo EA vérifie la signature et ouvre une boîte de dialogue d'installation avec un aperçu : pour les extensions de contenu, il s'agit d'une simulation de chaque type de fiche, groupe d'étiquettes, fiche et relation que l'extension créerait ou mettrait à jour — rien n'est encore écrit.
- Vérifiez l'aperçu — il défile à l'intérieur de la boîte de dialogue — puis cliquez sur Installer l'extension en bas de celle-ci : le bouton y reste, quelle que soit la longueur de l'aperçu.
- Si l'extension contient du code backend, un bandeau demande de redémarrer le conteneur backend (
docker compose restart backend). Les extensions de contenu et d'interface sont actives immédiatement — les utilisateurs voient la nouvelle interface au prochain chargement de page.
Téléverser deux fois le même paquet est sans risque — l'aperçu montre tout comme « ignoré » et l'application ne change rien.
Mettre à jour une extension¶
Lorsque la boutique publie une version plus récente d'une extension installée, l'onglet Installées affiche une puce Mettre à jour vers X à côté de la version (et le bouton de l'onglet Boutique devient Mettre à jour). Un clic vérifie la signature et télécharge le bundle, puis vous montre ce que contient la version — les notes de version de l'extension, avec un lien Journal des modifications complet vers le reste — avec Installer et Annuler. Rien n'est écrit avant que vous n'appuyiez sur Installer ; Annuler supprime le téléchargement. Une première installation n'a aucune version antérieure à comparer et s'applique toujours en un clic. Pendant une installation ou une mise à jour, le bouton (ou la puce) affiche un indicateur d'activité et reste désactivé jusqu'à la fin ; la boîte de dialogue d'installation affiche l'opération quel que soit l'endroit d'où vous l'avez lancée. Deux garde-fous s'appliquent :
- Mettre à jour une extension que vous avez délibérément désactivée la laisse désactivée — la nouvelle version est installée sur le disque, mais son contenu reste masqué et rien ne s'exécute tant que vous ne la réactivez pas.
- Installer un paquet plus ancien que la version installée demande d'abord une confirmation explicite : une rétrogradation peut ne pas comprendre les données écrites par la version plus récente. Rien n'est supprimé dans les deux cas.
Une fois la mise à jour appliquée, toutes les personnes qui peuvent utiliser l'extension reçoivent une notification Extension mise à jour dans la cloche et peuvent y ouvrir les mêmes notes de version. Elle est activée par défaut et n'est jamais envoyée par e-mail ; chacun peut la désactiver dans ses préférences de notification.
Licences et renouvellement¶
Appliquez une licence via Saisir la licence… dans l'onglet Installées (collez le texte ou téléversez le fichier) — le bouton apparaît aussi sur chaque ligne d'extension qui en a besoin. La page affiche ensuite le titulaire et une pastille par droit avec sa date d'expiration.
Votre instance ne détient qu'une licence à la fois — en appliquer une nouvelle remplace la précédente. Les licences émises par le Store contiennent toujours tous les achats effectués pour votre instance : le remplacement est donc sans risque. Si vous détenez aussi des licences émises manuellement, demandez à votre fournisseur une licence combinée plutôt que d'appliquer des fichiers par extension ; si une licence appliquée devait retirer des droits encore couverts par la licence actuelle, Turbo EA les liste et demande d'abord confirmation (aucune donnée n'est supprimée dans tous les cas).
Quand un droit dépasse son échéance, il entre dans un délai de grâce (30 jours par défaut) : tout continue de fonctionner et les administrateurs voient un bandeau d'avertissement. Passé ce délai, l'extension est désactivée en douceur — ses pages disparaissent, son API refuse les requêtes, ses tâches d'arrière-plan se mettent en pause. Aucune donnée n'est jamais supprimée. L'application d'un fichier de licence renouvelé restaure tout instantanément, sans redémarrage.
Les licences achetées via la Boutique se renouvellent d'elles-mêmes sur les instances connectées : après chaque paiement réussi, votre instance récupère automatiquement la licence prolongée — rien à coller. Sur une instance isolée, le renouvellement se résume à coller le fichier de licence mis à jour reçu par e-mail (ou à le demander à votre éditeur) — rien de plus.
Statut de renouvellement automatique et résiliation¶
Chaque pastille d'entitlement indique ce qui se passe à sa date : Se renouvelle le {date} pour un abonnement actif, ou Expire le {date} — ne sera pas renouvelé après une résiliation. L'information provient de la licence signée elle-même : elle est donc exacte aussi sur les instances isolées — le fichier de licence envoyé par e-mail après tout changement d'abonnement porte le statut à jour ; collez-le et la pastille est actuelle.
Pour voir la date de renouvellement, résilier ou rétablir le renouvellement automatique, changer le moyen de paiement ou télécharger les factures, utilisez Gérer l'abonnement à côté du nom du licencié (affiché pour les licences achetées via la Boutique). Le bouton ouvre votre portail de facturation dans un nouvel onglet — aucun compte requis. Sur une instance isolée, le bouton ne peut pas joindre la boutique ; utilisez plutôt le lien Gérer l'abonnement présent dans chaque e-mail de licence (seul votre navigateur a besoin d'Internet, pas votre instance Turbo EA).
Résilier ne coupe jamais rien immédiatement : l'extension continue de fonctionner jusqu'à la fin de la période payée, puis le déroulé normal grâce + désactivation douce s'applique. Vos données ne sont jamais supprimées, et un réabonnement restaure tout.
Activer, désactiver et désinstaller¶
- L'interrupteur Activée désactive une extension immédiatement en douceur (sans redémarrage) et peut être rebasculé à tout moment. Pour les packs de contenu, cela masque leurs types de fiches du métamodèle — les fiches restent en place.
- Désinstaller supprime les fichiers de l'extension et masque ses types de fiches du métamodèle. Les fiches et les tables propres à l'extension sont délibérément conservées, et tout — types compris — réapparaît en cas de réinstallation.
Permissions¶
La page entière et toutes ses routes d'API sont protégées par la permission dédiée admin.manage_extensions (accordée au rôle Admin intégré). Les extensions peuvent définir leurs propres clés de permission (ext.<nom>.…), qui apparaissent dans Admin → Utilisateurs & Rôles une fois l'extension chargée.
Fonctionnalités de champ avancées¶
Certaines extensions débloquent des façons avancées de décrire vos données que le cœur ne propose pas seul :
- Texte d'aide de champ — une aide repliable affichée sous un champ pendant la saisie, pour qu'un formulaire s'explique de lui-même.
- Types de champ personnalisés — de nouveaux types au-delà de l'ensemble intégré (par exemple une note configurable de 1 à 5 ou de 0 à 10).
Ces options n'apparaissent dans l'éditeur de champ du métamodèle que tant que l'extension qui les fournit est installée et sous licence. Si une telle extension est ensuite désactivée ou que sa licence expire, les valeurs déjà saisies continuent de s'afficher en texte simple, en lecture seule — rien n'est effacé ni supprimé — et les options d'édition disparaissent simplement jusqu'à ce que l'extension soit de nouveau active.
Autorisations d'accès aux données¶
La plupart des extensions ne travaillent qu'avec leurs propres données. Une extension qui s'intègre aux données du cœur — par exemple un connecteur qui synchronise les todos avec un outil de suivi externe comme Jira ou MS Planner (#921) — doit déclarer des grants dans son manifeste signé :
core.todos.read/core.todos.write— lire ou modifier les todos via le SDK d'extension. L'écriture inclut la lecture. Sur les todos système (comme les demandes de signature), une extension de synchronisation ne peut définir que la référence externe affichée en pastille — elle ne peut jamais les terminer, les modifier, les réassigner ni les supprimer, et les todos appartenant à une autre extension restent hors de portée.core.events.todo— recevoir les événements de changement des todos, afin qu'un connecteur réagisse immédiatement au lieu d'attendre son prochain cycle d'interrogation.core.users.read— consulter les utilisateurs (nom, e-mail et statut actif uniquement) afin qu'un connecteur puisse faire correspondre les responsables avec les comptes de l'outil externe. Aucune donnée de rôle, de connexion ou de préférence n'est exposée, et les extensions ne peuvent jamais modifier les utilisateurs.core.cards.read— lire les fiches, les relations et le métamodèle, par exemple pour qu'un connecteur puisse faire correspondre vos applications avec les enregistrements d'un système externe. Les fiches archivées restent hors de vue.core.cards.write— créer, modifier ou archiver des fiches et ajouter des relations, avec exactement la validation qu'applique l'éditeur de l'application. Les mises à jour fusionnent les valeurs de champs au lieu de les remplacer, si bien qu'une extension ne peut jamais effacer des données qu'elle ne gère pas, et il n'existe aucune suppression définitive — l'archivage, avec sa fenêtre de restauration, est la seule suppression possible pour une extension.core.events.card— recevoir les événements de modification des fiches et des relations, afin qu'un connecteur réagisse immédiatement aux changements de l'inventaire au lieu d'attendre son prochain cycle d'interrogation.core.notifications.channel— remettre les notifications que vous avez choisies sur un canal propre à l'extension, par exemple un message de chat. L'extension reçoit le titre, le message et le lien d'une notification ainsi que votre identifiant d'utilisateur ; elle ne reçoit pas votre adresse e-mail à moins de déclarer aussicore.users.read, et elle ne reçoit jamais un type que vous n'avez pas activé pour elle. Les notifications qui restent uniquement dans la cloche ne sont jamais envoyées à un canal d'extension. Chaque canal d'extension est au départ désactivé pour tous les types de notification — y compris les avis administratifs (nouvelle extension, mise à jour d'extension, mise à jour de Turbo EA) : ouvrez vos préférences de notification depuis la cloche et activez la colonne du canal pour les types souhaités. Un avis déjà affiché dans la cloche avant l'activation du canal n'est pas renvoyé.core.adr.read— lire les décisions d'architecture (référence, titre, statut, fiches liées et les données propres de l'extension sur celles-ci).core.adr.write— déposer une décision d'architecture en brouillon et la lier à des fiches actives, par exemple une extension qui consigne le résultat d'une analyse comme décision à examiner. L'écriture inclut la lecture. Une extension ne peut jamais signer une décision, l'envoyer en revue ni changer son statut — cela reste à vos utilisateurs — et ne peut stocker sur l'enregistrement que des données sous ses propres clésext.<key>.*. Chaque dépôt est consigné dans Admin → Journal d'audit comme un lotext:<key>.core.risks.read— lire le registre des risques (référence, titre, catégorie, niveau, statut, responsable, fiches liées).core.risks.write— déclarer un risque et le lier à des fiches, par exemple une règle qui enregistre un risque lorsqu'une application sans responsable dépasse un seuil de coût. L'écriture inclut la lecture. Un risque déclaré ainsi affiche Extension comme source dans le registre, reçoit sa référence de la même séquence que les autres, et son responsable reçoit le todo et la notification habituels. Une extension peut ensuite modifier le titre, la description, le responsable et la date cible des risques qu'elle a déclarés — jamais ceux des autres, et jamais le statut d'un risque : le faire avancer, l'accepter et le clore restent à vos utilisateurs.core.notifications.send— envoyer une notification à des personnes nommées, par exemple « une règle que vous avez configurée vient de se déclencher ». Elle arrive sous le type Avis d'extension, ou sous un type que l'extension déclare elle-même et qui obtient alors sa propre ligne dans les préférences de notification de chacun (in-app activé, e-mail désactivé par défaut) — dans les deux cas, chaque personne décide si elle atteint sa cloche, sa boîte mail ou un canal d'extension, et peut la désactiver. Certaines de ces notifications ouvrent leur détail dans l'application au clic, en ne proposant la fiche concernée et la page propre de l'extension qu'aux personnes autorisées à les ouvrir. Le lien d'une telle notification ne peut pointer qu'à l'intérieur de Turbo EA.core.stakeholders.write— attribuer ou retirer des rôles de partie prenante sur des fiches, avec exactement les rôles que définit le type de fiche. C'est un grant distinct decore.cards.write, car un rôle de partie prenante confère à la personne des permissions sur la fiche.core.surveys.read— lire le nom, le statut et le taux de réponse d'une enquête.core.surveys.write— envoyer une enquête de maintenance des données aux parties prenantes d'un ensemble de fiches, par exemple une règle planifiée qui demande aux responsables de chaque application critique sous l'objectif de qualité des données de compléter leur fiche — une demande par personne au lieu d'un todo par fiche. L'écriture inclut la lecture. L'enquête apparaît dans Admin → Enquêtes sans auteur, ses champs sont exactement ceux que définit le type de fiche, et chaque personne reçoit la notification d'enquête habituelle. Une extension ne peut jamais clore une enquête ni appliquer ses réponses — cela reste à vous — et annuler l'exécution qui l'a envoyée (Admin → Journal d'audit) clôt l'enquête et retire les demandes auxquelles personne n'avait encore répondu.
Les grants font partie du bundle signé par l'éditeur : ils sont figés à l'empaquetage et visibles avant l'installation. Ils ne s'appliquent que tant que l'extension est installée, activée et sous licence — la désactiver ou laisser la licence expirer révoque l'accès immédiatement, sans redémarrage. Chaque modification effectuée par une extension est consignée dans Admin → Journal d'audit sous l'origine Extension, et un todo miroité depuis un outil externe affiche une puce pointant vers l'élément externe.
Chaque modification faite par une extension apparaît dans Admin → Journal d'audit sous forme de lot ext:<clé> avec les différences champ par champ, et peut y être annulée comme n'importe quel autre lot. Les opérateurs gardent le dernier mot : la variable d'environnement EXTENSION_WRITES_ENABLED=false suspend instantanément toutes les écritures des extensions (les lectures continuent, sans redémarrage), et EXTENSION_MAX_WRITES_PER_BATCH / EXTENSION_MAX_BATCHES_PER_MINUTE plafonnent ce qu'une extension peut modifier par lot et par minute.
Où apparaissent les pages d'extension¶
Les pages d'extension apparaissent dans la navigation une fois l'extension installée et sous licence — généralement comme leur propre entrée de menu de premier niveau, bien que certaines soient placées dans un menu du cœur aux côtés des entrées intégrées : les rapports sous Rapports, et les pages de gouvernance, de risque ou de conformité sous GRC. Une page regroupée revient à une entrée de premier niveau lorsque son menu n'est pas disponible — le module est désactivé, ou vous n'avez pas la permission correspondante — elle ne disparaît donc jamais de la navigation.