Compartir a través de


Crear un nuevo proveedor

Para crear un nuevo proveedor, use los siguientes pasos. También puede seguir estos pasos para realizar adiciones a los proveedores existentes.

Definir la arquitectura del proveedor

Antes de crear un proveedor, es importante comprender qué desea que haga el proveedor y para qué desea utilizarlo. Los proveedores tienen varios componentes y es posible que no los necesite todos.

Utilice la siguiente tabla para determinar qué componentes necesitará.

Condición Componente necesario
El servicio para el que desea crear un proveedor no tiene un conector en Power Automate.
Para más información, consulte Lista de todos los conectores de Power Automate.
Cree un conector de cliente o utilice un conector genérico.
Su proveedor intercambiará datos entre un servicio externo y Microsoft Dataverse. Su proveedor necesitará una transformación de proveedor. Agregue un componente de transformación de proveedor para cada transformación.
Su proveedor ejecutará la lógica desde el diseñador de orquestación. Cree un flujo distinto de Power Automate para representar cada una de las acciones.
Su proveedor necesita procesar mensajes de un servicio externo. Cree un flujo de controlador de mensajes de Power Automate.
Su proveedor extraerá mensajes de un servicio externo a intervalos periódicos. Cree un flujo de extractor de mensajes de Power Automate.
Su proveedor generará eventos de negocio que no están definidos actualmente en Intelligent Order Management. Cree una nueva definición de evento de negocio y agregue eventos existentes.

Cuando entienda bien las soluciones, puede implementar su proveedor.

Crear una solución de proveedor

Debe completar las siguientes tareas de esta sección para crear una solución de proveedor.

  • Configurar un proveedor personalizado.

  • Agregar una definición de proveedor.

  • Agregar los componentes a su solución.

Configurar un proveedor personalizado

Cree en Power Apps una solución que contendrá los componentes de su proveedor. Para crear una nueva solución en Power Apps, siga los pasos que se describen en Crear una solución en Power Apps

Agregar una definición de proveedor

Una definición de proveedor contiene detalles sobre su proveedor. La definición determina cómo aparecerá su proveedor en el Catálogo de proveedores.

  1. En la solución de proveedor que creó, seleccione Nuevo.

  2. Seleccione Definición de proveedor de IOM.

  3. Agregue los siguientes detalles:

    1. Nombre para mostrar: el nombre que desea asignar a su proveedor; por ejemplo, "Proveedor de prueba".

    2. Nombre lógico: la clave de exportación de su proveedor.

    3. Descripción: texto para describir lo que hace su proveedor.

  4. Seleccione Guardar.

  5. Si desea agregar un logotipo, cargue la imagen.

  6. Valide que la definición de su proveedor aparezca en la solución. Debería mostrarse un registro con el tipo de componente Definición de proveedor de IOM. Si no se muestra, seleccione Agregar existente y luego seleccione el registro que acaba de crear.

  7. Valide que su proveedor aparezca en el Catálogo de proveedores. Si configura el campo Está activo en , la definición de su proveedor aparecerá en el Catálogo de proveedores. Abra Intelligent Order Management. Vaya a Proveedores > Catálogo. Compruebe que se muestra la definición de su proveedor.

Agregar componentes a la solución

Después de crear su definición de proveedor, agregue los componentes del proveedor a la solución.

  1. Vaya a su solución.

  2. Seleccionar Agregar existente.

  3. Seleccione el tipo de componente Intelligent Order Management y, a continuación, seleccione el registro que acaba de crear.

Crear una transformación de proveedor

