← Rétro-ingénierie BizTalk

STM ICU EAI — Inventaire des integrations

Source : Analyse du code BizTalk — PortBindingsMaster.xml + fichiers d'orchestration .odx
Portee : 11 solutions BizTalk reparties dans 3 repertoires (Envoi, Recuperation, racine EAI)
Date : 2026-03-21

Tableau sommaire

SolutionProjet / AssemblyOrchestrationsDirectionCanalSystemes externes
STM.ICUMassif.EAIEnvoyerMessagesDistribuerMessages, EnvoiMessageEntrant / SortantMassifFILE drop, BizTalk MessageBox
STM.ICUAppelVocalRecup.EAIRecupererAppelVocal(CBR seulement)SortantVocalFILE drop
STM.ICUCourrielRecup.EAIRecupererCourriel(CBR seulement)SortantCourrielFILE drop
STM.ICUMessageEntrantRecup.EAIRecupererMessageEntrant(CBR seulement)SortantSMS (entrant)FILE drop
STM.ICUTextoRecup.EAIRecupererTexto(CBR seulement)SortantSMS (sortant)FILE drop
STM.ICU.EAIEnvoiTelusEnvoyerTelusAppelVocal, EnvoyerAppelVocal, GererTentative, VerifierErreurTelus, PurgerCampaign, PurgerQueueAppelVocal, EnvoyerResultatExecutionLes deuxVocalTelus RVI API, UCCX/Informix DB, STM ICU SQL DB
STM.ICUCourriel.EAIEnvoiCourriel, TraiteRejetProduireMessageUsagerCourriel, EnvoyerCourriel, EnvoyerEwsCourriel, EnvoyerSendGridCourriel, SauvegarderTraitementCourriel, TraiterRejets, MettreAJourRejetServeurExchange, MettreAJourBouncesSendGrid, MettreAJourBlocksSendGrid, MettreAJourSpamsSendGrid, MettreAJourInvalidsSendGrid, ObtenirTokenOAuth, MettreAJourStatusLes deuxCourrielSendGrid API, Exchange Online (MS Graph/OAuth2), STM ICU SQL DB, SMTP interne
STM.ICUMediator.EAIEnvoiMessageUsagerDemanderEnvoiMessage, ValiderMessage, ObtenirAbonnementGlid, EnvoyerMessageUsager, EcouterResultatsMessageUsagerLes deuxInterne (hub API)GLID REST API, STM ICU Mediator SQL DB
STM.ICUResSociaux.EAIPublierMessageRecevoirPublierMessage, PublierXMessage, ValiderMessage, ObtenirStatutPublication, SauvegarderErreursLes deuxMedias sociauxX (Twitter) API v2, STM ICU SQL DB
STM.ICUTexto.EAIMediator, EnvoiSMS, ObtiensStatusEnvoyerMessageUsagerTexto, EnvoyerSMS, EnvoyerSMSVudu, EnvoyerSMSVuduBatch, SauvegarderDetailsEnvoi, MettreAJourBroadcast, MettreAJourFeedLes deuxSMSVuDu SMS API, STM ICU SQL DB
STM.ICUTextoExtraction.EAIExtractionExtraireSSPO, SauvegardeExractionSSPOLes deuxInterne/AnalytiqueSTM ICU SQL DB, Optimax/PowerBI SQL DB

Par canal

SMS

STM.ICUTexto.EAI — Envoi SMS sortant

Objectif : Recoit les demandes d'envoi SMS du ICU Mediator et les achemine vers la passerelle SMS VuDu.

Emplacement de reception :

Flux d'orchestration :

  1. EnvoyerMessageUsagerTexto (projet Mediator) — recoit la demande du ICUMediator, s'active sur /icutexto/api.svc.
  2. EnvoyerSMS — repartition principale; decide entre envoi simple ou par lot.
  3. EnvoyerSMSVudu — appelle VuDu POST /send (${uriFournisseur}/send), enregistre le suivi de lot via SQL.
  4. EnvoyerSMSVuduBatch — appelle VuDu POST /send_batch pour les grands volumes.
  5. SauvegarderDetailsEnvoi — ecrit SauvegarderTraitementSMS / UpdTraitementSMSBatch dans la BD SQL ICU.
  6. MettreAJourBroadcast — interroge VuDu POST /get_broadcast pour obtenir le statut de livraison; met a jour la BD ICU.
  7. MettreAJourFeed — interroge VuDu POST /get_feed pour le statut detaille du flux (actuellement desenliste en prod).

