Gestiona las bolsas de horas con Dynamics 365 PSA y Power Automate

Dentro de nuestro sector, es muy común que los clientes contraten bolsas de horas para irlas consumiendo de forma gradual, según sus necesidades y prioridades. En CrossPoint no somos una excepción, y también ofrecemos este servicio a nuestros clientes especialmente en proyectos de soporte.

Con el objetivo de ser totalmente transparentes, decidimos utilizar Project Service Automation (PSA) para gestionar los proyectos y horas de los clientes, ya que gracias al Common Data Service (CDS) y a su integración nativa con los portales de Power Apps, los clientes pueden consultar sus horas en tiempo real a través de un portal web, y comprobar cuantas horas tienen disponibles, entre otras cosas.

No obstante, con el paso del tiempo, nos hemos encontrado con 2 tareas recurrentes que hemos decidido automatizar con Power Automate:

  1. Comprobación de las horas disponibles de cada cliente
  2. Envío de un informe mensual con el detalle de horas consumidas

En este post, nos centraremos en el primer punto, y veremos cómo crear un flujo programado de Power Automate, que nos avisará automáticamente cuando un cliente tenga disponibles menos de 10 horas, para que, de esta forma, podamos ofrecerle la renovación de forma proactiva.

Antes que nada, tenemos que identificar las entidades principales de CDS con las que vamos a trabajar en el flujo:

  • Cuentas: Clientes
  • Entradas de tiempo: Para recuperar las horas consumidas
  • Contratos de proyecto: Para recuperar las horas contratadas

Con esto, ya estamos listos para crear el flujo. Dado que se trata de un flujo programado, lo primero que tendremos que indicar es la periodicidad con la que se ejecutará, en este caso, cada día a las 09:00. A continuación, inicializaremos 3 variables que nos servirán para almacenar las horas contratadas, consumidas y disponibles de cada cliente.

A partir de aquí, las acciones que más vamos a utilizar en el flujo son las de obtener registros de CDS y modificar variables.

En el siguiente punto, recuperamos los clientes, y para cada uno de ellos, ejecutaremos las siguientes acciones:

1. Recuperamos el registro del cliente

2. Establecer las horas contratadas a 0

3. Comprobar si el cliente tiene activo el campo “Aviso bolsa de horas”

Este campo nos sirve para evitar que el aviso se envíe de forma indefinida para el mismo cliente (lo trataremos de nuevo en el punto 10). Si este campo está desactivado, cambiamos de cliente. En caso contrario, seguimos.

4. Obtener las bolsas contratadas del cliente a través de los contratos de proyecto

5. Sumar las horas contratadas a la variable correspondiente

Si no hay horas contratadas, significa que el cliente no tiene contratado este servicio, por lo que podemos pasar al siguiente cliente. En caso contrario, seguimos con el flujo.

6. Establecer las horas consumidas a 0

7. Obtener las horas consumidas del cliente a través de las entidades entradas de tiempo y proyectos

8. Calculamos las horas disponibles (horas contratadas – horas consumidas)

9. Comprobar si las horas disponibles son menor a 10.

10. En caso afirmativo, enviamos un mensaje por Teams al usuario correspondiente.

11. Si se ha enviado el mensaje correctamente, actualizamos el campo “Aviso bolsa de horas” del cliente a “No”, para que el día siguiente, no se envíe de nuevo el aviso.

El resultado del flujo se ve reflejado de la siguiente forma en un mensaje por Teams:

Esperamos que este ejemplo real te ayude a convencerte sobre el uso de la Power Platform en general, y de Power Automate en particular, así como de todas las posibilidades que nos puede ofrecer en nuestras tareas del día a día.