Si su proveedor requiere una transformación, debe agregar un componente de transformación de proveedor a su solución. Es posible que tenga que crear varias transformaciones.

  1. En su solución de proveedor, seleccione Nuevo.

  2. Seleccione Transformación de definición de proveedor de IOM.

  3. Agregue los siguientes detalles:

    1. Nombre para mostrar: el nombre de su transformación de proveedor; por ejemplo, "Transformar pedidos de ventas".

    2. Nombre lógico: el identificador único de su proveedor. Este valor será la clave de importación y exportación de los datos. Debe comenzar con el prefijo del editor. Por ejemplo, Microsoft utiliza el prefijo de editor msdyn_. Estos son algunos ejemplos de nombre lógico: msdyn_flexe_fulfillmentorderproduct_orderline, y msdyn_flexe_fulfillmentorder_order.

    3. Tipo de origen: este campo indica qué tipo de datos se reciben. Hay dos opciones: JsonDocument o Entidad de Dataverse. Si sus datos ya están en Dataverse, seleccione Entidad de Dataverse. Si no, seleccione JsonDocument. Esta información se utilizará en el elemento de Power Automate que defina para buscar la transformación.

    4. Nombre del objeto de origen: el nombre de los datos que va a transformar. Si va a transformar un registro de Dataverse, asegúrese de que el Nombre del objeto de origen sea el mismo que en la tabla de Dataverse.

    5. Nombre del objeto de destino: el destino del registro que desea transformar.

    6. Transformación: Power Query Online MQuery que se utilizará para transformar los datos de entrada. Para más información sobre Power Query y MQuery, consulte ¿Qué es Power Query? y Referencia de fórmulas del languaje M de Power Query. A continuación se muestra un ejemplo de una MQuery que transforma un pedido de ventas de un servicio de pedido externo en un pedido de ventas en Intelligent Order Management.

shared TransformSourceData =

let

orderItems = Source\[OrderItems\],

orderheader =

Record.FromTable

(

Table.SelectRows

(

Record.ToTable

(

\[

ordernumber = Record.FieldOrDefault(Source, "SellerOrderId", Text.From(Source\[OrderServiceOrderId\])),

name = ordernumber,

msdyn\_ExternalOrderId = Text.From(Source\[OrderServiceOrderId\]),

\#"customerid\_account@odata.bind" = "/accounts(" & Text.From(Source\[accountid\]) & ")",

\#"pricelevelid@odata.bind" = "/pricelevels(" & Text.From(Source\[pricelevelid\]) & ")",

totalamount = if Record.HasFields(Source, "OrderTotal") then Decimal.From(Record.FieldOrDefault(Source\[OrderTotal\], "Amount")) else null,

shipto\_name = if Record.HasFields(Source, "ShippingAddress") then Record.FieldOrDefault(Source\[ShippingAddress\], "Name") else null,

shipto\_contactname = shipto\_name,

shipto\_line1 = if Record.HasFields(Source, "ShippingAddress") then Record.FieldOrDefault(Source\[ShippingAddress\], "AddressLine1") else null,

shipto\_line2 = if Record.HasFields(Source, "ShippingAddress") then Record.FieldOrDefault(Source\[ShippingAddress\], "AddressLine2") else null,

shipto\_line3 = if Record.HasFields(Source, "ShippingAddress") then Record.FieldOrDefault(Source\[ShippingAddress\], "AddressLine3") else null,

shipto\_city = if Record.HasFields(Source, "ShippingAddress") then Record.FieldOrDefault(Source\[ShippingAddress\], "City") else null,

shipto\_stateorprovince = if Record.HasFields(Source, "ShippingAddress") then Record.FieldOrDefault(Source\[ShippingAddress\], "StateOrRegion") else null,

shipto\_country = if Record.HasFields(Source, "ShippingAddress") then Record.FieldOrDefault(Source\[ShippingAddress\], "CountryCode") else null,

shipto\_postalcode = if Record.HasFields(Source, "ShippingAddress") then Record.FieldOrDefault(Source\[ShippingAddress\], "PostalCode") else null,

shipto\_telephone = if Record.HasFields(Source, "ShippingAddress") then Record.FieldOrDefault(Source\[ShippingAddress\], "Phone") else null,

overriddencreatedon = Record.FieldOrDefault(Source, "PurchaseDate")

\]

), each \[Value\] \<\> null

)

),

