Data Mapper dans Azure Logic Apps Standard

Bastien DALLARD
Publié par Bastien DALLARD
Catégorie : Azure / Logic Apps
15/09/2026

Au sein d’un système d’intégration, les applications échangent rarement des données avec exactement la même structure. Une API peut produire une commande au format JSON, tandis qu’un ERP attend un document avec d’autres noms de propriétés, une organisation différente ou des valeurs calculées.

Azure propose plusieurs mécanismes de manipulation et de transformation des messages. Le choix de l’outil dépend avant tout de la nature du traitement à réaliser.

 

Qu’est-ce que le Data Mapper ?

 

Le Data Mapper est un outil de conception disponible dans Visual Studio Code avec l’extension Azure Logic Apps (Standard) : https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurelogicapps.

Il permet de modéliser une transformation entre les propriétés d’un schéma source et celles d’un schéma cible. Pour cela, on lie visuellement les éléments entre eux dans une interface graphique de mapping. Il est également possible d’insérer des fonctions entre ces éléments afin d’effectuer des opérations telles que :

  • la concaténation de chaînes
  • les calculs numériques
  • les conversions de valeurs
  • les transformations conditionnelles
  • le filtrage
  • l’itération sur des tableaux
  • l’exécution d’expressions XPath ou de fragments XSLT

Lors de l’enregistrement du mapping, l’outil produit un fichier de transformation XSLT qui sera exécuté par le runtime de Logic Apps. Cet outil fournit donc une interface graphique permettant de construire des transformations XSLT sans avoir à écrire manuellement l’intégralité du code.

 

Data Mapper, Data Operations et Transform XML

 

Plusieurs fonctionnalités de Logic Apps peuvent sembler similaires, mais elles répondent à des besoins différents.

 

mapping actiosn in Logic Apps

 

Les actions Data Operations, comme Select, Compose, Filter array ou Parse JSON, sont adaptées aux manipulations relativement simples réalisées directement dans un workflow.

Le Data Mapper devient plus intéressant lorsque :

  • les messages possèdent des structures complexes
  • la transformation doit être réutilisée
  • plusieurs niveaux d’objets ou de tableaux doivent être convertis
  • les structures source et cible sont définies par des contrats formels
  • la logique de transformation doit être séparée de l’orchestration du workflow

 

Dans cet article, nous allons découvrir l’action Transform using Data Mapper XSLT, destinée aux mappings créés avec le Data Mapper. Elle ne doit pas être confondue avec l’action Transform XML, destinée aux transformations XSLT créées avec d’autres outils.

Cette distinction est importante : un mapping généré par le Data Mapper doit être appelé avec l’action dédiée aux opérations du Data Mapper.

 

Prérequis

Pour créer un mapping, il faut disposer :

  • d’un projet Azure Logic Apps Standard
  • de Visual Studio Code
  • de l’extension Azure Logic Apps (Standard)
  • d’un schéma source
  • d’un schéma cible
  • idéalement, d’un ou plusieurs exemples de messages d’entrée

 

Les schémas peuvent être fournis sous la forme :

  • d’un fichier XSD pour les messages XML
  • d’un schéma JSON décrivant une structure JSON

 

Dans la suite de l’article, nous utiliserons deux fichiers XSD afin d’illustrer une transformation XML plus avancée.

 

Note sur l’OS

Officiellement, Microsoft indique que le Data Mapper est pris charge dans Visual Studio Code sous Windows uniquement. Toutefois, sur MacOS, il est possible d’utiliser l’éditeur graphique pour créer et modifier des mappings grâce à des solutions de contournement.

En revanche, la fonctionnalité native Test Map, disponible sous Windows, ne fonctionne pas nativement sous MacOS car elle dépend d’un composant .NET Framework propre à Windows. Il est tout de même possible de tester les transformations localement au moyen du SDK de test Logic Apps et de tests .NET.

Pour plus de détails, voir : Workaround: Testing Logic Apps Data Mapper Maps on macOS – DEV Community

 

Exemple : transformer une commande pour un ERP

 

Pour illustrer le Data Mapper avec un cas plus réaliste, prenons l’exemple de l’entreprise MyCompany. Cette entreprise reçoit des commandes e-commerce au format XML et doit les transformer vers un format attendu par son ERP.

