PowerShell para la administración automática de Dynamics AX 2012 (PS-II)

En la primera entrega de esta serie sobre PowerShell y DevOps para Microsoft Dynamics AX 2012  hablábamos sobre los principios más básicos de PowerShell y su sintaxis. También vimos en post anteriores como PowerShell se puede usar de formas bastante creativas.

Keyboard

Esta vez vamos a ver los comandlets específicos para la administración de Microsoft Dynamics AX 2012, que podemos separar en varias familias:

Gestión de Modelos y la Model Store

Estos comandlets son muy importantes y van a ser la base de nuestra estrategia DevOps, combinada con los procesos builds automáticos que tendremos configurados en nuestro TFS, si es que los utilizamos.

La combinación de estos componentes va a permitirnos diseñar procesos que actualicen automáticamente nuestros entornos, orientando nuestros procesos hacia la integración o el despliegue continuo de nuestros entornos, especialmente entornos de desarrollo y/o pruebas. Hablaremos sobre esto en los siguientes posts de esta serie.

Estos son los que normalmente utilizamos para estas tareas, aunque vale la pena echar un vistazo a la referencia completa porque todos pueden ser útiles para tareas concretas o para scripts que automaticen tareas más completas:

Modelos

Comando Descripción
New-AXModel  Crea un nuevo modelo en la Model Store
Uninstall-AXModel  Elimina un modelo de la Model Store
Install-AXModel  Importa un modelo (desde un fichero) en la Model Store
Export-AXModel  Exporta un model de la Model Store a un fichero .axmodel
Move-AXModel  Mueve los objetos de un modelo a otro modelo, combinando todos los objetos en este último.

Continue Reading…

AX TIP: Ejecutar código X++ externo

Siguiendo con el hilo de mi anterior artículo, otro truco parecido consiste en la posibilidad de utilizar la clase XppCompiler para ejecutar manualmente un fragmento de código almacenado de forma externa, ya sea en la base de datos, en una variable, en ficheros de texto, etc.

Para ello podemos utilizar una sintaxis parecida a la siguiente:

static void JAEE_XppCompiler_Code(Args _args)
{
    XppCompiler comp;
   
    Source codigo =
        "InventLocationId findLocation(InventDimId _inventDimId)" +
        "{" +
        "    return InventDim::find(_inventDimId).InventLocationId;" +
        "}";
   
    InventDimId         inventDimId = "1879356425";
    InventLocationId    result;
   
    new ExecutePermission().assert();
   
    comp = new XppCompiler();
   
    if (!comp.compile(codigo))
        throw error("Código no válido.");
   
    result = runBuf(codigo, inventDimId);
   
    CodeAccessPermission::revertAssert();
   
    info(strFmt("Resultado: %1", result));
}

Tal como decía en el artículo anterior, utilizar manualmente este tipo de API es peligroso y debe ser asegurado. En aquel capítulo incluía algunos enlaces de interés para desarrollar código seguro.

Las posibilidades a la hora de utilizar esta técnica son muy diversas. Podemos utilizarlo para ejecutar pequeños snipets de código almacenados en la base de datos de forma que un usuario pueda realizar pequeñas funciones personalizables, o podemos ir mucho más allá. Por ejemplo en este blog de MSDN nos explican cómo, aprovechando estas mismas clases y ejecutándolas desde el .NET Business Connector, se puede hacer una aplicación de consola para ejecutar fragmentos de código X++ desde línea de comandos.

Seguridad en Instalaciones Microsoft Dynamics AX 2012

Requisitos de Seguridad para los Servidores de Microsoft Dynamics AX

Servidor Configuración
Application Object Server (AOS) El directorio de logs no se puede cambiar. El log siempre se guarad en <carpetainstalación>\log. Restringir el acceso a este directorio sólo a administradores y a las cuentas de servicio de AOS.

La cuenta utilizada para el inicio de sesión del servicio necesita el permiso:

  • Inicio de sesión como servicio.
SQL Server Utilizar la configuración de seguridad recomendada para servidores SQL Server incluida en TechCenter.
Role Center y Enterprise Portal El servidor ejecutando IIS debe utilizar autenticación Basica y Secure Sockets Layer (SSL) para usuarios que inician sesión desde fuera de la red corporativa. El servidor de Enterprise Portal puede estar en una red perimetral (DMZ) o dentro de la red interna. NOTA: Enterprise Portal utiliza el usuario proxy de Business Connector. Seguir las recomendaciones de seguridad de Microsoft para asegurar servidores IIS y SharePoint.
Reporting Server El servidor ejecutando el sitio web de SSRS debe estar dentro del dominio y no expuesto a Internet. Seguir las las recomendaciones de seguridad de Microsoft para asegurar servidores SSRS.
Application Integration Framework (AIF) Seguir las recomendaciones de seguridad de Microsoft para asegurar servidores IIS.
Online Analytical Processing (OLAP) Seguir las recomendaciones de seguridad de Microsoft para asegurar servidores SSAS.

Cuentas de dominio para servicios Microsoft Dynamics AX

Google Android vs Microsoft Dynamics AX (II)

Hace ya algún tiempo hice un pequeño experimento de conexión a un Dynamics AX 2009 de pruebas desde un terminal Android (emulado). Pues bien, con aquel experimento obtuve algunos progresos más aunque no había tenido tiempo todavía para publicarlos.

En el anterior post sobre este tema explicaba el entorno de desarrollo y un sencillo esquema de lo que pretendía conseguir:

Diseño básico de la Arquitectura en las pruebas

Es un entorno con tres capas muy bien diferenciadas, una instalación normal de Dynamics AX 2009 con el .NET Business Connector por un lado, un servicio web hecho en C#.NET en medio y un terminal Android al otro lado.

Sobre la instalación AX no hay nada que mencionar, es una instalación normal sin ninguna personalización y con los datos de prueba que facilita Microsoft, explicaré un poco las otras dos capas que son más interesantes:

Continue Reading…

Google Android vs Microsoft Dynamics AX (I)

Desde hace algún tiempo tengo la inquietud personal de investigar una solución móvil para conectar a Microsoft Dynamics AX 2009. Lo aparentemente mas lógico sería intentarlo con Windows Phone 7 pero el entorno Android me parece muy interesante para investigar, así que el proceso de investigación será doble.

Para conectar a AX desde el exterior podríamos optar por una solución “out of the box” como por ejemplo el conector AIF pero ya que este es un proceso de investigación personal (no es una solución real para un cliente por el momento) he decidido implantar “manualmente” todo el proceso según el siguiente esquema:

Android vs AX 2009

El entorno de desarrollo es el siguiente:

Continue Reading…