Heroku - 19 Messages Outbound Introduction

Bienvenue dans cette présentation de la seconde méthode d'intégration entre Salesforce et Heroku : les messages sortants (Outbound Messages). Cette solution diffère des autres car elle n'a quasiment aucune limitation en termes de volume de données sortantes et n'engendre aucun coût additionnel. Elle peut donc être adaptée à de nombreux cas.

Qu'est-ce qu'un message sortant ?

Un message sortant est un message que Salesforce envoie à une application externe (par exemple une application Heroku) suite à une mise à jour observée dans une table. Modifier la valeur d'un champ déclenche l'envoi du message vers l'application externe.

  • Un objet Salesforce (la table à surveiller)
  • Une règle (workflow rule) qui filtre les changements qui déclenchent l'envoi
  • Une application externe capable de recevoir et traiter le message
  • Format des messages : XML (plus ancien que JSON)
  • Réponse : ACK (succès) ou NACK (échec, retry 24h)

Prenons un exemple : une application gérant les collaborateurs d'une entreprise via la table Accounts de Salesforce. Imaginons un compte avec les champs Nom « Entreprise X », Type « Collaborateur », Téléphone. Avec une règle qui filtre uniquement les Type « Collaborateur », tout changement de téléphone sur ce compte déclenchera l'envoi du message. À l'inverse, sur un compte « Entreprise Y » de type « Client », un changement de téléphone ne déclenchera pas de message car la règle ne sera pas validée.

Côté réception, les messages sortants sont envoyés au format XML, un format légèrement dépassé aujourd'hui remplacé par JSON, mais que Salesforce conserve. Traiter ces messages peut être contraignant car la plupart des langages modernes n'ont pas de méthode native pour parser efficacement du XML : il faudra utiliser un parser dédié. Une fois le message traité, vous devez répondre à Salesforce avec un ACK (Acknowledge, accusé de réception en cas de succès) ou un NACK (Not Acknowledge, en cas d'échec). Sur un NACK ou une absence de réponse, Salesforce continue à retransmettre le message pendant 24 heures avant d'abandonner.

Parlons des limitations. La principale est l'unidirectionnalité : seul Salesforce peut envoyer vers Heroku, pas l'inverse. Cette méthode n'est donc pas adaptée si vous avez besoin d'interaction bidirectionnelle. Autre limitation : la suppression d'une donnée dans Salesforce ne provoque pas de message sortant — il n'est pas possible de configurer un Outbound Message pour signaler une suppression. En conclusion, les Outbound Messages sont l'option avec le moins de limitations en termes de volume de données et de coût, mais leur nature unidirectionnelle fait qu'ils ne sont pas toujours la première option à considérer. À bientôt pour la prochaine vidéo.

En résumé

Les Outbound Messages Salesforce permettent d'envoyer automatiquement des données à une application externe (comme Heroku) lors de modifications dans une table. Contrairement à d'autres méthodes d'intégration, cette approche n'impose aucune limitation de données et aucun coût additionnel. L'application réceptrice doit gérer le format XML et renvoyer un accusé de réception (ACK) ou un rejet (NACK) pour indiquer le succès ou l'échec du traitement.

Points clés

  • Les Outbound Messages sont des messages envoyés automatiquement par Salesforce vers une application externe lors d'une mise à jour de données, sans limites de volume ni coûts supplémentaires
  • Configuration requise : un objet Salesforce (table), une règle de validation (détermine quel message doit être envoyé), et une application externe réceptrice
  • Les messages sont générés au format XML ; l'application réceptrice doit disposer d'un parser pour les traiter et les convertir en format manipulable
  • Deux types de réponses possibles : ACK (Acknowledge - succès) ou NACK (Negative Acknowledge - échec, Salesforce renverra le message pendant 24h)
  • Limitation majeure : unidirectionnalité (Salesforce → application externe uniquement, pas de requête inverse) et pas de messages sortants sur suppression de données
  • Cas d'usage idéal : synchronisation de données de Salesforce vers une base externe, nécessitant peu d'interaction bidirectionnelle

Questions fréquentes

Qu'est-ce qu'un Outbound Message Salesforce et comment se déclenche-t-il ?

Un Outbound Message est un message que Salesforce envoie automatiquement à une application externe (comme Heroku) lors d'une modification dans une table Salesforce. Il est déclenché par un changement de valeur dans l'un des champs d'enregistrement, à condition que la règle de validation associée soit satisfaite.

Quels éléments sont nécessaires pour configurer un Outbound Message Salesforce ?

Trois éléments sont requis : (1) un objet Salesforce (table), (2) une règle de validation associée à cet objet pour déterminer quand envoyer le message, et (3) une application externe (réceptrice) capable de recevoir et traiter le message, comme une application Heroku.

Comment l'application réceptrice doit-elle répondre à un Outbound Message Salesforce ?

L'application externe doit renvoyer un accusé de réception (ACK pour Acknowledge) si le traitement a réussi. Si elle envoie un NACK (Negative Acknowledge) ou pas de réponse, Salesforce continuera à tenter l'envoi du message pendant 24 heures, puis l'abandonnera automatiquement.