Carte des connexions système

Appelants API GLID API ICUMediator Hub API central ICUTexto Canal SMS ICUCourriel Canal Courriel ICUResSociaux Canal Médias sociaux ICU.EAI Canal Voix ICUMassif Canal Massif VuDu SMS API Archive FILE SendGrid API Relais SMTP Exchange/Graph X / Twitter API Telus RVI API UCCX Informix BD SQL STM ICU Partagée par tous les canaux

3 intégrations les plus critiques

ICUMediator

Interne

Hub 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

Courriel

11 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

Voix

Dé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

Canal
Complexité
Phase
Direction
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.
SMS État actuel — BizTalk ICU Mediator EnvoyerMessage UsagerTexto EnvoyerSMS EnvoyerSMSVudu EnvoyerSMSVuduBatch SauvegarderDetailsEnvoi MettreAJourBroadcast BD SQL STM ICU MettreAJourFeed DÉSENLISTÉ

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.
Courriel État actuel — BizTalk (11 Orchestrations) ProduireMessage UsagerCourriel EnvoyerCourriel EnvoyerEwsCourriel Relais SMTP EnvoyerSendGridCourriel SendGrid API SauvegarderTraitementCourriel Traitement des rebonds TraiterRejets (FILE) MettreAJourRejetExchange MàJ BouncesSendGrid MàJ BlocksSendGrid MàJ SpamsSendGrid MàJ InvalidsSendGrid ObtenirTokenOAuth ÉLIMINÉ dans Azure MettreAJourStatus

Architecture cible Azure

Architecture Azure Integration Services APIM OAuth2 / Limite de débit Service Bus Topics + Abonnements File de lettres mortes Logic Apps Flux simples, connecteurs Durable Functions Orchestrations complexes Fan-out, réessai, état Azure Functions Transformations sans état VuDu SMS SendGrid Telus RVI X / Twitter MS Graph Key Vault App Insights Azure SQL Managed Identity

Correspondance des composants BizTalk → Azure

Composant BizTalk
Remplacement Azure
Réception WCF-WebHttp
→
Azure APIM + Service Bus
Orchestration (simple)
→
Logic Apps (Standard)
Orchestration (complexe)
→
Durable Functions
Orchestration (sans état)
→
Azure Functions
Mappages BizTalk (XSLT)
→
Transformations Logic Apps / code en ligne
Schémas (XSD)
→
JSON Schema / OpenAPI
Adaptateur WCF-SQL
→
Connecteur Azure SQL / EF Core
Envoi WCF-WebHttp
→
Action HTTP / HttpClient
Adaptateur FILE
→
Déclencheur / action Blob Storage
Port SMTP statique
→
Connecteur SendGrid (retirer SMTP)
MessageBox (pub/sub)
→
Service Bus Topics
Ensembles de corrélation
→
Entité / corrélation Durable Functions
Patron Convoy
→
Sous-orchestration Durable Functions
Assemblages utilitaires
→
Bibliothèque de classes .NET partagée (NuGet)
SSO / Magasin de config
→
Key Vault + App Configuration
Console Admin BizTalk
→
Portail Azure + App Insights

Arbre de décision : Quel service Azure?

Nouvelle orchestration Besoin d'état / réessai? Non Oui Azure Function Fan-out ou convoy? Oui Non Durable Functions Connecteur géré? Oui Non Logic Apps Azure Function (code HTTP/SDK personnalisé)

Guide d'intégration des développeurs

Liste de vérification jour 1▼
  • 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é
Guide de migration — Séquence des phases▼
  • 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.
12 éléments d'action pré-migration▼
  1. 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.
  2. Cataloguer tous les mappages BizTalk — Exporter le XSLT de chaque fichier .btm. Identifier ceux qui peuvent être remplacés par un mappage JSON direct.
  3. 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.
  4. 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.
  5. 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é.
  6. Tester ODBC Informix — Valider que le pilote ODBC fonctionne depuis une VM Azure. Mesurer la latence vs sur site.
  7. 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.
  8. Documenter le contrat Telus RVI — Capturer le mécanisme d'authentification, les URL de rappel, les attentes de délai d'expiration.
  9. Activer le suivi BizTalk — Activer le suivi pendant 2 semaines en prod pour capturer les volumes et patrons de messages réels.
  10. Construire la zone d'atterrissage Azure — Groupe de ressources, réseau, RBAC, paramètres de diagnostic, alertes budgétaires.
  11. 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.
  12. Créer un harnais de test — Enregistrer les paires requête/réponse BizTalk pour les tests de régression pendant la migration.
Guide des artéfacts BizTalk▼
  • .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.
Référence d'architecture Azure▼
  • 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.

apim-sms-api.yaml
▼

      
apim-email-api.yaml
▼

      
bicep-sms-infrastructure.bicep
▼

      
bicep-email-infrastructure.bicep
▼

      

Feuille de route de migration

Calendrier de migration par phases S1 S2 S6 S7 S14 S15 S22+ Phase 0 Fondation Infra + PdC Phase 1 SMS + Massif ICUTexto + ICUMassif Phase 2 Courriel+Social+Hub Courriel Social Hub Phase 3 Voix (Informix) ICU.EAI (bloqué : Informix) Mise en prod SMS Mise en prod Courriel

Analyse des coûts

Actuel — BizTalk sur site
60 K$ – 105 K$
Par année (licences + infrastructure + maintenance)
Cible — Azure Integration Services
12 K$ – 17 K$
Par année (à la consommation + capacité réservée)
Économies annuelles
43 K$ – 88 K$
Réduction de coûts de 60–85 %

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