Dynamics do Zero ao PRO · Lição 21 de 48 · Módulo 3
LIÇÃO 21Atualização em Massa via Fluxo Agendado
Casos "Em Espera" que ficam semanas sem resposta do cliente bagunçam os relatórios e o dashboard. Este fluxo roda toda segunda-feira de manhã, encontra esses casos parados e atualiza o status automaticamente — mantendo a base limpa sem trabalho manual.
📅 Módulo 3 — Power Automate⏱ 18 min de leitura🎯 Nível: Intermediário✍️ Pablo Maruk
🎯
Resultado desta lição
Ao final, você terá um fluxo que roda toda segunda-feira às 8h, encontra casos "Em Espera" há mais de 7 dias e cancela automaticamente aqueles sem resposta — com nota no Timeline explicando o motivo.
O problema que este fluxo resolve
Casos "Em Espera" acumulam sem controle
Quando um agente coloca um caso "Em Espera" aguardando retorno do cliente, esse caso some do radar. Sem um processo de follow-up, ele fica em espera para sempre — distorcendo métricas, inflando o número de casos ativos e dificultando relatórios reais.
A solução profissional é uma política clara: caso em espera há mais de 7 dias sem resposta é cancelado automaticamente, com nota explicativa no Timeline. O cliente recebe um e-mail informando que pode reabrir quando quiser.
Regra de negócio que vamos automatizar:
SE caso está com Status Reason = "On Hold"
E a última modificação foi há mais de 7 dias
ENTÃO cancelar o caso e notificar o cliente
Flow name:Dynamics — Limpeza Semanal de Casos em Espera Starting: próxima segunda-feira Repeat every:1 Week On these days:Monday
Nas configurações avançadas do trigger de recorrência, defina o horário:
At these hours:8 At these minutes:0
Fuso horário: O Power Automate usa UTC por padrão. Se seu time trabalha em horário de Brasília (UTC-3), configure o horário como 11 (UTC) para que rode às 8h no Brasil.
Liste os casos em espera há mais de 7 dias
→+ New step → List rows (Dataverse)
Table name:Cases Filter rows (OData): statecode eq 0 and statuscode eq 2 and modifiedon lt @{addDays(utcNow(), -7)}
Decodificando o filtro: statecode eq 0 = caso ativo, statuscode eq 2 = Status Reason = "On Hold", modifiedon lt addDays(utcNow(), -7) = não foi modificado nos últimos 7 dias.
Confirme o valor de statuscode: O valor numérico do Status Reason "On Hold" pode variar entre implementações. No Dynamics padrão é 2, mas customizações podem mudar isso. Verifique no Dataverse: tabela Case → coluna statuscode → veja o valor numérico da opção "On Hold".
Esse contador vai acumular quantos casos foram cancelados nesta execução — útil para o log final.
Configure o loop e as ações por caso
Apply to each → valor: value do List rows
Dentro do loop, adicione 3 ações em sequência:
Ação 1: Update a row (Dataverse · Cases)
Row ID: Case (Value)
Status: Cancelled (statecode = 2)
Status Reason: Cancelled (statuscode = 6)
Ação 2: Add a new row (Dataverse · Annotations)
Regarding: Case (Value)
Note Text: ⚙️ Caso cancelado automaticamente. Estava em espera há mais de 7 dias sem retorno do cliente. O cliente pode reabrir o caso a qualquer momento.
Envie e-mail de resumo ao supervisor (fora do loop)
Após o loop (fora do Apply to each), adicione a condição:
Condição: CasosCancelados > 0
No lado Yes:
Send an email Subject:✅ Limpeza semanal concluída — [CasosCancelados] casos cancelados Body: A rotina semanal de limpeza foi executada. [CasosCancelados] casos que estavam em espera há mais de 7 dias foram cancelados automaticamente.
Configure tratamento de erro com "Configure run after"
Um caso pode falhar ao ser atualizado (por exemplo, se foi modificado por outro processo ao mesmo tempo). Configure o fluxo para continuar mesmo com erros individuais:
→ Na ação de Update a row, clique nos três pontos (...) →Configure run after → Marque: is successful E has failed → Clique em Done
Isso faz com que as ações seguintes (nota e contador) rodem mesmo se o update falhou — e o loop continua para o próximo caso sem travar o fluxo inteiro.
Configure run after: É um dos recursos mais importantes para fluxos em produção. Sem ele, um erro em um caso cancela o processamento de todos os outros. Com ele, você trata falhas individuais e o lote continua.
Revisão
Checklist
Criou fluxo agendado para toda segunda-feira às 8h
Configurou filtro OData com statecode, statuscode e modifiedon
Inicializou variável de contador Integer
Configurou loop com Update, Annotation e Increment
Adicionou e-mail de resumo condicional ao supervisor
Configurou "Configure run after" para tratamento de erros
Verificou o valor numérico do statuscode "On Hold" no Dataverse
Vale saber
Notificar o cliente antes de cancelar
Uma versão mais sofisticada deste fluxo adiciona uma etapa de aviso antes do cancelamento: quando o caso completa 5 dias em espera, o fluxo envia um e-mail ao cliente avisando que o caso será cancelado em 48 horas se não houver resposta.
Fluxo com aviso prévio:
1. Lista casos em espera há mais de 5 dias → envia e-mail de aviso
2. (Segundo fluxo) Lista casos em espera há mais de 7 dias → cancela
Use um campo customizado "Data do Aviso Enviado" para evitar enviar o aviso múltiplas vezes para o mesmo caso.
Pablo Maruk
Analista Funcional de Dynamics · 16 anos de TI · EUA & Europa