Este manual te guiará paso a paso para copiar una empresa en Dynamics NAV utilizando PowerShell. Se recomienda realizar pruebas en un entorno de preproducción (PRE) antes de aplicar los cambios en producción.

Consideraciones Iniciales

  • Modificaciones de Código o Gran Tamaño de Empresa: Si tu empresa tiene modificaciones de código o ocupa mucho espacio, la opción estándar de copiar empresa puede no funcionar. Consulta la documentación de Microsoft o busca soluciones específicas en Internet. Puedes encontrar más detalles sobre este tema en este foro.

Requisitos Previos

  1. Permisos: Conceder permisos totales en:
    • C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
    • C:\Program Files\Microsoft Dynamics NAV\100\Service\NavAdminTool.ps1

Pasos para Copiar una Empresa en Dynamics NAV

1. Realizar un Backup de la Base de Datos

Antes de realizar cualquier cambio, es crucial hacer una copia de seguridad de la base de datos. Esto asegurará que puedes restaurar los datos en caso de que algo salga mal durante el proceso de copia.

Crear el Backup:

  • Utiliza SQL Server Management Studio (SSMS) para crear un backup completo de la base de datos de Dynamics NAV.
  • Selecciona la base de datos correspondiente, haz clic derecho y elige Tasks > Back Up....
  • Sigue los pasos para configurar el backup y guárdalo en un lugar seguro.

2. Conceder Permisos

Conceder permisos totales en los directorios mencionados. Asegúrate de tener privilegios de administrador.

3. Ejecutar PowerShell como Administrador

Navegar a C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe y ejecutar PowerShell como administrador.

4. Modificar la Configuración en Administración de NAV

Ruta para llegar a la Administración de NAV:

Abre el Business Central Server Administration Tool. Para más información, consulta la documentación oficial de Microsoft.

Configuraciones a Modificar:

  • Database:
    • SQL Command Timeout: 23:30:00
  • Client Services:
    • Keep alive interval: 23:30:00
    • Idle client timeout: 23:30:00
    • Reconnect Period: 23:30:00

5. Importar el Módulo de Administración de NAV

Import-Module 'C:\Program Files\Microsoft Dynamics NAV\100\Service\NavAdminTool.ps1'

6. Eliminar la Empresa Existente (si es necesario)

Remove-NAVCompany -ServerInstance 'BBDDPRO' -CompanyName 'BKUP-BBDD-231127'

7. Copiar la Empresa

Copy-NAVCompany -ServerInstance 'BBDDPRO' -SourceCompanyName 'BBDD' -DestinationCompanyName 'BKUP-BBDD-231129'

Verificar en SSMS: Asegúrate de que las tablas de ‘BKUP-BBDD-231129’ existan en SSMS.

8. Restaurar Configuración Inicial y Reiniciar la Instancia

Antes de reiniciar la instancia, restaura los valores originales de configuración para evitar problemas con las sesiones.

  • Database:
    • SQL Command Timeout: 0:30:00
  • Client Services:
    • Keep alive interval: 00:15:00
    • Idle client timeout: 00:16:00
    • Reconnect Period: 0:15:00

Nota: El tiempo de Keep alive interval debe ser inferior al de Idle client timeout, ya que de lo contrario las sesiones no se cerrarán nunca. Esto es un bug conocido de Dynamics NAV.

Reiniciar la instancia de BBDDPRO después de realizar las modificaciones.

Notas Adicionales

In Microsoft Dynamics NAV 2017, existen cinco Cmdlets para administrar empresas:

  • Copy-NAVCompany
  • Get-NAVCompany
  • New-NAVCompany
  • Remove-NAVCompany
  • Rename-NAVCompany

Para ejecutar estos Cmdlets, necesitamos iniciar ‘PowerShell ISE’ como Administrador. Luego, importa el módulo de administración de NAV para usar los Cmdlets de PowerShell de NAV.

Tareas a realizar:

  • Mostrar todas las empresas
  • Copiar una empresa
  • Renombrar una empresa
  • Crear una nueva empresa
  • Eliminar la nueva empresa

Cmdlets utilizados:

Import-Module 'C:\Program Files\Microsoft Dynamics NAV\100\Service\NavAdminTool.ps1'
$ServerInstance = 'NST2017RTM' # Modificar con el nombre de tu instancia de servidor
Get-NAVCompany -ServerInstance $ServerInstance # Mostrar todas las empresas
Copy-NAVCompany -ServerInstance $ServerInstance -SourceCompanyName 'CRONUS Nederland BV' -DestinationCompanyName 'CRONUS International' # Copiar una empresa existente a una nueva
Rename-NAVCompany -ServerInstance $ServerInstance -CompanyName 'CRONUS International' -NewCompanyName 'CRONUS Worldwide Enterprises' # Renombrar la empresa copiada
New-NAVCompany -ServerInstance $ServerInstance -CompanyName 'CRONUS Europe' # Crear una nueva empresa
Remove-NAVCompany -ServerInstance $ServerInstance -CompanyName 'CRONUS Europe' # Eliminar una empresa

Si estás operando NAV en una configuración multi-inquilino, también debes especificar el parámetro Tenant. El parámetro ServerInstance es obligatorio para todos los Cmdlets de empresa.

Entorno de Preproducción: Siempre realiza estas operaciones en un entorno de preproducción antes de aplicarlas en producción para asegurarte de que no habrá problemas.