P4 Software / cifrahq-spanish

Migracion desde P4Books

Migrar un Tenant de P4Books a CifraHQ

Si su organizacion esta migrando desde el producto heredado P4Books hacia CifraHQ, puede importar un archivo zip de exportacion de P4Books existente y obtener un tenant de CifraHQ totalmente funcional del otro lado. La importacion hace todo en un solo paso: restaura los datos SQL, lleva el esquema de la base de datos a la version actual de CifraHQ, restaura las colecciones de Auditoria y metadatos, y vuelve a subir cada archivo binario adjunto (logos, fotos de Productos, documentos escaneados) al almacenamiento de blobs seguro del tenant.

Esta pagina cubre el flujo de importacion. Solo los super-administradores pueden ejecutarlo.

Cuando usar esto

Ejecute esta importacion cuando:

  • Un cliente le entrega un zip de exportacion de P4Books (generado tipicamente por la accion Tenant Export del producto heredado) y desea ponerlo a operar en CifraHQ.
  • Quiere levantar un tenant de prueba paralelo a partir de un snapshot existente de P4Books sin tocar el tenant en produccion.

No use esto para respaldos rutinarios entre tenants de CifraHQ: las acciones Exportar Tenant e Importar Tenant en la Consola Admin manejan migraciones CifraHQ-a-CifraHQ directamente sin conversion de esquema.

Que contiene un zip de exportacion de P4Books

Una exportacion de P4Books contiene cuatro tipos de carga:

