Embrace the extensions mindset with Dynamics 365 for Finance and Operations [EN]

A couple of weeks ago, we launched the last platform update 10 (August 2017) for Dynamics 365 for Finance and Operations, Enterprise Edition and, as in almost every release, there were changes regarding the Application Extensibility Plans.

A lot of effort is being invested in the journey to a non-intrusive way to extend the application, and it needs to be understood as a critical change in the way we think about customizations. More information about future plans can be found in the Dynamics Roadmap (Filter – Application: Dynamics 365 for Finance and Operations; Area: Extensibility).

But sometimes it’s hard to change our mindset just by looking at these out-of-context upgrade notes, so I want to show how we can leverage some of the latest improvements to the X++ platform by looking at some real-life examples.

Keep in mind the basic principle: we want to avoid intrusive changes.

 

Scenario 1: Create a number sequence in a standard module

This is a common scenario and the good news is that it has barely changed from Dynamics AX 2012. In our example, we will add a new number sequence to the Accounts Receivables module (Customers) to provide new values for the custom MSVRMInsuranceProviderId EDT. To accomplish that, we need to make some small changes (plenty of examples of AX 2012 code available out there):

 

Read the full article at “Dynamics AX in the Field”, the blog from the Premier Field Engineering team at Microsoft.

 

Trabajando con la máquina virtual de desarrollo local en Dynamics 365 for Operations

No voy a escribir una entrada sobre cómo configurar una MV local de Dynamics 365 for Operations para desarrollo, porque ya se han publicado muchísimas desde el lanzamiento del producto hace unos meses. También está publicado en la documentación oficial de forma bastante clara, así que sería repetir lo que ya se ha explicado mil veces.

Lo más importante es configurar bien la conexión con el proyecto de Visual Studio Team Services y con la rama que estemos utilizando, mapeando de forma acorde las carpetas locales. Por ejemplo:

  • La carpeta Metadata debe apuntar a donde están almacenados los paquetes de Dynamics 365 en el disco. Dependiendo de la versión de la máquina virtual pueden estar en C:\AOSService\PackagesLocalDirectory o en C:\Packages (en las versiones antiguas).
  • La carpeta Projects normalmente se configura en la carpeta por defecto donde Visual Studio almacena los proyectos (en Mis Documentos), pero esto dependerá de la estructura que siga cada equipo para almacenar los proyectos que, recordemos, no forman parte de los metadatos de AX en esta versión, como sí hacían los proyectos del AOT de versiones anteriores.

También hay una serie de propiedades que se pueden modificar para que la máquina se comporte de una forma más natural para un desarrollador de AX e incluso para mejorar un poco el rendimiento.

Siguiendo con nuestra cadena respecto a la introducción al desarrollo para Dynamics 365 for Operations, voy a comentar algunos escenarios que suceden mucho y parecen ser problemáticos para programadores que empiezan a utilizar las nuevas herramientas. Pequeños detalles que conviene no olvidar. Es posible que actualice este post en el futuro para tenerlos todos localizados:

Continue Reading…

Desarrollo en Dynamics AX 7: La nueva arquitectura

Mientras esperamos que se publique la versión definitiva de “El Nuevo” AX o Dynamics AX 7, podemos empezar a comprender las bases del sistema utilizando la información publicada y la Preview pública. Antes de entrar a analizar los detalles de la nueva versión, que son muchos y nos va a llevar bastante tiempo, hay que comprender las bases que han motivado todos esos cambios y que nos van a permitir comprender mejor la nueva forma de desarrollar, que aunque utiliza herramientas parecidas a las versiones anteriores, veremos como son totalmente diferentes.

Model Store vs Local Repository

En versiones anteriores el código y los metadatos se almacenaban en ficheros de capa (AX 2009) y después en bases de datos, ya sea una base de datos dedicada (AX 2012 R2+) o en la propia base de datos de negocio (AX 2012 RTM). Este simple hecho condicionada las herramientas que podíamos utilizar para trabajar con este código y metadatos. Esto es, programar, crear nuevos objetos, hacer pruebas, compilar, etc…

En AX 7 el código se almacena en ficheros en el disco, como en la mayoría de lenguajes modernos, donde tenemos la versión de los ficheros que nosotros estamos modificando. No en ficheros XPO como en ficheros anteriores, sino en un formato nuevo del que hablaremos más adelante, y estos nuevos ficheros pueden abrirse desde Visual Studio utilizando Proyectos y Soluciones propias de este editor para organizar nuestros desarrollos.

Modelos vs Paquetes

Aparte de este cambio en el almacenaje y gestión de los metadatos, en la nueva versión X++ es un lenguaje completo y nativo de la plataforma .NET, y por tanto el compilador y la ejecución son la misma que en los lenguajes .NET. El resultado más evidente de este cambio es que el código compilado (que en la versión anterior se guardaba, también, en base de datos) genera ensamblados (librerías DLL) que se ejecutan en CLR, como el resto de la plataforma .NET.

packages models projects

Continue Reading…