Copiando una empresa de un tenant a otro (on-prem) - Business Central

Breaking

viernes, 20 de enero de 2023

Copiando una empresa de un tenant a otro (on-prem)

Conforme va pasando el tiempo, se nos van creando nuevas situaciones en los negocios que llevan a fusiones o excisiones de compañías.

El caso que os traigo hoy, es referente a un grupo empresarial (GRUPO 1) gestionado en Business Central On premise, por tanto una base de datos con varias empresas.

Por otro lado, otro grupo empresarial (GRUPO 2) con varias compañías también y que también usa Business Central, que adquiere una de las empresas del GRUPO 1 (la empresa 1C) y quiere gestionarla dentro de su mismo ERP.

Lo fácil parece que sería hacer una copia de seguridad y restaurar, pero...  dado que tenemos empresas operativas en las dos bases de datos, esto no es posible directamente.

Para solucionarlo usaremos las herramientas que nos proporciona la administración de Business Central.


Uso de Power Shell

Al ser unas instalaciones On-Premise, usaremos las herramientas de Power Shell que tenemos disponibles: 

Export-NAVData

Aquí te dejo la documentación oficial:

https://learn.microsoft.com/en-us/powershell/module/microsoft.dynamics.nav.management/export-navdata?view=businesscentral-ps-21

Fundamentalmente, este comando te permite exportar mediante uno de sus parámetros solamente la empresa que queramos.  En nuestro caso, exportaríamos la Empresa 1C.

Ejemplo del comando:

Export-NAVData -ServerInstance $Instacia -FilePath "F:\RCB\EMPRESA1C.navdata" -Description "EMPRESA1C" -CompanyName $Company 

Una vez generado, ya tenemos una copia sólo de la empresa (o empresas) seleccionadas.



Import-NAVData

El siguiente comando a ejecutar sería para la importación de los datos.

Aquí está el link a la documentación:

https://learn.microsoft.com/en-us/powershell/module/microsoft.dynamics.nav.management/import-navdata?view=businesscentral-ps-21


En este caso, lo que le decimos es que importamos el fichero exportado previamente con la empresa seleccionada.

Ejemplo del comando:

Import-NAVData -ServerInstance $InstaciaTarget -FilePath "F:\RCB\EMPRESA1C.navdata" -CompanyName $Company

En caso de error al exportar/importar, habrá que revisar los puntos siguientes.

Consideraciones importantes previas a la exportación del fichero

Antes de realizar la exportación del fichero debemos de tener en cuenta los siguientes aspectos:

- La base de datos desde donde se exporta y a la que se importa, deben de tener las mismas extensiones y en las mismas versiones, incluyendo lógicamente la versión de Business Central.

Aunque parece obvio, hay que tener en cuenta que la copia tendrá una serie de campos y tablas, que en caso de que no estén en el destino dará error.

La mejor opción sería hacer un backup completo de la empresa del grupo 1, restaurarlo en un SQL server de prueba y una vez finalizado, empezar a despublicar y desinstalar las extensiones que no sean necesarias e instalar las nuevas que tenga el destino.

- Extensiones fantasma.  Es posible que pese a desinstalar y despublicar la extensión, la base de datos todavía disponga de la información.  Por esa razón, es muy importante hacer limpieza.  Esta se realiza mediante un comando de PowerShell:

Sync-NAVApp -ServerInstance $Instancia -Tenant default -Name 'NombreExtension' -Mode Clean

En caso de no realizar este proceso incluyendo el comando -Mode Clean nos irá mostrando errores por extensiones que no se hubiesen limpiado.  Es posible que te aparezcan extensiones que ni siquiera supieses que se habían instalado alguna vez.

Puedes ver las extensiones desinstaladas con la siguiente consulta SQL:

SELECT * FROM [$ndo$navappuninstalledapp]


Lo que no se exporta con el comando Export-NAVData

Existen datos que, al exportar solo una empresa, no se exportan.  Por ejemplo, los documentos adjuntos.

Es verdad que tenemos una tabla donde se ven los documentos adjuntos y que están separados por empresas:


La tabla es la "Document Attachment" (1173), pero ahí solamente hay una referencia al documento.  Sería el campo "Document Reference ID".

Donde realmente está el documento adjunto, es en la tabla "Tenant Media", que es común para todas las empresas de la Base de datos.  Allí está el documento en el campo "Content", por lo que en caso de querer exportar esos adjuntos, también habría que exportar esa información.  


Espero que te sea de utilidad esta información, ya que los negocios van cambiando, y tenemos que ir modificando según las necesidades de los clientes.

En un próximo blog, os enseñaré ese mismo procedimiento, pero en SaaS.

Recuerda que puedes seguirme en 

Youtube: https://www.youtube.com/@rcorella donde podrás encontrar muchos contenidos interesantes



No hay comentarios: