🏠

6. Architecture Cible — Option B (Greenfield)

6.1 Principes Directeurs

6.1.1 Architecture Hexagonale (Ports & Adapters)

Principe : Isoler le domaine métier (cœur) des infrastructures (bases de données, APIs, UI) via des ports (interfaces) et adapters (implémentations).

Application SIAS — Architecture Hexagonale

Monde Extérieur

Adapters Secondaires — Driven

Domaine Métier — Cœur SIAS

Adapters Primaires — Driving

HTTP REST

GraphQL

Events

implémentés par

publiés par

utilisent

Interface Utilisateur
Angular/React

APIs Externes
SPQR, SSOL, STIC

Base de Données
PostgreSQL

Kafka Topics

REST Controllers
Spring @RestController

GraphQL Resolvers

Event Listeners
Kafka Consumers

Entités
Incident, Tâche, Alarme

Services Métier
IncidentService, TâcheService

Ports Repository
Interfaces Java

Événements Domaine
IncidentCreated, AlarmeFired

JPA Repositories
Spring Data JPA

Kafka Producers
Event Publishing

REST Clients
Feign/RestTemplate

Avantages :

6.1.2 Domain-Driven Design (DDD)

Principe : Organiser le code selon les Bounded Contexts (contextes délimités) métier.

Bounded Contexts identifiés :

Bounded ContextResponsabilitéEntités ClésEvents
SIAS — SupervisionGestion incidents, alarmes, supervisionIncident, Alarme, TâcheIncidentCreated, AlarmeFired, TâcheAssigned
TICC — TélécommandeCommandes à distance, télémesureCommandeDistance, Télémesure, ÉquipementCommandeExecuted, TélémesureReceived
HAB — HabilitationsGestion droits, profils, SSOUtilisateur, Profil, HabilitationUtilisateurCreated, HabilitationGranted
Référentiel — CommunSites, équipements, acteursSite, Équipement, ActeurÉquipementInstalled, ActeurUpdated

Structure Package Recommandée (exemple SIAS) :

6.2 Stack Technologique Cible

Référentiel DSI – Utilisation de la Software Factory ABJ

Conformément au référentiel DSI GRDF “Utilisation ABJ – Software Factory”, l’ensemble des builds séparés (SIAS, TICC, core-shared) devront être intégrés dans la chaîne ABJ pour assurer la conformité aux standards d’intégration, sécurité et déploiement.

CoucheTechnologieVersionJustification
FrameworkSpring Boot3.3.xStandard Java moderne, écosystème riche
JDKOpenJDK (Eclipse Temurin)21 LTSSupport long-terme jusqu'en 2029, performances améliorées
PrésentationAngular ou React18.x / 18.xSPA moderne, séparation frontend/backend
APIREST (Spring Web) + GraphQL (Spring GraphQL)Flexibilité clients (mobile, web, intégrations)
Base de donnéesPostgreSQL16.xOpen source, performances, JSON support, TCO faible
ORMHibernate (via Spring Data JPA)6.4.xStandard JPA, génération SQL optimisé
Migration DBLiquibase4.25.xVersioning schéma, rollback, support PostgreSQL
MessagingApache Kafka3.6.x (Confluent Platform 7.6)Event streaming, haute performance, écosystème
BPM (optionnel)Camunda Platform 88.4.xBPMN 2.0, cloud-native, Zeebe engine
SécuritéSpring Security + OAuth2/OIDC6.2.xStandard, intégration Keycloak
IAMKeycloak23.xSSO, gestion utilisateurs, fédération LDAP/AD
ObservabilitéELK Stack (Elasticsearch, Logstash, Kibana) + Prometheus + GrafanaLogs centralisés, métriques, dashboards
ConteneurisationDocker + KubernetesDéploiement cloud-native, scaling horizontal
CI/CDGitLab CI ou GitHub Actions + ArgoCDAutomatisation build/test/deploy, GitOps
TestsJUnit 5 + Mockito + Testcontainers5.10.x / 5.x / 1.19.xTDD, tests d'intégration avec BDD réelle

