Copier et transformer des données dans Dynamics 365 (Microsoft Dataverse) ou Dynamics CRM à l’aide d’Azure Data Factory ou d’Azure Synapse Analytics

S’APPLIQUE À : Azure Data Factory Azure Synapse Analytics

Conseil

Essayez Data Factory dans Microsoft Fabric, une solution d’analyse tout-en-un pour les entreprises. Microsoft Fabric couvre tous les aspects, du déplacement des données à la science des données, en passant par l’analyse en temps réel, l’aide à la décision et la création de rapports. Découvrez comment démarrer un nouvel essai gratuitement !

Cet article explique comment utiliser une activité de copie dans des pipelines Azure Data Factory ou Synapse pour copier des données depuis et vers Dynamics 365 (Microsoft Dataverse) ou Dynamics CRM, et comment utiliser un workflow pour transformer des données dans Dynamics 365 (Microsoft Dataverse) ou Dynamics CRM. Pour en savoir plus, lisez les articles d’introduction d’Azure Data Factory et d’Azure Synapse Analytics.

Fonctionnalités prises en charge

Ce connecteur est pris en charge pour les activités suivantes :

Fonctionnalités prises en charge IR
Activité de copie (source/récepteur) ① ②
Mappage de flux de données (source/récepteur)
Activité de recherche ① ②

① Runtime d’intégration Azure ② Runtime d’intégration auto-hébergé

Pour obtenir la liste des magasins de données prises en charge par l'activité de copie en tant que sources et récepteurs, consultez la table Magasins de données pris en charge.

Notes

En date de novembre 2020, Common Data Service a été renommé Microsoft Dataverse. Cet article est mis à jour pour refléter la terminologie la plus récente.

Ce connecteur Dynamics prend en charge Dynamics versions 7 à 9, aussi bien en ligne qu’en local. Plus précisément :

  • La version 7 mappe vers Dynamics CRM 2015.
  • La version 8 mappe vers Dynamics CRM 2016 et la version anticipée de Dynamics 365.
  • La version 9 mappe vers la dernière version de Dynamics 365.

Consultez le tableau suivant sur les configurations et les types d’authentification pris en charge pour en savoir plus sur les versions et produits Dynamics.

Versions de Dynamics Types d’authentification Exemples de services liés
Dataverse

Dynamics 365 (en ligne)

Dynamics CRM (en ligne)
Principal de service Microsoft Entra

Office 365

Identité managée affectée par l’utilisateur
Dynamics Online et principal de service Microsoft Entra, ou authentification Office 365
Dynamics 365 en local avec un déploiement accessible sur Internet (IFD)

Dynamics CRM 2016 local avec IFD

Dynamics CRM 2015 local avec IFD
IFD Dynamics local avec IFD et authentification IFD

Notes

Avec la dépréciation du Service de détection régionale, le service a été mis à niveau pour tirer profit du Service de détection globale tout en utilisant l’Authentification Office 365.

Important

Si votre locataire et votre utilisateur sont configurés dans Microsoft Entra ID pour l’accès conditionnel et/ou si l’authentification multifacteur est nécessaire, vous ne pourrez pas utiliser le type d’authentification Office 365. Dans ce cas, vous devez utiliser une authentification de principal de service Microsoft Entra.

Plus spécifiquement pour Dynamics 365, les types d’applications suivants sont pris en charge :

  • Dynamics 365 pour les ventes
  • Dynamics 365 pour le service client
  • Dynamics 365 pour le service après-vente
  • Dynamics 365 pour l’automatisation de service de projet
  • Dynamics 365 pour le marketing

Ce connecteur ne prend pas en charge d’autres types d’applications comme Finance, Operations et Talent.

Conseil

Pour copier des données issues de Dynamics 365 for Finance and Operations, vous pouvez utiliser le connecteur Dynamics AX.

Ce connecteur Dynamics se base sur les outils Dynamics XRM.