Ports d'envoi :

STM.ICUTextoRecup.EAI — Routeur de recuperation SMS sortant

Objectif : Abonne CBR (routage base sur le contenu). Recupere tout message Texto du BizTalk MessageBox et le depose dans un partage de fichiers pour les consommateurs en aval (surveillance, reprise, etc.).

STM.ICUMessageEntrantRecup.EAI — Routeur de recuperation SMS entrant

Objectif : Abonne CBR pour les SMS entrants (CommunicationUsagereEntrante). Ecrit les textos entrants dans un partage de fichiers.

STM.ICUTextoExtraction.EAI — Extraction de donnees SMS (Analytique)

Objectif : Extraction quotidienne par lot des donnees SMS SSPO de la BD operationnelle ICU vers la base de donnees de rapports Optimax/PowerBI.


Courriel

STM.ICUCourriel.EAI — Envoi de courriels sortants + Gestion des rebonds

Objectif : Recoit les demandes d'envoi de courriels du ICUMediator et les achemine via le relais SMTP ou l'API SendGrid. Gere egalement les rebonds, blocages, signalements de pourriel et adresses invalides provenant de SendGrid et Exchange Online.

Emplacement de reception :

Orchestrations du chemin d'envoi :

  1. ProduireMessageUsagerCourriel — s'active sur /icucourriel/api.svc, transforme le JSON en schema Courriel interne.
  2. EnvoyerCourriel — achemine vers le chemin SMTP ou SendGrid.
  3. EnvoyerEwsCourriel — envoie via le relais SMTP interne (Static-DotNetSMTP, ${SMTPHostName}:${SMTPPort}).
  4. EnvoyerSendGridCourriel — envoie via l'API REST SendGrid (POST ${UrlSendGrid}/mail/send), authentification par jeton Bearer.
  5. SauvegarderTraitementCourriel — persiste dans la BD ICU via WCF-SQL.

Orchestrations du chemin rebonds/rejets (projet TraiteRejet) :

Ports d'envoi :

Maintenance planifiee :

STM.ICUCourrielRecup.EAI — Routeur de recuperation des courriels

Objectif : Abonne CBR. Recupere les messages Courriel et les ecrit dans un partage de fichiers.


Vocal / Telus

STM.ICU.EAI — Appels vocaux sortants (SVI) via Telus RVI

Objectif : Gere les appels vocaux automatises sortants vers les usagers de la STM via la plateforme Telus RVI (Serveur vocal interactif). Declenchement par interrogation de la BD ICU; interface de rappel bidirectionnelle pour le TTS et le statut des appels.

Emplacements de reception :

Flux d'orchestration :

  1. EnvoyerTelusAppelVocal — active par l'interrogation WCF-SQL; est un convoi de longue duree gerant l'etat des appels (indicateur convoiActif); appelle EnvoyerAppelVocal en sous-appel.
  2. EnvoyerAppelVocal — invoque l'API Telus RVI Outbound (POST ${UriTelusEnvoi} = https://apipriv.stm.info/int/rvi-outbound/v1), authentification Basic (cseai_apimpr).
  3. GererTentative — gere l'etat des tentatives; met a jour TraitementAppelVocal dans la BD ICU.
  4. VerifierErreurTelus — surveille les erreurs de l'API Telus; archive les echecs dans un FILE.
  5. PurgerCampaign — purge quotidienne planifiee des campagnes d'appels.
  6. PurgerQueueAppelVocal — purge quotidienne de la table TraitementAppelVocal (exec PurgerTraitementAppelVocal 10).
  7. EnvoyerResultatExecution — ecrit le resultat dans ${ResultatExecutionRepertoireEnvoi}\%MessageID%.xml.

Ports d'envoi :

Valeurs cles de l'environnement de production :

STM.ICUAppelVocalRecup.EAI — Routeur de recuperation vocale

Objectif : Abonne CBR. Recupere les messages AppelVocal et les ecrit dans un partage de fichiers.


Medias sociaux

STM.ICUResSociaux.EAI — Publication sur X (Twitter)

