Criar um novo provedor

Para criar um novo provedor, conclua as etapas a seguir. Você também pode usar essas etapas para fazer adições a provedores existentes.

Definir a arquitetura do provedor

Antes de criar um provedor, entenda o que você deseja que o provedor faça e para que você deseja usá-lo. Os provedores têm vários componentes e talvez você não precise de todos os componentes.

Use a tabela a seguir para determinar quais componentes você precisa.

Condição Componente necessário
O serviço para o qual você deseja criar um provedor não tem um conector no Power Automate.
Para obter mais informações, consulte Lista de todos os conectores do Power Automate.
Crie um conector de cliente ou use um conector genérico.
Seu provedor troca dados entre um serviço externo e o Microsoft Dataverse. Seu provedor precisa passar por uma transformação. Adicione um componente de transformação de provedor para cada transformação.
Seu provedor executa a lógica do designer de orquestração. Crie um fluxo separado do Power Automate para representar cada uma das ações.
Seu provedor precisa processar mensagens de um serviço externo. Crie um fluxo de Manipulador de Mensagens do Power Automate.
Seu provedor obtém mensagens de um serviço externo em um intervalo regular. Crie um fluxo de Extrator de Mensagens do Power Automate.
Seu provedor gera eventos de negócios que não estão definidos atualmente no Gerenciamento inteligente de pedidos. Crie uma nova definição de evento de negócios e adicione eventos existentes.

Quando você tiver uma boa compreensão das soluções, prossiga para a implementação de seu provedor.

Criar uma solução de provedor

Conclua as seguintes tarefas para criar uma solução de provedor:

  • Configure um provedor personalizado.

  • Adicione uma definição de provedor.

  • Adicione os componentes à sua solução.

Configurar um provedor personalizado

Crie uma solução no Power Apps para manter os componentes do seu provedor. Para obter etapas para criar uma nova solução no Power Apps, consulte Criar uma solução no Power Apps.

Adicionar uma definição de provedor

Uma definição de provedor contém detalhes sobre o seu provedor. A definição determina como seu provedor aparece no Catálogo de Provedores.

  1. Na solução de provedor criada, selecione Novo.

  2. Selecione Definição de Provedor do IOM.

  3. Adicione os seguintes detalhes:

    • Nome de exibição: o nome que você deseja dar ao seu provedor, por exemplo, "Provedor de Teste".

    • Nome lógico: a chave de exportação do seu provedor.

    • Descrição: texto para descrever o que seu provedor faz.

  4. Selecione Salvar.

  5. Se quiser adicionar um logotipo, carregue a imagem.

  6. Valide se a definição de provedor aparece na solução. Deve ser exibido um registro com a Definição de Provedor do IOM do tipo de componente. Se ele não for exibido, selecione Adicionar existente e selecione o registro que você criou.

  7. Valide se seu provedor aparece no catálogo do provedor. Se você definir o campo Está Ativo como Sim, sua definição de provedor aparecerá no Catálogo de Provedores. Abra o Intelligent Order Management. Acesse Provedores > Catálogo. Verifique se a definição do provedor é exibida.

Adicionar componentes à solução

Depois de criar a definição do provedor, adicione os componentes do provedor à solução.

  1. Acesse sua solução.

  2. Selecione Adicionar existente.

  3. Selecione o tipo de componente Gerenciamento inteligente de pedidos e selecione o registro que você criou.

Criar uma transformação de provedor

