Garantizar el buen funcionamiento de los Power Automate de una organización y anticiparse a situaciones inesperadas es algo clave en el mundo de la automatización de procesos. En este sentido, la implementación de un control de errores sólido en Power Automate cobra una gran importancia si queremos ser proactivos ante un error que pueda afectar al día a día del negocio de nuestro cliente.
En más de una ocasión, me he encontrado con algún cliente que reportaba que un Power Automate no estaba funcionado y al ir a revisarlo veía que la causa era que el proceso llevaba dando errores desde hace semanas y nadie se había percatado de ello. El impacto que puede tener esta situación puede ser muy grande, dependiendo de la lógica que realice ese Power Automate, pero desde luego es una situación evitable si implementamos un control de errores en los procesos.
Pero… ¿por dónde empezamos? A la hora de implementar un control de errores en Power Automate tenemos que:
1- Identificar posibles puntos de error: El primer paso es detectar aquellos puntos sensibles en nuestro proceso que puedan ser propensos a dar algún error. Por ejemplo, una llamada HTTP a un servicio externo, una búsqueda de información en Dataverse, etc.
2- Utilizar Ámbitos en Power Automate: Para controlar los posibles errores que se presenten en el Power Automate utilizaremos un componente que se llama Ámbito, el cual encapsulará toda la lógica del proceso y hará la función de “Try”.
3- Implementar acciones a realizar en caso de error: De igual manera que en el paso anterior, utilizaremos el componente Ámbito para agrupar toda la lógica que queremos que se aplique cuando se produzca un error. Este será nuestro “Catch”. Por ejemplo, podemos implementar el envío de un correo electrónico a una cola de soporte, el envío de una tarjeta adaptativa por Teams, etc.
4- Ajustes y pruebas: Con el fin de asegurar de que todo funciona como esperamos, el último paso es hacer un set de pruebas para comprobar que el Power Automate y el control de errores se comporta como queremos tanto si el funcionamiento de la lógica principal es correcto como si no.
Paso a paso
La teoría está muy bien, pero ¡pasemos a la acción! El primer paso que debemos dar a la hora de desarrollar un Power Automate en el que vamos a implementar un control de errores es añadir el componente Ámbito.
Una vez lo hemos añadido al Power Automate, le podemos cambiar el nombre por ‘Try’. De esta forma va a quedar bastante clara su función.
Ahora, dentro del ‘Try’, incluiremos toda la lógica principal que debe de realizar el Power Automate.
Una vez lo tengamos listo, incluiremos otro componente de tipo Ámbito y le cambiaremos el nombre por ‘Catch’.
Tras ello, seleccionamos los tres puntos del bloque ‘Catch’ y le indicamos que vamos a configurar la ejecución posterior. Seleccionamos la opción ‘con errores’. Al aplicar esta configuración, podemos observar cómo la línea que unía los bloques ‘Try’ y ‘Catch’, pasa a ser de color rojo. Esto quiere decir que únicamente se va a realizar la ejecución del ‘Catch’ únicamente si se ha producido algún error en el ‘Try’.
Ahora, únicamente nos queda incluir la lógica que queremos implementar cuando se produce un error.
A modo de demostración, he preparado un Power Automate de tipo instantáneo, en el cual voy a realizar una búsqueda sobre la tabla Cuenta buscando por un GUID que no existe en el sistema. Al no encontrar el GUID, el componente de Dataverse va a dar un error y con ello vamos a forzar la ejecución del ‘Catch’ del Power Automate enviando un aviso del problema.
Normalmente, si queremos notificar a alguien para que se tomen las medidas necesarias para solucionar el problema en el Power Automate, lo primero es recuperar el mensaje de error que se está dando. Para ello, incluimos una variable en la cual vamos a almacenar el resultado de esta expresión:
first(result(‘Try’)).outputs.body.error.message
1- Seleccionamos el componente ‘Enviar correo electónico (V2)’
2- Preparamos el contenido del correo electrónico
También podemos implementar una notificación por Teams utilizando una tarjeta adaptativa que avise al equipo de soporte. Para ello:
1- Seleccionamos el componente ‘Publicar tarjeta en un chat o canal’
2- Aplicamos la configuración para seleccionar el canal en el que queremos realizar la publicación.
3- Diseñamos la tarjeta adaptativa mediante diseñador de Adaptive Cards de Microsoft y introducimos el JSON en Power Automate.
Para este ejemplo que he realizado he utilizado la siguiente tarjeta adaptativa:
{
«type»: «AdaptiveCard»,
«$schema»: «http://adaptivecards.io/schemas/adaptive-card.json»,
«version»: «1.4»,
«body»: [
{
«type»: «Container»,
«items»: [
{
«type»: «TextBlock»,
«text»: «Se ha producido un error en un Power Automate:»,
«wrap»: true,
«weight»: «Bolder»,
«fontType»: «Default»,
«size»: «Default»,
«color»: «Accent»,
«isSubtle»: true
}
]
},
{
«type»: «ColumnSet»,
«columns»: [
{
«type»: «Column»,
«width»: «auto»,
«items»: [
{
«type»: «Image»,
«url»: «https://www.axazure.com/wp-content/uploads/Recurso-4-3.png»,
«size»: «Medium»
}
]
},
{
«type»: «Column»,
«width»: «auto»,
«items»: [
{
«type»: «TextBlock»,
«text»: «@{workflow()?[‘tags’]?[‘flowDisplayName’]}»,
«spacing»: «None»,
«horizontalAlignment»: «Left»,
«height»: «stretch»,
«weight»: «Bolder»,
«color»: «Dark»,
«size»: «Large»,
«isSubtle»: false
}
],
«spacing»: «Small»,
«style»: «emphasis»
}
],
«spacing»: «None»
},
{
«type»: «TextBlock»,
«text»: «Detalle del error:n»,
«wrap»: true,
«weight»: «Bolder»,
«color»: «Attention»
},
{
«type»: «TextBlock»,
«text»: «@{variables(‘error’)}»,
«wrap»: true
},
{
«type»: «ActionSet»,
«actions»: [
{
«type»: «Action.OpenUrl»,
«title»: «Abrir ejecución errónea»,
«url»: «@{concat(‘https://flow.microsoft.com/manage/environments/’, workflow()?[‘tags’][‘environmentName’], ‘/flows/’, workflow()?[‘name’], ‘/runs/’, workflow()?[‘run’][‘name’])}»
}
]
}
]
}
El uso de un control de errores en Power Automate para el manejo de excepciones hará que nuestros procesos sean más robustos. Espero que os haya sido de utilidad.