Compartilhar via


Criar ordens de trabalho usando Power Automate

Você pode criar ordens de trabalho automaticamente em Dynamics 365 Field Service usando fluxos de Power Automate. Isso é útil quando as ordens de trabalho precisam ser criadas com base em gatilhos externos, como um alerta de IoT, um envio de formulário, uma solicitação de serviço de outro sistema ou uma alteração para um registro relacionado.

Os fluxos do Power Automate usam o conector Microsoft Dataverse para interagir com os registros do Field Service. Para obter informações sobre como criar ordens de trabalho por meio do código, vá para Criar ordens de trabalho usando a API Web do Dataverse.

Pré-requisitos

  • Uma licença de Power Automate (incluída na maioria das licenças Dynamics 365).
  • Pelo menos uma das seguintes funções de segurança do Field Service atribuídas à conta de conexão do fluxo. Saiba mais em Configurar usuários e funções de segurança.
    • Field Service - Despachante
    • Serviço de Campo - Administrador
  • Registros existentes para os campos de pesquisa necessários:
    • Conta de Serviço (account entidade)
    • Tipo de Ordem de Trabalho (msdyn_workordertype entidade)
    • Lista de Preços (pricelevel entidade)

Opção 1: criar uma ordem de trabalho quando um registro do Dataverse for alterado

Use esse padrão para criar uma ordem de trabalho em resposta a uma alteração em outra tabela do Dataverse, como quando o status de um ativo do cliente é alterado.

Configurar o gatilho

  1. Em Power Automate, selecione Criar>Fluxo de nuvem automatizado.

  2. Pesquise e selecione Quando uma linha for adicionada, modificada ou excluída (conector Microsoft Dataverse).

  3. Quando solicitado, entre no conector Microsoft Dataverse usando suas credenciais de Dynamics 365. Se você já possui uma conexão com o seu ambiente, selecione-a no menu suspenso. Os campos de configuração do gatilho não são preenchidos até que uma conexão ativa seja estabelecida.

  4. Configure o gatilho:

    Campo Valor
    Tipo de alteração Modificado
    Nome da tabela Ativos do Cliente
    Âmbito Organização
  5. Opcionalmente, adicione uma condição Filtrar linhas para limitar quando o fluxo é executado. Por exemplo: msdyn_operationalstatus eq 690970001 (Necessita de serviço).

Dica

Para testar as etapas de criação da ordem de trabalho sem alterar um registro do Dataverse, crie uma cópia do fluxo e substitua o acionador do Dataverse por Acionar um fluxo manualmente. Adicione parâmetros de entrada (como entradas de texto para a ID da conta de serviço, ID do tipo de ordem de trabalho e ID da lista de preços) para que você possa passar valores de teste ao executar o fluxo. Depois de verificar se a ordem de trabalho foi criada corretamente, retorne para o trigger do Dataverse em seu fluxo de produção.