orderlines = List.Transform(orderItems, each

Record.FromTable

(

Table.SelectRows

(

Record.ToTable

(

\[

isproductoverridden = true,

ispriceoverridden = true,

productdescription = \[OrderItemId\] & "-" & Record.FieldOrDefault(\_, "SellerSKU") & "-" & Record.FieldOrDefault(\_, "Title"),

quantity = \[QuantityOrdered\],

quantityshipped = Record.FieldOrDefault(\_, "QuantityShipped"),

priceperunit = if Record.HasFields(\_, "ItemPrice") then Decimal.From(Record.FieldOrDefault(\[ItemPrice\], "Amount")) else null,

manualdiscountamount = if Record.HasFields(\_, "PromotionDiscount") then Decimal.From(Record.FieldOrDefault(\[PromotionDiscount\], "Amount")) else null,

tax = if Record.HasFields(\_, "ItemTax") then Decimal.From(Record.FieldOrDefault(\[ItemTax\], "Amount")) else null,

shipto\_name = Record.FieldOrDefault(orderheader, "shipto\_name"),

shipto\_contactname = Record.FieldOrDefault(orderheader, "shipto\_contactname"),

shipto\_line1 = Record.FieldOrDefault(orderheader, "shipto\_line1"),

shipto\_line2 = Record.FieldOrDefault(orderheader, "shipto\_line2"),

shipto\_line3 = Record.FieldOrDefault(orderheader, "shipto\_line3"),

shipto\_city = Record.FieldOrDefault(orderheader, "shipto\_city"),

shipto\_stateorprovince = Record.FieldOrDefault(orderheader, "shipto\_stateorprovince"),

shipto\_country = Record.FieldOrDefault(orderheader, "shipto\_country"),

shipto\_postalcode = Record.FieldOrDefault(orderheader, "shipto\_postalcode"),

shipto\_telephone = Record.FieldOrDefault(orderheader, "shipto\_telephone"),

overriddencreatedon = Record.FieldOrDefault(orderheader, "overriddencreatedon")

\]

), each \[Value\] \<\> null

)

)

),

salesorder = Record.AddField(orderheader, "order\_details", orderlines)

in Text.FromBinary(Json.FromValue(salesorder));
  1. Seleccione Guardar.

  2. Valide que su componente de transformación aparezca correctamente. Debería mostrarse un tipo de componente Transformación de definición de proveedor de IOM con el nombre de la transformación. Si no se muestra, seleccione Agregar existente y luego seleccione la transformación que acaba de crear.

Agregar definiciones de eventos de negocio

Si su proveedor creará o utilizará nuevos eventos de negocio, debe agregar componentes Definición de evento de negocio de la definición de proveedor de IOM a su solución. Solo necesita agregar los eventos de negocio que aún no estén en Intelligent Order Management.

Si el evento de negocio que desea crear aún no está en Intelligent Order Management, puede crear el suyo propio.

  1. Seleccione Nuevo.

  2. Seleccione Definición de evento de negocio de la definición de proveedor de IOM.

  3. Agregue los siguientes detalles:

    1. Nombre: el nombre de su evento de negocio.

    2. Proveedor: el proveedor para el que va a crear esta definición de evento de negocio.

    3. Entidad asociada: la entidad de Dataverse en Intelligent Order Management que cambia o se ve afectada cuando se crea el evento.

    4. Valor de estado asociado: si desea que el estado de su entidad asociada se actualice cuando se produzca el evento de negocio, incluya un valor de estado en este campo.

    5. Valor de estado asociado: si desea que el estado de su entidad asociada se actualice cuando se produzca el evento de negocio, incluya un valor de estado en este campo.

  4. Seleccione Guardar.

  5. Compruebe su solución para asegurarse de que se muestra el registro de Definición de evento de negocio del proveedor de IOM. Si el registro no aparece en la solución, seleccione Agregar existente y luego seleccione el registro que acaba de crear.

Agregar un conector

Si su proveedor necesita un conector que no está disponible en Power Automate, debe crear su propio conector. Para obtener más información, consulte la Lista de todos los conectores de Power Automate.

