Proposition d'architecture pour le comité. Le complément Outlook devient une application à part entière du SI, dont le cycle de vie est détaché de celui de la GRC, et qui s'appuie sur trois blocs existants ou à construire : l'IA, le CRM et le métier.
assistant-mail-serviceC'est le choix structurant, et il est arrêté : le complément ne s'adresse jamais directement à l'IA, au CRM ou au métier. Il ne connaît qu'une seule adresse. La comparaison ci-dessous n'est pas une question ouverte — elle est là pour montrer au comité que l'alternative a été examinée, et pourquoi elle a été écartée.
Décision retenue
Le complément passe par assistant-mail-service, et par lui seul.
L'objectif porté — une application autonome et facilement remplaçable — est précisément ce
qui l'impose. Un complément Outlook est la pièce la moins maîtrisable de la chaîne : il
s'exécute chez l'utilisateur, dans un moteur imposé par Microsoft, avec des versions que
l'on ne force pas. Tout ce qui compte doit donc se trouver derrière lui, pas dedans.
Ce choix ne crée rien d'exotique : il reprend le patron déjà en place au MDPA, un
*-service dans le socle et son *-service-client publié sur Nexus.
grc-service et grc-service-client en sont l'exemple.
Il prend un relief particulier avec la migration de la messagerie : au passage d'Exchange on-premises à Exchange Online, c'est le mode d'authentification qui change (§ 4). Parce que la vérification d'identité vit dans le service, cette migration touche un seul composant au lieu de se propager à tout ce qui appelle le SI.
Un cycle de vie propre
Le complément se livre sans release de la GRC, sans redémarrage de Tomcat, sans fenêtre de déploiement partagée. Une correction d'affichage part le jour même.
Un client jetable
Si Microsoft change son modèle de compléments, on réécrit un volet contre un contrat inchangé. Ce n'est pas théorique : la migration vers Exchange Online éteindra le mode d'authentification actuel. Le travail métier, lui, sera préservé.
Une porte, pas trois
Les blocs IA, CRM et métier n'ont qu'un appelant à connaître, à autoriser et à surveiller. Le jour où le modèle d'IA change, un seul composant bouge.
Une trace unique
Qui a poussé quel message, quand, et ce que le modèle a répondu : la question se pose à un seul endroit. Impossible à tenir si trois blocs sont appelés séparément.
La messagerie est aujourd'hui en Exchange on-premises et migrera vers Exchange Online. Ce n'est pas un détail d'exploitation : les deux mondes n'offrent pas le même moyen de prouver qui est l'utilisateur, et le mécanisme d'aujourd'hui sera éteint par la migration. L'architecture doit donc porter la bascule dès maintenant, sans attendre la date.
Dans les deux cas, l'enchaînement est le même :
assistant-mail-service vérifie ce jeton auprès de l'autorité
qui l'a émis — le serveur Exchange aujourd'hui, Entra ID demain.Ce que la situation on-premises change — en mieux
Microsoft documente explicitement le jeton d'identité Exchange pour trois cas, dont deux
décrivent la situation du MDPA mot pour mot : « uniquement lorsque le complément est
utilisé par des utilisateurs Exchange on-premises » et « lorsque le complément a
besoin d'accéder à un service non-Microsoft que vous contrôlez ». C'est très
exactement assistant-mail-service.
Conséquence pratique : une authentification véritable est possible tout de suite, sans attendre la moindre inscription d'application. Ce jeton est signé par le serveur Exchange et se vérifie côté service — ce n'est pas le garde-fou déclaratif du prototype, c'est une preuve. Le chantier Entra ID devient une échéance de migration, pas un préalable.
Outlook impose HTTPS (TLS 1.2 ou supérieur) pour toutes les ressources d'un complément — la page du volet comme les appels qu'elle passe. Les échanges sont donc chiffrés, et ce n'est même pas une option : sans cela, le complément ne fonctionne pas.
Mais TLS protège le canal, pas l'accès. C'est une porte blindée sans contrôle de badge : personne ne lit ce qui passe, n'importe qui peut frapper. Ce qui décide de laisser entrer, c'est la vérification d'identité du § 4 — et elle seule.
Le volet s'exécute sur le poste de l'utilisateur, dans un webview : c'est un client web. Le service doit donc être joignable depuis là où se trouve l'utilisateur — et cela vaut pour la page du volet autant que pour l'API. Ce n'est pas une décision d'architecture libre, c'est une conséquence de la population desservie.
Quatre propriétés lui sont propres, et méritent d'être posées avant l'ouverture.
C'est un pont à travers le périmètre
Il détient de quoi se présenter au socle : la résolution de l'acteur et le jeton
interne. Le compromettre ne donne pas accès à un service, cela donne un pied vers
grc-service et les microservices métier. C'est le seul composant du
schéma qui touche les deux côtés.
C'est un relais vers un modèle payant
Ouvert sans authentification, il devient un proxy d'IA gratuit pour qui trouve l'adresse. Le préjudice est financier avant d'être technique, et il se constate sur la facture, pas dans les journaux.
Il transporte des données sensibles
Hospitalisation, optique, dentaire, sinistres corporels : le courrier d'une mutuelle comporte des données de santé. Sous cette hypothèse — à confirmer sur le trafic réel — on relève de l'article 9 du RGPD, et la discussion change de nature.
L'entrée est hostile par construction
Le contenu d'un mail est écrit par un tiers. Quand le service créera des interactions, un message rédigé exprès pourra tenter d'orienter le modèle. La parade est architecturale : le modèle propose, l'agent valide.
Un assistant de messagerie fait sortir le contenu de mails de sociétaires de son application d'origine. Le schéma rend cette sortie visible, et c'est volontaire : le comité doit pouvoir dire où s'arrête le périmètre.
Point vérifié dans grc-service-client : la création d'interaction n'est pas à
construire, elle est exposée. IGrcService (@Path("/grc")) offre
notamment :
POST /grc/creer/interaction-grc — prend un InteractionDTO,
rend l'identifiant créé ; variante /groupe-emetteur pour préciser l'émetteur.POST /grc/creer/echange/sous-type-activite — dont les paramètres sont, mot
pour mot, ce que le complément produit : sujet, message,
sousTypeActivite, codePriorite, nso,
destinataire, codeSousAgence, loginUtilisateur,
externalID, reponseObligatoire, idTechniqueSinistre.POST /grc/creer/emailsortant pour tracer une réponse, et
POST /grc/modifier/interaction-grc/{id}/etat/{etat} pour la suite de vie.GET /grc/get/interactions?nso=… pour rattacher le message à l'historique
existant du sociétaire.
Le InteractionDTO accueille l'intégralité de la sortie de l'analyse :
codeSousTypeActivite pour la qualification, codePriorite pour la
priorité, compteRendu pour le résumé, messageSubject /
messageBody / messageHTML pour le mail lui-même,
listeNSOSocietaire et listeIdPersonne pour le rattachement, et
fichiersAttaches pour les pièces jointes.
grc-service réutilise les DTO
du progiciel — InteractionDTO vient de
com.edeal.frontline.mdpacustom.webservices.server.dto. C'est donc une
façade REST devant la GRC, pas un système indépendant : elle en suit les
évolutions et en partage la disponibilité. Cela ne change rien à la décision — c'est la bonne
porte — mais le « bloc CRM » du schéma est bien une porte, pas une couche d'isolation.
| Élément | État | Commentaire |
|---|---|---|
Bloc métier — microservices fr.mdpa.ms |
Existe | Sociétaire, contrat, sinistre, GED, acteur, droit. Clients Nexus par domaine. |
Bloc CRM — grc-service |
Existe | Déjà exposé en REST dans le socle. Sert les sous-types d'échange
(/echange-viseo/sous-type/…, que le prototype embarque encore en dur)
et la création d'interaction (§ 6). |
| Complément Outlook | Prototype | Volet fonctionnel, manifest installable, garde-fou par domaine. À réécrire contre le contrat définitif. |
assistant-mail-service |
Embryon | Le serveur du prototype en tient déjà le rôle et fige le contrat d'API. À reprendre aux normes du socle. |
| Authentification — jeton d'identité Exchange | Faisable tout de suite | Supporté en Exchange on-premises, vérifiable côté service. Ne dépend d'aucun prérequis externe. |
| Authentification — jeton Entra ID | Avant la migration | Obligatoire dès le passage en Exchange Online, où le jeton précédent est coupé. Suppose une inscription d'application côté administrateur Microsoft 365. |
| Bloc IA | À construire | Rien d'équivalent dans le SI aujourd'hui. C'est la décision structurante. |
À noter qu'aucune de ces cinq demandes ne bloque le démarrage : le bloc CRM et le bloc métier existent, et l'authentification du premier âge ne dépend de personne d'autre que l'équipe.
Prototype et code : page du complément · volet en démonstration