Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Pode criar automaticamente ordens de trabalho no Dynamics 365 Field Service usando fluxos do Power Automate. Isto é útil quando é necessário criar ordens de trabalho com base em gatilhos externos, como um alerta IoT, submissão de formulários, um pedido de serviço a outro sistema ou uma alteração a um registo relacionado.
Os fluxos do Power Automate utilizam o conector Microsoft Dataverse para interagir com os registos do Field Service. Para informações sobre como criar ordens de trabalho através de código, consulte Criar ordens de trabalho usando a API Web do Dataverse.
Pré-requisitos
- Uma licença 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ída à conta de ligação do fluxo. Saiba mais em Configurar utilizadores e funções de segurança.
- Field Service — Expedidor
- Field Service — Administrador
- Registos existentes para os campos de pesquisa obrigatórios:
-
Conta de Serviço (
accountentidade) -
Tipo de Ordem de Trabalho (
msdyn_workordertypeentidade) -
Lista de Preços (
pricelevelentidade)
-
Conta de Serviço (
Opção 1: Criar uma ordem de trabalho quando um registo Dataverse mudar
Use este padrão para criar uma ordem de trabalho em resposta a uma alteração noutra tabela Dataverse, como quando o estado de um ativo de cliente muda.
Prepara o gatilho
Em Power Automate, selecione Create>Automated cloud flow.
Procure e selecione Quando uma linha é adicionada, modificada ou eliminada (conector Microsoft Dataverse).
Quando solicitado, inicie sessão no conector Microsoft Dataverse usando as suas credenciais Dynamics 365. Se já tens ligação ao teu ambiente, seleciona-a no menu suspenso. Os campos de configuração do gatilho só são preenchidos após o estabelecimento de uma ligação ativa.
Configure o gatilho:
Campo Value Alterar tipo Modificado Nome da tabela Ativos do Cliente Scope Organização Opcionalmente, adicione uma condição de linhas de filtro para limitar quando o fluxo é executado. Por exemplo:
msdyn_operationalstatus eq 690970001(Necessita de Serviço).
Sugestão
Para testar os passos de criação da ordem de trabalho sem alterar um registo do Dataverse, crie uma cópia do seu fluxo e substitua o gatilho do Dataverse por Disparar manualmente um fluxo. Adicione parâmetros de entrada (como entradas de texto para o ID da conta de serviço, ID do tipo de ordem de trabalho e ID da lista de preços) para passar os valores de teste ao executar o fluxo. Depois de verificares se a ordem de trabalho foi criada corretamente, volta ao gatilho do Dataverse no teu fluxo de produção.
Adicionar a ação Criar ordem de trabalho
Selecione + Novo passo e procure por Adicionar uma nova linha (conector Microsoft Dataverse).
Seleciona a mesma ligação Dataverse que usaste para o gatilho. O campo nome da tabela só aparece depois de uma ligação ser selecionada.
Defina o nome da Tabela para Ordens de Trabalho.
Preencha os campos obrigatórios:
Campo Value Número da Ordem de Serviço Insira a expressão guid()como um marcador de lugar. O campo Número da Ordem de Trabalho é exigido pela interface do conector Dataverse, mas o plugin de autonumeração do Field Service atribui automaticamente o número correto da ordem de trabalho sequencial quando o registo é guardado. Para introduzir uma expressão, selecione o campo, mude para o separador Expressão no painel de conteúdo dinâmico, escrevaguid(), e selecione OK.Conta de Serviço Selecione a conta usando o campo de pesquisa, ou introduza a expressão concat('/accounts(', 'service-account-guid', ')')no separador Expressões se precisar de usar um GUID codificado fixamente ou dinâmico. Veja abaixo como encontrar isto.Tipo de Ordem de Serviço Selecione o tipo de ordem de trabalho usando o campo de pesquisa, ou introduza a expressão concat('/msdyn_workordertypes(', 'work-order-type-guid', ')')no separador Expressões se precisar de usar um GUID codificado fixamente ou dinâmico. Veja abaixo como encontrar isto.Tabela de Preços Selecione a lista de preços usando o campo de pesquisa, ou introduza a expressão concat('/pricelevels(', 'your-price-list-guid', ')')no separador Expressão se precisar de usar um GUID codificado fixamente ou dinâmico. Se recuperares a lista de preços dinamicamente usando uma ação List rows dentro de um For each, useconcat('/pricelevels(', items('YourLoopName')?['pricelevelid'], ')')em vez disso, substituindoYourLoopNamepelo nome do teu ciclo. Veja abaixo como encontrar isto.Estado do sistema 690970000(Não agendado)Tributável falseInstruções Use conteúdo dinâmico do gatilho, por exemplo o nome do ativo Conta de Serviço: Escreva o nome da conta diretamente no campo da Conta de Serviço para procurar e selecionar. Se o gatilho for uma alteração no Ativo do Cliente e o ativo estiver ligado a uma conta, pode em vez disso selecionar Conta (Recursos do Cliente) no painel de conteúdo dinâmico. Se necessitar de usar um GUID diretamente, vá à área de Serviço, >Clientes>Contas no Field Service, abra a conta e copie o ID do registo do URL do navegador (o valor entre
%7Be%7D, ou o GUID simples se o URL não estiver codificado).Tipo de Ordem de Trabalho: Digite o nome do tipo de ordem de trabalho diretamente no campo Tipo de Ordem de Trabalho para o procurar e selecionar. Se precisares de usar um GUID diretamente, vai à área de Definições em Ordens de Trabalho>Tipos de Ordem de Trabalho no Field Service, abre o tipo de ordem de trabalho e copia o ID do registo a partir do URL do navegador.
Lista de Preços: Escreva o nome da lista de preços diretamente no campo Lista de Preços para pesquisar e selecionar. Se precisares de usar um GUID diretamente, vai a Definições>Geral>Listas de Preços no Field Service, abre a lista de preços e copia o ID do registo a partir do URL do navegador.
Observação
O conector Dataverse exige que os campos de consulta utilizem um caminho de referência de entidade OData (por exemplo,
/accounts(guid)) em vez de um GUID simples. Entrar em um GUID nu causa umODataUnrecognizedPathExceptionem tempo de execução. Asconcatexpressões acima constroem o formato de caminho correto.Guardar e testar o fluxo.
Opção 2: Criar uma ordem de trabalho a partir de um pedido HTTP
Use este padrão para criar uma ordem de trabalho a partir de um sistema externo, como um portal de clientes, sistema de tickets ou plataforma IoT.
Prepara o gatilho
No Power Automate, selecione Criar>Fluxo de nuvem instantâneo.
Nomeie o fluxo e selecione Quando um pedido HTTP é recebido como gatilho.
Selecione Criar.
No campo Request Body JSON Schema , cole o seguinte esquema:
{ "type": "object", "properties": { "serviceAccountId": { "type": "string" }, "workOrderTypeId": { "type": "string" }, "priceListId": { "type": "string" }, "instructions": { "type": "string" } }, "required": ["serviceAccountId", "workOrderTypeId", "priceListId"] }Para quem pode desencadear o fluxo, selecione uma das seguintes opções:
Option Quando utilizar Apenas utilizadores no meu tenant Recomendado para produção. Os chamadores devem autenticar-se com o Microsoft Entra ID e apresentar um token portador OAuth válido. Use isto para sistemas internos ou para princípios de serviço de confiança. Qualquer pessoa O próprio URL atua como credencial — não é necessário um cabeçalho adicional de autenticação. Use apenas quando o sistema que chama não conseguir obter um token Entra ID e pode garantir que o URL é armazenado de forma segura. Saiba mais sobre como proteger fluxos desencadeados por HTTP em Adicionar autenticação OAuth para disparadores de pedidos HTTP.
O campo URL HTTP é apenas leitura — não o preenchas. O Power Automate preenche-o automaticamente quando guardas o fluxo pela primeira vez.
Salve o fluxo. O campo URL HTTP é agora preenchido com o URL do endpoint. Copie este URL e forneça-o a quem configurar o sistema externo (como um programador ou administrador de sistema). O sistema externo desencadeia o fluxo enviando um pedido HTTP POST para esta URL com um corpo JSON que corresponde ao esquema que definiste. 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" }Cada vez que o sistema externo envia este pedido, o Power Automate executa o fluxo e cria uma ordem de trabalho no Field Service.
Adicionar a ação Criar ordem de trabalho
Selecione + Novo passo e procure por Adicionar uma nova linha (conector Microsoft Dataverse).
Inicie sessão no conector Microsoft Dataverse ou selecione uma ligação existente. O campo nome da tabela só aparece depois de uma ligação ser selecionada.
Defina o nome da Tabela para Ordens de Trabalho.
Mapear os campos do corpo do pedido HTTP para os campos da ordem de trabalho:
Campo de ordem de trabalho Value Número da Ordem de Serviço Insira a expressão guid()como um marcador de lugar. O campo Número da Ordem de Trabalho é exigido pela interface do conector Dataverse, mas o plugin de autonumeração do Field Service atribui automaticamente o número correto da ordem de trabalho sequencial quando o registo é guardado. Para introduzir uma expressão, selecione o campo, mude para o separador Expressão no painel de conteúdo dinâmico, escrevaguid(), e selecione OK.Conta de Serviço concat('/accounts(', triggerBody()?['serviceAccountId'], ')')Tipo de Ordem de Serviço concat('/msdyn_workordertypes(', triggerBody()?['workOrderTypeId'], ')')Tabela de Preços concat('/pricelevels(', triggerBody()?['priceListId'], ')')Estado do sistema 690970000(Não agendado)Instruções @{triggerBody()?['instructions']}Opcionalmente, adicione uma ação de Resposta para devolver o novo ID da ordem de trabalho ao sistema que chama:
- Selecionar + Novo passo e procurar Resposta (no conector Pedido).
- Defina o código de estado para
200. - No campo Corpo, selecione o ícone de conteúdo dinâmico e escolha msdyn_workorderid no passo Adicionar uma nova linha. Este é o ID único da ordem de trabalho que acabou de ser criada.
Sem este passo, o sistema que chama não recebe resposta e o pedido HTTP expira após a espera. Se adicionar este passo, o sistema de chamada recebe uma
200resposta com o ID da ordem de trabalho assim que o fluxo termina.
Valores do conjunto de opções de estado do sistema
Use estes valores inteiros ao definir o Estado do Sistema numa chamada de fluxo ou API.
| Etiqueta | Value |
|---|---|
| Não Agendado | 690970000 |
| Agendado | 690970001 |
| Em curso | 690970002 |
| Concluído | 690970003 |
| Lançado | 690970004 |
| Cancelado | 690970005 |
Considerações
Propriedade da conta de integração de fluxos
As ordens de trabalho criadas por um fluxo são propriedade da conta de conexão utilizada no conector do Dataverse. Assegure que esta conta tem a função de segurança correta e que as ordens de trabalho criadas pelo fluxo aparecem nas exibições e filas esperadas.
Registos infantis
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 passos separados de Adicionar uma nova linha para cada tabela filha (msdyn_workorderproduct, msdyn_workorderservice, msdyn_workorderservicetask) e defina o campo de consulta de Ordem de Trabalho para o ID devolvido pela 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 grande volume, considere usar o endpoint de processamento em lote da API Web da Dataverse ou distribuir execuções de fluxos usando um gatilho programado com processamento em lote.
Evitar ordens de trabalho duplicadas
Se um fluxo é executado frequentemente 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 Lista de linhas filtrada pelo ID do registo de origem para verificar ordens de trabalho existentes.
Tratamento de erros
Para fluxos de produção, envolva o passo Adicionar uma nova linha numa ação Scope e adicione um ramo paralelo configurado para executar ocorreu uma falha. Use este ramo para registar o erro ou enviar uma notificação. Para fluxos acionados por HTTP, adicione sempre uma ação de Resposta para que o sistema que chama receba um código de estado de sucesso ou falha em vez de expirar o tempo.