Para crear su propio conector de Power Automate, siga los pasos que se describen en Información general de los conectores personalizados.

Después de crear su conector personalizado, agréguelo a su solución de proveedor como un componente.

  1. Vaya a su solución de proveedor.

  2. Seleccione Agregar existente.

  3. Seleccione el conector que ha creado.

Tipos de flujos de Power Automate

Cualquier acción que se ejecute en el diseñador de orquestación está representada por flujos de Power Automate. Si desea que Power Automate recupere información específica o ejecute determinadas acciones, deberá crear los flujos para esas acciones. Para obtener más información acerca de la herramienta Power Automate, consulte Introducción a Power Automate.

Agregue sus flujos como componentes Definición de lógica de la definición de proveedor a su proveedor.

Antes de comenzar el proceso de creación de flujos, examine los tipos de flujos que se utilizan en Intelligent Order Management.

Controlador de mensajes de proveedor

Estos flujos reciben y procesan mensajes de un servicio externo y generan el evento de negocio adecuado para notificar a la orquestación de Intelligent Order Management. Un servicio externo desencadena estos flujos.

A continuación se muestra una estructura de ejemplo para crear un tipo de controlador de mensajes de flujo de Power Automate.

  1. Defina un desencadenador de Power Automate. Suele ser un punto de conexión HTTP que es un desencadenador de webhook (recomendado), un desencadenador de conector o un desencadenador de inserción de Dataverse. El desencadenador se activa cuando un servicio externo tiene datos para enviar a Intelligent Order Management. Captura de pantalla del desencadenador cuando se recibe una solicitud HTTP.

El esquema JSON que se utilizará en su activador HTTP se define a continuación.

{
    "type": "object",
    "properties": {
        "text": {
            "title": "ProviderActionExecutionEventId",
            "type": "string",
            "x-ms-dynamically-added": true,
            "description": "Please enter your input",
            "x-ms-content-hint": "TEXT"
        },
        "text_1": {
            "title": "EntityRecordId",
            "type": "string",
            "x-ms-dynamically-added": true,
            "description": "Please enter your input",
            "x-ms-content-hint": "TEXT"
        }
    },
    "required": [
        "text",
        "text_1"
    ]
}
  1. Inicialice el procesamiento del mensaje. Esta tarea consta de dos pasos.

    1. Inicializar el resultado de la ejecución que se utilizará para hacer un seguimiento del procesamiento del mensaje.

    2. Reconocer el mensaje del proveedor en Intelligent Order Management para que pueda hacer seguimiento, reintentar y mostrar el estado de procesamiento. Esta es una acción de Power Automate que introduce Intelligent Order Management. Esta acción se llama Reconocer solicitud de mensaje del proveedor en IOM. Esta acción tiene los siguientes parámetros obligatorios.

      1. PowerAutomateWorkflowId: WorkflowId en la definición del controlador de mensajes. Puede recuperarlo mediante una función de composición con workflow()['tags'].

      2. PowerAutomateRunId: el identificador único para la ejecución de Power Automate que recibió el mensaje; permite que la canalización reintente el procesamiento y vincule los registros de ejecución. Puede recuperarlo mediante una función de composición con workflow()['run']?['name'].

      3. ProviderMessageExternalRequestId: un identificador del mensaje enviado. Si no hay ningún identificador, se puede generar un GUID. La canalización utiliza este identificador para evitar que el remitente envíe mensajes duplicados. El identificador depende de la carga útil de origen. Por ejemplo: concat(triggerOutputs()?['body']?['type']?['name'], '_', triggerOutputs()?['body']?['id']).