Le flux source contient les données suivantes :

  • un en-tête de message
  • une commande
  • un client
  • deux adresses
  • plusieurs lignes de commande
  • des frais de livraison
  • des remises
  • un montant total

 

L’ERP de MyCompany attend cependant un format différent, structuré de la manière suivante :

  • un en-tête documentaire
  • une section partenaire
  • une section d’adresses
  • des lignes ERP
  • un récapitulatif financier
  • des attributs complémentaires

 

Dans notre cas, la solution consiste donc à utiliser une Logic App Standard avec le Data Mapper afin de transformer le format source vers le format cible.

Pourquoi utiliser le Data Mapper ici ? Parce qu’il ne sert pas uniquement à relier des champs simples. Il peut également gérer des structures imbriquées, des collections, des conversions de valeurs, des calculs et des règles conditionnelles.

La transformation doit donc effectuer plusieurs opérations de mapping. Dans l’outil Data Mapper, ces règles de transformation sont représentées graphiquement par des connexions entre les nœuds source et cible, avec l’utilisation, si nécessaire, de fonctions intermédiaires.

 

Intégration des schémas dans notre Logic App

How to : Create Standard Workflows with Visual Studio Code – Azure Logic Apps | Microsoft Learn

La première étape consiste à ajouter, , les schémas de données au format XSD que nous allons utiliser.

Ces schémas seront ensuite utilisés par le Data Mapper pour afficher la structure du message source et celle du message cible. Ils permettront de créer les correspondances entre les différents éléments XML.

 

Intégration des schémas

 

Création du mapping

Dans Visual Studio Code, il faut ouvrir le projet Logic Apps Standard, puis accéder à la section Data Mapper de l’extension Azure.

Il est également possible de créer une map depuis la vue « Explorer » du workspace.  Pour cela, on peut faire un clic droit sur le dossier « Maps », puis sélectionner « Create Data Map ».

 

Après avoir renseigné le nom de notre nouvelle map, une interface de création de Data Map va s’ouvrir. Cette interface est composée principalement de trois zones :

  • le schéma source
  • la zone centrale contenant les connexions et les fonctions
  • le schéma cible

 

Création du mapping 1

 

Avant de pouvoir appliquer nos règles de transformations, il faut renseigner les schémas source et cible. Une fois cela fait, vous devriez retrouver toutes les propriétés dans « Source » et « Destination » :

 

Création du mapping 2

 

Sur la partie gauche de l’interface, on retrouve la liste des fonctions proposées par le Data Mapper. Ces fonctions peuvent être utilisées pour construire des transformations plus complexes, par exemple des concaténations, des calculs, des conditions ou des conversions de valeurs.

Une fois les schémas chargés, nous pouvons commencer à créer les premières correspondances entre les champs source et cible.

 

Créer un mapping direct

Lorsqu’aucune transformation n’est nécessaire, un élément source peut être directement relié à un élément cible. Ce type de mapping est adapté lorsque les deux éléments utilisent des types compatibles.

Pour cela, il faut sélectionner la propriété source, puis tracer un lien vers la propriété cible en effectuant un glisser-déposer.

Voilà le résultat avec d’autres mapping direct :

 

Création mapping direct

 

Utiliser une fonction

Le Data Mapper propose plusieurs types de fonctions. On retrouve notamment des fonctions permettant d’effectuer des conversions, de manipuler des tableaux, d’appliquer des conditions ou encore de traiter des strings.
Par exemple, imaginons que nous ayons les règles de mapping suivantes :

Source Cible Mapping
Order.Customer.Type Partner.PartnerCategory Conversion B2CCONSUMER, B2BBUSINESS
Order.Customer.FirstName + Order.Customer.LastName Partner.DisplayName Concaténation pour un client particulier
Order.Customer.CompanyName Partner.DisplayName Utilisé si le client est de type B2B

 

Le résultat pourrait ressembler à cela :

Utilisation de fonction 1

 

