Ícono del sitio Erick Daniel en la nube

Como actualizar Due dates en Work Items y como reportarlo en Dashboards en Azure DevOps

En las últimas semanas he recibido algunas preguntas sobre cómo pueden generarse dashboards para identificar work ítems que están a punto de vencerse (Tareas, User Stories, features, o algunos otros dependiendo de la platilla usada en el proyecto), asociar el estado a un campo y notificar vía correo electrónico. Para esto es importante tener en consideración lo siguiente:

Podemos ver cómo crear un process template con el requerimiento anterior en el siguiente articulo: Como crear work items personalizados con process template en proyectos de Azure DevOps – Erick Daniel en la nube

Creación de los queries en Azure DevOps Boards

Lo que vamos a realizar como primer paso es crear un par de consultas que nos permitirán obtener la información de las tareas que están expiradas, para esto ya tenemos un proyecto creado. Tenemos que ir a “Boards” -> “Queries” -> “New Query”

Construcción del query para indentificar Work items expirados

Necesitamos que el query obtenga todas las tareas, que tengan una fecha de due date menor a la fecha de hoy y un estado distinto a “expired”; esto con el objetivo de que el logic app obtenga todas las tareas expiradas y las marque con campo de “due date state” como “expired”. Una vez dicho esto especificamos las siguientes cláusulas:

Proceso de especificación de clausulas

Indicamos el nombre del query “WITExpired”, lo guardaremos en el folder de shared queries y por último damos clic en “ok”.

Creación del query

Si solo queremos crear un indicador, que lo podamos usar para reportarlo en un dashboard con el primer query es más que suficiente, pero para el escenario donde modificamos el estatus del work item necesitamos crear el segundo query con los siguientes parámetros; para reportar en el dashboards las tareas que ya están expiradas con base en el campo de “due date state”.

Query del Dashboard para work items expirados basado en el campo “duedate state”

Creación del Logic App

Ahora procedemos a ir al portal de Azure, es importante mencionar que podemos usar también power automate para realizar la siguiente automatización.

Portal de Azure

Vamos grupos de recursos, le damos clic en crear grupo de recursos.

Grupos de recursos de Azure

Especificamos la región y el nombre del grupo de recursos “duedatedemo”.

Creación del grupo de recurso

Una vez que esta validado, procedemos a dar clic en “create”.

Validación exitosa para la creación de un grupo de recursos

Ahora ya tenemos creado nuestro grupo de recursos donde veremos nuestro logic app, damo clic en el botón “Create” para proceder a crearlo.

Grupo de recurso

Procedemos a buscar Logic App y le damos clic en “Create”.

Logic App en el Marketplace de Azure

Asignamos un nombre, para nuestro caso escogimos “duedateexpireddemo”, seleccionamos la región “South Central US”, tipo plan “Consumption”, damos clic en “Review+Create”

Creación del Logic App

Procedemos a crearlo dando clic en el botón de “Create”.

Pantalla de revisión de la creación del Logic App

Ahora que ya está creado procedemos a crear un Logic App en blanco.

Logic App Designer

Buscamos los triggers de Schedule, damos clic

Categoria de Acciones – Schedule

Y seleccionamos el trigger de recurrence.

Disparador de Recurrencia

Especificamos que se ejecutara 1 vez al día a las 12 de la noche.

Configuración del disparador de Recurrencia

Agregamos el siguiente paso, buscamos los pasos de Azure DevOps y seleccionamos “Get query results”

Acción “Get query results”

Damos clic en Sign in para que se pueda crear una conexión a Azure DevOps con nuestra cuenta.

Proceso de Sign in

Ahora especificamos la organización, el nombre del proyecto y seleccionamos el Query que creamos anteriormente, es importante especificar el número de resultado ya que si el proyecto (también puede ser un query cross Project) donde se ejecuta el query puede arrojar muchos WIT es recomendable especificar un numero adecuado.

Configuración de la acción “Get query results”

Ahora procedemos a buscar dentro de los pasos de control, el de For each.

Acción de control “For each”

Especificamos que vamos a interactuar sobre el resultado que arroje el query, por lo tanto, pasamos el campo de value del action anterior.

Configuración de la acción “For each”

Agregamos una nueva action “Update a work item”, de Azure DevOps para actualizar el estado del work item.

Acción “Update a work item” de Azure DevOps

Ahora procedemos a especificar el id del work item, el título, la descripción, proyecto (si es cross Project, podemos usar el campo que esta especificado en el WIT) y en la sección de other fields especificamos el campo de duedate state el valor de Expired.

Configuración de la acción “Update a work item” de Azure DevOps

Por último, agregamos el action de send email de Outlook para enviar el correo, definimos el destinatario, el título del correo con el work item que está siendo identificado como expirado, y una descripción en el cuerpo del correo, este puede ser personalizado.

Confiuguración de la acción de Outlook — Send an email

Con esto guardamos el logic app y una vez que se ejecuta vemos una correcta ejecución de este.

Ejecución del Logic App

Validamos en el proyecto de Azure DevOps, que se realizó el campo en el campo de duedate state a Expired.

Tarea expirada

Podemos ver en la sección de auditoría que toma como ejecutor de la actualización el usuario con el cual creamos la conexión en el Logic App

Auditoria de cambios en la tarea expirada

Creación del dashboard

Podemos usar un dashboard existente o uno nuevo.

Pantalla de Azure DevOps Dashboards

Agregamos el widget que regresa el número total de resultados para una consulta.

Agregando Widgets

Especificamos el título del widget, el nombre del segundo query que creamos anteriormente, le color y alguna regla custom para cambiar el correo cuando el resultado este en 0. Damos clic en “save”

Configuración del Widget

Y eso es todo por hoy, puedes ver más contenido que estaré generando en este medio.

¡Saludos y disfruta estar en la nube!

Salir de la versión móvil