lunes, marzo 30, 2015

¿Cómo montar un tenant en Dynamics NAV en 8 pasos?

Desplegar un tenant mediante PowerShell a partir de la instalación básica de Microsoft Dynamics NAV (Navision)


En este artículo voy a explicar los pasos a seguir para, a partir de una instancia de Dynamics NAV, montar un tenant y tener así el código de la aplicación albergado por la instancia y poder tener cuantos tenants queramos en esa misma instancia, cada tenant con su propia base de datos (de datos), compartiendo el codigo fuente.

Figura 1: Escenario multi-instancia


Figura 2: Escenario multi-tenant


Para ello vamos a utilizar Windows PowerShell ISE.

1er paso: Importar el módulo de administración de Dynamics NAV
Set-ExecutionPolicy RemoteSigned -Force
Import-Module 'C:\Program Files\Microsoft Dynamics NAV\80\Service\NAVAdminTool.ps1'

2do paso: Parar el servicio que está ejecutando la instancia a exportar.
Set-NAVServerInstance -ServerInstance 'DynamicsNAV80' -Stop

3er paso: Exportar el código fuente de la base de datos actual y separarlo en una base de datos independiente.
Export-NAVApplication -DatabaseServer 'MySQLServer' -DatabaseInstance 'NAVDEMO' -DatabaseName 'Demo Database NAV (8-0)' -DestinationDatabaseName 'NAV App'

4to paso: Quitar el código fuente de la base de datos para dejarla preparada para tenant.
Remove-NAVApplication -DatabaseName 'Demo Database NAV (8-0)' -Force

5to paso: Modificar el setting de la instancia para quitar la base de datos (de datos) y albergar multi-tenant.
Set-NAVServerConfiguration -ServerInstance 'DynamicsNAV80' -Element appSettings -KeyName 'DatabaseName' -KeyValue ''
Set-NAVServerConfiguration -ServerInstance 'DynamicsNAV80' -Element appSettings -KeyName 'MultiTenant' -KeyValue 'True'

6to paso: Iniciar el servicio parado en el paso 2 pero que ahora está preparado para multi-tenant.
Set-NAVServerInstance -ServerInstance 'DynamicsNAV80' -Start

7mo paso: Montar la base de datos del código fuente que será utilizado por todos los tenants.
Mount-NAVApplication -ServerInstance 'DynamicsNAV80' -DatabaseServer 'MySQLServer' -DatabaseInstance 'NAVDEMO' -DatabaseName 'NAV App'

8vo paso: Montar el tenant. Cada tenant de la instancia alberga una base de datos (de datos).
Mount-NAVTenant -ServerInstance 'DynamicsNAV80' -Id tenant1 -DatabaseServer 'MySQLServer' -DatabaseInstance 'NAVDEMO' -DatabaseName 'Demo Database NAV (8-0)' -OverwriteTenantIdInDatabase

Finalmente sólo nos queda acceder a NAV para comprobar que todo funciona correctamente. Ahora deberemos añadir a la cadena de conexión al servidor el tenant al que deseamos conectar. Por ejemplo: MyNAVSERVER.cloudapp.net:7046/DynamicsNAV80/tenant1

jueves, marzo 12, 2015