Descubre la nueva Dynamics AX 2012 R3 Entity Store

En prácticamente todas las instalaciones de Microsoft Dynamics AX, en cualquiera de sus versiones, nos vemos en la necesidad de exponer ciertos datos de la aplicación para que otros sistemas puedan utilizarlos. Casi siempre, aunque no únicamente, herramientas de reporting y Business Intelligence. Para conseguirlo diseñamos datawarehouses más o menos completos y procesos ETL para transformar la base de datos transaccional y normalizada de Microsoft Dynamics AX en una fuente de datos más apropiada para la lectura eficiente de la información.

Entity Store - Exposing entities

Para evitarnos esta tarea extra y permitirnos centrar nuestro tiempo en la solución final, se ha publicado una nueva funcionalidad disponible para Microsoft Dynamics AX 2012 R3 llamada Entity Store, que nos va a permitir exponer las entidades de Microsoft Dynamics AX y utilizar todas las novedades del nuevo Microsoft SQL Server 2016 como los nuevos índices columnares en memoria y herramientas diseñadas para optimizar el reporting y permitir una explotación en “casi” tiempo real (near-real time).

Entity Store - Power BI

Este almacén de entidades es una nueva base de datos independiente de la transaccional por lo que, aparte de permitirnos una optimización y escalado independiente, nos va a permitir funcionar siempre con la nueva versión de SQL sin tener que migrar también el servidor transaccional de AX, facilitando la adopción de las últimas novedades. Actualmente es compatible con SQL Server 2014 y 2016 así como Azure SQL.

La herramienta se integra y configura en la aplicación (actualmente como un hotfix independiente, pero formará parte del próximo parche acumulativo para AX 2012 R3) y utiliza el Data Import/Export Framework (DIEF) para coordinar la actualización de las entidades, que pueden configurarse a cierta frecuencia de forma independiente.

Esta es una primera versión para introducir la funcionalidad y proveer las bases de su funcionamiento, pero Microsoft ya ha anunciado que están invirtiendo en este Data Entity por lo que podemos esperar novedades en el futuro, ya que esta promete ser la puerta de integración de nuestros sistemas con el resto de tecnologías de Microsoft referentes al reporting y business intelligence, que están avanzando mucho de la mano de Azure y SQL Server.

Por ejemplo, Microsoft ya nos sugiere que estas entidades están preparadas para trabajar con Azure Machine Learning, Power BI, Azure Data Factory y herramientas clásicas de BI (como data warehouse clásico, data lake para AX, …) y Big Data (Hadoop). Todas estas herramientas que ya están disponibles en Azure (Azure SQL, SQL-DW, Azure Data Factory, HDInsight, Azure Data Lake, Azure Data Lake Analysis Services, y Machine Learning) son parte también del Cortana Intelligence Suite (CIS), por lo que este nuevo almacén de datos consolidado es sólo el principio 😉

Toda la información disponible en el siguiente white paper de Microsoft:

El parche se puede descargar desde LCS buscando “Entity store” o KB3147499.

* Las imágenes de este post están extraídas del blog Dynamics AX Business Intelligence!!

Conectar a servicios externos mediante HTTPS desde Microsoft Dynamics AX 2012

Hace ya bastante tiempo publiqué el código necesario para consumir servicios web externos desde Microsoft Dynamics AX 2012 utilizando únicamente X++. Este código se puede encontrar fácilmente en muchos sitios ya que es básicamente el mismo para casi cualquier servicio WCF, pero a veces necesitamos ajustar algunas propiedades de la conexión, por ejemplo, para conectar a extremos HTTPS.

Según la documentación de MSDN (aquí), en C# el cambio sería muy sencillo, simplemente modificando un par de propiedades del binding durante la conexión:

BasicHttpBinding b = new BasicHttpBinding();
b.Security.Mode = BasicHttpSecurityMode.Transport ;
b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;

Sin embargo en X++, como suele pasar al utilizar tipos de .NET, la cosa no es tan simple, aunque no es demasiado complicado. Este es el código genérico que suelo usar:

