miércoles, 1 de septiembre de 2010

Mantener Personalizaciones de Usuarios al Cambiar Dominio

Hola, en ocasiones se debe copiar o restaurar Dynamics Ax en otro dominio y tenemos problemas cuando existe una lista grande de usuarios y se debe volver a importar esta, perdiendo la personalizacion de cada usuario.
Para evitar esto, se debe cambiar los campos NETWORKDOMAIN y SID en la tabla USERINFO de la BD de Dynamics AX, para saber el nuevo SID de la lista de usuarios podemos usar lo sgte:

1.- Abrimos un block de notas
2.- Copiamos este codigo:

Option Explicit
Dim objExcel, i, strCompu, objWMIUserAccount , colUserAccount , objUserAccount
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
i = 1
strCompu = "."
Set objWMIUserAccount = GetObject _
("winmgmts:\\" & strCompu & "\root\cimv2")
Set colUserAccount = objWMIUserAccount.ExecQuery _
("Select * From Win32_UserAccount")
For Each objUserAccount in colUserAccount
objExcel.Cells(i, 1) = objUserAccount.Name
objExcel.Cells(i, 2) = objUserAccount.SID
i = i + 1
Next

3.- Guardamos el archivo como *.vbs (ej. miSID.vbs)
4.- Damos doble click al archivo creado y nos muestra la información en un archivo excel.

//------------------------------------------------------------------------------\\

Otra forma sería creando el sgte. job dentro del AX:

static void TestSID(Args _args)
{
sid userSid;
Microsoft.Dynamics.IntegrationFramework.Util util;
userinfo userinfo;
str usuarioX;
str dominioX;
;
dominioX = "dominio";
while select userinfo
{
usuarioX = userinfo.networkAlias; // Usuario
util = new Microsoft.Dynamics.IntegrationFramework.Util();
userSid = util.GetUserSid(dominioX, usuarioX);
CodeAccessPermission::revertAssert();

info(usuarioX);
info(userSid);
}
}

Saludos.