RBS Consulting
PREUVE D’ARCHITECTURE / INTÉGRATION

Salesforce → D365 F&O.
Résiliente par conception.

Designing a resilient Salesforce-to-D365FO integration with Azure : une architecture réelle, proportionnée aux volumes, à la latence acceptable et aux contraintes d’exploitation.

Le contexte : deux systèmes, deux responsabilités

Salesforce est le système maître pour la création des clients et les données commerciales. Microsoft Dynamics 365 Finance & Operations prend ensuite le relais pour les données financières et le suivi Accounts Receivable.

Azure SQL joue déjà le rôle de Datahub central pour les master data. Il constitue donc le carrefour naturel entre le CRM, l’ERP et les autres consommateurs du système d’information.

01 / BESOIN

Des contraintes qui orientent réellement la solution

Le pattern technique découle des exigences non fonctionnelles, et non d’une préférence pour un service Azure particulier.

Latence asynchrone acceptable

Le flux privilégie la fiabilité et la reprise plutôt qu’une synchronisation temps réel sans valeur métier.

Scalabilité sous pics

L’architecture absorbe des pics de plusieurs milliers d’enregistrements par minute sans fragiliser les systèmes transactionnels.

Zéro perte fonctionnelle

Toute donnée non traitée doit rester identifiable, rejouable et traçable.

Reprise naturelle

Après une indisponibilité, le traitement repart sans reconstruction manuelle du flux.

Ownership explicite

Le CRM conserve le commercial ; l’ERP reste propriétaire du financier.

Exploitation simple

Chaque composant doit apporter une valeur supérieure à son coût de maintenance.

02 / DÉCISIONS

Un flux asynchrone, incrémental et rejouable

Le Datahub porte la persistance et l’état fonctionnel du traitement. La Logic App orchestre ; D365 F&O applique la logique métier.

01

Détecter

Des vues différentielles identifient les enregistrements restant à intégrer à partir d’un watermark persistant.

02

Orchestrer

Une Azure Logic App lit les lots disponibles, contrôle l’exécution et appelle D365 F&O.

03

Traduire

Une table de mapping forme l’Anti-Corruption Layer qui découple les modèles Salesforce et ERP.

04

Exécuter

Un custom service X++ applique les contrôles métier au plus près du cœur transactionnel.

05

Acquitter

L’identifiant partagé et le watermark sécurisent la corrélation, l’idempotence et la reprise.

03 / ARBITRAGE

Pourquoi ne pas utiliser Azure Service Bus ?

Service Bus est une excellente brique de messaging. Dans ce contexte précis, elle n’était simplement pas nécessaire.

CE QU’IL AURAIT APPORTÉ
  • Queue-based load leveling
  • Retries contrôlés et Dead Letter Queue
  • Découplage fort producteur / consommateur
  • Ordering via sessions si nécessaire
POURQUOI AZURE SQL SUFFIT ICI
  • Datahub déjà présent et exploité
  • Persistance native des données à traiter
  • Watermark pour reprise et acquittement
  • Volumes modérés et latence différée acceptée
TRADE-OFF ASSUMÉRésilience + simplicité opérationnelle + coût de maintenance réduit

Le choix renonce volontairement à une latence minimale et à un modèle entièrement event-driven, sans compromettre les besoins fonctionnels.

04 / RUN

Sécuriser et rendre exploitable

Une intégration résiliente ne s’arrête pas au happy path : son identité, sa télémétrie et ses alertes font partie de l’architecture.

SÉCURITÉ

Identités plutôt que secrets

Managed Identity lorsque possible, OAuth 2.0 avec App Registration pour D365 F&O et utilisateur applicatif configuré selon le principe du least privilege.

Azure Key Vault protège les secrets résiduels.
OBSERVABILITÉ

Voir avant de subir

Application Insights, Azure Monitor et Log Analytics centralisent la télémétrie technique et fonctionnelle du flux.

Les vues SQL et les données anormalement en attente font l’objet d’alertes dédiées.
05 / CE QUE CELA DÉMONTRE

Une architecture proportionnée au besoin.

Le choix des composants est guidé par les NFR, l’architecture existante du SI et les contraintes d’exploitation. Le résultat reste simple, sécurisé et résilient, tout en maintenant la logique métier et l’ownership des données dans les systèmes appropriés.

Un flux critique à sécuriser ?

Parler de votre architecture →