Prérequis

Pour utiliser ce connecteur avec l’authentification du principal de service Microsoft Entra, vous devez configurer une authentification S2S (serveur à serveur) dans Dataverse ou Dynamics. Commencez par inscrire l’utilisateur de l’application (principal de service) dans Microsoft Entra ID. Vous pouvez découvrir comment procéder ici. Lors de l’inscription de l’application, vous devez créer cet utilisateur dans Dataverse ou Dynamics et accorder des autorisations. Ces autorisations peuvent être accordées directement ou indirectement en ajoutant l’utilisateur de l’application à une équipe à laquelle des autorisations ont été accordées dans Dataverse ou Dynamics. Vous trouverez plus d’informations sur la configuration d’un utilisateur d’application pour l’authentification auprès de Dataverse ici.

Bien démarrer

Pour effectuer l’activité Copie avec un pipeline, vous pouvez vous servir de l’un des outils ou kits SDK suivants :

Créer un service lié à Dynamics 365 (Microsoft Dataverse) ou Dynamics CRM à l’aide de l’interface utilisateur

Utilisez les étapes suivantes pour créer un service lié à Dynamics 365 dans l’interface utilisateur du portail Azure.

  1. Accédez à l’onglet Gérer dans votre espace de travail Azure Data Factory ou Synapse et sélectionnez Services liés, puis cliquez sur Nouveau :

  2. Recherchez Dynamics ou Dataverse et sélectionnez le connecteur Dynamics 365 (Microsoft Dataverse) ou Dynamics CRM.

    Screenshot of the Dynamics 365 connector.

    Screenshot of the Dataverse connector.

  3. Configurez les informations du service, testez la connexion et créez le nouveau service lié.

    Screenshot of linked service configuration for Dynamics 365.

Informations de configuration des connecteurs

Les sections suivantes fournissent des informations détaillées sur les propriétés utilisées pour définir les entités spécifiques de Dynamics.

Propriétés du service lié

Les propriétés prises en charge pour le service lié Dynamics sont les suivantes :

Dynamics 365 et Dynamics CRM en ligne

Propriété Description Obligatoire
type La propriété type doit être définie sur « Dynamics », « DynamicsCrm » ou « CommonDataServiceForApps ». Oui
deploymentType Type de déploiement de l’instance Dynamics. La valeur doit être « En ligne » pour Dynamics en ligne. Oui
serviceUri URL du service de votre instance Dynamics, la même que celle à laquelle vous accédez à partir du navigateur. Par exemple, « https://<organization-name>.crm[x].dynamics.com ». Oui
authenticationType Type d’authentification pour se connecter à un serveur Dynamics. Les valeurs valides sont « AADServicePrincipal », « Office 365 » et « ManagedIdentity ». Oui
servicePrincipalId ID client de l’application Microsoft Entra. Oui lorsque l’authentification est « AADServicePrincipal »
servicePrincipalCredentialType Type d’informations d’identification à utiliser pour l’authentification de principal du service. Les valeurs valides sont « ServicePrincipalKey » et « ServicePrincipalCert ».

Remarque : il est recommandé d’utiliser ServicePrincipalKey. Il existe une limitation connue pour le type d’informations d’identification ServicePrincipalCert où le service peut rencontrer un problème temporaire d’échec de la récupération du secret à partir du coffre de clés.
Oui lorsque l’authentification est « AADServicePrincipal »
servicePrincipalCredential Informations d’identification du principal du service.

Quand vous utilisez « ServicePrincipalKey » comme type d’informations d’identification, servicePrincipalCredential peut être une chaîne chiffrée par le service lors du déploiement du service lié. Il peut aussi s’agir d’une référence à un secret dans Azure Key Vault.

