Compartir vía


Copia y transformación de datos en Dynamics 365 (Microsoft Dataverse) o Dynamics CRM mediante Azure Data Factory o Azure Synapse Analytics

SE APLICA A: Azure Data Factory Azure Synapse Analytics

Sugerencia

Pruebe Data Factory en Microsoft Fabric, una solución de análisis todo en uno para empresas. Microsoft Fabric abarca todo, desde el movimiento de datos hasta la ciencia de datos, el análisis en tiempo real, la inteligencia empresarial y los informes. ¡Obtenga más información sobre cómo iniciar una nueva evaluación gratuita!

En este artículo se describe cómo usar una actividad de copia en canalizaciones de Azure Data Factory o Synapse para copiar datos desde y hacia Dynamics 365 (Microsoft Dataverse) o Dynamics CRM, y cómo usar un flujo de datos para transformar datos en Dynamics 365 (Microsoft Dataverse) o Dynamics CRM. Para obtener más información, lea los artículos de introducción a Azure Data Factory y Azure Synapse Analytics.

Funcionalidades admitidas

Este conector es compatible con las actividades siguientes:

Funcionalidades admitidas IR
Actividad de copia (origen/receptor) ① ②
Flujo de datos de asignación (origen/receptor)
Actividad de búsqueda ① ②

① Azure Integration Runtime ② Entorno de ejecución de integración autohospedado

Consulte la tabla de almacenes de datos que se admiten para ver una lista de los almacenes de datos que la actividad de copia admite como orígenes y receptores.

Nota

Desde noviembre de 2020, se cambió el nombre de Common Data Service por Microsoft Dataverse. Este artículo se actualiza para reflejar la terminología más reciente.

Este conector de Dynamics es compatible con las versiones 7 a 9.x de Dynamics, tanto en línea como en el entorno local. Más concretamente:

  • La versión 7 se asigna a Dynamics CRM 2015.
  • La versión 8 se asigna a Dynamics CRM 2016 y a la versión anterior de Dynamics 365.
  • La versión 9 se asigna a la versión más reciente de Dynamics 365.

Consulte en la tabla siguiente los tipos y configuraciones de autenticación compatibles para las versiones o productos de Dynamics.

Versiones de Dynamics Tipos de autenticación Ejemplos de servicios vinculados
Dataverse

Dynamics 365 Online

Dynamics CRM Online
Entidad de servicio de Microsoft Entra

Office 365

Identidad administrada asignada por el usuario
Autenticación de Office 365 o entidad de servicio de Microsoft Entra y Dynamics en línea
Dynamics 365 en el entorno local con implementación con conexión a Internet (IFD)

Dynamics CRM 2016 local con IFD

Dynamics CRM 2015 local con IFD
IFD Dynamics en el entorno local con IFD y la autenticación de IFD

Nota

Con el desuso del servicio de detección regional, el servicio se ha actualizado para aprovechar el servicio de detección global mientras se usa la autenticación de Office 365.

Importante

El inquilino y el usuario están configurados en Microsoft Entra ID para el acceso condicional, o bien, si la autenticación multifactor es necesaria, no podrá usar el tipo de autenticación de Office 365. En esas situaciones, debe usar una autenticación de entidad de servicio de Microsoft Entra.

Para Dynamics 365 en concreto, se admiten los siguientes tipos de aplicación:

  • Dynamics 365 for Sales
  • Dynamics 365 for Customer Service
  • Dynamics 365 for Field Service
  • Dynamics 365 for Project Service Automation
  • Dynamics 365 for Marketing

Este conector no admite otros tipos de aplicaciones como Finance, Operations o Talent.

Sugerencia

Para copiar datos desde Dynamics 365 Finance and Operations, puede usar el conector de Dynamics AX.

Este conector de Dynamics se basa en las herramientas de Dynamics XRM.

Requisitos previos

Para usar este conector con la autenticación de la entidad de servicio de Microsoft Entra, debe configurar la autenticación de servidor a servidor (S2S) en Dataverse o Dynamics. En primer lugar, registre el usuario de la aplicación (entidad de servicio) en Microsoft Entra ID. Puede descubrir cómo hacerlo aquí. Durante el registro de la aplicación, deberá crear ese usuario en Dataverse o Dynamics y conceder permisos. Estos permisos se pueden conceder directa o indirectamente si se agrega el usuario de la aplicación a un equipo al que se han concedido permisos en Dataverse o Dynamics. Puede encontrar más información sobre cómo configurar un usuario de la aplicación para autenticarse con Dataverse aquí.

