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!!

En busca de la tabla perdida… herencia de tablas en AX 2012

Si alguien ha creado o mantiene un desarrollo que acceda directamente a la base de datos de Microsoft Dynamics AX 2012 (por ejemplo, algún sistema externo de Business Intelligence), se habrá encontrado con el fenómeno de la “tabla fantasma“. Hay muchos casos, pero analicemos por ejemplo la tabla OMOperationUnit. Esta tabla existe en el AOT, podemos explorarla desde Dynamics AX y ver los datos que contiene, por lo que esos datos deben estar almacenados en alguna parte. Sin embargo la tabla no existe en la base de datos SQL Server subyacente. Entonces, ¿Dónde están los datos?

En primer lugar hay que fijarse que este fenómeno sucede siempre en tablas heredadas o que soportan herencia, por ejemplo:

Tablas heredadas en Microsoft Dynamics AX 2012

Como la tabla existe y almacena datos en el AOT, es obvio que la tabla debe existir en la base de datos. Una buena herramienta de la que disponemos en X++ es la función getSQLStatement que podemos usar en variables de tipo buffer o en consultas, de esta forma:

static void Job43(Args _args)
{
    OMOperatingUnit tabla;

    select generateOnly tabla;

    info(tabla.getSQLStatement());
}

Esta función nos devuelve el SQL que se enviará a la base de datos para obtener los datos que se requieren desde X++. Aquí tenemos la explicación al problema de la tabla fantasma:

Consulta SQL de tablas heredadas en Microsoft Dynamics AX 2012

Si analizamos bien el SQL obtenido, incluso si lo probamos directamente contra la base de datos SQL Server, descubrimos la estructura interna que el AOT ha desarrollado en la base de datos para almacenar los datos de las tablas heredadas:

Consulta SQL de tablas heredadas en Microsoft Dynamics AX 2012

En este caso, la tabla heredada obtiene los datos de tablas totalmente diferentes mediante algunos filtros. Dependiendo del tipo de tabla heredada, las tablas físicas pueden tener otra forma, pero en cualquier caso de esta forma obtenemos una consulta válida que podemos utilizar para acceder a los datos desde un sistema externo, o podemos crear una vista con esa consulta para simular la existencia de la tabla, si fuera necesario.

Microsoft Dynamics AX 2012 R2 Demo VM Actualizada

El pasado día 9 de febrero fue publicada una versión actualizada de la máquina virtual demo de Microsoft Dynamics AX 2012 R2 que ya anunciamos hace unas semanas. Las novedades están orientadas sobre todo al Business Intelligence, incluyendo varios informes realizados mediante Power View y mejoras en los . La previsión es que a finales de marzo se publique otra revisión, añadiendo datos localizados y más scripts demo y anuncian nuevas especificaciones de la máquina virtual (que ya son bastante exigentes).

Microsoft Dynamics AX 2012 R2 Solution Demo Package V1.5

Como de costumbre, se puede descargar la máquina virtual actualizada, sus licencias y documentación en PartnerSource.

Descargando… 🙂

EXTRA: Aprovecho para destacar la actualización de un White Paper muy importante para los que trabajamos con AX 2012 en general y R2 en particular:

 

Microsoft Dynamics AX 2012 Presente y Futuro

Si hace unos días, actualizaba mi post sobre la Microsoft Dynamics AX Technical Conference 2012, durante esta semana se ha celebrado en Seattle la AXUG Summit 2012, donde ya se han presentado las novedades que se esperan de Microsoft Dynamics AX a corto y medio plazo.

Microsoft Dynamics AX 2012 R2

También llamado AX 6.2, es la siguiente versión menor que se publicará previsiblemente en Diciembre. Una versión que, según Hal Howard (Vicepresidente de I+D para Dynamics) incluye diferentes peticiones que clientes y partners como las mejoras en las herramientas RapidStart y las posibilidades de ejecutar cualquier combinación de países en una misma instancia. Además:

  • AXUG Summit 2012 LogoNueva funcionalidad de planificación de presupuestos (contables)
  • Mejoras en el módulo de RRHH para la gestión de los empleados
  • Funcionalidades locales para 11 nuevos países
  • Mejoras para el comercio electrónico
  • Compartir y programar recursos entre empresas

La funcionalidad de presupuestos contables utilizará Excel como herramienta front-end y Sharepoint para compartir los datos, como suele siendo habitual en la plataforma. De esta manera el sistema podrá analizar costes top-down y bottom-up incluyendo vistas para los diferentes niveles de la organización, incluyendo costes fijos y variables, gastos e integración con contabilidad y recursos humanos utilizando la jerarquía de organización como base para confeccionar el presupuesto.

