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…

Microsoft Dynamics AX 2012, Azure Services y Windows Phone

Hace unos meses, desde Microsoft publicaron una aplicación de ejemplo para la captura de datos de gastos desde Windows Phone. Esta aplicación no es descargable desde España, pero lo relevante del asunto no es la aplicación en sí (cuyo funcionamiento se intuye) sino la arquitectura necesaria para que los datos de nuestra instalación de Microsoft Dynamics AX 2012 lleguen hasta el terminal móvil de manera inmediata y segura.

Microsoft Dynamics Tile

Para entender este funcionamiento hay que introducir al juego los nuevos servicios disponibles en Microsoft Windows Azure (sí!, en la nube). Hay que ir acostumbrándose a ellos, ya que Microsoft está rehaciendo toda la estrategia de sus productos alrededor de estos servicios. Por eso vamos a hacer una pequeña introducción de cómo utilizar estos servicios para llevar al móvil los datos empresariales de nuestro ERP. Todo ello se basa en el siguiente esquema, que vamos a explicar:

Continue Reading…

HOWTO: Información de Active Directory desde X++

Tenía este Job por aquí desde una vez que tuve que utilizarlo para activar/desactivar usuarios automáticamente en Microsoft Dynamics AX (probado en AX 2009) cuando éstos se desactivaban en el dominio. Lo publico para que no se me pierda y por si alguien pudiera sacarle partido :).

static void JAEE_IterateActiveDirectoryUsers(Args _args)
{
    str                 computer = new xSession().clientComputerName();
    xAxaptaUserManager  mgr = new xAxaptaUserManager();
    xAxaptaUserDetails  usr;
    container           doms;
    int                 d, u;
    str                 dom, login, name, sid, email;
    ;

    // iterate AD domains
    doms = mgr.enumerateDomains(computer);
    for (d = 1; d <= conlen(doms); d++)
    {
        dom = conpeek(doms, d);
        setprefix(dom);
       
        // iterate AD domain users
        usr = mgr.enumerateDomainUsers(dom);
        for (u = 0; u < usr.getUserCount(); u++)
        {
            if (usr.isUserEnabled(u) && !usr.isUserExternal(u))
            {
                // get information from AD
                login = usr.getUserLogin(u);
                name = usr.getUserName(u);
                sid = usr.getUserSid(u);
                email = usr.getUserMail(u);

                // stuff happens here, you can compare AD data with AX User info
               
                info(strfmt("%1 - %2 - %3 - %4 - %5", dom, login, name, email, sid));
            }
        }
    }
}

Descarga