Captura de la pantalla Reconocer solicitud de mensaje del proveedor.

  1. La transformación de proveedor que definió anteriormente recuperará los datos de entrada y los transformará. Intelligent Order Management proporciona un flujo secundario listo para usar llamado Transformador de proveedor de IOM que ejecutará la transformación. Agregue los siguientes detalles para procesar el evento o el mensaje:

    1. Nombre del proveedor: el nombre del proveedor vinculado al controlador de mensajes. Este valor debe ser el mismo nombre que el de su transformación de proveedor.

    2. Nombre del objeto de origen: el valor de la clave de búsqueda de origen para que se realice la transformación. Este valor debe ser el mismo que el nombre del objeto de origen definido en su transformación de proveedor.

    3. Nombre del objeto de destino: el valor de la clave de búsqueda de destino para que se realice la transformación. Este valor debe ser el mismo que el valor definido en la transformación de proveedor.

    4. Carga útil: se proporciona al transformar una carga útil JSON. Power Automate requiere que los parámetros se pasen como una cadena serializada. Proporcione un valor de Carga útil o un Id. de registro, pero no ambos.

    5. Id. de registro: se proporciona al transformar un registro de Dataverse. Proporcione un valor de Carga útil o un Id. de registro, pero no ambos.
      Captura de la pantalla Transformar mensaje con Power Query Online.

  2. Puede insertar datos en Dataverse mediante solicitudes HTTP o la acción Insertar del conector de Dataverse. Si va a hacer más de una inserción y desea mejorar el rendimiento, encapsule las inserciones en un conjunto de cambios para que las solicitudes estén en un lote de transacciones.
    Captura de pantalla del flujo Insertar mensajes.

  3. Si desea que su flujo genere un evento de negocio, puede utilizar el flujo secundario Generar evento de negocio. Agregue los siguientes detalles.

    1. BusinessEventName: nombre del evento que desea generar.

    2. EntityRecordId: id. del registro recién creado y asociado al evento.

  4. Actualice el estado de procesamiento de mensajes mediante la acción Actualizar estado de solicitud de mensajes del proveedor para guardar el resultado de la ejecución del procesamiento. Agregue los siguientes detalles.

    1. ProviderMessageRequestExecutionId: id. de salida del registro creado para realizar un seguimiento del progreso del procesamiento del mensaje.

    2. IsProviderMessageRequestExecutionSuccess: valor booleano para indicar si el procesamiento se realizó correctamente.

Extractor de mensajes de proveedor

Los extractores de mensajes del proveedor son flujos de Power Automate que extraen mensajes con un intervalo periódico definido desde un servicio externo.

Nota

Un controlador de mensajes es un requisito previo para un flujo de extractor de mensajes.

A continuación se muestra una estructura de ejemplo para crear un tipo de extractor de mensajes de flujo de Power Automate.

  1. Utilice un flujo de trabajo de periodicidad para programar un desencadenador.

  2. Obtenga un punto de control de Dataverse. Los puntos de control hacen un seguimiento de los mensajes que se han extraído correctamente del proveedor externo. Agregue los siguientes detalles.

    1. Nombre de la acción: nombre del punto de control.

    2. WorkflowId: establezca la siguiente función de composición para recuperar esta información: workflow()['tags']['xrmWorkflowId'].
      Captura de pantalla Obtener punto de control.

  3. Cree una solicitud POST HTTP en un proveedor externo para extraer los mensajes. Agregue los siguientes detalles.

    1. Método: establezca este campo en POST.

    2. URL: el punto de conexión del proveedor externo.

    3. Cuerpo: la solicitud JSON debe tener la siguiente fórmula: if(empty(outputs('Get_Checkpoint')?['body/Checkpoint']), 0, int(outputs('Get_Checkpoint')?['body/Checkpoint'])).
      Captura de pantalla Extraer mensajes.

  4. Analice los mensajes extraídos en el paso 3. Agregue los siguientes detalles.

    1. Contenido: el cuerpo recuperado del paso 3.

    2. Esquema: la estructura del cuerpo recuperada en el paso 3.
      Captura de pantalla Analizar mensajes.

  5. Procese los mensajes para recorrer cada mensaje del paso 4.

  6. Analice cada mensaje de los pasos anteriores. Agregue la siguiente información.

    1. Contenido: elemento actual de Procesar mensajes.

    2. Esquema: un solo mensaje en formato JSON.
      Captura de pantalla Procesar mensajes 2.

  7. Llame al controlador de mensajes del proveedor asociado que configuró en los requisitos previos. Agregue la siguiente información.

    1. Flujo secundario: seleccione el controlador de mensajes del proveedor.

    2. Mensaje: el mensaje analizado del paso 6.
      Captura de pantalla Procesar mensajes 3.

  8. Guarde el punto de control en Dataverse. Agregue la siguiente información.

    1. Punto de control: puede ser cualquier valor de cadena (máximo 100). En este ejemplo, este es el identificador del último mensaje procesado.

    2. WorkFlowId: puede recuperar este id. si agrega una función de composición workflow()['tags']['xrmWorkflowId'].
      Captura de pantalla Procesar mensajes 4.