Objectif : Recoit les demandes de publication sur les medias sociaux (ICU Mediator ou directes) et publie sur X (Twitter) via l'API v2. Suit le statut de publication dans la BD ICU avec application de limites de debit.

Emplacements de reception :

Flux d'orchestration :

  1. RecevoirPublierMessage — point d'entree; cree un enregistrement de suivi en cours (CreerSuiviTwitterEnTraitement).
  2. ValiderMessage — interroge la BD ICU pour le nombre de tweets sur 24h par canal (ObtenirNbTwitter24hPourChannel); applique la limite de debit.
  3. PublierXMessage — appelle l'API Twitter v2 (POST https://api.twitter.com/2/tweets); jeton Bearer OAuth2 injecte a l'execution via le comportement personnalise STM.WCFHttpHeaderBehavior.EAI.Inspector; met a jour le suivi (CreerSuiviTwitter / MajSuiviTwitter).
  4. ObtenirStatutPublication — repond aux requetes GET; lit ObtenirCommunicationX depuis la BD ICU.
  5. SauvegarderErreurs — en cas d'echec, ecrit MajSuiviTwitterErreur dans la BD ICU.

Ports d'envoi :


Interne / Mediateur

STM.ICUMediator.EAI — Hub API de la plateforme ICU

Objectif : Hub d'orchestration central (couche passerelle API). Recoit toutes les demandes d'envoi de messages entrantes des applications clientes, les valide contre les listes de distribution GLID, suit le cycle de vie des communications dans la BD Mediator, et achemine vers la solution de canal appropriee (Courriel, Texto, ResSociaux, ICU Telus).

Emplacements de reception :

Flux d'orchestration :

  1. DemanderEnvoiMessage — active par POST /messageUsager; point d'entree; deserialise la requete JSON ICUMediator.
  2. ValiderMessage — appelle l'API REST GLID (GET ${WebServiceGlid}/Applications/{application}/ListesDistribution) pour obtenir les listes de distribution; valide la cible d'acheminement.
  3. ObtenirAbonnementGlid — appelle l'API REST GLID (GET ${WebServiceGlid}/ListesDistribution/{liste}/Abonnements) pour developper la liste d'abonnes.
  4. EnvoyerMessageUsager — cree un enregistrement SuiviCommunication dans la BD Mediator (CreerSuiviCommunication, ObtenirSource).
  5. EcouterResultatsMessageUsager — attend les resultats d'envoi des canaux en aval; appelle MajSuiviCommunication, ObtenirSources pour finaliser le suivi.

Ports d'envoi :


Massif

STM.ICUMassif.EAI — Diffusion de messages en masse