6.3 Diagramme de Déploiement Cible

Observabilité

Event Streaming — Kafka

Bases de Données — PostgreSQL 16

Kubernetes Namespace: hab-prod

Kubernetes Namespace: ticc-prod

Kubernetes Namespace: sias-prod

Ingress — API Gateway

Utilisateurs

HTTPS

HTTPS

HTTPS

OAuth2/OIDC

OAuth2/OIDC

JDBC

JDBC

JDBC

Produce/Consume

Produce/Consume

logs

logs

logs

metrics

metrics

metrics

Opérateurs SIAS

Techniciens TICC

Gestionnaires HAB

Spring Cloud Gateway
ou Kong API Gateway

SIAS API
Spring Boot
3 replicas

SIAS UI
Angular/React
2 replicas

TICC API
Spring Boot
3 replicas

TICC UI
Angular/React
2 replicas

HAB API
Spring Boot
2 replicas

Keycloak
SSO/IAM
2 replicas

PostgreSQL
SIAS DB

PostgreSQL
TICC DB

PostgreSQL
HAB DB

Kafka Cluster
3 brokers

Schema Registry
Confluent

ELK Stack
Logs centralisés

Prometheus
Métriques

Grafana
Dashboards

Caractéristiques :


 


7 · Dépendances et Intégrations

7.1 Dépendances Maven Analysées

Méthodologie

Résultats SAT-PRE (app-pre-main)

MétriqueValeurInterprétation
Dépendances directes35Volume standard pour application JEE
Dépendances transitives142Arbre profond → risque conflits
Duplications détectées28 versions en conflit⚠️ Ex: Hibernate 4.3.x vs 5.2.x
CVEs critiques3 (Liquibase 3.6.x, Commons-IO < 2.7)🔴 Mise à jour urgente
Dépendances inutilisées12Nettoyage recommandé

Top 10 Dépendances Clés

Graphe de Dépendances (Mermaid simplifié)

Intégration

Couche Présentation

Couche Persistance

app-pre-main

Hibernate 4.x/5.x

Oracle JDBC 19c

Liquibase 3.6.x 🔴

JSF 2.2 Mojarra

Primefaces 6.2

Jackson 2.9.x

WebLogic EJB Client

WebLogic JMS

Apache POI 3.17

Commons-FileUpload 1.3.2

7.2 Interfaces Externes

Systèmes appelants SAT-PRE/HAB

SystèmeTypeProtocoleUsageFréquencePropriétaire
SPQRSystème de PlanificationSOAP/XMLCréation incidents SIASTemps réelGRDF SI Planification
SSOLSystème de SollicitationREST/JSONEnvoi alertes TICCTemps réelGRDF SI Clientèle
STICSystème de TélécommandeJMS ActiveMQCommandes TICC< 10 msGRDF SI Télécommande
Référentiel CompteurMaster DataSOAPValidation matricule compteurBatch nuitGRDF SI Référentiel
GED (Gestion Électronique Documents)ArchivageWebDAVStockage PV interventionAsynchroneGRDF SI Archivage
Active Directory GRDFAnnuaire LDAPLDAP/389Authentification HABChaque loginGRDF IT

Contrats d'Interface — Exemple SPQR → SAT-PRE

