Procesos programados y recurrentes

CONSULTORES Y USUARIOS
FUNCIONALIDAD ESTÁNDAR
DIFICULTAD: FÁCIL

 

Con la llegada de herramientas de nueva generación (cada día algo sale algo nuevo) como es el trío de Power Platform (Flow, PowerApps y Power BI), podemos fácilmente realizar tareas de automatización  de una manera sorprendente conectando múltiples orígenes de datos y aplicando lógicas complejas mediante extensiones de Business Intelligence o Azure Functions entre otros.

Pero que pasa si nuestro requerimiento es más sencillo? O no sabemos o no queremos implicar (pagar) más herramientas? Dynamics 365 no incluye de por sí un sistema de programación de eventos, y el uso de flujos de trabajo en espera en sí mismo suele ser desastrosos, ya que tiende a generar muchos ejecuciones que pueden estar en espera durante meses, y no nos da la opción de editar esos flujos ya lanzados.

Originalmente ideado por Lucas Alexander , le hemos dado una vuelta más a la solución propuesta en su blog para dar con un método consistente de programar flujos de trabajo en Dynamics 365. Puedes descargar la solución procesos programados, en esta y en futuras entradas veremos ejemplos de aplicación en escenarios reales.

Escenario

Para ejemplificar el funcionamiento de este herramienta y tener una referencia, hoy veremos como preparar un proceso programado para:

  • Revisar diariamente todos nuestros contactos y enviar un correo de felicitación a aquellos que sea su cumpleaños y además tengan una cuenta principal categorizada con scoring A, dentro de un conjunto de opciones A,B,C,D. Esto son 2 campos personalizados que hemos creado para la ocasión.

Es un ejemplo con fines demostrativos para ilustrar como, a partir de este ejemplo, es fácil construir otros requerimientos típicos más elaborados como:

  • Avisar al responsable de una oportunidad un día antes la fecha que introdujo de seguimiento del registro.
  • Avisar un mes antes de la fecha de vencimiento de un contrato, proyecto, obra...
  • Enviar un resumen diario de las oportunidades ganadas.
  • Notificar el vencimiento de un registro, y cambiarle el estado.
  • ...

Siempre es más recomendable que los envíos de correos a personas externas a la organización se hagan mediante aplicaciones a medida para ello.

Instalación

Descargaremos la solución en el siguiente enlace. Esta solución incluye todos los componentes necesarios para hacer funcionar la programación de flujos de trabajo:

  • La entidad Proceso Programado.
  • El flujo de trabajo que ejecuta el trabajo recurrente. Este flujo se quedará en bucle permanentemente, pero solo existirá UNA ÚNICA instancia por cada tipo de proceso.
  • Una workflow activity, código en C# que se encarga de encontrar los registros a procesar.
  • El mapa del sitio con la entidad en la sección configuración. Si esta no apareciera, se puede añadir manualmente modificando el mapa del sitio de vuestro CRM.

La solución es administrada, de forma que puede ser instalada sin peligro, ya que, como explicamos en nuestra entrada sobre el concepto de las soluciones, quedará aislada y se podrá desinstalar sin problema.

Preparación y construcción

Una vez instalado, seguiremos los siguientes pasos para confeccionar nuestro proceso programado. Algunos pueden intercambiarse el orden, pero yo personalmente lo hago en este orden ya que me parece el más óptimo.

  1. - Analizar el requerimiento.
  2. - Diseñar el flujo de trabajo que hace la acción final, en este caso en la entidad contacto.
  3. - Preparar el filtro de contactos.
  4. - Crear el proceso programado y darle inicio.
  5. - Vigilar que todo sea correcto.

1.- Analizar el requerimiento

Esto puede parecer algo redundante ya que en este caso ya tenemos la idea previamente tomada, pero de todas formas es buena práctica antes de invertir tiempo en preparar un proceso de esta características ( o aventurarse en cualquier personalización, en general) plantearnos algunas preguntas, que puede afectar a la viabilidad del conjunto:

  • ¿Realmente aportara algún valor añadido versus la actualidad?
  • ¿Hay otros medios más sencillos para lograr lo mismo?
  • ¿Para que el proceso funcione correctamente, es necesario preparar otras configuraciones?
  • ¿Cuál es el volumen de ejecuciones del flujo de trabajo?