Adicionar a ação Criar ordem de trabalho

  1. Selecione + Novo passo e pesquise Adicionar nova linha (conector Microsoft Dataverse).

  2. Selecione a mesma conexão do Dataverse usada para o gatilho. O campo Nome da Tabela só aparece depois que uma conexão é selecionada.

  3. Defina o nome da tabela como Ordens de Trabalho.

  4. Preencha os campos necessários:

    Campo Valor
    Número da ordem de serviço Insira a expressão guid() como um espaço reservado. O campo Número da Ordem de Trabalho é exigido pela interface do usuário do conector do Dataverse, mas o plug-in de numeração automática do Field Service atribui automaticamente o número sequencial correto da ordem de trabalho quando o registro é salvo. Para inserir uma expressão, selecione o campo, alterne para a guia Expressão no painel de conteúdo dinâmico, digite guid()e selecione OK.
    Conta de Serviço Selecione a conta usando o campo de pesquisa ou insira a expressão na guia concat('/accounts(', 'service-account-guid', ')')Expressão se precisar usar um GUID dinâmico ou codificado. Veja abaixo como encontrar isso.
    Tipo de Ordem de Serviço Selecione o tipo de ordem de trabalho usando o campo de pesquisa ou insira a expressão na guia concat('/msdyn_workordertypes(', 'work-order-type-guid', ')')Expressão se precisar usar um GUID codificado ou dinâmico. Veja abaixo como encontrar isso.
    Lista de preços Selecione a lista de preços usando o campo de pesquisa ou insira a expressão na guia concat('/pricelevels(', 'your-price-list-guid', ')')Expressão se precisar usar um GUID codificado ou dinâmico. Se você recuperar a lista de preços dinamicamente usando uma ação Listar linhas dentro de um loop For each, utilize concat('/pricelevels(', items('YourLoopName')?['pricelevelid'], ')') ao invés, substituindo YourLoopName pelo nome do loop. Veja abaixo como encontrar isso.
    Status do sistema 690970000 (Não programado)
    Tributável false
    Instruções Use o conteúdo dinâmico do gatilho, por exemplo, o nome do ativo

    Conta de Serviço: digite o nome da conta diretamente no campo Conta de Serviço para pesquisar e selecioná-lo. Se o gatilho for uma alteração do Ativo do Cliente e o ativo estiver vinculado a uma conta, você poderá selecionar Conta (Ativos do Cliente) no painel de conteúdo dinâmico. Se você precisar usar um GUID diretamente, vá para a área de Serviço em Contas de Clientes, no Serviço de Campo, abra a conta e copie a ID do registro da URL do navegador (o valor entre e , ou o GUID sem formatação, se a URL não for codificada).

    Tipo de Ordem de Trabalho: digite o nome do tipo de ordem de trabalho diretamente no campo Tipo de Ordem de Trabalho para pesquisar e selecioná-lo. Se você precisar usar um GUID diretamente, vá para a área Configurações>Ordem de Trabalho>Tipos de Ordem de Trabalho no Serviço de Campo, abra o tipo de ordem de trabalho e copie a ID do registro da URL do navegador.

    Lista de Preços: digite o nome da lista de preços diretamente no campo Lista de Preços para pesquisar e selecioná-lo. Se você precisar usar um GUID diretamente, acesse Configurações>Gerais>Listas de Preços no Serviço de Campo, abra a lista de preços e copie o ID do registro do URL do navegador.

    Observação

    O conector do Dataverse requer campos de pesquisa para usar um caminho de referência de entidade OData (por exemplo, /accounts(guid)) em vez de um GUID simples. A inserção de um GUID simples causa um ODataUnrecognizedPathException em tempo de execução. As concat expressões acima constroem o formato de caminho correto.

  5. Salve e teste o fluxo.

Opção 2: Criar uma ordem de trabalho a partir de uma solicitação HTTP

Use esse padrão para criar uma ordem de trabalho de um sistema externo, como um portal do cliente, um sistema de tíquetes ou uma plataforma IoT.

Configurar o gatilho

  1. Em Power Automate, selecione Create>Instant cloud flow.

  2. Nomeie o fluxo e selecione Quando uma solicitação HTTP for recebida como o gatilho.

  3. Selecione Criar.

  4. No campo Esquema JSON do Corpo da Solicitação , cole o seguinte esquema:

    {
      "type": "object",
      "properties": {
        "serviceAccountId": { "type": "string" },
        "workOrderTypeId": { "type": "string" },
        "priceListId": { "type": "string" },
        "instructions": { "type": "string" }
      },
      "required": ["serviceAccountId", "workOrderTypeId", "priceListId"]
    }
    
  5. Para quem pode disparar o fluxo, selecione uma das seguintes opções:

    Opção Quando usar
    Somente usuários em meu locatário Recomendado para ambiente de produção. Os chamadores devem autenticar com Microsoft Entra ID e apresentar um token de portador OAuth válido. Use isso para sistemas internos ou entidades de serviço confiáveis.
    Qualquer pessoa A URL em si atua como a credencial . Nenhum cabeçalho de autenticação adicional é necessário. Use somente quando o sistema de chamada não puder obter um token de Entra ID e você puder garantir que a URL seja armazenada com segurança.

    Saiba mais sobre como garantir a segurança de fluxos disparados por HTTP em Adicionar autenticação OAuth para gatilhos de solicitação HTTP.

  6. O campo URL HTTP é somente leitura – não preencha-o. Power Automate o popula automaticamente quando você salva o fluxo pela primeira vez.

  7. Salve o fluxo. O campo URL HTTP agora é preenchido com a URL do ponto de extremidade. Copie essa URL e forneça-a a quem configurar o sistema externo (como um desenvolvedor ou administrador do sistema). O sistema externo dispara o fluxo enviando uma solicitação HTTP POST para essa URL com um corpo JSON que corresponde ao esquema definido. Por exemplo:

    POST <paste the HTTP URL here>
    Content-Type: application/json
    
    {
      "serviceAccountId": "<account record GUID>",
      "workOrderTypeId": "<work order type record GUID>",
      "priceListId": "<price list record GUID>",
      "instructions": "Reported issue: equipment not functioning"
    }
    

    Sempre que o sistema externo envia essa solicitação, Power Automate executa o fluxo e cria uma ordem de trabalho no Serviço de Campo.