⚠️ Problèmes Identifiés

  1. WSDL non documentés → 3 interfaces (SPQR, Référentiel Compteur, GED) sans contrat OpenAPI/WSDL accessible

  2. WS-Security legacy → utilisation de certificats X.509 avec expiration manuelle (risque coupure service)

  3. Pas de versioning d'API → modifications SPQR cassent SAT-PRE sans notification

  4. Timeout non configurés → appels SSOL bloquants (observés jusqu'à 45s) → cascade failures

Recommandations Migration

Interface ActuelleCible Option B (Greenfield)Justification
SOAP/WS-SecurityREST + OAuth2 + JWTStandard moderne, meilleure traçabilité
JMS ActiveMQApache KafkaScalabilité, replay, persistence
LDAP directOAuth2/OIDC via KeycloakSSO unifié, MFA, révocation tokens
WebDAVS3-compatible (MinIO)Cloud-ready, versioning, lifecycle

7.3 Flux JMS Analysés

40+ Listeners JMS Identifiés (via Grep -i "@MessageDriven")

Top 5 Listeners Critiques

Proposition Mapping JMS → Kafka

Queue/Topic JMS ActuelKafka Topic CiblePartitionnementRétention
jms/queue/IncidentCreationsias.incidents.createdPar codePostal (5 chiffres)30 jours
jms/queue/TelecommandeOrdersticc.telecommande.ordersPar compteurId7 jours
jms/topic/AlarmesSIASsias.alarmes.firedPar priorite (P1/P2/P3)90 jours
jms/queue/BatchTraitementMassesias.batch.tasksPar batchId180 jours

Avantages Kafka


7.4 Stratégie de Remplacement du BPM Software AG

7.4.1 Contexte et Enjeux

Situation actuelle :

Contraintes GRDF :

Impact sur séparation SIAS/TICC :


7.4.2 Analyse de l'Existant BPM

Artefacts identifiés :

Workflows critiques (sample de 30+ processus) :

  1. Gestion des incidents (création, affectation, traitement, clôture)

  2. Gestion des tâches (affectation, traitement en masse, validation)

  3. Feedback TICC (télé-incidents, commandes à distance)

  4. Intégration avec services SAT-PRE/HAB (habilitations, référentiels)

  5. Traitement automatique (alarmes, supervision, escalade)

Volumétrie et statistiques :

MétriqueValeurSource
Processus métier30+Analyse *.process XML
Services Java appelés15-20Parsing XML invocations
Intégration JMS40+ listenersÀ remplacer par Kafka
Complexité moyenneModérée (5-15 étapes/processus)Inspection manuelle
Dépendances externesSPQR, SSOL, STIC, GEDVoir §7.2

Points d'attention détectés :

  1. Workflows non documentés — Aucune documentation BPMN 2.0 formelle

  2. Logique métier embarquée — Certains workflows contiennent du code Java inline (difficile à migrer)

  3. Couplage fort avec WebLogic — Utilisation de JNDI, EJB, JMS spécifique WebLogic

  4. Pas de tests automatisés — Aucun test unitaire ou d'intégration sur les workflows


7.4.3 Solutions Open-Source Évaluées

SolutionVersionAvantagesInconvénientsMaturitéRecommandation
Camunda 88.6+ (2024)• Standard BPMN 2.0
• Large communauté (500K+ users)
• Support enterprise disponible
• Intégration native Spring Boot
• Cloud-ready (Zeebe engine)
• Monitoring avancé (Operate, Optimize)
• Migration workflows non triviale
• Formation équipe requise
• Changement de paradigme (Zeebe vs. classique)
⭐⭐⭐⭐⭐✅ Prioritaire
Flowable7.x (2024)• Fork Activiti (éprouvé)
• API REST complète
• UI intuitive (Flowable UI)
• Compatible BPMN 2.0
• Support Spring Boot
• Communauté plus petite
• Moins de plugins tiers
• Documentation moins fournie
⭐⭐⭐⭐🟡 Alternative
jBPM8.x (Red Hat)• Intégration Red Hat / JBoss
• Support Drools (rules engine)
• Compatible BPMN 2.0
• Courbe d'apprentissage élevée
• Moins utilisé en France
• Stack Red Hat imposée
⭐⭐⭐❌ Non recommandé
Apache Airflow2.x• Excellent pour orchestration batch
• Python-friendly
• DAG visual
• Pas conçu pour BPMN pur
• Overkill pour workflows simples
• Inadapté pour workflows métier
⭐⭐⭐❌ Non recommandé

Recommandation : Camunda 8 (prioritaire) ou Flowable (alternative)

Rationale :


7.4.4 Stratégie de Migration

Phase 1 : POC et Validation Technique (2 mois — M1 → M3)

Objectifs :

Livrables :

Workflows POC sélectionnés :

Workflow POCComplexitéRaison Sélection
1. Création IncidentFaible (5 étapes)Workflow critique SIAS, volumétrie élevée (100+ incidents/jour)
2. Affectation TâcheMoyenne (10 étapes)Logique métier complexe (règles affectation, escalade)
3. Feedback TICCFaible (6 étapes)Intégration externe STIC, test de résilience

Tests de performance POC :

TestMétrique CibleBaseline Software AGCritère Acceptation
Latency P50< 200 ms150 ms≤ +50 ms
Latency P95< 500 ms400 ms≤ +100 ms
Throughput> 50 workflow/s60 workflow/s≥ -15%
Stabilité 24hAucune dégradationStableAucune fuite mémoire

Décision Go/No-Go :


Phase 2 : Migration Progressive (6-9 mois — M3 → M12)

Approche : Migration workflow par workflow avec validation métier systématique

Priorisation des workflows :

PrioritéWorkflowsCritèresEffort Estimé
P1 — Critique8 workflows (création incident, affectation tâche, feedback TICC, alarmes)• Volumétrie élevée
• Criticité métier forte
• Faible complexité
3 mois
P2 — Important12 workflows (traitement masse, supervision, escalade)• Volumétrie moyenne
• Complexité modérée
4 mois
P3 — Standard10+ workflows (reporting, archivage, batch)• Volumétrie faible
• Faible criticité
2 mois

Processus de migration par workflow :

  1. Analyse du workflow existant (0.5 jour)

    • Parsing XML Software AG

    • Identification des services Java appelés

    • Cartographie des dépendances externes (SPQR, SSOL, STIC)

  2. Modélisation BPMN 2.0 (1 jour)

    • Création du diagramme BPMN dans Camunda Modeler

    • Définition des service tasks, user tasks, gateways

    • Configuration des variables de processus

  3. Implémentation des service tasks (2-3 jours)

    • Création des delegates Java (Camunda) ou listeners (Flowable)

    • Intégration avec services SAT-PRE existants

    • Gestion des erreurs et retry logic

  4. Tests fonctionnels (1 jour)

    • Tests unitaires (Camunda Test Framework)

    • Tests d'intégration avec services réels

    • Validation métier par Product Owners

  5. Déploiement et monitoring (0.5 jour)

    • Déploiement sur environnement de test

    • Configuration monitoring (Camunda Operate)

    • Validation performance (vs. baseline)

Effort total estimé : 18-24 mois-personne (incluant POC, migration, tests, formation)


Phase 3 : Décommissionnement Software AG (1-2 mois — M12 → M13)

Objectifs :

Livrables :

Critères de succès :


7.4.5 Risques et Mitigation

RisqueProbabilitéImpactStratégie de Mitigation
R1 : Dépassement deadline licence (mi-2026)🟠 Moyenne🔴 Critique• Priorisation stricte (P1 first)
• Phase 0 POC rapide (2 mois)
• Equipe dédiée BPM (1 expert Camunda)
R2 : Performance insuffisante🟡 Faible🟠 Moyen• POC avec benchmark rigoureux
• Tests de charge systématiques
• Plan B : Optimisation Camunda (clustering)
R3 : Complexité migration workflows🟠 Moyenne🟠 Moyen• Approche progressive (workflow par workflow)
• Formation équipe (2 jours Camunda)
• Support Camunda Enterprise (option)
R4 : Résilience métier (résistance au changement)🟡 Faible🟡 Faible• Validation Product Owners systématique
• Démonstrations régulières (sprints 2 sem)
• Documentation claire (BPMN 2.0 visuel)
R5 : Disponibilité compétences Camunda🟠 Moyenne🟠 Moyen• Formation équipe (certification Camunda)
• Accompagnement Adservio (expert BPM)
• Documentation interne (playbooks)

⚠️ Contrainte impérative : La migration BPM doit être achevée avant mi-2026 (expiration licence Software AG). Cela place la Phase 1 (Migration Infrastructure) sur le chemin critique de la roadmap globale (voir §11).


7.4.6 Intégration dans la Roadmap Globale

La migration BPM doit être synchronisée avec les autres chantiers de modernisation :

Dépendances techniques :

ChantierDépendance BPMJustification
Migration WebLogic → Tomcat⬆️ BloquantCamunda nécessite un serveur d'applications (Tomcat 9.x sur ABJ)
Remplacement JMS → Kafka⬆️ BloquantLes workflows BPM publient/consomment des messages Kafka
Séparation SIAS/TICC⬇️ Dépend de BPMLes workflows refactorisés doivent appeler les services séparés
Migration Oracle → PostgreSQL↔️ IndépendantCamunda supporte PostgreSQL nativement (pas de blocage)

Séquençage recommandé :

2026-01-012026-04-012026-07-012026-10-012027-01-012027-04-012027-07-012027-10-01POC BPM Camunda 8 Migration workflows P1 Migration WebLogic → Tomcat Migration workflows P2+P3 Remplacement JMS → Kafka Séparation SIAS/TICC BPMInfrastructureSéparationSynchronisation Migration BPM avec Roadmap Globale

Points de synchronisation critiques :

  1. M3 (Avr 2026) : POC BPM validé → Démarrage migration WebLogic en parallèle

  2. M9 (Oct 2026) : WebLogic + JMS migrés → Déploiement workflows Camunda sur Tomcat/Kafka

  3. M12 (Jan 2027) : Tous workflows BPM migrés → Début séparation SIAS/TICC

  4. M24 (Jan 2028) : Séparation complète → Workflows refactorisés pour services séparés


7.4.7 Estimation Effort et Coûts

ActivitéDuréeEffort (mois-personne)Profils Requis
Phase 1 : POC BPM2 mois3• Expert BPM (Camunda)
• Architecte applicatif
• Développeur Java/Spring
Phase 2 : Migration workflows9 mois12• Expert BPM (Camunda) — 6 MP
• Développeur Java/Spring (x2) — 6 MP
Phase 3 : Décommissionnement1 mois1• Expert BPM
• Expert infrastructure DSI
Formation équipes2 mois2• Formateur certifié Camunda
• Référent BPM interne
Total12 mois18 MP-

Coûts estimés :

PosteCoût UnitaireQuantitéTotal (k€)
Expert BPM Camunda (TJM 800€)800 €/j120 j96 k€
Développeur Java/Spring (TJM 600€)600 €/j120 j72 k€
Formation Camunda (2j x 5 pers)1 200 €/pers5 pers6 k€
Licence Camunda Enterprise (optionnel)30 k€/an1 an30 k€
Total--174-204 k€

Note : Licence Camunda Enterprise optionnelle (Community Edition suffisante pour POC et production standard). Prévoir budget pour support commercial si nécessaire (SLA, hotfixes, consulting).


7.5 Synthèse des Dépendances Critiques

Résumé consolidé des dépendances techniques à migrer/remplacer :

Composant ActuelCible Option A+Effort EstiméRisquePriorité
Software AG BPMCamunda 818 MP (12 mois)🔴 CritiqueP0 (deadline mi-2026)
WebLogic 12cTomcat 9.x (ABJ)8 MP (6 mois)🟠 MoyenP1
Oracle DB 19cPostgreSQL 14+6 MP (6 mois)🟠 MoyenP1
JMS ActiveMQApache Kafka4 MP (4 mois)🟡 FaibleP2
SOAP/WS-SecurityREST + OAuth22 MP (3 mois)🟡 FaibleP3

Chemin critique : Software AG BPM → WebLogic → JMS → Séparation SIAS/TICC