Acción de proveedor

Los flujos de acción del proveedor se invocan desde el diseñador de orquestación. Estos flujos suelen realizar llamadas desde Intelligent Order Management a servicios externos.

La diferencia principal entre un controlador de mensajes de proveedor y una acción de proveedor es que, si bien un controlador de mensajes puede notificar al diseñador de orquestación, no puede activarse mediante un icono de acción en el diseñador de orquestación, mientras que una acción de proveedor sí se puede activar desde un icono de acción.

A continuación se muestra una estructura de ejemplo para un flujo de Power Automate de acción de proveedor.

  1. Comience con un desencadenador HTTP. El servicio de orquestación pasará la siguiente información en tiempo de ejecución. El siguiente esquema JSON se utilizará para el cuerpo:
{
    "type": "object",
    "properties": {
        "text": {
            "title": "ProviderActionExecutionEventId",
            "type": "string",
            "x-ms-dynamically-added": true,
            "description": "Please enter your input",
            "x-ms-content-hint": "TEXT"
        },
        "text_1": {
            "title": "EntityRecordId",
            "type": "string",
            "x-ms-dynamically-added": true,
            "description": "Please enter your input",
            "x-ms-content-hint": "TEXT"
        }
    },
    "required": [
        "text",
        "text_1"
    ]
}
  1. Inicialice el procesamiento de la acción.

    1. Inicialice el resultado de la ejecución y cualquier otra variable de procesamiento.

    2. Reconozca el inicio de la ejecución de la acción mediante la acción de Dataverse Iniciar ejecución de acción de proveedor. Esto permitirá que la canalización realice un seguimiento, reintente y muestre el estado de procesamiento dentro de Intelligent Order Management. Agregue la siguiente información.

      1. ProviderActionExecutionEventId: este valor se pasó a la acción como un parámetro de entrada en el paso 1.

      2. PowerAutomateRunID: la ejecución única de la acción de Power Automate. Esto permite que la canalización vincule los registros de ejecución. Para obtener esta información, configure el campo en una expresión de Power Automate worflow()['run']?['name'].

  2. Realice la acción.

    1. Si es necesario, transforme los registros usando el flujo secundario Transformar mensaje con Power Query Online.

      1. Nombre del proveedor: el nombre del proveedor que se vinculará a la acción. Debe ser el mismo nombre que el de su definición de proveedor.

      2. Nombre del objeto de origen: el nombre de origen de la transformación que se va a realizar. Este nombre debe ser el mismo objeto de origen definido en su transformación de Power Automate.

      3. Nombre del objeto de destino: el valor de la clave de búsqueda de destino para que se realice la transformación. Este nombre debe ser el mismo valor definido en la transformación de proveedor.

      4. Carga útil: se proporciona al transformar una carga útil JSON de entrada. Power Automate requiere que los parámetros se pasen como una cadena serializada. Agregue un valor de Carga útil o un Id. de registro, pero no ambos.

      5. Id. de registro: se proporciona al transformar un registro de Dataverse de salida. Agregue un valor de Carga útil o un Id. de registro, pero no ambos.
        Captura de la pantalla Transformar mensaje con Power Query Online.

    2. Ejecute las acciones personalizadas que haya definido. Son acciones que están presentes en el conector de Power Automate que está utilizando.

    3. Genere un evento de negocio específico de la acción. Utilice el flujo secundario Generar evento de negocio. Agregue la siguiente información.

      1. BusinessEventName: nombre del evento que desea generar.

      2. EntityRecordId: id. del registro asociado al evento.

  3. Complete la ejecución de la acción y guarde los resultados. El diseñador de orquestación procesará los resultados. Agregue la siguiente información.

    1. ExecutionResult: valor booleano para indicar si el procesamiento se realizó correctamente.

    2. ExecutionDetails: detalles de registro opcionales para fines de prueba y depuración.

    3. ProviderActionExecutionEventId: este valor se pasó a la acción como un parámetro de entrada que se definió en el paso 1.
      Captura de pantalla Completar ejecución de acción del proveedor.