Adicionar a ação Criar ordem de trabalho

  1. Selecione + Nova etapa e pesquise Adicionar uma nova linha (conector Microsoft Dataverse).

  2. Entre no conector Microsoft Dataverse ou selecione uma conexão existente. O campo Nome da Tabela só aparece depois que uma conexão é selecionada.

  3. Defina o nome da tabela como Ordens de Trabalho.

  4. Mapeie os campos do corpo da solicitação HTTP para os campos da ordem de trabalho:

    Campo Ordem de Trabalho Valor
    Número da ordem de serviço Insira a expressão guid() como um espaço reservado. O campo Número da Ordem de Serviço é exigido pela interface do usuário do conector do Dataverse, mas o plug-in de numeração automática do Field Service atribui automaticamente o número de ordem de serviço sequencial correto quando o registro é salvo. Para inserir uma expressão, selecione o campo, alterne para a guia Expressão no painel de conteúdo dinâmico, digite guid()e selecione OK.
    Conta de Serviço concat('/accounts(', triggerBody()?['serviceAccountId'], ')')
    Tipo de Ordem de Serviço concat('/msdyn_workordertypes(', triggerBody()?['workOrderTypeId'], ')')
    Lista de preços concat('/pricelevels(', triggerBody()?['priceListId'], ')')
    Status do sistema 690970000 (Não programado)
    Instruções @{triggerBody()?['instructions']}
  5. Opcionalmente, adicione uma ação de resposta para retornar a nova ID da ordem de trabalho ao sistema de chamada:

    1. Selecione + Novo passo e pesquise Resposta (do conector Solicitação).
    2. Definir o código de status como 200.
    3. No campo Corpo , selecione o ícone de conteúdo dinâmico e escolha msdyn_workorderid na etapa Adicionar uma nova linha . Esta é a ID exclusiva da ordem de trabalho que acabou de ser criada.

    Sem essa etapa, o sistema de chamadas não recebe resposta e a solicitação HTTP atinge o tempo limite após a espera. Se você adicionar essa etapa, o sistema de chamadas receberá uma 200 resposta com a ID da ordem de trabalho assim que o fluxo for concluído.

Valores definidos da opção Status do Sistema

Use esses valores inteiros ao definir o Status do Sistema em um fluxo ou chamada à API.

Etiqueta Valor
Não Agendada 690970000
Agendada 690970001
Em Andamento 690970002
Concluído 690970003
Postado 690970004
Cancelado 690970005

Considerações

Propriedade da conta de conexão de fluxo

Os pedidos de trabalho criados por um fluxo pertencem à conta de conexão usada no conector do Dataverse. Verifique se essa conta tem a função de segurança correta e se as ordens de trabalho criadas pelo fluxo aparecem nas exibições e filas esperadas.

Registros filhos

A ação Adicionar uma nova linha cria apenas o cabeçalho da ordem de trabalho. Para adicionar produtos de ordem de trabalho, serviços ou tarefas de serviço, adicione etapas separadas de 'Adicionar uma nova linha' para cada tabela filho (msdyn_workorderproduct, msdyn_workorderservice, msdyn_workorderservicetask) e defina o campo de pesquisa da Ordem de Trabalho para o ID retornado na etapa de criação.

Limites de taxa de API

Os fluxos do Power Automate estão sujeitos aos limites da API do Dataverse. Para cenários de alto volume, considere usar o ponto de extremidade de lote da API Web do Dataverse ou distribuir execuções de fluxo usando um gatilho programado com processamento em lote.

Evitando ordens de trabalho duplicadas

Se um fluxo for executado com frequência no mesmo gatilho, adicione uma condição para verificar se uma ordem de trabalho já existe antes de criar uma nova. Use uma ação listar linhas filtrada pela ID do registro de origem para verificar se há pedidos de trabalho existentes.

Tratamento de erros

Para fluxos de produção, encapsule a etapa Adicionar uma nova linha em uma ação de Escopo e adicione um branch paralelo configurado para executar em caso de falha. Use esse branch para registrar o erro ou enviar uma notificação. Para fluxos disparados por HTTP, sempre adicione uma Ação de Resposta para que o sistema que faz a chamada receba um código de status de sucesso ou falha em vez de atingir o tempo limite.

Próximas Etapas