Lorsque vous utilisez « ServicePrincipalCert » comme informations d’identification, servicePrincipalCredential doit faire référence à un certificat dans Azure Key Vault et vérifiez que le type de contenu du certificat est PKCS #12.
Oui lorsque l’authentification est « AADServicePrincipal »
username Nom d'utilisateur pour la connexion à Dynamics. Oui, lorsque l’authentification est « Office365 ».
mot de passe Mot de passe du compte d’utilisateur défini pour le nom d'utilisateur. Marquez ce champ avec « SecureString » afin de le stocker en toute sécurité, ou référencez un secret stocké dans Azure Key Vault. Oui, lorsque l’authentification est « Office365 ».
credentials Spécifiez l’identité managée affectée par l’utilisateur en tant qu’objet d’informations d’identification.

Créez une ou plusieurs identités managées affectées par l’utilisateur, attribuez-les à votre fabrique de données et créez des informations d’identification pour chaque identité managée affectée par l’utilisateur.
Oui, lorsque l’authentification est « ManagedIdentity »
connectVia Le runtime d’intégration à utiliser pour se connecter à la banque de données. Si aucune valeur n’est spécifiée, la propriété utilise le runtime d'intégration Azure par défaut. Non

Notes

Le connecteur Dynamics a précédemment utilisé la propriété facultative organizationName pour identifier votre instance Dynamics CRM ou Dynamics 365 en ligne. Pendant qu’il continue de fonctionner, vous êtes invité à spécifier à la place la nouvelle propriété serviceUri pour obtenir de meilleures performances pour l’instance de détection.

Exemple : Dynamics Online avec le principal de service Microsoft Entra et l’authentification par clé

{  
    "name": "DynamicsLinkedService",  
    "properties": {  
        "type": "Dynamics",  
        "typeProperties": {  
            "deploymentType": "Online",  
            "serviceUri": "https://<organization-name>.crm[x].dynamics.com",  
            "authenticationType": "AADServicePrincipal",  
            "servicePrincipalId": "<service principal id>",  
            "servicePrincipalCredentialType": "ServicePrincipalKey",  
            "servicePrincipalCredential": "<service principal key>"
        },  
        "connectVia": {  
            "referenceName": "<name of Integration Runtime>",  
            "type": "IntegrationRuntimeReference"  
        }  
    }  
}  

Exemple : Dynamics Online avec le principal de service Microsoft Entra et l’authentification par certificat

{ 
    "name": "DynamicsLinkedService", 
    "properties": { 
        "type": "Dynamics", 
        "typeProperties": { 
            "deploymentType": "Online", 
            "serviceUri": "https://<organization-name>.crm[x].dynamics.com", 
            "authenticationType": "AADServicePrincipal", 
            "servicePrincipalId": "<service principal id>", 
            "servicePrincipalCredentialType": "ServicePrincipalCert", 
            "servicePrincipalCredential": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<AKV reference>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<certificate name in AKV>" 
            } 
        }, 
        "connectVia": { 
            "referenceName": "<name of Integration Runtime>", 
            "type": "IntegrationRuntimeReference" 
        } 
    } 
} 

Exemple : Dynamics en ligne utilisant l’authentification Office 365