Flujo secundario

Un flujo secundario es un subflujo al que se hace referencia en otros flujos de Power Automate. Resulta útil definir un flujo secundario si hay algunos pasos que repite en varias áreas. No existe una plantilla ni un proceso recomendado específico para los flujos secundarios, ya que están pensados principalmente para consolidar pasos similares.

Los flujos secundarios de proveedor no pueden llamar a otros flujos secundarios de proveedor.

Crear flujos de nube

Cuando entienda los tipos de flujos que desea crear, estará en condiciones de crear flujos de nube. Para ello, siga estos pasos:

  1. Abra la solución predeterminada en su entorno de Power Apps.

Importante

No agregue estas soluciones a su solución de proveedor.

  1. Seleccione Nuevo y luego seleccione Flujo de nube.

  2. Cree su flujo de Power Automate. Utilice las plantillas de la sección anterior como referencia.

  3. Consulte la siguiente sección para guardar sus flujos.

Guardar la definición de Power Automate

Después de crear sus flujos, debe guardarlos como componentes Definición de lógica de la definición de proveedor. Este tipo de componente proporciona a Intelligent Order Management las acciones que se deben implementar durante la activación del proveedor.

Debe tener los siguientes requisitos previos antes de poder guardar sus flujos.

  • Para guardar sus definiciones lógicas de Power Automate, deberá emitir solicitudes de OData. Para ello, necesita una cuenta con PostMan o un servicio similar.

  • Deberá generar un token de acceso a su entorno de Dataverse para emitir solicitudes GET y POST.

    • Configure una cuenta de Azure con una suscripción activa. Si no tiene una cuenta activa, debe configurar una cuenta en el sitio web de Azure.

    • PowerShell debe estar instalado. Para obtener más información, consulte Instalación de PowerShell.

    • Introduzca el siguiente comando en PowerShell para obtener un token de acceso: az login --allow-no-subscriptions account get-access-token --resource=https://YourDataverseTenantURL.api.crm.dynamics.com/ --query=accessToken --output=tsv | Set-Clipboard.