Se o provedor exigir uma transformação, adicione um componente de transformação do provedor à sua solução. Talvez seja necessário criar várias transformações.

  1. Em sua solução de provedor, selecione Novo.

  2. Selecione Transformação da Definição de Provedor do IOM.

  3. Adicione os seguintes detalhes:

    1. Nome de exibição: o nome da transformação do provedor, por exemplo, "Ordens de Venda para Transformação".

    2. Nome lógico: o identificador exclusivo do seu provedor. Esse valor é a chave de importação e exportação dos dados. Ele deve começar com o prefixo do editor. Por exemplo, a Microsoft usa o prefixo do editor msdyn_. Exemplos de nome lógico são: msdyn_flexe_fulfillmentorderproduct_orderline e msdyn_flexe_fulfillmentorder_order.

    3. Tipo de fonte: este campo indica qual tipo de dados foi recebido. Duas opções estão disponíveis: JsonDocument ou Dataverse Entity. Se os dados já estiverem no Dataverse, selecione Entidade do Dataverse. Caso contrário, selecione JsonDocument. O elemento power automate que você define usa essas informações para pesquisar a transformação.

    4. Nome do objeto de origem: o nome dos dados que você está transformando. Se você estiver transformando um registro do Dataverse, verifique se o Nome do Objeto de Origem é o mesmo nome da tabela Dataverse.

    5. Nome do objeto de destino: o destino do registro que você quer transformar.

    6. Transformação: o MQuery Online do Power Query que é usado para transformar os dados de entrada. Para obter informações sobre o Power Query e o MQuery, consulte O que é Power Query? e Referência de linguagem da fórmula M do Power Query. Este é um exemplo de um MQuery que transforma uma ordem de venda de um serviço de ordem externo em uma ordem de venda no 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. Selecione Salvar.

  2. Verifique se o componente de transformação aparece corretamente. Deve ser exibido um tipo de componente de Transformação da Definição de Provedor do IOM com o nome da transformação. Se não for exibido, selecione Adicionar existente e selecione a transformação que você criou.

Adicionar definições de evento de negócios

Se seu provedor cria ou usa novos eventos de negócios, você deverá adicionar componentes de Definição de Evento de Negócios da Definição de Provedor do IOM à sua solução. Adicione apenas eventos de negócios que ainda não estão no Gerenciamento inteligente de pedidos.

Se o evento de negócios que você deseja criar ainda não estiver no Gerenciamento de Ordem Inteligente, crie o seu próprio.

  1. Selecione Novo.

  2. Selecione Definição de Evento de Negócios da Definição de Provedor do IOM.

  3. Adicione os seguintes detalhes:

    1. Nome: o nome do seu evento de negócios.

    2. Provedor: o provedor para o qual você está criando a definição de negócios.

    3. Entidade associada: a entidade Dataverse no Gerenciamento de Ordem Inteligente que é alterada ou afetada quando o evento é criado.

    4. Valor de estado associado: se você quiser que o estado da entidade associada seja atualizado quando o evento de negócios for gerado, inclua um valor de estado neste campo.

    5. Valor de status associado: se você quiser que o status da entidade associada seja atualizado quando o evento de negócios for gerado, inclua um valor de status neste campo.

  4. Selecione Salvar.

  5. Verifique sua solução para confirmar se o registro de Definição do Evento de Negócios do Provedor do IOM é exibido. Se o registro não aparecer na solução, selecione Adicionar existente e selecione o registro que você criou.

Adicionar um conector

Se o provedor precisar de um conector que não esteja disponível no Power Automate, crie seu próprio conector. Para obter mais informações, consulte a Lista com todos os conectores do Power Automate.

Para criar seu próprio conector do Power Automate, siga as etapas na Visão geral dos conectores personalizados.

Depois de criar o conector personalizado, adicione-o à sua solução de provedor como um componente.

  1. Acesse sua solução de provedor.

  2. Selecione Adicionar existente.

  3. Selecione o conector que você criou.

Tipos de fluxos do Power Automate

Os fluxos do Power Automate representam qualquer ação executada no designer de orquestração. Se você quiser que o Power Automate recupere informações específicas ou execute ações específicas, você precisará criar os fluxos para essas ações. Para saber mais sobre o Power Automate, consulte Introdução ao Power Automate.

Adicione seus fluxos como componentes de Definição de Lógica da Definição do Provedor ao seu provedor.

Antes de iniciar o processo de criação de fluxo, examine os tipos de fluxos que o Gerenciamento inteligente de pedidos usa.

Manipulador de mensagens do provedor

Esses fluxos recebem e processam mensagens de um serviço externo. Eles acionam o evento de negócios apropriado para notificar a orquestração do Intelligent Order Management. Um serviço externo dispara esses fluxos.

