¿Tus aprobaciones de Power Automate se ejecutan en verde pero los correos a los aprobadores no llegan, llegan solo a algunos o aparecen con días de retraso? Aquí tienes un caso real, la causa raíz y una guía práctica, paso a paso, para diagnosticar y resolverlo sin perder tiempo.
Resumen del caso
Un flujo sencillo de Power Automate se disparaba al crear un elemento en una lista de SharePoint. El flujo siempre finalizaba en Succeeded, sin errores ni reintentos. Sin embargo, las notificaciones por correo a tres aprobadores se comportaban de forma intermitente: a veces no llegaban, a veces llegaban solo a uno y en otras ocasiones aparecían con varios días de retraso.
Causa raíz y solución confirmada
- Causa raíz: tras una actualización de infraestructura, el firewall/antispam perimetral comenzó a bloquear o retener en cola los correos de notificación generados por el servicio de Power Automate.
- Acción correctiva: ajustar las reglas del firewall y la política antispam para permitir explícitamente los mensajes del servicio restauró la entrega consistente de las notificaciones.
Cómo reconocer que es un problema de entrega y no de Power Automate
Cuando el run del flujo finaliza con éxito y Start and wait for an approval o Create an approval no muestran errores, el cuello de botella suele estar en el plano de mensajería (transporte, antispam, reglas o cuarentena), no en el flujo.
Indicio | Qué sugiere | Acción inmediata |
---|---|---|
El flujo aparece como Succeeded y Approval tiene Outcome pendiente | La notificación por correo pudo no haber salido/entrado al buzón | Revisar trazas de correo y cuarentena; probar canal alterno (Teams/Push) |
Solo uno de varios aprobadores recibe el correo | Reglas o políticas diferentes por buzón; filtros locales o límites | Comparar cabeceras, reglas del buzón y umbrales de spam por usuario |
Retraso de horas o días | Colas en gateway, greylisting, reintentos o cuarentena temporal | Message Trace en Exchange y logs del gateway para ver saltos y tiempos |
Guía práctica
Verificaciones rápidas
- Historial del flujo. En Run history, confirma que no existan pasos en estado Failed o Skipped. Abre el paso de aprobación y revisa entradas/salidas: debería generarse el Approval ID sin errores. Si usas Send email (V2) en paralelo, valida que no dé Throttling.
- Outlook web y cliente. Pide a los aprobadores revisar Bandeja de entrada, Correo no deseado y la pestaña Otros de Bandeja Prioritarios. Confirma que no existan reglas del usuario que muevan o eliminen las notificaciones.
- Salud del servicio. Comprueba en el Centro de administración que no haya incidentes abiertos que afecten a Exchange Online o Power Automate. Si hay, documenta el impacto.
- Prueba controlada. Ejecuta el flujo apuntando a una cuenta de prueba interna y a otra externa. Anota hora exacta y Subject esperado. Esta “prueba A/B” te dirá si el problema es general, por dominio o por buzón.
- Distribución y grupos. Si notificas a un grupo o lista de distribución, verifica que cada miembro está suscrito a la recepción por correo y que no existen restricciones en el grupo.
Infraestructura y seguridad
Si las comprobaciones rápidas no muestran fallos del flujo ni del cliente, pasa a la capa de transporte y seguridad.
Componente | Qué revisar | Señales de bloqueo o retención |
---|---|---|
Firewall/Email Gateway | Reglas nuevas o cambiadas tras actualizaciones; listas de IP/FQDN; reputación | Logs con TempFail/451, greylisting, Deferred, o Rejected por reputación |
Antispam | Políticas de contenido, spoof, phishing, SCL, cuarentena | Mensajes con SCL alto, cuarentenados por Bulk o Phish |
Transporte | Reglas de flujo, conectores, límites y tamaños | Reglas que cambian SCL, descifran enlaces o retrasan por análisis |
DNS y autenticaciones | SPF, DKIM y DMARC del dominio remitente real | Authentication-Results con fail o none persistentes |
Allowlist y confianza del origen
Las notificaciones de aprobaciones son mensajes transaccionales generados por servicios de Microsoft 365. Para reducir falsos positivos:
- Permite por dominio o remitente las direcciones reales desde las que llegan tus notificaciones. Ejemplo: si recibes desde un remitente del servicio (p. ej., un buzón del tenant o un remitente de servicio), añádelo a Allowed senders y crea una regla de transporte que fije SCL = -1 para esos mensajes.
- Permite por cabeceras si tus políticas bloquean dominios genéricos. Puedes identificar un patrón estable en cabeceras como From, Sender, Return-Path o un X-Header consistente que añada el servicio. Usa ese patrón en una regla que marque el mensaje como confiable.
- Valida SPF, DKIM, DMARC. Si el origen legítimo no alinea SPF/DKIM con el dominio visible, algunos filtros lo tratarán como sospechoso. Ajusta las políticas para no penalizar en exceso notificaciones transaccionales firmadas correctamente.
Cabeceras clave para diagnosticar
Abre uno de los correos que sí llegó y copia las cabeceras completas. Compáralas con las cabeceras del mismo mensaje cuando terminó en No deseado o no llegó.
Cabecera | Qué buscar | Interpretación |
---|---|---|
Authentication-Results | spf=pass|fail , dkim=pass|fail , dmarc=pass|fail | Si hay fail, el gateway puede aumentar SCL o poner en cuarentena |
Received | Saltos, tiempos entre hops, servidor que retiene | Gaps grandes indican colas; identifica el host que difiere o rechaza |
Return-Path / Sender | Dominio y alineación con From | Desalineación puede disparar DMARC; úsalo para crear excepciones controladas |
X-MS-Exchange-Organization-SCL | Valor SCL aplicado | SCL ≥ 5 suele ir a spam; con regla de transporte fija SCL = -1 para el origen confiable |
Message Trace en Exchange Online
Usa la traza de mensajes para saber si el correo fue entregado, diferido, rechazado o puesto en cuarentena. Además de la interfaz gráfica, puedes apoyarte en PowerShell para acelerar el análisis:
# Conectarse
Connect-ExchangeOnline
Traza básica por remitente y fecha
Get-MessageTrace -SenderAddress "remitente-del-servicio@tu-dominio-o-servicio" `
-StartDate (Get-Date).AddDays(-3) -EndDate (Get-Date) |
Format-Table Received,RecipientAddress,Status,FromIP,ToIP,MessageId -Auto
Detalle de eventos (saltos, acciones, reglas)
$trace = Get-MessageTrace -SenderAddress "remitente-del-servicio@tu-dominio-o-servicio" `
-StartDate (Get-Date).AddDays(-3) -EndDate (Get-Date) | Select-Object -First 1
Get-MessageTraceDetail -MessageTraceId $trace.MessageTraceId -RecipientAddress $trace.RecipientAddress |
Format-Table Date,Event,Action,Detail -Auto
Si observas Deferred o Quarantined, revisa las políticas que lo causan. Si ves Delivered pero el usuario no lo encuentra, es probable que una regla del buzón lo moviera o que el cliente lo clasificara como Otros.
Reglas de transporte sugeridas
Crea una regla explícita y documentada para los mensajes de aprobación que:
- Detecte por remitente y/o cabeceras conocidas del servicio.
- Fije SCL = -1 y evite reescritura de URLs si eso introduce retrasos apreciables.
- Agregue una cabecera de auditoría, por ejemplo
X-Approval-Trusted: true
, para facilitar trazas futuras. - Se aplique solo a dominios internos o a los aprobadores designados para no ampliar la superficie de riesgo.
# Ejemplo: regla de confianza para notificaciones de aprobación
New-TransportRule -Name "Allow Power Automate Approvals" `
-From "remitente-del-servicio@tu-dominio-o-servicio" `
-SetSCL "-1" `
-AddHeader "X-Approval-Trusted","true" `
-StopRuleProcessing $true
Complementa con Allowed Senders en tu política de filtrado de contenido si procede, y documenta la justificación de seguridad.
Si tras todo persiste
Cuando has descartado fallas del flujo y los registros de transporte evidencian bloqueos fuera de tu control, abre un caso de soporte desde el Power Platform admin center con la información mínima indispensable:
- Fecha y hora exacta de ejecución de uno o dos runs afectados.
- Run Id y Approval Id.
- Remitente, destinatarios y asunto.
- Capturas de Message Trace y, si existen, de la cuarentena.
Con ello, el equipo podrá correlacionar trazas del lado del servicio y confirmar el punto exacto de retención.
Mitigaciones y buenas prácticas
- Canal alterno inmediato. Además de la acción de aprobación, agrega un paso paralelo con Enviar un correo (V2) desde un buzón propio, un mensaje de Teams al usuario o una notificación push de la app móvil. Así evitas dependencia exclusiva del canal de notificaciones del conector.
- Recordatorios automáticos. Implementa un Delay y un Condition que, si no hay respuesta en X horas, reenvíe la notificación o escale al responsable.
- Centro de Aprobaciones. Recuerda a los aprobadores que pueden responder desde el Centro de Aprobaciones en Power Automate o desde la app de Aprobaciones en Teams, incluso si el correo falla.
- Observabilidad. Registra en una lista de SharePoint o en Dataverse el estado de cada solicitud: fecha de envío, canales notificados, respuesta y tiempos. Esto permite detectar pronto patrones anómalos.
- Message Trace periódica. Programa revisiones semanales de trazas para asegurar que no hay nuevos bloqueos o elevaciones de SCL.
Receta de flujo robusto
Si deseas blindar la comunicación, aquí tienes una receta de alto nivel para tu flujo de aprobación:
- Disparador en SharePoint al crear o modificar el elemento.
- Acción Create an approval con los Approvers requeridos.
- Rama paralela con Enviar un correo (V2) desde un buzón propio y un Post a message in Teams al canal o chat del aprobador.
- Delay de X horas y evaluación del estado con Get approval details. Si sigue pendiente, envía recordatorio o escala a un superior.
- Registro de auditoría en SharePoint o Dataverse con el resultado.
Checklist operativo para infraestructura
Pregunta | Sí | No | Acción |
---|---|---|---|
¿Cambios recientes en firewall/gateway? | Revisar diff de configuración y añadir excepción para notificaciones | ||
¿Reglas de transporte nuevas o modificadas? | Buscar reglas que ajusten SCL o reescriban URLs; añadir bypass controlado | ||
¿SPF/DKIM/DMARC alineados para el origen real? | Corregir autenticaciones o crear excepción basada en cabeceras firmadas | ||
¿Colas o greylisting visibles? | Permitir por IP/FQDN del servicio; reducir TTL de greylisting para el origen | ||
¿Usuarios con reglas personales que mueven el correo? | Normalizar reglas y crear una de “permitir siempre” para el remitente |
Preguntas frecuentes
¿Por qué a veces llega a un aprobador y a otros no?
Porque cada buzón puede tener reglas, reputación y aprendizaje de spam diferentes. Además, algunos gateways aplican cuotas o heurísticas por destinatario.
¿Por qué aparece con días de retraso?
Señal típica de colas en el gateway o reintentos por greylisting. El Message Trace mostrará los saltos y tiempos exactos.
Si el flujo terminó en verde, ¿puede ser culpa de Power Automate?
Si la acción de aprobación se creó sin errores, el flujo cumplió su parte. Los fallos de entrega posterior suelen ser de correo/transporte.
¿Es seguro poner en allowlist estas notificaciones?
Sí, si se hace con alcance mínimo, basado en remitente y cabeceras verificables, y solo para mensajes de aprobación. Documenta la excepción y revisa periódicamente.
Plantillas de comunicación para usuarios
Para agilizar soporte, comparte con los aprobadores una guía ultra breve:
- Revisa Bandeja de entrada, Otros y Correo no deseado.
- Si usas reglas, crea una excepción “Siempre permitir” para el remitente de las aprobaciones.
- Responde desde el Centro de Aprobaciones en Power Automate o desde la aplicación de Aprobaciones en Teams.
- Si no ves el correo, abre un ticket adjuntando fecha y hora aproximadas y el asunto esperado.
Lecciones aprendidas del caso
- El éxito del flujo no garantiza la entrega del correo. Son planos tecnológicos distintos.
- Un cambio en seguridad puede romper comunicaciones antes estables. Revisa tus ventanas de cambio y aplica pruebas postcambio.
- Las excepciones controladas reducen ruido. Una regla de transporte bien acotada evita pérdidas de tiempo.
- Diversificar canales disminuye la dependencia del correo y mejora los tiempos de respuesta.
Conclusión: cuando el flujo se ejecuta bien pero el correo es intermitente, el problema suele estar en entrega/correo (firewall, antispam, reglas) más que en Power Automate. Ajustar la infraestructura de correo, crear una excepción controlada y diversificar canales resuelven el 90% de los casos.
Resumen operativo para replicar la solución
- Confirma en el run del flujo que la acción de aprobación se crea sin errores.
- Realiza una prueba controlada con dos destinatarios y documenta horas y asunto.
- Ejecuta Message Trace para identificar Delivered, Deferred, Quarantined o Failed.
- Si hay retenciones, ajusta firewall/gateway y crea una regla de transporte con SCL = -1 para el remitente de aprobaciones.
- Agrega canal alterno (Teams/Push) y recordatorios automáticos para resiliencia.
Apéndice técnico de referencia rápida
Campos útiles en el historial del flujo
Acción | Campo | Qué validar |
---|---|---|
Create an approval / Start and wait for an approval | Response / Approval ID | Se genera el ID sin error; destinatarios correctos |
Send an email (V2) | Status code | No aparece 429 (Throttling) ni límites de adjuntos |
Get approval details | Outcome / AssignedTo | Estado coherente con las respuestas recibidas |
Comandos de apoyo en Exchange Online PowerShell
# Conectar y ver políticas activas de filtrado
Connect-ExchangeOnline
Get-HostedContentFilterPolicy | Format-Table Name,AllowedSenders,BlockedSenders -Auto
Crear allowed sender (ajusta el remitente real)
Set-HostedContentFilterPolicy -Identity "Default" -AllowedSenders @{Add="remitente-del-servicio\@tu-dominio-o-servicio"}
Ver y depurar reglas de transporte relacionadas
Get-TransportRule | Where-Object {$\_.Name -like "Approval"} | Format-List
Checklist final para cierre del incidente
- Corroboraste que el run del flujo siempre terminaba en Succeeded.
- Message Trace mostró Deferred o cuarentena en el gateway.
- Se aplicó una excepción controlada en firewall/antispam y una regla de transporte con SCL = -1.
- Se añadieron recordatorios y un canal alterno de notificación.
- Se documentó el cambio y se programó una revisión post-implementación.
En síntesis: el correo intermitente en aprobaciones de Power Automate suele tener raíz en el ecosistema de mensajería. Con trazas, análisis de cabeceras, ajuste de gateway/antispam y una arquitectura de notificaciones multicanal, tus aprobaciones volverán a ser fiables y puntuales.