Para guardar su definición de Power Automate, haga lo siguiente.

  1. Busque el identificador de flujo de trabajo del flujo de Power Automate que desea guardar. Realice una de las acciones siguientes.

    1. Busque el id. del flujo de trabajo mediante una acción de Power Automate.

      1. Cree una acción de composición con la expresión workflow() al final de su flujo de Power Automate.
        Captura de pantalla de la acción Componer.

      2. Ejecute Power Automate.

      3. La propiedad xrmWorkflowId de los resultados de la ejecución contendrá el id. del flujo de trabajo.
        Captura de pantalla del id. del flujo de trabajo.

      4. Elimine esta acción del flujo para que no se vuelva a ejecutar.

    2. Opcionalmente, puede emitir una solicitud Get de OData.

      1. Vaya al flujo para el que desea guardar el identificador de flujo de trabajo. Busque el identificador único en la URL. Este es el identificador que aparece después de ../flows/ en la URL.
        Cómo encontrar un identificador único.

      2. Emita una solicitud de OData para recuperar los metadatos del flujo de trabajo. A continuación se muestra una solicitud GET de ejemplo.
        GET {Env url}/api/data/v9.1/workflows?$filter=workflowidunique eq '{Id. de flujo de trabajo único de Power Automate}'&$select=workflowid,workflowidunique

      3. Guarde la propiedad workflowid devuelta.

  2. Busque el identificador de definición de proveedor.

    1. Seleccione la definición de proveedor en la que desea guardar el flujo.

    2. Copie el id. de definición de proveedor de la URL. Esta es la parte de la URL ../id={example number}/.
      Cómo buscar el identificador de definición de proveedor.

  3. Anote el valor del conjunto de opciones para el tipo de Power Automate que va a guardar.

    1. Flujo secundario: 192350002

    2. Acción de proveedor: 192350001

    3. Controlador de mensajes de proveedor: 192350000

    4. Extractor de mensajes de proveedor: 192350003

  4. Emita una solicitud POST para guardar su definición de Power Automate. A continuación se muestra una solicitud de ejemplo.

    POST: {Env url}/api/data/v9.1/msdyn\_SaveProviderDefinitionLogicDefinition  
    Body:  
    {

"ProviderDefinitionId": "{ProviderId previously found}",

"WorkflowId": "{Power Automate WorkflowId previously found}",

"LogicalName": "{Export prefix \_ Power Automate Export Name}",

"LogicType": {Logic Type},

"MaxRetryAttempts": {Max number of attempts},

"TimeoutMinutes": {Timeout number ex: 5}

}
  1. Valide que se agregó el componente Definición de lógica de la definición de proveedor. Para ello, siga estos pasos:

    1. Vaya a su solución de proveedor.

    2. Compruebe que se agregó la Definición de lógica de la definición de proveedor que creó. Si no se agregó, seleccione Agregar existente y luego agregue el componente que creó.

Guardar referencias de conexión

Si su proveedor utiliza conectores de Power Automate de cliente, debe realizar los siguientes pasos para guardar las referencias de conexión en su solución de Power Automate.

  1. Emita una solicitud GET para recuperar su id. de referencia de conexión. Por ejemplo:
GET {Env url}/api/data/v9.2/connectionreferences

Si desea filtrarlo más, puede filtrar por nombre de referencia de conexión. Por ejemplo:

    {Env url}/api/data/v9.2/connectionreferences?$[connectionreferences?$filter=connectionreferencedisplayname](https://orgdb90e3a2.api.crm10.dynamics.com/api/data/v9.2/connectionreferences?$filter=connectionreferencedisplayname) eq 'Provider Example'&$select=connectionreferencelogicalname,connectionreferencedisplayname,connectionreferenceid,connectorid

  1. Compruebe que se recuperó el id. de referencia de conexión correcto buscando en los datos del cliente de Power Automate.

    1. Vaya al componente Definición de lógica de la definición de proveedor que guardó anteriormente.

    2. Compruebe los datos del cliente para asegurarse de que aparece connectionReferenceLogicalName.

  2. Busque su identificador de definición de proveedor. Es el mismo valor que usó en el paso 2 para guardar las definiciones lógicas de Power Automate.

  3. Emita una solicitud POST para guardar la referencia de conexión. Por ejemplo:

POST {Env url}/api/data/v9.1/msdyn\_SaveProviderDefinitionConnectionReference  
    Body:  
    {

"ProviderDefinitionId": "{ProviderId previously found}",

"ConnectionReferenceId": "{Connection reference id previously found}"

}
  1. Valide que se agregó el componente Definición de lógica de la definición de proveedor.

    1. Vaya a su solución de proveedor.

    2. Compruebe que se agregó el componente de referencia Definición de lógica de la definición de proveedor que creó. Si no se agregó, seleccione Agregar existente y agregue el componente recién creado.

Compartir sus proveedores

Si desea utilizar su definición de proveedor en otro entorno o compartir su solución, puede exportar su solución de proveedor. Para obtener más información, consulte Exportar soluciones.