También se presentan mejoras respecto a los role centers como nuevos controles Power View (novedad de visualización de Business Intelligence en SQL Server 2012) para el control de centros de coste. En la demo se mostró como se podían mezclar los ratios de crédito de los clientes con la contabilidad general en un gráfico interactivo que permitía filtrar cuentas por el riesgo de crédito, o un mapa que mostraba las ventas retail por zonas. Sin haber visto las demos de este evento, he de decir que las posibilidades del nuevo Power View que he visto en diferentes eventos de SQL Server 2012 son espectaculares, dejando atrás a herramientas similares de manera contundente (por fin).

Dynamics AX después de la R2

El equipo de AX anunció algunas novedades que están por venir, como una aplicación para móviles de captura de gastos, y una nueva herramienta de análisis para Windows 8 orientada a ejecutivos que quieran consultar sus datos en dispositivos tablet. También se habló de funcionalidades muy focalizadas como una aplicación de punto de venta para retail y distribución a mitad de 2013, aunque sin muchos detalles.

Se anunció una sustancial mejora del Master Data Management con conectores mas allá del que existe actualmente para CRM incluyendo conexión con otras instancias de Dynamics AX incluso de diferentes versiones. Sin duda esto ayudará a empresas con grandes despliegues a acometer proyectos de migración con un menor riesgo e impacto.

Corporate VP of Dynamics ERP R&D

También se dijo que la próxima versión mayor del producto tendría una nueva UI estilo Windows 8 que convertiría a AX en, textualmente: “fundamentally a new browser-based HTML5 app”. Esto personalmente me ha llamado mucho la atención por la cantidad de consecuencias técnicas que podría tener, incluso aunque se apostara por el modelo ya utilizado, por ejemplo en NAV, de dejar utilizar el cliente nuevo y “antiguo” a la vez (lo que duplica las consecuencias).

Otra ventaja anunciada (de la que se viene hablando desde hace meses), es que este nuevo interfaz se podría servir desde servicios basados en Azure desde Microsoft, salvando la actual barrera técnica que hace (a mi parecer) imposible desplegar entornos Dynamics AX en la nube. Esta podría ser la solución propuesta aunque a falta de detalles tendremos que esperar para ver qué se les ha ocurrido finalmente. De momento han anunciado que la oferta no será un despliegue completo de AX en could on-premise sino soluciones específicas para cada industria que Microsoft irá mejorando y publicando según la demanda.

El anuncio textual desde luego es prometedor. En palabras de Hal Howard: “nos centramos en un servicio cloud que puedas manejar, que puedas hacer todo lo que quieras hacer y que funcione igual que en tus servidores pero con los beneficios, la flexibilidad y la potencia de un entorno en la nube basado en Azure”

Por último aunque no menos importante, se anuncia definitivamente que, como era de esperar,  todo el entorno de desarrollo se mueve a Visual Studio. Ya no habrá parte del desarrollo en MorphX y parte en VS sino que habrá un sólo punto de trabajo. Esto era algo que se podía prever de los movimientos llevados a cabo durante las últimas versiones pero ahora ya es oficial aunque me dejan la duda de si se mantiene el lenguaje X++. Durante versiones y versiones se ha defendido su durabilidad pero con los últimos cambios es inevitable tener ciertas dudas.

FUENTES: 1 2

Manejar Enumerados de Dynamics AX en SQL Server (SSIS, SSRS, SSAS, …)

Manejar los valores de campos de tipo BaseEnum de Microsoft Dynamics AX en la base de datos (ya sea en T-SQL, en SSRS, SSIS, SSAS, …) puede ser complicado si se intenta hacer manualmente. El valor de los enumerados se guarda en la base de datos como el número del elemento pero cuando hay que presentar ese valor al usuario (en un informe, un cubo, etc…) hay que mostrar la descripción, el Label del campo, no el número que hay en la tabla, pero este valor no está disponible en AX de manera inmediata así que ¿Cómo hacerlo?

Afortunadamente, Microsoft ha solucionado ese problema para su propia integración con informes de Reporting Services y esa solución es fácilmente adaptable a nuestros requerimientos:

Durante la instalación de las Extensiones de Bussines Intelligence de Microsoft Dynamisc AX se actualiza automáticamente, dependiendo de la configuración elegida, la tabla del sistema SRSANALYSISENUMS con los valores y descripciones, por idioma, de todos los enumerados utilizados en todas las tablas que pertenecen a una Perspectiva.

Si a posteriori se quiere relanzar esta configuración para añadir nuevas tablas o nuevos idiomas, es posible hacerlo utilizando el Asistente para proyecto de SQL Server Analysis Services y seleccionando la opción Configurar:

Suponiendo que esta configuración ya está realizada, y suponiendo que lo que queremos es “traducir” las cadenas de texto en el idioma que corresponda a su valor numérico desde SQL Server Integration Services (el procedimiento se puede aplicar a otras áreas como SSAS o vistas de SQL por ejemplo) he optado por crear un procedimiento almacenado que realice la consulta de una manera reutilizable:

Continue Reading…