Elemento Proposito
tenant.json Metadatos del tenant: nombre de la empresa, alias, RUC, zona horaria, logo.
{alias}.bacpac Respaldo SQL Server de la base de datos del tenant. Usa el linaje de esquema heredado de P4Books.
P4B_{alias}/*.bson Volcados de MongoDB para History, CallLocks y los metadatos de Files.
files/{id-32-caracteres} El contenido binario de cada archivo subido (en su mayoria fotos de Productos y PDFs), uno por id de archivo.

La importacion entiende las cuatro cargas. No necesita extraer el zip ni preprocesarlo.

Paso a paso

Paso 1. Aloje el zip de exportacion en un lugar accesible para CifraHQ

La importacion acepta el zip via URL, no por subida directa de archivo. La ruta mas simple es subir el zip al contenedor de Azure Blob del tenant o a cualquier otra ubicacion HTTPS que devuelva los bytes crudos al ser consultada. Una URL de Shared Access Signature de corta duracion funciona bien: la importacion descarga el archivo y descarta la URL despues.

La URL debe ser alcanzable desde los servidores de aplicacion de CifraHQ, devolver content-type application/zip y no requerir autenticacion interactiva.

Paso 2. Abra la Consola Admin

Inicie sesion en https://app.CifraHQ.cloud/admin con una cuenta de super-administrador. Desde la pagina de Tenants, haga clic en el menu de accion superior derecho y elija Importar Tenant.

Paso 3. Elija el alias del nuevo tenant

CifraHQ le solicitara un nuevo alias de tenant. Escriba el alias que desea usar para este tenant en adelante. El alias debe:

  • Ser unico en todos los tenants de CifraHQ
  • Contener solo letras minusculas y digitos
  • Ser lo suficientemente corto para servir como subdominio, ya que el tenant vivira en https://{alias}.CifraHQ.cloud

Si el cliente era conocido como nerv en P4Books, puede mantener nerv como alias, o elegir algo diferente como nerv-prod o nervlive. El alias original dentro del zip se reescribe al valor que escriba aqui, por lo que no hay colision de nombres con la exportacion fuente.

Paso 4. Pegue la URL del paquete

Pegue la URL preparada en el Paso 1 y haga clic en Importar.

Paso 5. Observe el registro de progreso

Se abre un dialogo de progreso que transmite la importacion en tiempo real via SignalR. Espere ver aproximadamente las siguientes lineas, en orden:

Reading archive...
Creating tenant record...
Extracting database...
Detected P4Books migration lineage. Applying upgrade SQL...
P4Books upgrade applied (N batches).
Migrating database...
Priming tenant...
Extracting mongo...
Rehydrating N binary files into blob storage...
Rehydrated N binary files.
Done.

Para un tenant pequeno tipico (unos cientos de Productos y unos cientos de archivos adjuntos) toda la importacion termina en dos a cinco minutos. Los tenants mas grandes escalan aproximadamente lineal con el tamano del BACPAC y la cantidad de archivos binarios.

Si la ejecucion falla a medio camino, toda la transaccion se revierte: el registro del tenant, la base de datos y cualquier dato de Mongo se eliminan para que pueda intentar de nuevo con un estado limpio.

Paso 6. Vincule una licencia

Los tenants importados se crean sin licencia adjunta. Antes de entregar el tenant al cliente, vaya a https://p4licenses.cloud/ y vincule el nuevo tenant a una suscripcion. Sin este paso el tenant inicia sesion pero la verificacion de licencia falla y la mayoria de las paginas se niegan a cargar.

Paso 7. Restablezca contrasenas de administrador

La importacion preserva todos los registros de Usuarios desde la base de datos P4Books fuente, pero no preserva las contrasenas hash de las cuentas de administrador integradas. Inicie sesion como administrador del sistema usando el flujo de recuperacion (o haga que el cliente use el correo de restablecimiento de contrasena), luego habilite los Usuarios normales desde la pantalla de Usuarios.

Paso 8. Prueba de humo

Abra https://{alias}.CifraHQ.cloud en una ventana privada. Verifique:

  • La pagina de inicio de sesion se renderiza (sin error 500).
  • Despues del login, el tablero carga.
  • Una pagina de detalle de producto muestra su foto sin icono de imagen rota. Esta es la prueba visible de que la rehidratacion binaria fue exitosa.
  • Los Datos Maestros del cliente (Proveedores, Clientes, Productos) estan presentes y los conteos coinciden aproximadamente con la instalacion P4Books fuente.

Que hace la importacion en segundo plano

Esta seccion es para super-administradores que quieren entender la conversion. Omitala si solo le interesa ejecutar la importacion.

  1. Registro del tenant: se lee tenant.json y se crea una fila nueva en la tabla maestra Tenants con el alias que usted suministro. Los campos de licencia se limpian para que el tenant no pueda comenzar a servir solicitudes hasta vincular una licencia.
  2. Restauracion SQL: {alias}.bacpac se restaura en una base de datos CHQ_{alias} totalmente nueva via importacion BACPAC de Azure SQL.
  3. Actualizacion de esquema P4Books: la base de datos restaurada se inspecciona en busca de las filas heredadas Init1...Init57 en el historial de migraciones. Si se encuentran, el mismo script SQL de actualizacion validado que ingenieria de CifraHQ ha estado aplicando manualmente durante un ano (vea Docs/db-upgrade/upgrade-p4books-to-CifraHQ.sql) se ejecuta en linea. Limpia las filas heredadas, inserta las filas base de CifraHQ, crea cinco tablas que no existian en P4Books y parcha desviaciones de esquema en UserDefinedFields. El script es idempotente: ejecutarlo sobre una base de datos ya en linaje CifraHQ es una operacion sin efecto.
  4. Migraciones EF: el equivalente a dotnet ef database update se ejecuta contra la base de datos para aplicar todas las migraciones delta de CifraHQ que vinieron despues de la base.
  5. Restauracion Mongo: mongorestore lee los volcados BSON y reconstruye las colecciones History, CallLocks y los metadatos de Files bajo el nuevo alias en el cluster compartido p4smongo.
  6. Rehidratacion binaria: el directorio files/ se recorre archivo por archivo. Cada blob se sube al contenedor de Azure Blob del nuevo tenant con el id hexadecimal de 32 caracteres original preservado como nombre del blob, para que cada registro SQL que referencia ese id siga resolviendo. El tipo de contenido se detecta desde los bytes magicos PNG, JPEG, GIF, WebP y PDF.
  7. Inicializacion: las cuentas de servicio integradas se restablecen con claves API nuevas y la transaccion se confirma.

Resolucion de problemas

La importacion falla en "Extracting database..." con un error de BACPAC. El zip esta incompleto o el BACPAC dentro de el se genero contra una version de SQL Server mas nueva que la version objetivo de CifraHQ. Re-exporte desde el sistema fuente e intente de nuevo.

El registro de progreso se detiene en "Rehydrating..." y nunca regresa. Falta la cadena de conexion de Azure Blob o la identidad de la aplicacion no tiene permiso de escritura en el contenedor del tenant. Revise la Configuracion del App Service para la cadena de conexion BinaryStorage.

Los Productos no muestran fotos despues de la importacion aunque la importacion se completo. El directorio files/ estaba vacio en el zip. La instalacion P4Books fuente probablemente almacenaba las fotos en otro lugar (una raiz de archivos diferente). Contacte a ingenieria con la fuente de exportacion para que se localice la ruta y se re-adjunte.

El login funciona pero todas las paginas muestran "Sin licencia". Se omitio el Paso 6. Vincule el tenant a una suscripcion en https://p4licenses.cloud/ e intente de nuevo.


Relacionado: Respaldos de Base de Datos - Configuracion del Tenant - Modulos

Was this page helpful?