{
    "name": "DynamicsLinkedService",
    "properties": {
        "type": "Dynamics",
        "typeProperties": {
            "deploymentType": "Online",
            "serviceUri": "https://<organization-name>.crm[x].dynamics.com",
            "authenticationType": "Office365",
            "username": "test@contoso.onmicrosoft.com",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Exemple : Dynamics en ligne utilisant l’authentification via une identité managée affectée par l’utilisateur

{
    "name": "DynamicsLinkedService",
    "properties": {
        "type": "Dynamics",
        "typeProperties": {
            "deploymentType": "Online",
            "serviceUri": "https://<organization-name>.crm[x].dynamics.com",
            "authenticationType": "ManagedIdentity",
            "credential": {
                "referenceName": "credential1",
                "type": "CredentialReference"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Dynamics 365 et Dynamics CRM locaux avec IFD

Les propriétés supplémentaires comparables à celles de Dynamics en ligne sont hostName et port.

Propriété Description Obligatoire
type La propriété type doit être définie sur « Dynamics », « DynamicsCrm » ou « CommonDataServiceForApps ». Oui.
deploymentType Type de déploiement de l’instance Dynamics. La valeur doit être « OnPremisesWithIfd » pour Dynamics local avec IFD. Oui.
hostName Nom d’hôte du serveur Dynamics local. Oui.
port Port du serveur Dynamics local. Non. La valeur par défaut est 443.
organizationName Nom d’organisation de l’instance Dynamics. Oui.
authenticationType Type d’authentification pour se connecter au serveur Dynamics. Spécifiez « Ifd » pour Dynamics local avec IFD. Oui.
username Nom d'utilisateur pour la connexion à Dynamics. Oui.
mot de passe Le mot de passe du compte d’utilisateur que vous avez défini pour le nom d’utilisateur. Vous pouvez marquer ce champ avec « SecureString » pour le stocker en toute sécurité. Vous pouvez également stocker le mot de passe dans Key Vault et laisser l’activité de copie l’y récupérer quand vous effectuez une copie de données. Pour plus d’informations, consultez Stocker des informations d’identification dans Azure Key Vault. Oui.
connectVia Le runtime d’intégration à utiliser pour se connecter à la banque de données. Si aucune valeur n’est spécifiée, la propriété utilise le runtime d'intégration Azure par défaut. Non

Exemple : Dynamics local avec IFD utilisant l’authentification IFD

{
    "name": "DynamicsLinkedService",
    "properties": {
        "type": "Dynamics",
        "description": "Dynamics on-premises with IFD linked service using IFD authentication",
        "typeProperties": {
            "deploymentType": "OnPremisesWithIFD",
            "hostName": "contosodynamicsserver.contoso.com",
            "port": 443,
            "organizationName": "admsDynamicsTest",
            "authenticationType": "Ifd",
            "username": "test@contoso.onmicrosoft.com",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Propriétés du jeu de données

Pour obtenir la liste complète des sections et propriétés disponibles pour la définition de jeux de données, consultez l’article Jeux de données. Cette section fournit la liste des propriétés prises en charge par le jeu de données Dynamics.

Pour copier des données depuis et vers Dynamics, les propriétés suivantes sont prises en charge :

Propriété Description Obligatoire
type La propriété type du jeu de données doit être définie sur « DynamicsEntity », « DynamicsCrmEntity » ou « CommonDataServiceForAppsEntity ». Oui
entityName Nom logique de l’entité à récupérer. Non pour la source si « query » est spécifié dans la source de l’activité et oui pour le récepteur

Exemple

{
    "name": "DynamicsDataset",
    "properties": {
        "type": "DynamicsEntity",
        "schema": [],
        "typeProperties": {
            "entityName": "account"
        },
        "linkedServiceName": {
            "referenceName": "<Dynamics linked service name>",
            "type": "linkedservicereference"
        }
    }
}

Propriétés de l’activité de copie

Pour obtenir la liste complète des sections et des propriétés disponibles pour la définition des activités, consultez l’article Pipelines. Cette section fournit la liste des propriétés prises en charge par les types de source et de récepteur Dynamics.

Dynamics en tant que type de source

Pour copier des données depuis Dynamics, les propriétés suivantes sont prises en charge dans la section source de l’activité de copie :

Propriété Description Obligatoire
type La propriété type de la source de l’activité de copie doit être définie sur « DynamicsSource », « DynamicsCrmSource » ou « CommonDataServiceForAppsSource ». Oui
query FetchXML est un langage de requête propriétaire qui est utilisé dans Dynamics en ligne et local. Consultez l’exemple qui suit. Pour en savoir plus, consultez Générer des requêtes avec FetchXML. Non si entityName est spécifié dans le jeu de données

Notes

La colonne PK sera toujours copiée, même si la projection de colonne que vous avez configurée dans la requête FetchXML ne la contient pas.

Important

  • Lorsque vous copiez des données à partir de Dynamics, le mappage de colonnes explicite de Dynamics au récepteur est facultatif. Toutefois, nous recommandons vivement le mappage pour garantir un résultat de copie déterministe.
  • Lorsque le service importe un schéma dans l’interface utilisateur de création, il déduit le schéma. Pour ce faire, il échantillonne les premières lignes du résultat de la requête Dynamics pour initialiser la liste des colonnes sources. Dans ce cas, les colonnes sans valeurs dans les lignes du haut sont omises. Le même comportement s’applique aux exécutions de copies en l’absence d’un mappage explicite. Vous pouvez examiner le mappage et y ajouter des colonnes, ce qui sera respecté pendant l’exécution de la copie.

Exemple

"activities":[
    {
        "name": "CopyFromDynamics",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Dynamics input dataset>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "DynamicsSource",
                "query": "<FetchXML Query>"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Exemple de requête FetchXML

<fetch>
  <entity name="account">
    <attribute name="accountid" />
    <attribute name="name" />
    <attribute name="marketingonly" />
    <attribute name="modifiedon" />
    <order attribute="modifiedon" descending="false" />
    <filter type="and">
      <condition attribute ="modifiedon" operator="between">
        <value>2017-03-10 18:40:00z</value>
        <value>2017-03-12 20:40:00z</value>
      </condition>
    </filter>
  </entity>
</fetch>

Dynamics comme type de récepteur

Pour copier des données dans Dynamics, les propriétés suivantes sont prises en charge dans la section récepteur de l’activité de copie :

Propriété Description Obligatoire
type La propriété type du récepteur d’activité de copie doit être définie sur « DynamicsSink », « DynamicsCrmSink » ou « CommonDataServiceForAppsSink ». Oui.
writeBehavior Comportement d’écriture de l’opération. La valeur doit être « Upsert ». Oui
alternateKeyName Nom de clé de remplacement défini sur votre entité pour exécuter une opération upsert. Non.
writeBatchSize Nombre de lignes de données écrites dans Dynamics pour chaque lot. Non. La valeur par défaut est 10.
ignoreNullValues Indique s’il faut ignorer les valeurs null des données d’entrée autres que les champs clés lors d’une opération d’écriture.

Les valeurs valides sont TRUE et FALSE :
  • TRUE : Conserver les données dans l’objet de destination quand vous effectuez une opération upsert ou de mise à jour. Insérer une valeur définie par défaut lorsque vous effectuez une opération insert.
  • FALSE : Mettre à jour les données dans l’objet de destination avec la valeur null quand vous effectuez une opération upsert ou de mise à jour. Insérer une valeur null lorsque vous effectuez une opération insert.
Non. La valeur par défaut est FALSE.
maxConcurrentConnections La limite supérieure de connexions simultanées établies au magasin de données pendant l’exécution de l’activité. Spécifiez une valeur uniquement lorsque vous souhaitez limiter les connexions simultanées. Non

Notes

La valeur par défaut du récepteur writeBatchSize et de l’activité de copie parallelCopies pour le récepteur Dynamics est de 10. Par conséquent, 100 enregistrements sont soumis simultanément à Dynamics par défaut.

Pour Dynamics 365 (en ligne), il existe une limite de 52 appels simultanés de lot par organisation. Si cette limite est dépassée, une exception « Serveur occupé » est levée avant l’exécution de la première requête. Conservez une valeur writeBatchSize inférieure ou égale à 10 pour éviter la limitation des appels simultanés.

La combinaison optimale de writeBatchSize et parallelCopies dépend du schéma de votre entité. Les éléments de schéma incluent le nombre de colonnes, la taille des lignes et le nombre de plug-ins, de flux de travail ou d’activités de flux de travail raccordés à ces appels. Le paramètre par défaut de writeBatchSize (10) × parallelCopies (10) est la recommandation du service Dynamics. Cette valeur fonctionne pour la plupart des entités Dynamics, même si elle peut ne pas offrir les meilleures performances. Vous pouvez améliorer les performances en ajustant cette combinaison dans les paramètres de votre activité de copie.

Exemple

"activities":[
    {
        "name": "CopyToDynamics",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Dynamics output dataset>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "DynamicsSink",
                "writeBehavior": "Upsert",
                "writeBatchSize": 10,
                "ignoreNullValues": true
            }
        }
    }
]

Récupération des données à partir des vues

Pour récupérer des données à partir des vues Dynamics, vous devez obtenir la requête enregistrée de la vue et utiliser la requête pour obtenir les données.

Il existe deux entités qui stockent différents types de vues : « requête enregistrée » stocke la vue système et « requête utilisateur » stocke la vue utilisateur. Pour obtenir les informations des vues, reportez-vous à la requête FetchXML suivante en remplaçant « TARGETENTITY » par savedquery ou userquery. Chaque type d’entité a plus d’attributs disponibles que vous pouvez ajouter à la requête en fonction de vos besoins. En savoir plus sur l’entité savedquery et l’entité userquery.

<fetch top="5000" >
  <entity name="<TARGETENTITY>">
    <attribute name="name" />
    <attribute name="fetchxml" />
    <attribute name="returnedtypecode" />
    <attribute name="querytype" />
  </entity>
</fetch>

Vous pouvez également ajouter des filtres pour filtrer les vues. Par exemple, ajoutez le filtre suivant pour obtenir une vue nommée « Mes comptes actifs » dans l’entité de compte.

<filter type="and" >
    <condition attribute="returnedtypecode" operator="eq" value="1" />
    <condition attribute="name" operator="eq" value="My Active Accounts" />
</filter>

Mappage de type de données pour Dynamics

Lorsque vous copiez des données de Dynamics, la table suivante montre les mappages utilisés entre les types de données Dynamics et les types de données intermédiaires dans le service. Pour découvrir comment l’activité de copie mappe le schéma et le type de données sources au récepteur, consultez Mappages de schémas et de types de données.

Configurez le type de données intermédiaire correspondant dans une structure du jeu de données en fonction du type de données Dynamics de votre source à l’aide de la table de mappage suivante :

Type de données Dynamics Type de données de service intermédiaire Prise en charge en tant que source Prise en charge en tant que récepteur
AttributeTypeCode.BigInt Long
AttributeTypeCode.Boolean Boolean
AttributeType.Customer GUID ✓ (Consultez les conseils)
AttributeType.DateTime Datetime
AttributeType.Decimal Decimal
AttributeType.Double Double
AttributeType.EntityName String
AttributeType.Integer Int32
AttributeType.Lookup GUID ✓ (Consultez les conseils)
AttributeType.ManagedProperty Boolean
AttributeType.Memo String
AttributeType.Money Decimal
AttributeType.Owner GUID ✓ (Consultez les conseils)
AttributeType.Picklist Int32
AttributeType.Uniqueidentifier GUID
AttributeType.String String
AttributeType.State Int32
AttributeType.Status Int32

Notes

Les types de données AttributeType.CalendarRules, AttributeType.MultiSelectPicklist et AttributeType.PartyList de Dynamics ne sont pas pris en charge.

Écriture de données dans un champ de recherche

Pour écrire des données dans un champ de recherche avec plusieurs cibles comme le client et le propriétaire, suivez les instructions et les exemples suivants :

  1. Faites en sorte que votre source contienne à la fois la valeur du champ et le nom de l’entité cible correspondante.

    • Si tous les enregistrements sont mappés à la même entité cible, assurez-vous que l’une des conditions suivantes est présente :
      • Vos données sources comportent une colonne qui stocke le nom de l’entité cible.
      • Vous avez ajouté une colonne supplémentaire dans la source de l’activité de copie pour définir l’entité cible.
    • Si différents enregistrements sont mappés à des entités cibles différentes, assurez-vous que vos données sources contiennent une colonne qui stocke le nom de l’entité cible correspondante.
  2. Mappez la valeur et les colonnes de référence d’entité de la source au récepteur. La colonne de référence d’entité doit être mappée à une colonne virtuelle avec le modèle d’affectation de noms spécial {lookup_field_name}@EntityReference. La colonne n’existe pas réellement dans Dynamics. Elle est utilisée pour indiquer que cette colonne est la colonne de métadonnées du champ de recherche multicible donné.

Supposons, par exemple, que la source comporte les deux colonnes suivantes :

  • La colonne CustomerField de type GUID, qui est la valeur de clé primaire de l’entité cible dans Dynamics.
  • La colonne Target de type String, qui est le nom logique de l’entité cible.

Supposons également que vous souhaitez copier ces données dans le champ de l’entité Dynamics du récepteur CustomerField de type Customer.

Dans le mappage de colonne de copie-activité, mappez les deux colonnes comme suit :

  • CustomerField pour CustomerField. Ce mappage est le mappage de champs normal.
  • Cible pour CustomerField@EntityReference. La colonne du récepteur est une colonne virtuelle représentant la référence d’entité. Saisissez les noms de champs dans un mappage, car ils ne s’affichent pas en important des schémas.

Dynamics lookup-field column mapping

Si tous vos enregistrements sources sont mappés à la même entité cible et que vos données sources ne contiennent pas le nom de l’entité cible, voici un raccourci : dans la source de l’activité de copie, ajoutez une colonne supplémentaire. Nommez la nouvelle colonne à l’aide du modèle {lookup_field_name}@EntityReference, définissez la valeur sur le nom de l’entité cible, puis poursuivez le mappage de colonne comme d’habitude. Si vos noms de colonne source et récepteur sont identiques, vous pouvez également ignorer le mappage de colonnes explicite, car l’activité de copie par défaut mappe les colonnes par nom.

Dynamics lookup-field adding an entity-reference column

Écriture de données dans un champ de recherche via des clés alternatives

Pour écrire des données dans un champ de recherche en utilisant des colonnes de clés alternatives, suivez ces instructions et ces exemples :

  1. Vérifiez que votre source contient toutes les colonnes clés de recherche.

  2. Les colonnes clés alternatives doivent être mappées à la colonne avec le modèle de nommage spécial {lookup_field_name}@{alternate_key_column_name}. La colonne n’existe pas dans Dynamics. Elle est utilisée pour indiquer que cette colonne est utilisée pour rechercher l’enregistrement dans l’entité cible.

  3. Accédez à l’onglet Mappage dans la transformation du récepteur des flux de données de mappage. Sélectionnez la clé alternative comme colonne de sortie sous le champ Recherche. La valeur qui la suit indique les colonnes clés de cette clé alternative.

    Screenshot shows selecting alternate key columns.

  4. Une fois sélectionnée, les colonnes clés alternatives s’affichent automatiquement en dessous.

    Screenshot shows mapping columns to lookup fields via alternate keys step 1.

  5. Mappez vos colonnes d’entrée à gauche avec les colonnes de sortie.

    Screenshot shows mapping columns to lookup fields via alternate keys step 2.

Remarque

Actuellement, cela n’est pris en charge que lorsque vous utilisez le mode inlined dans la transformation du récepteur des flux de données de mappage.

Propriétés du mappage de flux de données

Lors de la transformation de données dans le flux de données de mappage, vous pouvez lire et écrire des données dans les tables Dynamics. Pour plus d’informations, consultez la transformation de la source et la transformation du récepteur dans le flux de données de mappage. Vous pouvez choisir d’utiliser un jeu de données Dynamics ou un jeu de données inlined en tant que type de source et de récepteur.

Transformation de la source

Le tableau ci-dessous répertorie les propriétés prises en charge par Dynamics. Vous pouvez modifier ces propriétés sous l’onglet Options de la source.

Nom Description Obligatoire Valeurs autorisées Propriété du script de flux de données
Nom de l’entité Nom logique de l’entité à récupérer. Oui, lorsque vous utilisez un jeu de données inline - (pour le jeu de données inlined uniquement)
entité
Requête FetchXML est un langage de requête propriétaire qui est utilisé dans Dynamics en ligne et local. Consultez l’exemple qui suit. Pour en savoir plus, consultez Générer des requêtes avec FetchXML. Non String query

Notes

Si vous sélectionnez Requête comme type d’entrée, le type de colonne des tables ne peut pas être récupéré. Il sera traité comme une chaîne par défaut.

Exemple de script source Dynamics

Lorsque vous utilisez un jeu de données Dynamics comme type de source, le script de flux de données associé est le suivant :

source(allowSchemaDrift: true,
	validateSchema: false,
	query: '<fetch mapping='logical' count='3 paging-cookie=''><entity name='new_dataflow_crud_test'><attribute name='new_name'/><attribute name='new_releasedate'/></entity></fetch>') ~> DynamicsSource

Si vous utilisez un jeu de données inlined, le script de flux de données associé est le suivant :

source(allowSchemaDrift: true,
	validateSchema: false,
	store: 'dynamics',
	format: 'dynamicsformat',
	entity: 'Entity1',
	query: '<fetch mapping='logical' count='3 paging-cookie=''><entity name='new_dataflow_crud_test'><attribute name='new_name'/><attribute name='new_releasedate'/></entity></fetch>') ~> DynamicsSource

Transformation du récepteur

Le tableau ci-dessous répertorie les propriétés prises en charge par un récepteur Dynamics. Vous pouvez modifier ces propriétés sous l’onglet Options du récepteur.

Name Description Obligatoire Valeurs autorisées Propriété du script de flux de données
Nom alternatif de la clé Nom de clé de remplacement défini sur votre entité pour exécuter une opération de mise à jour, upsert ou suppression. Non - alternateKeyName
Mettre à jour la méthode Spécifiez les opérations autorisées sur la destination de votre base de données. Par défaut, seules les insertions sont autorisées.
Pour mettre à jour, effectuer un upsert ou supprimer des lignes, une transformation de modification de ligne est requise afin de baliser les lignes relatives à ces actions.
Oui true ou false insertable
updateable
upsertable
deletable
Nom de l’entité Nom logique de l’entité à écrire. Oui, lorsque vous utilisez un jeu de données inline - (pour le jeu de données inlined uniquement)
entité

Exemple de script de récepteur Dynamics

Lorsque vous utilisez un jeu de données Dynamics comme type de récepteur, le script de flux de données associé est le suivant :

IncomingStream sink(allowSchemaDrift: true,
    validateSchema: false,
    deletable:true,
    insertable:true,
    updateable:true,
    upsertable:true,
    skipDuplicateMapInputs: true,
    skipDuplicateMapOutputs: true) ~> DynamicsSink

Si vous utilisez un jeu de données inlined, le script de flux de données associé est le suivant :

IncomingStream sink(allowSchemaDrift: true,
    validateSchema: false,
    store: 'dynamics',
    format: 'dynamicsformat',
    entity: 'Entity1',
    deletable: true,
    insertable: true,
    updateable: true,
    upsertable: true,
    skipDuplicateMapInputs: true,
    skipDuplicateMapOutputs: true) ~> DynamicsSink

Propriétés de l’activité Lookup

Pour en savoir plus sur les propriétés, consultez Activité Lookup.

Consultez les magasins de données pris en charge pour obtenir la liste des magasins de données pris en charge en tant que sources et récepteurs par l’activité de copie.