O exemplo a seguir mostra a estrutura para criar um tipo de manipulador de mensagens do fluxo do Power Automate.

  1. Defina um gatilho do Power Automate. Em geral, este gatilho é um ponto de extremidade HTTP que é um gatilho de webhook (recomendado), gatilho de conector ou um gatilho de inserção do Dataverse. Um serviço externo aciona o gatilho quando tem dados a serem enviados para o Gerenciamento inteligente de pedidos.

Captura de tela do gatilho para quando uma solicitação HTTP é recebida.

Use o esquema JSON a seguir no gatilho HTTP.

{
    "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. Inicialize o processamento de mensagens. Duas etapas estão envolvidas nesta tarefa.

    1. Inicialize o resultado da execução que rastreia o processamento da mensagem.

    2. Confirme a mensagem do provedor no Intelligent Order Management para que você possa rastrear, repetir e exibir o estado de processamento. Esta etapa é uma ação do Power Automate que é introduzida pelo Intelligent Order Management. Esta ação é chamada de Solicitação de mensagem do Provedor de confirmação no IOM. Essa ação tem os seguintes parâmetros obrigatórios.

      1. PowerAutomateWorkflowId: WorkflowId na definição do manipulador de mensagens. Recupere esse valor usando uma função de composição com workflow()['tags'].

      2. PowerAutomateRunId: o identificador exclusivo da execução do Power Automate que recebeu a mensagem. Esse identificador permite que o pipeline repita o processamento e vincule os logs de execução. Recupere esse valor usando uma função de composição com workflow()['run']?['name'].

      3. ProviderMessageExternalRequestId: um identificador para a mensagem enviada. Se nenhum identificador estiver presente, gere um GUID. O pipeline usa esse identificador para ajudar a impedir que o remetente envie mensagens duplicadas. O identificador depende do payload de origem. Por exemplo: concat(triggerOutputs()?['body']?['type']?['name'], '_', triggerOutputs()?['body']?['ID']).

Captura de tela da tela de Solicitação de mensagem do provedor de confirmação.

  1. A transformação do provedor definida anteriormente recupera os dados de entrada e os transforma. O Intelligent Order Management fornece um fluxo filho imediato, chamado Transformador do Provedor do IOM, que executa a transformação. Adicione os seguintes detalhes para processar o evento ou a mensagem:

    1. Nome do provedor: o nome do provedor vinculado ao manipulador de mensagens. Esse valor deve ser o mesmo nome da transformação do provedor.

    2. Nome do objeto da fonte: o valor da chave de pesquisa da fonte para que a transformação seja executada. Esse valor precisa ser o mesmo do nome do objeto da fonte definido na transformação do provedor.

    3. Nome do objeto de destino: o valor da chave de pesquisa de destino que a transformação executará. Esse valor precisa ser o mesmo valor definido na transformação do provedor.

    4. Conteúdo: fornecido ao transformar um conteúdo JSON. O Power Automate requer que os parâmetros sejam transmitidos como uma cadeia de caracteres serializada. Forneça um Conteúdo ou um valor de ID de Registro, não ambos.

    5. ID de Registro: fornecido durante a transformação de um registro do Dataverse. Forneça um Payload ou um valor de ID de Registro, mas não ambos.

Captura de tela da mensagem de transformação com o Power Query Online.

  1. Você pode inserir dados no Dataverse usando solicitações HTTP ou a ação Inserir do conector do Dataverse. Se você estiver fazendo mais de uma inserção e quiser melhorar o desempenho, encapsule as inserções em um conjunto de alterações para que as solicitações estejam em um lote de transações.

Captura de tela do fluxo de inserção de mensagens.

  1. Se você quiser que seu fluxo acione um evento de negócios, use o fluxo filho Acionar Evento de Negócios. Adicione os detalhes a seguir.

    1. BusinessEventName: nome do evento que você quer acionar.

    2. EntityRecordId: A ID do registro criado e associado ao evento.

  2. Atualize o estado de processamento de mensagens usando a ação Atualizar Status da Solicitação de Mensagem do Provedor para salvar o resultado da execução do processamento. Adicione os detalhes a seguir.

    1. ProviderMessageRequestExecutionId: a ID de saída do registro criado para rastrear o progresso do processamento da mensagem.

    2. IsProviderMessageRequestExecutionSuccess: valor booliano para indicar se o processamento foi realizado com sucesso.

Extrator de mensagens do provedor

Os extratores de mensagens do provedor são fluxos do Power Automate que extraem mensagens em um intervalo definido regularmente de um serviço externo.

Observação

Um manipulador de mensagens é um pré-requisito para um fluxo do extrator de mensagens.

O exemplo a seguir mostra a estrutura para criar um fluxo do Power Automate de tipo extrator de mensagens.

  1. Use um fluxo de trabalho de recorrência para agendar um gatilho.

  2. Obtenha um ponto de verificação do Dataverse. Os pontos de verificação rastreiam quais mensagens o fluxo obtém com êxito do provedor externo. Adicione os detalhes a seguir.

    1. Nome da ação: nome do ponto de verificação.

    2. WorkflowId: defina a seguinte função de composição para recuperar essas informações: workflow()['tags']['xrmWorkflowId'].

Captura de tela do ponto de verificação.

  1. Crie uma solicitação POST HTTP para um provedor externo para extrair as mensagens. Adicione os detalhes a seguir.

    1. Método: defina este campo como POST.

    2. URL: o ponto de extremidade do provedor externo.

    3. Corpo: A solicitação JSON deve ter a seguinte fórmula: if(empty(outputs('Get_Checkpoint')?['body/Checkpoint']), 0, int(outputs('Get_Checkpoint')?['body/Checkpoint'])).

Captura de tela das mensagens pull.

  1. Analise as mensagens que o fluxo captura na etapa 3. Adicione os detalhes a seguir.

    1. Conteúdo: o corpo recuperado da etapa 3.

    2. Esquema: a estrutura do corpo recuperada na etapa 3.

Captura de tela das mensagens de Análise.

  1. Processe as mensagens para percorrer cada mensagem da etapa 4.

  2. Analise cada mensagem das etapas anteriores. Adicione as informações a seguir.

    1. Conteúdo: item atual de Processar Mensagens.

    2. Esquema: uma única mensagem no formato JSON.

Captura de tela das mensagens de processo 2.

  1. Chame o manipulador de mensagens do provedor associado configurado nos pré-requisitos. Adicione as informações a seguir.

    1. Fluxo filho: selecione o manipulador de mensagens do provedor.

    2. Mensagem: a mensagem analisada desde a etapa 6.

Captura de tela das mensagens de processo 3.

  1. Salve o ponto de verificação no Dataverse. Adicione as informações a seguir.

    1. Ponto de verificação: esse valor pode ser qualquer valor de cadeia de caracteres (máximo de 100). Neste exemplo, esse valor é a ID da última mensagem processada.

    2. WorkFlowId: você pode recuperar essa ID adicionando a função de composição definida como workflow()['tags']['xrmWorkflowId'].

Captura de tela das mensagens de processo 4.

Ação do provedor

Invoca os fluxos de ação do provedor no designer de orquestração. Esses fluxos normalmente fazem chamadas do Intelligent Order Management para serviços externos.

A principal diferença entre um manipulador de mensagens do provedor e uma ação de provedor é que, embora um manipulador de mensagens possa notificar o designer de orquestração, ele não pode ser disparado por um bloco de ação no designer de orquestração. Uma ação do provedor pode ser disparada por um bloco de ação.

O exemplo a seguir mostra a estrutura de um fluxo do Power Automate de ação do provedor.

  1. Comece com um gatilho HTTP. O serviço de orquestração transmite as informações a seguir no tempo de execução. O seguinte esquema JSON é usado para o corpo:
{
    "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. Inicialize o processamento de ações.

    1. Inicialize o resultado da execução e qualquer outra variável de processamento.

    2. Confirme o início da execução da ação usando a ação Iniciar Execução da Ação do Provedor do Dataverse. Esta etapa permite que o pipeline acompanhe, tente novamente e exiba o estado de processamento no Gerenciamento inteligente de pedidos. Adicione as informações a seguir.

      1. ProviderActionExecutionEventId: A ação recebe esse valor como um parâmetro de entrada na etapa 1.

      2. PowerAutomateRunID: a execução exclusiva da ação do Power Automate. Esse valor permite que o pipeline vincule os logs de execução. Obtenha essas informações definindo o campo como uma expressão worflow()['run']?['name']do Power Automate.

  2. Execute a ação.

    1. Se necessário, transforme os registros usando o fluxo filho Transformar Mensagem com o Power Query Online.

      1. Nome do provedor: o nome do provedor a ser vinculado à ação. O nome deve ser o mesmo nome da definição do seu provedor.

      2. Nome do objeto da fonte: o nome da fonte que a transformação executará. Esse nome deve ser o mesmo objeto de fonte definido na sua transformação do Power Automate.

      3. Nome do objeto de destino: o valor da chave de pesquisa de destino que a transformação executará. Esse nome precisa ser o mesmo valor definido na transformação do provedor.

      4. Conteúdo: fornecido ao transformar um conteúdo JSON de entrada. O Power Automate requer que os parâmetros sejam transmitidos como uma cadeia de caracteres serializada. Adicione um Conteúdo ou um valor de ID de Registro, mas não ambos.

      5. ID do Registro: fornecido ao transformar um registro do Dataverse de saída. Adicione um Conteúdo ou um valor de ID de Registro, mas não ambos.

      Captura de tela da mensagem de transformação com o Power Query Online.

    2. Execute as ações personalizadas que você definiu. Elas são ações que estão presentes no conector do Power Automate que você está usando.

    3. Acione um evento de negócios específico da ação. Use o fluxo filho Acionar Evento de Negócios. Adicione as informações a seguir.

      1. BusinessEventName: o nome do evento que você quer acionar.

      2. EntityRecordId: a ID do registro associado ao evento.

  3. Conclua a execução da ação e salve os resultados. O designer de orquestração processa os resultados. Adicione as informações a seguir.

    1. ExecutionResult: valor booliano para indicar se o processamento foi realizado com êxito.

    2. ExecutionDetails: detalhes de log opcionais para fins de teste e depuração.

    3. ProviderActionExecutionEventId: a ação recebe esse valor como um parâmetro de entrada que você define na etapa 1.

Captura de tela da execução completa da ação do provedor.

Fluxo filho

Um fluxo filho é um subfluxo que outros fluxos do Power Automate referenciam. É útil definir um fluxo filho se houver algumas etapas a serem repetidas em várias áreas. Não há um modelo específico ou um processo recomendado para fluxos filhos, pois o objetivo principal é que eles sejam usados de forma conveniente para a consolidação de etapas semelhantes.

Os fluxos filhos do provedor não podem chamar outros fluxos filhos do provedor.

Criar fluxos da nuvem

Quando você entende os tipos de fluxos que deseja criar, está pronto para criar fluxos de nuvem. Para fazer isso, siga estas etapas:

  1. Abra a solução padrão no seu ambiente do Power Apps.

Importante

Não adicione essas soluções à sua solução de provedor.

  1. Selecione Novo e selecione Fluxo de Nuvem.

  2. Crie seu fluxo do Power Automate. Use os modelos na seção anterior como referência.

  3. Consulte a seção a seguir para salvar os fluxos.

Salvar a definição do Power Automate

Depois de criar seus fluxos, salve-os como componentes de Definição de Lógica do Provedor. Esse tipo de componente fornece ao Intelligent Order Management as ações a serem implantadas durante a ativação do provedor.

Antes de salvar seus fluxos, certifique-se de ter os seguintes pré-requisitos.

  • Para salvar suas definições lógicas do Power Automate, você precisa enviar solicitações OData. Para enviar essas solicitações, você precisa de uma conta com o PostMan ou um serviço semelhante.

  • Você precisa gerar um token de acesso para seu ambiente do Dataverse para enviar solicitações GET e POST.

    • Configure uma conta do Azure com uma assinatura ativa. Se você não tiver uma conta ativa, configure uma conta no site do Azure.

    • O PowerShell deve ser instalado. Para obter mais informações, consulte Instalar o PowerShell.

    • Insira o seguinte comando no PowerShell para obter um token de acesso: az sign in --allow-no-subscriptions account get-access-token --resource=<https://YourDataverseTenantURL.api.crm.dynamics.com/> --query=accessToken --output=tsv \| Set-Clipboard.

Para salvar sua definição do Power Automate, siga estas etapas:

  1. Localize a ID do fluxo de trabalho do fluxo do Power Automate que deseja salvar. Execute uma das opções a seguir.

    1. Localize a ID do fluxo de trabalho usando uma ação do Power Automate.

      1. Crie uma ação de composição com a expressão workflow() no final do fluxo do Power Automate.

      Captura de tela da ação Redigir.

      1. Executar Power Automate.

      2. A propriedade xrmWorkflowId dos resultados da execução contém a ID do fluxo de trabalho.

      Captura de tela da ID do fluxo de trabalho.

      1. Exclua essa ação do fluxo para que ela não seja executada novamente.
    2. Opcionalmente, você pode enviar uma solicitação Get OData.

      1. Acesse o fluxo para o qual você deseja salvar a ID do fluxo de trabalho. Localize o identificador exclusivo na URL. Essa ID é exibida após .. /flows/ na URL.

      Captura de tela de como localizar o identificador exclusivo.

      1. Envie uma solicitação OData para recuperar os metadados do fluxo de trabalho. O exemplo a seguir mostra uma solicitação GET.
        GET {Env url}/api/data/v9.1/workflows?$filter=workflowidunique eq '{ID de fluxo de trabalho exclusivo do Power Automate U}'&$select=workflowid,workflowidunique

      2. Salve a propriedade workflowid retornada.

  2. Localize a ID da definição do provedor.

    1. Selecione a definição do provedor para a qual você deseja salvar o fluxo.

    2. Copie a ID da definição do provedor na URL. Essa parte da URL é .. /id={example number}/.

    Captura de tela de como localizar a ID de definição do provedor.

  3. Anote o valor definido da opção para o tipo de Power Automate que você está salvando.

    1. Fluxo filho: 192350002

    2. Ação do provedor: 192350001

    3. Manipulador de mensagens do provedor: 192350000

    4. Extrator de mensagens do provedor: 192350003

  4. Envie uma solicitação POST para salvar sua definição do Power Automate. O exemplo a seguir mostra a solicitação.

    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. Verifique se o componente de Definição da Lógica de Definição do Provedor está na solução. Para fazer essa verificação, siga estas etapas:

    1. Acesse sua solução de provedor.

    2. Verifique se a Definição de Lógica da Definição do Provedor que você criou está na solução. Se não estiver na solução, selecione Adicionar Existente e adicione o componente que você criou.

Salvar referências de conexão

Se o seu provedor usa conectores de clientes do Power Automate, você deve concluir as seguintes etapas para salvar referências de conexão na sua solução do Power Automate.

  1. Envie uma solicitação GET para recuperar sua ID de referência de conexão. Por exemplo:
GET {Env url}/api/data/v9.2/connectionreferences

Se você quiser filtrar ainda mais, filtre por nome de referência de conexão. Por exemplo:

    {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. Valide se a ID de referência de conexão correta é recuperada pesquisando os dados do cliente do Power Automate.

    1. Acesse o componente de definição de lógica da definição do provedor salvo anteriormente.

    2. Verifique os dados do cliente para confirmar se connectionReferenceLogicalName aparece.

  2. Localize a ID da definição do seu provedor. Esse valor é o mesmo que você usou na Etapa 2 para salvar suas definições lógicas do Power Automate.

  3. Envie uma solicitação POST para salvar sua referência de conexão. Por exemplo:

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

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

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

}
  1. Valide se o componente de definição de lógica da definição do provedor foi adicionado.

    1. Acesse sua solução de provedor.

    2. Verifique se o componente de referência da definição de lógica da definição do provedor criado foi adicionado. Se não tiver sido adicionado, selecione Adicionar Existente e adicione o componente que você criou.

Compartilhar seus provedores

Se você quiser usar sua definição de provedor em outro ambiente ou compartilhar sua solução, exporte sua solução de provedor. Para obter mais informações, consulte Exportar soluções.