2.- Diseñar el flujo de trabajo

Algo muy importante a tener en cuenta es que este flujo de trabajo solo tiene que contener los pasos que vayamos a ejecutar, no es necesario ningún filtro ni condición de comprobación, ya que eso lo definiremos en el paso siguiente. Nuestro flujo de trabajo en este caso quedará así:

 

 

3.- Preparar el filtro de contactos

A continuación necesitaremos preparar un filtro en FetchXML para que, bajo la frecuencia que posteriormente definiremos, se ejecute el flujo de trabajo solo para los contactos que cumplan esa condición. Esto puede sonar complejo, pero FetchXML es el lenguaje de programación que utiliza Dynamics 365 para filtrar por defecto sus vistas, y tiene un sistema estándar para generar el FetchXML automáticamente por nosotros, mediante una búsqueda avanzada.

Para ello, cogeremos o bien una vista que hayamos creado previamente, o bien haremos una búsqueda avanzada a medida:

Esto nos generará un archivo parecido a:
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
<entity name="contact">
<attribute name="fullname" />
<attribute name="telephone1" />
<attribute name="contactid" />
<order attribute="fullname" descending="false" />
<filter type="and">
<condition attribute="tgl_fechadeaniversario" operator="today" />
</filter>
<link-entity name="account" from="accountid" to="parentcustomerid" link-type="inner" alias="ac">
<filter type="and">
<condition attribute="tgl_scoring" operator="eq" value="288710000" />
</filter>
</link-entity>
</entity>
</fetch>

Es posible que depende de vuestro programas instalados y cual es el por defecto, debáis seleccionar un programa para abrirlo, cualquier editor de texto servirá. Guardaremos de momento este código que utilizaremos en el próximo paso.

4.- Crear el proceso programado

Finalmente, nos dirigiremos a la entidad "Procesos programados" incluida en la solución, que debería aparecernos en la sección configuración del mapa del sitio principal.

 

De no ser así, probablemente el mapa del sitio incluido en la solución ha entrado en conflicto con el de la instancia objetivo, y ha omitido añadir esta entidad. La solución es añadir la entidad manualmente al mapa del sitio de nuestro Dynamics 365. En esta entrada no entraremos en detalle de como hacer esto, pero si tienes cualquier duda de este u otro paso déjanos un comentario.

Crearemos entonces un nuevo registro de esta entidad, para que quede del siguiente modo:

 

5.- Revisar que el proceso se haya iniciado correctamente

Por último, nos aseguraremos que no se hayan lanzado ejecuciones múltiples, algún flujo de trabajo haya dado error, o cualquier anomalía. Generalmente es buena idea hacer algunas pruebas en un entorno sandbox o de pruebas, o contra registros que no representen datos finales hasta asegurarnos que todo funciona como se espera.

Para depurar el proceso, es muy importante entender y acceder a la sección "Sesiones de proceso" del proceso programado:

 

Es importante que en este listado siempre haya solo un flujo de trabajo en espera, ya que es el flujo que está esperando a la fecha indicada para ejecutar todo el proceso. Si hubiera más de 1, se pueden seleccionar y cancelar. Este proceso se dispara al crear el proceso o al cambiar la fecha de modificación, por lo que hay que recordar al cambiarla manualmente de quitar la ejecución que hubiera antes.

Por último podemos revisar que haya datos que cumplan los criterios acordados, y auditar la sesión del flujo para ver que haya ejecutado los pasos correctamente.

 

Conclusión

Con esta solución podemos dar una solución mediante herramientas exclusivamente de Dynamics 365 para hacer pequeñas y básicas programaciones de eventos y recordatorios, lo que ayuda a añadir esa inteligencia y mejorar el rendimiento de la aplicación y los datos. En futuras entradas usaremos este mismo proceso para programar trabajos automáticos de todo tipo.

Si tienes cualquier duda en la construcción o funcionamiento de estos procesos programados, déjanos un comentario.

 

Aleix Ruiz

Consultor Dynamics 365

Logo Linkedin

 

 

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

No hay comentarios