Continue Reading…

Control del código fuente con TFS en Microsoft Dynamics AX 2012 (ALM-VI)

En anteriores capítulos de esta serie ya hablamos de cómo instalar y/o configurar nuestra instancia de Microsoft Team Foundation Server, y también sobre cómo usarlo para gestionar nuestras tareas y requerimientos. Este artículo es la última parte acerca de la funcionalidad básica de la integración entre Microsoft Dynamics AX 2012 y TFS, para poder empezar en los siguientes post con temas más avanzados.

En este artículo veremos como trabajar con TFS para la gestión de versiones del código fuente (VCS), que es el primer paso para poder utilizar las funcionalidades más avanzadas del sistema en cuanto a sus capacidades de ALM. Básicamente, el control de versiones pretende que cualquier cambio realizado sobre los objetos del sistema quede registrado, así como la fecha, el autor de dichos cambios, qué otros objetos se modificaron a la vez y por qué (mediante los comentarios en durante el check-in).

Esto nos permite revertir los cambios, volver a una versión anterior, comparar el estado actual de un objeto con una versión anterior, revisar los cambios realizados un determinado día por un desarrollador (para realizar revisiones de código), asociar los cambios a una determinada tarea para ver todos los cambios que ha requerido finalizarla, y un largo etcétera.

Las tres operaciones más evidentes que requiere cualquier control de versiones son: añadir nuevos objetos, check-in y check-out (traducidas en AX como Proteger y Desproteger respectivamente) y Sincronizar.

Agregar nuevos objetos

En Microsoft Dynamics AX no se añade todo el código al gestor de código fuente, al contrario que en otros VCS. No tendría sentido añadir todos los objetos que forman parte de la aplicación estándar ya que esto supondría un desperdicio notable de recursos. Por eso, sólo se añaden los objetos nuevos o aquellos objetos estándar que se han modificado, suponiendo que si un objeto no está controlado por el control de versiones es que es un objeto estándar que nunca ha sido modificado. En resumen, se añaden todos los objetos que no forman parte de las capas o modelos del sistema.

Para añadir un objeto al gestor de código fuente, TFS en este caso, se hace botón derecho sobre el mismo y Añadir al control de versión. Es importante recordar esta operación ya que no se realiza automáticamente. Si un objeto no se agrega al control de código, provocará errores e incoherencias cuando otros desarrolladores sincronicen nuestros cambios y no obtengan todos los objetos, por lo que es muy importante hacer de esta tarea un hábito y añadir los objetos a TFS cuanto antes, a ser posible justo después de crearlos, para no olvidarlo.

AX2012 vs TFS - Añadir a control de versión

Como se puede ver en la imagen anterior, los proyectos de MorphX también se consideran objetos y, por tanto, hay que agregarlos manualmente. No es recomendable añadir proyectos privados al control de versiones. En cualquier caso, dejarían de ser privados en TFS, donde se almacenarían como un objeto más.

Continue Reading…

Leer elementos de Team Foundation Server desde Microsoft Dynamics AX 2012 (ALM-V)

Vuelvo brevemente sobre una de mis series de post mas largas hasta la fecha, lo referente a la integración de AX 2012 con Team Foundation Server, no sólo para la gestión del código fuente, sino también como herramienta de gestión del trabajo del equipo. En capítulos anteriores ya vimos cómo se instala y configura TFS (esto cambia entre versiones, también vimos que no necesitamos instalar nada si utilizamos la versión en la nube) y cómo podíamos crear elementos de trabajo en TFS (WorkItems) para gestionar el trabajo desde esta herramienta.

Al hacer un check-in de código desde Microsoft Dynamics AX 2012 se nos plantea la posibilidad de asociar ese check-in a algunos elementos de trabajo de TFS. Esto es casi obligatorio para poder llevar un buen control de para qué se realiza cada cambio, pero la herramienta que nos ofrece AX es bastante limitada. Sin embargo, gracias al API de TFS, podemos ampliarla e incluso desarrollar nuestras propias herramientas e informes en AX 2012 obteniendo datos del servidor de TFS (sí, también desde Visual Studio Online).

