Power Automate Cloud – Sesión 02 – Resumen

Diseño de un flujo end‑to‑end (Power Pages → Dataverse → Power Automate)
🎯 Objetivo de la clase
- Completar la base técnica pendiente: entender JSON (objetos y arreglos) para interpretar entradas/salidas en flujos. [learn.microsoft.com], [learn.microsoft.com]
- Construir un caso práctico real: formulario web (Power Pages) que crea registros en Dataverse, y un flujo automatizado que procesa esa solicitud. [learn.microsoft.com], [learn.microsoft.com], [learn.microsoft.com]
- Implementar un patrón de negocio típico en Power Automate: Validar → Registrar → Aprobar → Notificar/actualizar estado. [learn.microsoft.com], [learn.microsoft.com], [learn.microsoft.com], [learn.microsoft.com]
1) 🧩 Repaso clave: JSON (objetos vs matrices)
Idea esencial: Power Automate devuelve la mayoría de salidas como JSON; entender su estructura permite trabajar con propiedades, arrays y validaciones. [learn.microsoft.com], [learn.microsoft.com]
- Objeto (Object): pares clave:valor dentro de
{ }. [learn.microsoft.com] - Matriz/Arreglo (Array): lista de objetos dentro de
[ ](varios registros). [learn.microsoft.com], [learn.microsoft.com] - En la práctica, lo usual es consumir JSON ya generado por conectores (no “construirlo a mano”). [learn.microsoft.com], [learn.microsoft.com]
✅ Concepto clave: Apply to each aparece cuando una acción devuelve una lista (array), porque el flujo debe iterar elementos. [learn.microsoft.com], [learn.microsoft.com]
2) 🗃️ Dataverse: entorno y modelado de datos (base del caso práctico)
2.1 Creación del entorno/base de datos
- Se explicó la importancia de trabajar en un entorno adecuado (desarrollo) para construir tablas y automatizaciones, evitando usar producción para ejercicios. [learn.microsoft.com], [learn.microsoft.com]
- Se reforzó que el conector Dataverse depende de permisos y conexiones correctas. [learn.microsoft.com], [learn.microsoft.com]
2.2 Tablas creadas (modelo)
Se crearon 2 tablas principales en Dataverse:
- Trabajadores (maestra)
- Campos: identificador (DNI/código), nombre, área, correo, teléfono (texto/phone).
- SolicitudTrabajador (transaccional)
- Campos de entrada del solicitante: código/DNI, motivo, fecha de permiso.
- Campos de auditoría: estado (opción), fecha solicitud, aprobador, comentarios, fecha aprobación.
En Dataverse, las acciones del flujo (crear/listar/actualizar) trabajan sobre tablas y columnas con nombres lógicos y/o filtros tipo OData. [learn.microsoft.com], [learn.microsoft.com], [learn.microsoft.com]
3) 🌐 Power Pages: formulario de solicitud (Front)
3.1 Creación del sitio y formulario
- Se creó un sitio en Power Pages con plantilla en blanco y un formulario conectado a Dataverse (modo “Insert/Crear registro”). [learn.microsoft.com]
- El formulario se configuró para mostrar solo 3 campos que el usuario debe ingresar:
código/DNI, motivo, fecha de permiso.
El resto se completará con automatización. [learn.microsoft.com]
3.2 Seguridad (lo más importante)
- Se configuraron Table permissions para permitir que usuarios puedan crear registros en la tabla de solicitudes (acceso Global + privilegio Create según el caso). [learn.microsoft.com], [learn.microsoft.com]
- Se recalcó que si no hay permisos, el usuario verá errores o “acceso denegado”, porque Dataverse queda restringido por defecto en Power Pages. [learn.microsoft.com], [learn.microsoft.com]
4) ⚡ Power Automate: flujo automatizado (Dataverse → validación → aprobación)
4.1 Tipo de flujo y disparador
- Se construyó un Automated cloud flow disparado por Dataverse:
When a row is added, modified or deleted (para este caso: Create). [learn.microsoft.com], [learn.microsoft.com] - Parámetros clave del trigger:
- Change type (Create)
- Table name (SolicitudTrabajador)
- Scope (Organization) [learn.microsoft.com]
5) ✅ Validación de usuario (patrón “existe/no existe”)
5.1 Listar filas (tabla Trabajadores)
- Se usó Dataverse – List rows para buscar al trabajador por su código enviado desde el formulario. [learn.microsoft.com], [learn.microsoft.com]
- Se aplicó un Filter rows (OData) con operador eq para filtrar por el campo de código. [learn.microsoft.com], [learn.microsoft.com]
📌 Concepto clave: Filtrar reduce datos y mejora performance; la consulta se hace del lado del servicio cuando es posible. [learn.microsoft.com], [learn.microsoft.com]
5.2 Condición con conteo de resultados
- Se comparó si el resultado tiene elementos usando una validación basada en conteo (p.ej.
length(...) > 0). - Este patrón es estándar: evaluar si un array está vacío antes de continuar. [learn.microsoft.com], [learn.microsoft.com]
6) 🧾 Registro de la solicitud (crear fila en Dataverse)
- Si el trabajador existe (True), se registra formalmente la solicitud en la tabla SolicitudTrabajador usando la acción equivalente a Create row (crear registro). [learn.microsoft.com], [learn.microsoft.com]
- Campos llenados:
- código/DNI, motivo, fecha permiso (desde el trigger / formulario)
- fecha solicitud (según diseño) [learn.microsoft.com], [learn.microsoft.com]
7) 📨 Aprobaciones estándar (Approvals)
7.1 Acción usada
- Se usó Approvals – Start and wait for an approval para pausar el flujo hasta la respuesta del aprobador. [learn.microsoft.com], [learn.microsoft.com]
7.2 Aprobación con respuestas personalizadas
- Se eligió el tipo: Custom Responses – Wait for one response
- Opciones configuradas: Aprobado / Rechazado
- Se explicó que el valor de Outcome puede manejarse con Condition o Switch para rutas diferentes. [learn.microsoft.com], [learn.microsoft.com]
7.3 Detalle de la aprobación
- Se construyó un texto “Details” combinando:
- código del solicitante (del trigger)
- nombre/área (del resultado de List rows)
- motivo y fecha del permiso (del trigger) [learn.microsoft.com], [learn.microsoft.com]
✅ Punto técnico relevante: cuando se inserta “Nombre/Área” desde List rows, es común que Power Automate agregue Apply to each porque List rows retorna una lista. [learn.microsoft.com], [learn.microsoft.com]
8) 🧪 Pruebas y observaciones (debug)
- Se probó el formulario: al enviar una solicitud, se confirmó que el flujo se ejecuta y se crea el registro asociado. [learn.microsoft.com], [learn.microsoft.com]
- Se observó un comportamiento de registros duplicados en algunos casos (posible configuración/servicio/trigger repetido).
- Recomendación técnica: revisar el trigger, condiciones de disparo y configuración del formulario/Dataverse. [learn.microsoft.com], [learn.microsoft.com]
❓ Preguntas y respuestas destacadas (con refuerzo oficial)
| Pregunta (alumno) | Respuesta del docente (síntesis) | Refuerzo con doc oficial |
|---|---|---|
| ¿Debo construir yo el JSON registro por registro? | No. En la práctica, los conectores ya retornan JSON; esto se explicó para entender la estructura. | Las salidas de acciones y el trabajo con expresiones se hacen sobre outputs/arrays ya generados; para manejar arrays se usan funciones y condiciones. [learn.microsoft.com], [learn.microsoft.com] |
| ¿Por qué aparece un “Apply to each” si yo solo espero 1 resultado? | Porque List rows devuelve una lista (0..N). Power Automate agrega el bucle por seguridad. | List rows recupera múltiples filas; cuando un paso devuelve array, se procesa iterando elementos si se usan campos internos. [learn.microsoft.com], [learn.microsoft.com] |
| ¿Cómo configuro el trigger de Dataverse para que sea “cuando se crea”? | Elegir la opción “cuando se agrega/modifica/elimina” y seleccionar el tipo “Create”. | El trigger permite configurar Change type, Table name y Scope, además de filtros/columnas. [learn.microsoft.com] |
| ¿Cómo hago aprobación con botones “Aprobado/Rechazado”? | Usar “Start and wait for an approval” con “Custom Responses”. | Microsoft documenta crear aprobaciones con custom responses y manejar Outcome con condiciones. [learn.microsoft.com], [learn.microsoft.com] |
| ¿Por qué no me deja eliminar una columna (dependencias)? | Porque la columna ya está referenciada; hay que revisar dependencias o recrear adecuadamente. | En portales/formularios y Dataverse, dependencias y seguridad pueden restringir cambios; revisar configuración de acceso/permisos del modelo y del sitio. [learn.microsoft.com], [learn.microsoft.com] |
| ¿Por qué no puedo crear Power Pages con mi cuenta corporativa? | Puede ser falta de permisos/licencia en el tenant; se recomendó usar la cuenta del curso. | La publicación y creación dependen de acceso/roles; Power Pages requiere configurar seguridad y permisos de tablas/roles. [learn.microsoft.com], [learn.microsoft.com] |
✅ Conclusiones
- La sesión consolidó una arquitectura muy común en proyectos reales: Power Pages (captura) → Dataverse (persistencia) → Power Automate (procesamiento). [learn.microsoft.com], [learn.microsoft.com], [learn.microsoft.com]
- La validación previa (trabajador existe) es una buena práctica para evitar procesar solicitudes inválidas y reducir ejecuciones innecesarias. [learn.microsoft.com], [learn.microsoft.com]
- Las Aprobaciones se introducen como un componente transversal: se usarán en varias sesiones por ser un patrón frecuente en organizaciones. [learn.microsoft.com], [learn.microsoft.com]
⭐ Recomendaciones
- Refuerza OData filter rows: prueba filtros
eqy combina condiciones solo si es necesario (mantén filtros simples). [learn.microsoft.com], [learn.microsoft.com] - Controla duplicados: revisa disparadores, “Change type”, y si aplica agrega condiciones para evitar ejecuciones repetidas por actualizaciones. [learn.microsoft.com], [learn.microsoft.com]
- Maneja Outcome correctamente: usa Condition/Switch con el valor de aprobación para actualizar el estado y registrar comentarios. [learn.microsoft.com], [learn.microsoft.com]
- Asegura conexiones: valida que Dataverse y demás conectores estén autenticados y en el entorno correcto. [learn.microsoft.com], [learn.microsoft.com]
- Seguridad en Power Pages: confirma que el sitio tenga Table permissions correctos para crear registros (Create) y no sobre‑exponer datos. [learn.microsoft.com], [learn.microsoft.com]
📚 Referencias oficiales
- Trigger Dataverse (Create/Update/Delete): https://learn.microsoft.com/en-us/power-automate/dataverse/create-update-delete-trigger [learn.microsoft.com]
- List rows (Dataverse) en flujos: https://learn.microsoft.com/en-us/power-automate/dataverse/list-rows [learn.microsoft.com]
- Aprobaciones (Start and wait): https://learn.microsoft.com/en-us/power-automate/modern-approvals [learn.microsoft.com]
- Aprobaciones con respuestas personalizadas: https://learn.microsoft.com/en-us/power-automate/create-approval-response-options [learn.microsoft.com]
- Expresiones en condiciones: https://learn.microsoft.com/en-us/power-automate/use-expressions-in-conditions [learn.microsoft.com]
- Referencia de funciones (workflow expressions – incluye
length): https://learn.microsoft.com/en-us/azure/logic-apps/expression-functions-reference [learn.microsoft.com] - Administrar conexiones en Power Automate: https://learn.microsoft.com/en-us/power-automate/add-manage-connections [learn.microsoft.com]
- Conexiones Dataverse (consideraciones): https://learn.microsoft.com/en-us/power-automate/dataverse/manage-dataverse-connections [learn.microsoft.com]
- Power Pages – Table permissions: https://learn.microsoft.com/en-us/power-pages/security/table-permissions [learn.microsoft.com]
- Power Pages – Basic forms (crear/insertar registros): https://learn.microsoft.com/en-us/power-pages/configure/basic-forms [learn.microsoft.com]

