Al hilo de los últimos artículos que he publicado en los que hablo de como utilizar Postman para hacer testing de nuestras integraciones vía servicios REST y OData, quería compartir con vosotros un pequeño truco que me ha resultado tremendamente útil en algunos de los proyectos en los que he participado.
Nos ha ocurrido en algunos proyectos, sobre todo al principio, que nos encontrábamos con la necesidad de realizar integraciones con otras aplicaciones, y algunas de estas integraciones han sido realizadas por OData utilizando llamadas HTTP para realizar operaciones CRUD por código, todo esto utilizando Data Entities de MSDyn365FO, tanto estándar como personalizadas. Como decía, al principio nos surgía a todos la duda de ¿y ahora, que llamada tengo que realizar para ejecutar una acción concreta?
Pues bien, como indico en el título del post, podemos utilizar Microsoft Flow, y de una forma realmente sencilla, ejecutar la acción que necesitamos, y posteriormente ver la petición HTTP que se ha ejecutado en el sistema, veamos como:
Lo primero será entrar en flow.microsoft.com y crear un nuevo flow desde cero.
Como desencadenador o trigger del flow, pondremos un Botón manual, que nos permitirá ejecutar el flow en el momento que necesitemos.
Seguidamente añadiremos un nuevo paso, que utilizaremos para ejecutar la acción contra MSDyn365FO.
Si escribimos en el filtro «Dynamics 365 for Operations» nos aparecerán todas las acciones disponibles en flow relacionadas con el ERP. En este ejemplo, vamos a ejecutar una actualización contra la entidad de «Grupos de clientes«, por lo que seleccionaremos la opción Actualizar un registro.
Ahora, seleccionamos la instancia de Microsoft Dynamics for Finance and Operations sobre la que vamos a trabajar y elegimos la entidad CustomerGroups.
Una vez seleccionada la entidad, debemos indicar el Id. del Objeto, que se refiere a la clave principal del registro que queremos actualizar. Se trata de la combinación de DataAreaId + Entity Key. Como vemos en la siguiente imagen, la clave de la entidad CustCustomerGroupEntity es el CustGroupId.
Y como todos sabemos, para poder seleccionar un registro desde «fuera» del ERP, es necesario indicar el código de la empresa en la que se encuentra dicho registro, por lo que escribiremos el código de la empresa y el código del grupo de clientes separados por coma ( , ).
Por último, solo nos queda rellenar el/los campo/s que queremos editar dentro del grupo de cliente seleccionado, que podremos visualizar si desplegamos las opciones avanzadas y ejecutar el flow para realizar la actualización. Para ejecutarlo, pulsaremos sobre el botón Probar, indicando que nosotros ejecutaremos la opción de desencadenado.
Una vez que se ejecuta el flow, podemos ver la primera de las «pistas», ya que se nos muestra el JSON que se ha enviado en el Body de la petición.
Solo nos quedaría ver la petición en si. Para ello, entraremos por RDP a la VM contra la que hemos lanzado la petición (tiene que ser un entorno de desarrollo) y consultaremos el log del IIS. Para ver este log tenemos que abrir el explorador de windows, y dirigirnos a: C:\inetpub\logs\LogFiles\W3SVCX, siendo X el número que viene al final. Para saber que carpeta abrir de las distintas W3SVCX que hay, nos fijaremos en su fecha de modificación y abriremos la más reciente. Lo mismo exactamente con los ficheros que hay dentro de la carpeta. Tendremos que abrir el más reciente y dirigirnos al final del fichero. En él, encontraremos líneas similares a las siguientes:
En estas líneas podemos ver claramente las operaciones que han sido ejecutadas, y el usuario que las ha ejecutado. En este caso vemos que hay 2 operaciones, una PATCH que es la que se ha ejecutado para realizar la actualización de los datos, y otra GET, puesto que Microsoft Flow, una vez actualizados los datos, hace un GET para obtener los datos actualizados y mostrarlos de nuevo en la pantalla.
Como podéis ver, con esto ya tendríamos montada la petición HTTP que deberíamos realizar, desde Postman por ejemplo, para realizar la actualización del registro, utilizando el JSON que obtuvimos anteriormente junto con los datos que acabamos de conseguir, quedando algo similar a lo siguiente:
Y hasta aquí este pequeño truco que me ha facilitado la vida en algunos momentos claves, espero que os sea útil a vosotros también. Hasta la próxima!