Una funcionalidad muy interesante para ahorrarnos tiempo de desarrollo es poder ejecutar desde AX 2012 consultas que están guardadas y utilizamos en TFS. Esto nos permite tener las mismas vistas de datos en los dos entornos, lo que facilita el trabajo. Profundizaré sobre esto en los siguientes post sobre este tema, pero ahí va un código de ejemplo para realizar esta tarea.

NOTA: Para que estos ejemplos funcionen, es necesario tener instalado el SDK de Visual Studio de la versión de TFS que estemos utilizando. En mi caso es el SDK de la versión 2013 porque estoy utilizando Visual Studio Online, pero esto puede variar en cada instalación. Se puede descargar del siguiente enlace:

Después de instalar el SDK, hay que añadir las referencias necesarias al AOT para que AX 2012 pueda utilizarlas:

Add references to AOT

Ahora si, el código:

Continue Reading…

Microsoft Dynamics AX 2012, servicios web, .NET Interop, cliente-servidor y arquitectura de aplicación

¡Vaya título! ¿Qué tienen que ver todos estos conceptos y por qué debería tenerlos en cuenta? Es posible que no sea una situación que se nos presente todos los días, pero hay veces donde hay que tener todos esos conceptos en cuenta para hacer que un fragmento de X++ funcione correctamente. Este ha sido mi caso: Tengo que consumir un servicio web externo desde Microsoft Dynamics AX 2012. Parece fácil, ¿no?. El servicio web se va a consumir en un proceso por lotes (servidor), pero también debe poder llamarse manualmente desde formularios (cliente).

En Microsoft Dynamics AX 2009, para utilizar un servicio debíamos añadir una referencia de servicio al AOT. En la versión 2012 creamos un proyecto Visual Studio de tipo Librería de clases. En ese proyecto de Visual Studio agregamos una referencia de servicio y agregamos el proyecto al AOT. No voy a entrar en detalle sobre ésto porque esta bien explicado por ejemplo en este white paper.

Una de las cosas a tener en cuenta acerca de los conceptos del título de este post está en las propiedades del proyecto en Visual Studio:

Propiedades Proyecto Visual Studio

Lo relevante aquí es marcar Deploy to Client si queremos que la DLL se despliegue a los clientes y Deploy to Server si queremos que se despliegue al servidor. De esta manera, el sistema copiará la librería cuando sea necesario a la carpeta correspondiente, descargándola de la base de datos (de la Model Store) donde está almacenada. Dependiendo de cómo se ejecute el código X++ que utiliza esta librería podemos marcar uno u otro o los dos.

Continue Reading…

Statement of Direction for MS Dynamics AX Julio/2013

Ayer se publicó la ultima actualización del documento Statement of Direction for MS Dynamics AX que nos cuenta lo que Microsoft tiene pensado acerca de nuestro producto para los próximos meses/años. Esta última revisión no es muy larga ni ofrece información muy a largo plazo, lo que deja entrever que Microsoft tiene algunas sorpresas guardadas que no quiere publicar todavía ni siquiera a su red de Partners. No es de extrañar, cuando ya se ha filtrado información de la siguiente versión que está sujeta a compromisos NDA

Sin entrar mucho en detalle, lo que podemos esperar en breve es más o menos lo siguiente:

  • Microsoft Dynamics AX 2012 R3 (finales 2013)
  • Microsoft Dynamics AX Rainier (finales 2014)
    • Rediseño según la experiencia Windows 8 basado en HTML5.
    • Integración total con Azure en sus diversas formas de cloud publico y privado (on-premise, cloud o soluciones híbridas). Se publicarán guías y herramientas para orientar y posibilitar la migración, según el caso.
    • Mejoras en la gestión de implementaciones sea cual sea el modo de despliegue elegido.

Y tampoco puedo revelar mucho más, pero sin duda lo haré conforme vaya llegando más información que pueda ser publicada 🙂