Flujos que envejecen bien: buenas prácticas en Power Automate parte 2

Publicado el 26 de abril de 2026, 7:25

Introducción

En el primer artículo hablábamos de flujos que envejecen bien: flujos que se entienden, que no dan miedo al abrirlos y que no se rompen cada vez que alguien los toca. Hablábamos de nombres claros, de no abusar de Apply to each, de pensar antes de arrastrar acciones. En definitiva, de sobrevivir al caos inicial.

Esta segunda etapa aparece cuando ese caos inicial ya está más o menos bajo control… pero el volumen de trabajo sigue aumentando. Es el momento en que Power Automate deja de ser un flujo improvisado un día cualquiera y empieza a convertirse en un componente real del sistema: algo que ejecuta procesos críticos, maneja datos relevantes y que, dentro de seis meses, alguien tendrá que mantener (posiblemente tú mismo).

Aquí no vamos a repetir lo básico. Vamos a hablar de criterio, de decisiones de diseño y de pensar el flujo como algo que va a vivir en producción.

Diseña el flujo como si fuera código (aunque no lo sea)

Power Automate es low‑code, pero eso no significa que puedas dejar de pensar como desarrollador. Un flujo que envejece bien tiene una estructura reconocible: sabes dónde empieza, qué transforma, dónde decide y cómo termina. Cuando abres el diseñador, tu cerebro debería poder “leer” el flujo sin ejecutarlo mentalmente paso a paso.

Por ejemplo, imagina un flujo que se dispara al crear una solicitud en Dataverse. Un diseño sano sería: primero validar los datos de entrada, después enriquecer la información (buscar responsable, equipo, prioridad), luego tomar decisiones y, por último, ejecutar acciones externas como notificaciones o integraciones. Todo eso se puede reflejar visualmente usando Scope como bloques funcionales, no solo como contenedores de errores.

Si no eres capaz de explicar qué hace tu flujo en tres frases —sin abrir Power Automate— el problema no es quien lo lee. El problema es el flujo.

La configuración es dato, no lógica

Uno de los motivos por los que los flujos envejecen mal es porque mezclan lógica con decisiones de negocio. Correos escritos a mano en condiciones, GUIDs pegados en un Switch, valores que hoy son válidos pero mañana cambian.

Imagina un flujo que, según el tipo de incidencia, envía una notificación a un equipo distinto. La mala solución es un Switch con tres casos y tres direcciones de correo. La buena solución es una tabla de Dataverse llamada, por ejemplo, Configuración de notificaciones, donde cada tipo de incidencia tiene asociado su destinatario.

El flujo deja de “decidir” y pasa a consultar. Y eso cambia todo: menos versiones, menos miedo a tocar el flujo y más control desde negocio sin necesidad de abrir Power Automate.

El trigger también se diseña (no se acepta por defecto)

Muchos flujos empiezan mal desde el primer segundo. Se acepta el trigger tal cual viene y se confía en que “ya filtraremos luego”. El resultado son ejecuciones innecesarias, consumo de cuotas y flujos que se disparan cuando no deberían.

Si tu flujo se dispara al modificar un registro de Dataverse, pregúntate: ¿Todas las modificaciones importan? ¿O solo cuando cambia el estado a “Aprobado”? Usar Trigger Conditions para filtrar desde el inicio no es una optimización prematura; es una buena práctica básica para flujos que van a vivir mucho tiempo.

Cada ejecución que evitas es deuda técnica que no se genera.

Variables con intención (y con ciclo de vida)

En Power Automate todas las variables parecen iguales, pero no lo son. Hay variables que controlan el flujo, otras que acumulan datos y otras que representan un resultado final. Mezclarlas o reutilizarlas “porque ya existe una” es una receta perfecta para la confusión.

Por ejemplo, una variable llamada varResultado que primero guarda un booleano, luego un texto y más tarde un JSON es cómoda hoy… y un infierno mañana. En cambio, variables como varTieneErrores, varTotalImporte o varRespuestaAPI cuentan una historia por sí solas.

Inicializar las variables cerca de donde se usan y darles un nombre con intención es una inversión mínima que se amortiza cada vez que vuelves a abrir el flujo.

Diseña pensando en el fallo (no en el happy path)

El happy path casi nunca falla. Por ejemplo que falle el origen de datos, una API externa que devuelve un 500 o un dato que no cumple lo que esperabas. Diseñar solo para el caso ideal es asumir que el flujo fallará mal.

Un patrón sencillo y muy efectivo es estructurar el flujo en tres Scope: Try, Catch y Finally. En el primero va la lógica principal; en el segundo, el tratamiento de errores; y en el tercero, las acciones que deben ejecutarse siempre, como dejar trazas o actualizar estados.

No es complejidad extra. Es asumir que los errores forman parte del sistema.

Idempotencia: ejecutar dos veces no sea una catástrofe

Un flujo puede ejecutarse dos veces por muchos motivos: reintentos, errores, usuarios impacientes o simplemente porque alguien pulsa dos veces. Si eso rompe datos o duplica registros, el flujo ya estaba roto.

Por ejemplo, antes de crear un registro de pedido en Dataverse, comprueba si ya existe uno con la misma clave de negocio (número de solicitud, referencia externa, etc.). Ese pequeño Get rows previo puede ahorrarte horas de limpieza y explicaciones incómodas.

Un flujo robusto no depende de que “solo se ejecute una vez”.

Observabilidad: deja migas de pan

Cuando algo falla en producción, lo peor no es el error: es no saber qué ha pasado. Un flujo que envejece bien deja pistas. Guarda identificadores, estados intermedios y mensajes claros en un registro de log, ya sea en Dataverse o en otro sistema.

No se trata de llenar todo de trazas, sino de poder responder a preguntas como: ¿Qué registro falló?, ¿Qué paso?, ¿Con qué datos?

Tu yo del futuro te lo agradecerá.

Documentar no es opcional

La documentación en Power Automate no tiene por qué ser un Word de veinte páginas. A veces basta con una acción Compose al inicio explicando qué hace el flujo, qué espera como entrada y qué devuelve como salida.

Ese pequeño texto puede marcar la diferencia entre entender un flujo en cinco minutos o perder una mañana entera.

Conclusion

Un flujo que envejece bien no es el más corto ni el más ingenioso. Es el que se entiende, se puede mantener y se puede cambiar sin miedo. La primera parte de esta serie era sobrevivir al caos; esta segunda es construir con intención.

Porque los flujos no desaparecen. Se heredan.

Y más vale que cuando eso pase, alguien piense: “menos mal que quien hizo esto sabía lo que hacía”.

Añadir comentario

Comentarios

Todavía no hay comentarios