Introducción

Para realizar la actividad de copia con una canalización, puede usar una de los siguientes herramientas o SDK:

Creación de un servicio vinculado a Dynamics 365 (Microsoft Dataverse) o Dynamics CRM mediante la interfaz de usuario

Siga estos pasos para crear un servicio vinculado a Dynamics 365 en la interfaz de usuario de Azure Portal.

  1. Vaya a la pestaña Administrar del área de trabajo de Azure Data Factory o Synapse y seleccione Servicios vinculados; luego haga clic en Nuevo:

  2. Busque Dynamics o Dataverse y seleccione Dynamics 365 (Microsoft Dataverse) o el conector de Dynamics CRM.

    Captura de pantalla del conector de Dynamics 365.

    Captura de pantalla del conector Dataverse.

  3. Configure los detalles del servicio, pruebe la conexión y cree el nuevo servicio vinculado.

    Captura de pantalla de la configuración del servicio vinculado en Dynamics 365.

Detalles de configuración del conector

En las secciones siguientes se proporcionan detalles sobre las propiedades que se usan para definir entidades específicas de Dynamics.

Propiedades del servicio vinculado

Las siguientes propiedades son compatibles con el servicio vinculado de Dynamics.

Dynamics 365 y Dynamics CRM en línea

Propiedad Descripción Obligatorio
type La propiedad type debe establecerse en "Dynamics", "DynamicsCrm" o "CommonDataServiceForApps".
deploymentType El tipo de implementación de la instancia de Dynamics. El valor debe ser "Online" para Dynamics en línea.
serviceUri Dirección URL de servicio de la instancia de Dynamics, la misma a la que se accede desde el explorador. Un ejemplo es "https://<organization-name>.crm[x].dynamics.com".
authenticationType Tipo de autenticación para conectarse a un servidor de Dynamics. Los valores válidos son "AADServicePrincipal", "Office365" y "ManagedIdentity".
servicePrincipalId El identificador de cliente de la aplicación de Microsoft Entra. Sí, cuando la autenticación es "AADServicePrincipal"
servicePrincipalCredentialType Tipo de credencial que se usará para la autenticación de entidad de servicio. Los valores válidos son "ServicePrincipalKey" y "ServicePrincipalCert".

Nota: Se recomienda usar ServicePrincipalKey. Hay una limitación conocida para el tipo de credencial ServicePrincipalCert, donde el servicio puede encontrar un problema transitorio de no recuperar el secreto del almacén de claves.
Sí, cuando la autenticación es "AADServicePrincipal"
servicePrincipalCredential Credencial de entidad de seguridad de servicio.

Cuando se usa "ServicePrincipalKey" como tipo de credencial, servicePrincipalCredential puede ser una cadena que el servicio cifra en la implementación del servicio vinculado. O bien, puede ser una referencia a un secreto en Azure Key Vault.

Cuando use "ServicePrincipalCert" como credencial, servicePrincipalCredential debe ser una referencia a un certificado en Azure Key Vault, y asegúrese de que el tipo de contenido del certificado sea PKCS #12.
Sí, cuando la autenticación es "AADServicePrincipal"
username Nombre de usuario para conectarse a Dynamics. Sí, cuando la autenticación es "Office365"
password Contraseña de la cuenta de usuario que especificó como nombre de usuario. Marque este campo como "SecureString" para almacenarlo de forma segura, o bien haga referencia a un secreto almacenado en Azure Key Vault. Sí, cuando la autenticación es "Office365"
credentials Especifique la identidad administrada asignada por el usuario como objeto de credencial.

Cree una o varias identidades administradas asignadas por el usuario, asígnelas a la factoría de datos y cree credenciales para cada identidad.
Sí, cuando la autenticación es "ManagedIdentity"
connectVia El entorno de ejecución de integración que se usará para conectarse al almacén de datos. Si no se especifica ningún valor, la propiedad usa el entorno de ejecución de integración de Azure predeterminado. No

Nota

El conector de Dynamics usaba antes la propiedad opcional organizationName para identificar la instancia de Dynamics CRM o Dynamics 365 en línea. Mientras la propiedad siga funcionando, es preferible especificar la nueva propiedad serviceUri en su lugar para lograr un mejor rendimiento de detección de la instancia.

