Carte des connexions système
3 intégrations les plus critiques
ICUMediator
InterneHub API central — tout le trafic y transite. 5 orchestrations gèrent la validation des requêtes via GLID, l'expansion des abonnés, la livraison ordonnée et l'écoute des résultats par corrélation. Point de défaillance unique pour l'ensemble de la plateforme.
ICUCourriel
Courriel11 orchestrations. Double chemin de livraison (SMTP + SendGrid), gestion manuelle des jetons OAuth2 pour Exchange/Graph, boucle de réconciliation des rebonds déclenchée par FILE, 4 cycles indépendants d'interrogation des rejets SendGrid.
ICU.EAI
VoixDépendance IBM Informix UCCX (aucun connecteur Azure natif), patron convoy pour l'orchestration des appels, rappels bidirectionnels Telus RVI, machine à états de réessai/expiration, gestion du cycle de vie des campagnes.
3 risques principaux de migration
Assemblages utilitaires opaques
Logique d'affaires enfouie dans des DLL .NET compilées (ICU.EAI.Helper, ICU.EAI.Utilities). Aucun code source dans les projets BizTalk — doit être décompilé et réécrit.
BD IBM Informix
La base de données du centre d'appels UCCX n'a aucun connecteur Azure natif. Nécessite un runtime d'intégration auto-hébergé ou un connecteur personnalisé via pont ODBC. Bloque la migration du canal Voix.
Observabilité manquante
TrackingOption=None sur toutes les orchestrations. Aucune journalisation structurée, aucun identifiant de corrélation. Le système actuel est une boîte noire — l'instrumentation doit être construite de zéro lors de la migration.
Inventaire des orchestrations
| Solution | Orchestration | Canal | Dir | Transport | Auth | Cx | Phase |
|---|
Canal SMS — ICUTexto
Architecture actuelle
7 orchestrations réparties dans 2 solutions gérant l'envoi/réception SMS via l'API VuDu Mobile.
- Entrée : Point de terminaison REST WCF-WebHttp (auth Basic sur TLS)
- Répartition : Routage unitaire vs lot via EnvoyerSMS
- Livraison : Points de terminaison VuDu /send et /send_batch
- Suivi : Écriture BD SQL + interrogation VuDu broadcast
- Auth : Jeton d'en-tête personnalisé (sans rotation)
- Réessai : RetryCount=0 (aucun réessai)
- Archivage : Dépôt FILE vers partage réseau
Constats clés
- Aucune logique de réessai — RetryCount=0 sur tous les ports d'envoi. Les appels VuDu échoués sont perdus silencieusement.
- Code mort — MettreAJourFeed est DÉSENLISTÉ. Ne pas migrer.
- Séparation propre — La division unitaire/lot est propre. Bon candidat pour Azure Functions.
- Canal le plus simple — Moins de dépendances, aucun patron convoy. Candidat idéal pour la Phase 1.
Canal Courriel — ICUCourriel
Architecture actuelle
11 orchestrations gérant la livraison de courriels à double chemin, la gestion des rebonds et le cycle de vie OAuth2.
- Entrée : WCF-WebHttp (auth Basic sur TLS)
- Double livraison : Relais SMTP hérité + API SendGrid
- Rebonds : Boucle déclenchée par FILE + 4 cycles d'interrogation SendGrid
- OAuth2 : Orchestration manuelle de récupération de jeton (ObtenirTokenOAuth)
- Exchange : Lecture des NDR via MS Graph (OAuth2)
- Suivi : Statut par courriel dans la BD SQL
Constats clés
- OAuth2 manuel — Une orchestration entière juste pour récupérer des jetons. Éliminé par Managed Identity.
- Rebond déclenché par FILE — Mécanisme d'interrogation fragile; conditions de course possibles.
- 4 types de rejets — Rebonds, blocages, pourriels, invalides interrogés indépendamment sans horodatage partagé.
- SendGrid prêt pour la migration — Déjà basé sur REST; seule la modernisation de l'authentification est nécessaire.
Architecture cible Azure
Correspondance des composants BizTalk → Azure
Arbre de décision : Quel service Azure?
Guide d'intégration des développeurs
- Accès : Demander l'accès à l'abonnement Azure (groupe de ressources STM-ICU-EAI)
- Source : Cloner le dépôt de la solution BizTalk — 11 fichiers .sln, vérifier la compilation locale
- BD : Obtenir la chaîne de connexion en lecture seule pour la BD SQL ICU (environnement dev)
- Outils : Installer Visual Studio 2022 + extension BizTalk Server Developer Tools
- Azure : Installer Azure Functions Core Tools, Azure CLI, Storage Emulator
- VPN : Confirmer l'accès VPN aux serveurs BizTalk sur site (BTS-PROD-01, BTS-PROD-02)
- Lecture : Réviser ce document d'analyse de bout en bout (vous êtes ici)
- Explorer : Parcourir l'onglet Inventaire — filtrer par le canal qui vous est assigné
- Phase 0 — Fondation (Semaine 1) : Mise en place de l'infra Azure (APIM, Service Bus, Key Vault, App Insights). Migrer ICUTextoExtraction comme preuve de concept (2 orchestrations simples, aucune dépendance externe).
- Phase 1 — SMS (Semaines 2-6) : Migrer ICUTexto + ICUMassif. Canal le plus simple, moins de dépendances. Valide le patron pour tous les canaux subséquents.
- Phase 2 — Courriel + Médias sociaux + Médiateur (Semaines 7-14) : Migrer ICUCourriel (11 orchestrations), ICUResSociaux (5 orchestrations) et ICUMediator (5 orchestrations). Le hub doit migrer avec ou après ses satellites.
- Phase 3 — Voix (Semaines 15-22+) : Migrer ICU.EAI en dernier en raison de la dépendance Informix. Nécessite un runtime d'intégration auto-hébergé ou un pont ODBC. La réécriture du patron convoy est la tâche de migration la plus complexe.
- Décompiler les assemblages utilitaires — ICU.EAI.Helper, ICU.EAI.Utilities. Utiliser ILSpy/dnSpy pour extraire la logique d'affaires. Documenter chaque méthode publique.
- Cataloguer tous les mappages BizTalk — Exporter le XSLT de chaque fichier .btm. Identifier ceux qui peuvent être remplacés par un mappage JSON direct.
- Documenter les procédures stockées SQL — Lister toutes les PS appelées via WCF-SQL. Signaler celles avec des effets de bord ou des transactions implicites.
- Extraire le contrat de l'API VuDu — Capturer les schémas requête/réponse à partir des schémas BizTalk + appels de test. Aucune documentation publique n'existe.
- Identifier la version de l'API SendGrid — Confirmer v3 /mail/send. Vérifier si STM dispose d'un pool d'IP dédié ou partagé.
- Tester ODBC Informix — Valider que le pilote ODBC fonctionne depuis une VM Azure. Mesurer la latence vs sur site.
- Auditer l'API GLID — Documenter tous les points de terminaison appelés par ICUMediator. Confirmer les plans de migration/dépréciation de l'équipe GLID.
- Documenter le contrat Telus RVI — Capturer le mécanisme d'authentification, les URL de rappel, les attentes de délai d'expiration.
- Activer le suivi BizTalk — Activer le suivi pendant 2 semaines en prod pour capturer les volumes et patrons de messages réels.
- Construire la zone d'atterrissage Azure — Groupe de ressources, réseau, RBAC, paramètres de diagnostic, alertes budgétaires.
- Définir la stratégie d'observabilité — Format d'identifiant de corrélation, schéma de journalisation structurée, règles d'alerte, gabarits de tableaux de bord.
- Créer un harnais de test — Enregistrer les paires requête/réponse BizTalk pour les tests de régression pendant la migration.
- .odx (Orchestration) — Définition visuelle du flux de travail. Ouvrir dans le concepteur BizTalk de Visual Studio. Chaque forme = une étape du processus.
- .btm (Mappage) — Transformation de données basée sur XSLT. Lie les champs du schéma source aux champs du schéma destination. Peut contenir des functoïdes personnalisés (C# en ligne).
- .xsd (Schéma) — Définition de schéma XML. Définit la structure des messages. BizTalk les utilise pour la validation et le routage.
- .btp (Pipeline) — Pipeline de traitement des messages. Gère l'encodage, le décodage, la validation, la résolution des parties. La plupart sont PassThru dans cette solution.
- Fichiers de liaison (.xml) — Configuration des ports (URL, auth, réessai, transport). Contiennent les paramètres spécifiques au déploiement.
- DLL utilitaires — Assemblages .NET compilés appelés depuis les formes Expression des orchestrations. La logique d'affaires réside ici.
- Ports d'envoi/réception — Configurés dans la Console Admin BizTalk. Définissent le transport, l'URI, l'authentification, le réessai, le transport de secours.
- Azure APIM — Passerelle API. Gère OAuth2, limitation de débit, validation des requêtes, portail développeur. Remplace les emplacements de réception WCF-WebHttp de BizTalk.
- Azure Service Bus — Courtier de messages d'entreprise. Les topics + abonnements remplacent le pub/sub MessageBox de BizTalk. Files de lettres mortes pour les messages échoués.
- Logic Apps (Standard) — Moteur de flux de travail visuel. 400+ connecteurs gérés. Idéal pour les flux simples requête-réponse ou à forte intensité de connecteurs.
- Durable Functions — Orchestrations de fonctions avec état. Fan-out/fan-in, interaction humaine, chaînage. Remplace les orchestrations BizTalk complexes avec convoy/corrélation.
- Azure Functions — Calcul sans serveur. Piloté par événements, mise à l'échelle automatique. Pour les transformations sans état et les appels API.
- Key Vault — Gestion des secrets. Remplace le SSO BizTalk et les chaînes de connexion codées en dur. Accès Managed Identity = aucun identifiant dans le code.
- Application Insights — APM et traçage distribué. Remplace le suivi BizTalk (qui était désactivé). Corrélation de transactions de bout en bout.
- Azure SQL — SQL Server géré. Même moteur que sur site, aucun effort de migration pour la base de données elle-même.
Code Azure — Fichiers de déploiement
⚠ ÉCHAFAUDAGE — Ébauches de déploiement Azure — RÉVISION PAR UN ARCHITECTE REQUISE. Seuls SMS et Courriel sont spécifiés; les autres solutions (Médiateur, Médias sociaux, Voix) seront générées lors des phases subséquentes.
Feuille de route de migration
Analyse des coûts
Investissement de migration
80 K$ – 150 K$
Coût unique couvrant le développement, les tests, l'exécution parallèle et la bascule pour les 4 phases. La fourchette dépend de la complexité d'Informix et de l'effort de décompilation des assemblages utilitaires.
Retour sur investissement
1–2 ans
Avec des économies annuelles de 43 K$ – 88 K$, l'investissement de migration est rentabilisé en 1–2 ans. Gains supplémentaires grâce à la réduction de la charge opérationnelle, à la livraison plus rapide de fonctionnalités et à l'élimination de la dépendance aux compétences BizTalk.
Détail des phases
Phase 0 — Fondation (Semaine 1)
- Zone d'atterrissage Azure (APIM, Service Bus, Key Vault, App Insights)
- Gabarits de pipeline CI/CD (Bicep + GitHub Actions)
- ICUTextoExtraction comme preuve de concept (2 orchestrations simples)
- Base d'observabilité (tableaux de bord, alertes)
Phase 1 — SMS (Semaines 2–6)
- ICUTexto : 7 orchestrations → 3 Azure Functions
- ICUMassif : 2 orchestrations → 1 Durable Function
- Intégration API VuDu avec auth Key Vault
- Exécution parallèle + bascule du trafic + mise hors service des stubs CBR
Phase 2 — Courriel + Social + Hub (Semaines 7–14)
- ICUCourriel : 11 → 5 (retirer SMTP, consolider les rebonds)
- ICUResSociaux : 5 → 2 (publication X/Twitter + statut)
- ICUMediator : 5 → 3 (APIM remplace le point d'entrée)
- Managed Identity élimine ObtenirTokenOAuth
Phase 3 — Voix (Semaines 15–22+)
- ICU.EAI : 7 orchestrations (réécriture du patron convoy)
- Bloqué par : solution de connectivité Informix
- Options : IR auto-hébergé, pont ODBC ou API UCCX
- Reconfiguration de l'URL de rappel Telus RVI