Avec :

  • 1.A : on vérifie si « Order.Customer.Type » est égal à « B2C ». Le résultat de cette évaluation est un booléen.
  • 2.A : si l’évaluation précédente est vraie, on retourne la valeur « CONSUMER »
  • 1.B et 2.B : on applique la même logique avec les valeurs « B2B » et « BUSINESS »
  • 3 : on utilise ensuite une condition « if else » pour alimenter « Partner.PartnerCategory ». Si le client est de type « B2C », on retourne « CONSUMER ». Sinon, on retourne « BUSINESS »
  • 4 : on applique une concaténation entre « Order.Customer.FirstName » et « Order.Customer.LastName »
  • 5 : on utilise une condition « if else » pour déterminer la valeur de « Partner.DisplayName ». Si le client est de type « B2B », on retourne « Order.Customer.CompanyName ». Sinon on retourne le résultat de la concaténation entre  « Order.Customer.FirstName » et « Order.Customer.LastName »

 

L’utilisation de fonctions permet de maintenir la logique de transformation dans le mapping plutôt que de multiplier les actions intermédiaires dans le workflow.

 

Mapper des tableaux

Pour transformer lines en items, les éléments parents des deux tableaux doivent être reliés.

Le Data Mapper ajoute alors la logique d’itération nécessaire. Les propriétés internes doivent néanmoins être mappées explicitement.

Par exemple, nous voulons créer un mapping vers OrderLInes.OrderLine.LineAmount :

 

Source Cible Mapping
Lines.Line.Quantity
Lines.Line.UnitPrice
Lines.Line.DiscountAmount
OrderLines.OrderLine.LineNetAmount Lines.Line.Quantity x Lines.Line.UnitPrice – Lines.Line.DiscountAmount

 

Utilisation de fonction 2

 

Un lien se crée automatiquement entre les éléments parents de la collection.

 

Les fichiers générés

Lors de l’enregistrement, le Data Mapper crée deux artefacts principaux :

  • Artifacts/MapDefinitions/ECommerceOrderToERPSalesOrder.lml
  • Artifacts/Maps/ECommerceOrderToERPSalesOrder.xslt

 

Le fichier .lml contient la définition utilisée par l’éditeur visuel.

Le fichier .xslt contient la transformation exécutable par Logic Apps.

 

Ces deux fichiers doivent être conservés dans le dépôt Git. Le fichier .lml permet de continuer à modifier visuellement le mapping, tandis que le fichier .xslt constitue l’artefact utilisé à l’exécution.

Les schémas peuvent également être stockés dans le dossier suivant : Artifacts/Schemas

Cette organisation facilite la gestion des contrats et des mappings dans le même projet que les workflows.

 

Fichiers générés

 

Tester le mapping

Grâce à l’extension Azure Logic Apps (Standard), il est possible de tester une map directement depuis Visual Studio Code. Le Data Mapper contient en effet un panneau de test dans lequel on peut fournir un exemple de message source.

Attention :  avant d’exécuter le test, il faut enregistrer le mapping afin de régénérer le fichier XSLT avec les dernières modifications.

Le résultat de la transformation est alors affiché directement dans Visual Studio Code. Cette fonctionnalité permet de tester rapidement :

  • les valeurs nominales
  • les propriétés facultatives
  • les tableaux vides
  • les valeurs nulles
  • les caractères spéciaux
  • les règles conditionnelles
  • les différents formats numériques et dates.

 

En cas d’erreur lors du test, il faut vérifier à la fois le message XML d’entrée, la validité des schémas XSD et la configuration locale du runtime Logic Apps Standard.

 

Utiliser le mapping dans un workflow

Une fois le mapping enregistré, il peut être appelé depuis le designer du workflow.

Il faut ajouter l’action intégrée Transform using Data Mapper XSLT.

 

mapping dans le workflow

 

L’action demande principalement :

  • le contenu à transformer ;
  • la source du mapping ;
  • le nom du fichier XSLT.

 

mapping dans workflow 2

 

Dans un projet local, il suffit ensuite de sélectionner le fichier présent dans le dossier Artifacts/Maps.

Le résultat de cette action peut ensuite être transmis aux étapes suivantes du workflow, par exemple vers un topic Service Bus.

 

Déploiement via pipelines YAML

Dans une Logic App Standard, les artefacts locaux peuvent être déployés avec l’application et ses workflows.

Dans le cas d’un déploiement via pipeline YAML, le projet Logic App Standard est d’abord packagé sous forme d’archive ZIP, puis publié comme artefact de pipeline. Cette archive contient les éléments nécessaires à la map, notamment les fichiers .lml, .xslt et les schémas.