Ejemplo: Dynamics en línea con la entidad de servicio de Microsoft Entra y autenticación de claves

{  
    "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"  
        }  
    }  
}  

Ejemplo: Dynamics en línea con la entidad de servicio de Microsoft Entra y autenticación de certificados

{ 
    "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" 
        } 
    } 
} 

Ejemplo: Dynamics en línea mediante la autenticación de 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"
        }
    }
}

Ejemplo: uso de la autenticación de identidad administrada asignada por el usuario por parte de Dynamics Online

{
    "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 y Dynamics CRM local con IFD

Las propiedades adicionales, en comparación con Dynamics en línea, son hostName y port.

Propiedad Descripción Obligatorio
type La propiedad type debe establecerse en "Dynamics", "DynamicsCrm" o "CommonDataServiceForApps".
deploymentType El tipo de implementación de la instancia de Dynamics. Debe ser "OnPremisesWithIfd" para Dynamics en el entorno local con IFD.
hostName El nombre de host del servidor local de Dynamics.
port El puerto del servidor local de Dynamics. No. El valor predeterminado es 443.
organizationName El nombre de la organización de la instancia de Dynamics.
authenticationType Tipo de autenticación para conectarse al servidor de Dynamics. Especifique "ActiveDirectoryAuthentication" para Dynamics local con IFD.
dominio Dominio de Active Directory que comprobará las credenciales de usuario.
username Nombre de usuario para conectarse a Dynamics.
password Contraseña de la cuenta de usuario especificada para el nombre de usuario. Este campo se puede marcar como "SecureString" para almacenarlo de forma segura. También puede almacenar una contraseña en Key Vault y permitir que la actividad de copia se extraiga desde allí cuando realice la copia de datos. Más información sobre Almacenamiento de credenciales en Key Vault.
connectVia El entorno de ejecución de integración que se usará para conectarse al almacén de datos. Si no se especifica ningún valor, la propiedad usa el entorno de ejecución de integración de Azure predeterminado. No

Nota:

Debido a la desaparición del tipo de autenticación Ifd el 31 de agosto de 2024, actualice al tipo de autenticación Active Directory antes de la fecha si lo está utilizando actualmente.

Ejemplo: Dynamics local con IFD mediante la autenticación de Active Directory

{
    "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": "ActiveDirectoryAuthentication",
            "domain": "< Active Directory domain >", 
            "username": "test@contoso.onmicrosoft.com",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Propiedades del conjunto de datos

Si desea ver una lista completa de las secciones y propiedades disponibles para definir conjuntos de datos, consulte el artículo sobre conjuntos de datos. En esta sección se proporciona una lista de las propiedades que admite el conjunto de datos de Dynamics.

Para copiar datos con Dynamics como origen o destino, se admiten las siguientes propiedades:

Propiedad Descripción Obligatorio
type La propiedad type del conjunto de datos debe establecerse en "DynamicsEntity", "DynamicsCrmEntity" o "CommonDataServiceForAppsEntity".
entityName El nombre lógico de la entidad que se va a recuperar. No para el origen si se especifica "query" en el origen de la actividad y sí para el receptor

Ejemplo

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

Propiedades de la actividad de copia

Si desea ver una lista completa de las secciones y propiedades disponibles para definir actividades, consulte el artículo sobre canalizaciones. En esta sección se proporciona una lista de las propiedades que admite el tipo de origen y el tipo de receptor de Dynamics.

Dynamics como tipo de origen

Para copiar datos desde Dynamics, en la sección source de la actividad de copia se admiten las siguientes propiedades:

Propiedad Descripción Obligatorio
type La propiedad type del origen de la actividad de copia debe establecerse en "DynamicsSource", "DynamicsCrmSource" o "CommonDataServiceForAppsSource".
Query FetchXML es un lenguaje de consulta patentado que se usa en Dynamics en línea y en el entorno local. Consulte el ejemplo siguiente. Para más información, consulte Build queries with FetchXML (Creación de consultas con FetchXML). No, si se especifica entityName en el conjunto de datos

Nota

La columna PK siempre se copiará incluso si la proyección de columna que se configura en la consulta de FetchXML no la contiene.

Importante

  • Al copiar datos desde Dynamics, la asignación de columnas explícita de Dynamics al receptor es opcional. Sin embargo, se recomienda encarecidamente la asignación para garantizar un resultado de copia determinista.
  • Cuando el servicio importa un esquema en la interfaz de usuario de creación, lo infiere. Para ello, muestrea las primeras filas del resultado de la consulta de Dynamics a fin de inicializar la lista de columnas de origen. En ese caso, se omiten las columnas sin valores en las filas superiores. El mismo comportamiento se aplica también a la vista previa de los datos y a las ejecuciones de copia si no existe una asignación explícita. Puede revisar y agregar más columnas a la asignación, que se respetarán durante el tiempo de ejecución de la copia.

Ejemplo

"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>"
            }
        }
    }
]