Objectif : Lit un fichier XML declencheur depuis un partage de fichiers et distribue les messages en masse vers deux canaux simultanement (Courriel en francais, SMS en anglais — code en dur dans l'orchestration).

Emplacement de reception :

Flux d'orchestration :

  1. DistribuerMessages — active par la reception FILE; definit Media1="Courriel", Langue1="fr", Media2="Texto", Langue2="en"; lance deux branches paralleles appelant chacune EnvoiMessage.
  2. EnvoiMessage — sous-orchestration invoquee en parallele; construit les messages types (AppelVocal/Courriel/Texto) et les publie dans le BizTalk MessageBox; les solutions de canal en aval (ICUCourriel, ICUTexto) les recuperent via des abonnements.

Note : Aucun port d'envoi directement dans Massif — il s'appuie sur le routage base sur le contenu de BizTalk pour livrer aux solutions de canal. L'assembly Helper (STM.ICUMassif.EAI.Helper) fournit des utilitaires de journalisation.


Catalogue des systemes externes

1. API Telus RVI Outbound

2. Rappel entrant Telus RVI (SVI)

3. Base de donnees UCCX / IBM Informix (file d'attente Telus)

4. Base de donnees STM ICU SQL Server

5. Base de donnees STM ICU Mediator SQL Server

6. API de passerelle SMS VuDu

7. API REST GLID (Service de listes de distribution / abonnements)

8. API SendGrid

9. Exchange Online / Microsoft Graph (EWS OAuth2)

10. Relais SMTP interne (Exchange sur site)

11. API X (Twitter) v2

12. Base de donnees Optimax / PowerBI SQL Server

13. Systeme de fichiers (partages internes)


Evaluation de la complexite

Complexite faible — Migration directe

SolutionRaison
STM.ICUAppelVocalRecup.EAICBR pur; aucune orchestration; un seul port d'envoi FILE abonne au type de message. Remplacer par un filtre Logic App + stockage blob ou abonnement a un sujet Service Bus.
STM.ICUCourrielRecup.EAIMeme patron que AppelVocalRecup. CBR pur vers FILE.
STM.ICUTextoRecup.EAIMeme patron. CBR pur vers FILE.
STM.ICUMessageEntrantRecup.EAIMeme patron, espace de noms de type de message different.
STM.ICUTextoExtraction.EAIETL par lot simple. Planification → requete SQL → insertion SQL. Logic App + procedures stockees Azure SQL. Aucun HTTP externe.

Complexite moyenne — Gerable avec les services Azure standards

SolutionRaison
STM.ICUMassif.EAIDeclencheur FILE + distribution parallele vers deux canaux. Traduisible en Logic App avec branches paralleles. La complexite principale est de s'assurer que le routage des messages enfants vers les API de canal en aval fonctionne correctement.
STM.ICUResSociaux.EAIL'API Twitter v2 est du REST standard; OAuth2 Bearer est simple. Complexite principale : injection du jeton a l'execution (actuellement via un comportement WCF personnalise — a reproduire dans les en-tetes d'action HTTP Logic App), verification de la limite de debit (requete SQL) et ecritures dans la BD de suivi.
STM.ICUTexto.EAIMultiples operations API VuDu (envoi / lot / interrogation de statut). Le pipeline de requetes encodees en formulaire personnalise doit etre reimplemente. Les orchestrations d'interrogation de statut (MettreAJourBroadcast, MettreAJourFeed) necessitent des Logic Apps planifiees. Le suivi SQL est l'equivalent standard WCF-SQL (connecteur SQL).

Complexite elevee — Necessite un travail de conception significatif

SolutionRaison
STM.ICUCourriel.EAIDouble chemin d'envoi (SMTP vs SendGrid). Sous-flux d'acquisition de jeton OAuth2 pour Exchange Online. Cinq interrogateurs de listes de suppression distincts pour SendGrid. Boucle complexe de traitement des rebonds avec cycles d'interrogation/mise a jour de la BD. L'integration Exchange Online EWS necessite une approche moderne via l'API Graph. 11 orchestrations au total.
STM.ICUMediator.EAIAgit comme la passerelle API centrale — toutes les autres solutions de canal en dependent. Doit preserver le patron requete/reponse (/Communication/{commId} GET). Appels REST GLID avec injection de parametres de chemin URL. Suivi du cycle de vie des communications a travers les reponses asynchrones des canaux (correlation EcouterResultatsMessageUsager). Exigence de livraison ordonnee sur le port SQL.
STM.ICU.EAISolution la plus complexe dans l'ensemble. Raisons : (1) BD IBM Informix — aucun adaptateur Azure natif; necessite un connecteur personnalise ou un service intermediaire; (2) patron de convoi de longue duree gerant l'etat actif des appels a travers les rappels entrants de Telus; (3) interface Telus bidirectionnelle (BizTalk appelle Telus et sert de point de terminaison HTTP pour les rappels de Telus); (4) service de fichier TTS depuis le disque via un composant de pipeline personnalise; (5) logique d'application de fenetre de service integree dans l'emplacement de reception; (6) gestion complexe des reessais/delais d'attente avec fenetre d'ignorance de rappel de 8 minutes; (7) mecanisme de message planifie de test/battement de coeur (TEST UCCX).

Recommandation de priorite de migration

  1. Debut (preuve de concept) : Solutions de recuperation CBR (AppelVocalRecup, CourrielRecup, TextoRecup, MessageEntrantRecup) — aucune logique metier, routage pur.
  2. Phase 1 : ICUTextoExtraction (ETL par lot), ICUMassif (declencheur FILE + distribution), ICUResSociaux (Twitter).
  3. Phase 2 : ICUTexto (SMS), ICUCourriel (courriel — double chemin + gestion des rebonds).
  4. Phase 3 (avec la dependance UCCX resolue) : ICUMediator (hub API — doit etre migre avant ou en parallele avec toutes les solutions de canal qu'il appelle), ICU.EAI (vocal Telus — dernier en raison de la BD Informix et de la complexite des rappels).