Cómo conectar Power Apps con Dynamics AX 2012 (I)

En esta serie de artículos aprenderemos a conectar una PowerApp con Dynamics AX 2012, pasando por cada uno de los requisitos necesarios para disponer de una conexión online y bidireccional entre los dos sistemas.

Dado que no existe un conector específico para Dynamics AX 2012, la primera opción en la que pensamos para conectar los dos sistemas es utilizando el conector SQL de Power Apps. Es una opción válida para recuperar información de Dynamics, pero no para escribir, ya que tendríamos que tratar manualmente campos como el RecId, TableId ,etc… además de todas las validaciones que Dynamics realiza por defecto, como por ejemplo la validación de campos obligatorios.

Teniendo en cuenta esta limitación, la mejor opción para conectar los dos sistemas, sin replicar información en bases de datos intermedias, pasa por crear un conector personalizado en Power App que consuma un servicio web creado en Dynamics.

En esta primera parte pues, nos centraremos en crear este conector. No obstante, hay que tener en cuenta que los servicios web de Dynamics AX 2012 son de tipo SOAP, y aunque es posible consumir directamente un servicio web de tipo SOAP desde Power Apps (ver link), es más sencillo transformar el servicio web SOAP en una API REST, y consumir esta API desde el conector personalizado.

Nuestro primer objetivo será entonces crear un servicio web en Dynamics AX2012. Empezaremos creando un servicio que nos devuelva el código y el nombre de todos nuestros clientes. Para ello, será necesario crear 2 clases en X++:

1. Crear clase PowerAppCustomerService

2. Crear clase PowerAppCustomerDC

3. Crear servicio

Una vez creadas las clases, necesitaremos crear un servicio añadiendo la operación getCustomers que tenemos en la clase PowerAppCustomerService:

4. Crear grupo de servicios

Para terminar con la creación del servicio web, tendremos que crear e implementar un grupo de servicios, en el que agregaremos el servicio creado en el punto anterior:

Al implementar el grupo, el sistema creará automáticamente un puerto de entrada en el que podremos obtener la URL del servicio web.

5. Crear Web API

Ya tenemos nuestro servicio web operativo, pero tal y como hemos comentado en la introducción, será necesario transformar este servicio utilizando REST. Para tal propósito, crearemos una Web API desde Visual Studio.

Una vez creado el proyecto, añadiremos una referencia de servicio con la URL del servicio web creado en Dynamics:

Posteriormente, añadiremos un nuevo controlador con el siguiente código:

Por último, necesitamos que el resultado sea en formato JSON, por lo que modificaremos el archivo WebApiConfig.cs, dejándolo de la siguiente forma:

6. Publicar servicio en IIS

Ya tenemos nuestra Web API en formato JSON, por lo que ya podemos publicar el servicio en IIS para que este sea accesible desde fuera del dominio:

Es imprescindible asegurarnos de que el puerto usado es accesible desde fuera del dominio. Para tal propósito, tendremos que revisar la configuración de nuestro router y firewall.

Por último, revisamos que el servicio web se ha publicado correctamente, y que el resultado devuelto sea en formato JSON (esta prueba la deberíamos realizar desde fuera del dominio de nuestro IIS):

7. Crear conector personalizado en Power Apps

Ahora sí, estamos en condiciones de crear un conector personalizado en PowerApps. Seleccionaremos la opción Crear desde cero e introduciremos la URL de nuestra Web API (sin especificar el nombre de la función):

La pestaña la dejaremos sin autenticación y pasaremos directamente a la parte de Definición, donde añadiremos las distintas funciones de las que dispone la API:

8. Crear Power App con conector personalizado

Ya disponemos de un conector con Dynamics AX 2012 funcionando correctamente, por lo que podemos proceder a la creación de una Power App en donde se utilicen las acciones definidas en dicho conector.

Como se observa en la imagen anterior, el propio conector ya se ha encargado de mapear el resultado JSON y ha detectado que existen dos campos, CustAccount y , que podemos utilizar directamente en la galería.

Con esta pequeña prueba llegamos al final de este artículo. En siguientes partes, veremos más en detalle cómo trabajar con las funciones de la API, y cómo escribir datos en Dynamics AX desde una Power App para que la comunicación sea bidireccional.

Follow the Power {Platform}, por Miquel Vidal

Blog sobre las BizApps de Microsoft, especialmente Power Platform

Follow the Power {Platform}, por Miquel Vidal

Blog gestionado por Miquel Vidal sobre las BizApps de Microsoft, especialmente Power Platform

Miquel Vidal Morales

Written by

Technical arquitect | MCT | Power Platform | Dynamics AX/365FO | Microsoft 365

Follow the Power {Platform}, por Miquel Vidal

Blog gestionado por Miquel Vidal sobre las BizApps de Microsoft, especialmente Power Platform