Consulta FetchXML de ejemplo

<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 como tipo de receptor

Para copiar datos a Dynamics, la sección sink de la actividad de copia admite las siguientes propiedades:

Propiedad Descripción Obligatorio
type La propiedad type del receptor de la actividad de copia debe establecerse en "DynamicsSink", "DynamicsCrmSink" o "CommonDataServiceForAppsSink". Sí.
writeBehavior El comportamiento de escritura de la operación. El valor debe ser "Upsert".
alternateKeyName Nombre de clave alternativo definido en la entidad para realizar una operación de actualización e inserción. No.
writeBatchSize El recuento de filas de datos escritos en Dynamics en cada lote. No. El valor predeterminado es 10.
ignoreNullValues Si durante la operación de escritura se omiten los valores nulos de los datos de entrada excepto los campos de clave.

Los valores válidos son TRUE y FALSE:
  • TRUE: deje los datos del objeto de destino sin cambiar cuando realice una operación upsert o update. Inserta un valor predeterminado definido al realizar una operación insert.
  • FALSE: actualice los datos del objeto de destino a un valor NULL cuando realice una operación de actualización e inserción, o bien de actualización. Inserte un valor NULL al realizar una operación de inserción.
No. El valor predeterminado es FALSE.
maxConcurrentConnections Número máximo de conexiones simultáneas establecidas en el almacén de datos durante la ejecución de la actividad. Especifique un valor solo cuando quiera limitar las conexiones simultáneas. No

Nota

El valor predeterminado tanto del receptor writeBatchSize como de la actividad de copia parallelCopies del receptor de Dynamics es 10. Por lo tanto, se envían 100 registros simultáneamente de forma predeterminada a Dynamics.

Para Dynamics 365 en línea, hay un límite de 52 llamadas por lotes simultáneas por organización. Si se supera ese límite, se produce un error de "Servidor ocupado" antes incluso de que se ejecute la primera solicitud. Mantenga writeBatchSize en 10 o menos para evitar la limitación de llamadas simultáneas.

La combinación óptima de writeBatchSize y parallelCopies depende del esquema de la entidad. Los elementos del esquema incluyen el número de columnas, tamaño de las filas y número de complementos, flujos de trabajo o actividades de flujo de trabajo enlazadas a esas llamadas. La configuración predeterminada de writeBatchSize (10) x parallelCopies (10) es la recomendación de acuerdo con el servicio Dynamics. Este valor funciona con la mayoría de las entidades de Dynamics, aunque es posible que no ofrezca el mejor rendimiento. Para optimizar el rendimiento, ajuste la combinación en su configuración de la actividad de copia.

Ejemplo

"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
            }
        }
    }
]

Recuperación de datos de las vistas

Para recuperar datos de las vistas de Dynamics, debe obtener la consulta guardada de la vista y usar la consulta para obtener los datos.

Hay dos entidades que almacenan distintos tipos de vista: "consulta guardada" almacena la vista del sistema "consulta de usuario" almacena la vista del usuario. Para obtener información de las vistas, consulte la siguiente consulta FetchXML y reemplace "TARGETENTITY" por savedquery o userquery. Cada tipo de entidad tiene más atributos disponibles que puede agregar a la consulta en función de sus necesidades. Obtenga más información sobre la entidad savedquery y la entidad userquery.

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

También puede agregar filtros para filtrar las vistas. Por ejemplo, agregue el siguiente filtro para obtener una vista denominada "Mis cuentas activas" en entidad de cuenta.

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

Asignación de tipos datos de Dynamics