Voici un exemple de code :

 

- task: AzureLogicAppsStandardBuild@1
  displayName: 'Azure Logic Apps Standard Build'
  inputs:
    sourceFolder: '$(Build.SourcesDirectory)/MyLAppStd.ProjectName/MyLAppStdName'
    deploymentFolder: '$(System.DefaultWorkingDirectory)/deployment/MyLAppStd.ProjectName/'
    archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
    deploymentWorkflowParametersFile: '$(Build.SourcesDirectory)/MyLAppStd.ProjectName/MyLAppStd.ProjectName/parameters.json'
- task: PublishPipelineArtifact@1
  displayName: 'Publish logic app zip artifact'
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
    artifact: 'MyArtifactName'
    publishLocation: 'pipeline'

 

Le déploiement d’une Logic App Standard se fait en deux étapes :

  1. Le déploiement de la ressource Logic App Standard, par exemple via une approche Infrastructure as Code avec Bicep, Terraform ou ARM Template
  2. Le déploiement du code, qui contient les workflows, les paramètres et les artefacts nécessaires à l’exécution

 

Le déploiement du code peut être réalisé une fois le projet build et l’artefact publié. L’archive ZIP peut ensuite être déployée sur la ressource cible.
Voici un exemple de code permettant de le faire :

- job: Deployment_LogicApp
  displayName: "Deploy Logic App"
  steps:
    - task: DownloadPipelineArtifact@2
      displayName: "Download LogicApp Artifact"
      inputs:
        artifact: 'MyArtifactName'
        path: $(Pipeline.Workspace)
    - task: AzureFunctionApp@1
      displayName: "Deploy logic app workflows"
      inputs:
        azureSubscription: "MyAZureSubscription"
        appType: "functionAppLinux"
        appName: "my-lapp-std-dev"
        package: "$(Pipeline.Workspace)/MyArtifactName"
        deploymentMethod: "zipDeploy"

 

Finalement, l’utilisation du Data Mapper n’ajoute pas d’étape de déploiement spécifique. En revanche, elle ajoute des artefacts qui doivent être présents dans le package de la Logic App Standard.

 

Bonnes pratiques

 

Versionner les schémas et les mappings

Les fichiers de schéma, les fichiers .lml et les fichiers .xslt doivent être placés sous contrôle de source.

Une modification de schéma peut avoir un impact direct sur plusieurs mappings. Ces changements doivent donc être traités comme des évolutions de contrats d’interface.

 

Traiter le XSLT comme un artefact généré

Lorsque la transformation est gérée avec le Data Mapper, il est préférable de modifier le fichier .lml depuis l’éditeur visuel, puis de régénérer le XSLT.

Une modification manuelle du fichier généré risque d’être perdue lors du prochain enregistrement du mapping.

Pour les besoins plus spécifiques, le Data Mapper permet d’intégrer des fragments XSLT ou d’utiliser des fonctions personnalisées.

 

Limites actuelles

 

À la date de rédaction de cet article, plusieurs limites doivent être prises en compte :

  • le Data Mapper est réservé aux projets Logic Apps Standard
  • l’éditeur est disponible dans Visual Studio Code, mais pas dans le portail Azure
  • la fonctionnalité Test map non disponible de manière native sur MacOS
  • les schémas CSV ne sont pas pris en charge

 

Ces limites ne remettent pas en cause l’intérêt de l’outil, mais elles doivent être analysées avant de choisir le Data Mapper pour une transformation complexe.

 

Conclusion

 

Le Data Mapper apporte à Azure Logic Apps Standard une expérience de transformation visuelle particulièrement utile pour les scénarios d’intégration structurés.

Il permet de séparer les règles de conversion de l’orchestration, de travailler à partir de schémas, de tester localement les transformations et de versionner les artefacts avec le reste du projet et également un avantage.

Il est particulièrement adapté aux équipes qui manipulent des contrats XML ou JSON complexes, mais peut aussi être utilisé dans le cadre d’une modernisation d’une plateforme d’intégration basée sur BizTalk Server, par exemple.

Pour les transformations simples, les actions Data Operations restent souvent suffisantes. En revanche, lorsque la structure des messages devient complexe ou que le mapping représente un véritable contrat d’intégration, le Data Mapper constitue une solution plus lisible, testable et maintenable.