Al copiar los datos desde Dynamics, la tabla siguiente muestra las asignaciones de tipos de datos de Dynamics a los tipos de datos provisionales del servicio. Para obtener información acerca de la forma en que la actividad de copia asigna el esquema de origen y el tipo de datos a un receptor, consulte Asignación de esquemas en la actividad de copia.

Configure el tipo de datos provisional correspondiente en la estructura del conjunto de datos en función del tipo de datos de Dynamics de origen mediante la siguiente tabla de asignación:

Tipo de datos de Dynamics Tipo de datos provisional del servicio Se admite como origen Se admite como receptor
AttributeTypeCode.BigInt long
AttributeTypeCode.Boolean Boolean
AttributeType.Customer GUID ✓ (Consulte guía)
AttributeType.DateTime Datetime
AttributeType.Decimal Decimal
AttributeType.Double Double
AttributeType.EntityName String
AttributeType.Integer Int32
AttributeType.Lookup GUID ✓ (Consulte guía)
AttributeType.ManagedProperty Boolean
AttributeType.Memo String
AttributeType.Money Decimal
AttributeType.Owner GUID ✓ (Consulte guía)
AttributeType.Picklist Int32
AttributeType.Uniqueidentifier GUID
AttributeType.String String
AttributeType.State Int32
AttributeType.Status Int32

Nota

Los tipos de datos AttributeType.CalendarRules, AttributeType.MultiSelectPicklist y AttributeType.PartyList no se admiten.

Escritura de datos en un campo de búsqueda

Para escribir datos en un campo de búsqueda con varios destinos como Customer y Owner, siga estas instrucciones y el ejemplo:

  1. Haga que el origen contenga tanto el valor del campo como el nombre de la entidad de destino correspondiente.

    • Si todos los registros se asignan a la misma entidad de destino, asegúrese una de las siguientes condiciones:
      • Los datos de origen tienen una columna que almacena el nombre de la entidad de destino.
      • Ha agregado una columna adicional en el origen de la actividad de copia para definir la entidad de destino.
    • Si hay registros diferentes asignados a diferentes entidades de destino, asegúrese de que los datos de origen tengan una columna que almacene el nombre de la entidad de destino correspondiente.
  2. Asigne tanto las columnas de valor y de referencia de entidad del origen al receptor. La columna de referencia de entidad debe asignarse a una columna virtual con el patrón de nomenclatura especial {lookup_field_name}@EntityReference. La columna no existe realmente en Dynamics. Se usa para indicar que es la columna de metadatos del campo de búsqueda de múltiples destinos especificado.

Establecer el campo Propietario

Al establecer el campo Propietario en Dynamics 365 (Microsoft Dataverse) o Dynamics CRM, es importante proporcionar una referencia válida. Las opciones válidas para la @EntityReference son:

  • systemuser: esto hace referencia a un usuario individual dentro del sistema.
  • team: esto hace referencia a un equipo de usuarios dentro de la organización.

Asegúrese de que el valor proporcionado corresponde a una de estas opciones para evitar errores durante la transformación de datos.

Por ejemplo, suponga que el origen tiene estas dos columnas:

  • CustomerField columna de tipo GUID, que es el valor de clave principal de la entidad de destino en Dynamics.
  • Target columna de tipo String, que es el nombre lógico de la entidad de destino.

Supongamos también que desea copiar estos datos al campo de entidad de Dynamics receptor CustomerField de tipo Customer.

En la asignación de columnas de copia y actividad, asigne las dos columnas como se indica a continuación:

  • CustomerField a CustomerField. Se trata de la asignación de campos normal.
  • Destino a CustomerField@EntityReference. La columna de receptor es una columna virtual que representa la referencia de entidad. Escriba estos nombres de campo en una asignación, ya que no se mostrarán mediante la importación de esquemas.

Asignación de columnas de campo de búsqueda de Dynamics

Si todos los registros de origen se asignan a la misma entidad de destino y los datos de origen no contienen el nombre de la entidad de destino, este es un acceso directo: en el origen de la actividad de copia, agregue una columna adicional. Asigne un nombre a la nueva columna mediante el patrón {lookup_field_name}@EntityReference, establezca el valor en el nombre de la entidad de destino y, después, continúe con la asignación de columnas como de costumbre. Si los nombres de las columnas del origen y el receptor son idénticos, también puede omitir la asignación de columnas explícita, ya que la actividad de copia asigna las columnas por nombre de forma predeterminada.

Campo de búsqueda de Dynamics que agrega una columna de referencia de entidad

Escribir datos en un campo de búsqueda mediante claves alternativas

Para escribir datos en un campo de búsqueda mediante columnas de clave alternativas, siga esta guía y este ejemplo:

  1. Asegúrese de que el origen contenga todas las columnas de clave de búsqueda.

  2. Las columnas de clave alternativas deben asignarse a la columna con el patrón de nomenclatura especial {lookup_field_name}@{alternate_key_column_name}. La columna no existe en Dynamics. Se usa para indicar que esta columna se usa para buscar el registro en la entidad de destino.

  3. Vaya a la pestaña Asignación en la transformación de receptor de los flujos de datos de asignación. Seleccione la clave alternativa como columnas de salida en el campo Búsqueda. Después, el valor indicará las columnas de clave de esta clave alternativa.

    Captura de pantalla que muestra la selección de columnas de claves alternativas.

  4. Una vez seleccionada, las columnas de clave alternativas se mostrarán automáticamente a continuación.

    Captura de pantalla que muestra la asignación de columnas a los campos de búsqueda a través de claves alternativas, paso 1.

  5. Asigne las columnas de entrada a la izquierda con las columnas de salida.

    Captura de pantalla que muestra la asignación de columnas a campos de búsqueda a través de claves alternativas, paso 2.

Nota

Actualmente, solo se admite cuando se usa el modo alienado en la transformación de receptor de los flujos de datos de asignación.

Propiedades de Asignación de instancias de Data Flow

Al transformar datos en un flujo de datos de asignación, puede leer y escribir en tablas de Dynamics. Para más información, vea la transformación de origen y la transformación de receptor en Asignación de Data Flow. Puede optar por usar un conjunto de datos de Dynamics o un conjunto de datos alineado como tipo de origen y receptor.

Transformación de origen

En la tabla siguiente se enumeran las propiedades que admite Dynamics. Puede editar estas propiedades en la pestaña Source options (Opciones de origen).

Nombre Descripción Obligatorio Valores permitidos Propiedad de script de flujo de datos
Nombre de entidad El nombre lógico de la entidad que se va a recuperar. Sí, cuando se usa el conjunto de datos insertado - (solo para conjunto de datos en línea)
Entidad
Consultar FetchXML es un lenguaje de consulta patentado que se usa en Dynamics en línea y en el entorno local. Consulte el ejemplo siguiente. Para más información, consulte Build queries with FetchXML (Creación de consultas con FetchXML). No String Query

Nota:

Si selecciona Consulta como tipo de entrada, no se puede recuperar el tipo de columna de las tablas. Se tratará como cadena de forma predeterminada.

Ejemplo de script de origen de Dynamics

Cuando se usa el conjunto de datos de Dynamics como tipo de origen, el script de flujo de datos asociado es el siguiente:

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 se usa un conjunto de datos en línea, el script de flujo de datos asociado es:

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

Transformación de receptor

En la tabla siguiente se enumeran las propiedades que admite un receptor de Dynamics. Puede editar estas propiedades en la pestaña Opciones del receptor.

Nombre Descripción Obligatorio Valores permitidos Propiedad de script de flujo de datos
Nombre de clave alternativo Nombre de clave alternativo definido en la entidad para realizar una operación de actualización, inserción o eliminación. No - alternateKeyName
Método de actualización Especifique qué operaciones se permiten en el destino de la base de datos. El valor predeterminado es permitir solamente las inserciones.
Para actualizar, upsert o eliminar filas, se requiere una transformación de alteración de fila a fin de etiquetar filas para esas acciones.
true o false insertable
updateable
upsertable
deletable
Nombre de entidad El nombre lógico de la entidad que se va a escribir. Sí, cuando se usa el conjunto de datos insertado - (solo para conjunto de datos en línea)
Entidad

Ejemplo de script de receptor de Dynamics

Cuando se usa el conjunto de datos de Dynamics como tipo de receptor, el script de flujo de datos asociado es el siguiente:

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

Si se usa un conjunto de datos en línea, el script de flujo de datos asociado es:

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

Propiedades de la actividad de búsqueda

Para información detallada sobre las propiedades, consulte Actividad de búsqueda.

Para obtener una lista de los almacenes de datos que la actividad de copia admite como orígenes y receptores, vea Almacenes de datos admitidos.