Como: Migrar datos de Magento2 Commerce a Magento2 CE


Como: Migrar datos de Magento2 Commerce a Magento2 CE

En esta página

Hace poco me pidieron trabajar en una migración de datos desde Adobe Commerce 2.3.7-p3 hacia una instancia de Magento Community 2.4.3-p2. He hecho tareas similares en el pasado usando la Herramienta oficial de Migración de Datos de Magento (MDMT) , así que esa fue mi arma elegida. En las siguientes líneas intentaré describir el proceso.

Importante: Vale la pena mencionar que la MDMT fue creada para migrar datos de Magento 1 a Magento 2, y principalmente de Community a Commerce.

Aun así, decidí seguir usando esta arma para la tarea porque, en esencia, la herramienta:

  • Migra datos de un Magento a otro.
  • Si lo pensamos, la base de datos de Adobe Commerce y la de Magento CE son casi idénticas.
  • Es la herramienta con la que tenía experiencia trabajando :)

Qué necesitas

  • Un dump de la base de datos origen: en este caso un dump de la base de datos del sitio de Adobe Commerce.
  • La <crypt_key> usada en el sitio de Adobe Commerce: esto es necesario si vas a migrar contraseñas.
  • Un entorno local con la instancia de Magento destino.
  • Un backup de la base de datos destino: vas a resetear tu entorno destino varias veces, así que mejor estar preparado.
  • Paciencia :)

Nota: Si tú (o yo) estás leyendo esto es porque estás trabajando en una tarea de migración de datos similar, así que me voy a saltar la parte de la historia y me enfocaré en los pasos que hice para migrar los datos con éxito.

Resumen

Todo el proceso se puede resumir así:

  1. Crear una base de datos vacía en el mismo servidor donde está el Magento 2 CE e importar la base de datos origen (en este caso la de Adobe Commerce).
  2. Instalar la MDMT en la instancia de Magento a la que necesitas migrar los datos.
  3. Extender la MDMT con un módulo personalizado.
  4. Agregar la configuración al config.xml.
  5. Personalizar los steps.
  6. Ejecutar el comando y corregir errores/advertencias.
  7. Ajustes posteriores a la migración en la base de datos destino.

Si te interesan los detalles, sigue leyendo :-)

Importar la base de datos origen

En lugar de trabajar con el sitio en vivo, puedes perfectamente pedir un dump reducido y anonimizado de la base de datos de la instancia origen de Adobe Commerce. Una vez que lo tengas, impórtalo en tu servidor local de MySQL/MariaDB. (El mismo servidor donde tienes la instancia de Magento destino).

Nota: Si las bases de datos origen y destino están en servidores distintos, aún puedes usar la MDMT creando un túnel SSH entre las dos.

Instalar la Data Migration Tool

Esto es bastante sencillo, solo usa composer para instalar la MDMT usando la versión de tu instancia de Magento destino:

text
composer require "magento/data-migration-tool":"2.4.3"

Extender la MDMT

La MDMT se puede personalizar de 2 maneras:

  1. Modificar cosas directamente en vendor/magento/data-migration-tool donde está instalada la data migration.
  2. Crear un módulo personalizado y extender Magento_DataMigrationTool.

Para este trabajo elegí el segundo enfoque porque me parece más limpio: permite llevar el control de los cambios en el repositorio, revertir, etc. Además, como el Magento_DataMigrationTool es un módulo de Magento, si necesitas reescribir una clase o algo así es más fácil hacerlo de esa manera.

Entonces, creé un módulo vacío y dentro de la carpeta etc creé otra llamada commerce-to-opensource, luego copié uno de los ejemplos que provee el módulo de la MDMT .

La estructura final quedó parecida a esta:

text
app/code/Vendor/DataMigrationTool

|-- etc
|   |-- commerce-to-opensource
|   |   |-- 2.3.7
|   |   |   |-- config.xml.dist
|   |   |   |-- map-tier-price.xml.dist
|   |   |   `-- map.xml.dist
|   |   |-- class-map.xml.dist
|   |   |-- customer-attribute-groups.xml.dist
|   |   |-- customer-document-groups.xml.dist
|   |   |-- deltalog.xml.dist
|   |   |-- eav-attribute-groups.xml.dist
|   |   |-- eav-document-groups.xml.dist
|   |   |-- log-document-groups.xml.dist
|   |   |-- map-customer.xml.dist
|   |   |-- map-document-groups.xml.dist
|   |   |-- map-eav.xml.dist
|   |   |-- map-log.xml.dist
|   |   |-- map-stores.xml.dist
|   |   |-- map-tier-price.xml.dist
|   |   |-- order-grids-document-groups.xml.dist
|   |   `-- settings.xml.dist
|   |-- class-map.xsd
|   |-- config.xsd
|   |-- groups.xsd
|   |-- magento_path.php
|   |-- map.xsd
|   |-- module.xml
|   `-- settings.xsd
|-- composer.json
`-- registration.php

….

Agregar la configuración

La configuración de la MDMT reside en el archivo config.xml. Copia config.xml.dist y pégalo como config.xml para conservar un backup del original.

Aquí es donde especificas:

  • Las credenciales de las bases de datos origen y destino.
  • Los steps que realizará tu proceso de migración.
  • La <crypt_key> usada para decodificar los hashes de las contraseñas.
  • Y otros ajustes como los prefijos de tablas, copia directa de tablas, etc.

Personalizar los steps

La MDMT viene con muchos steps, todos agrupados en 3 grupos distintos:

  • settings
  • data
  • delta

Aquí una pequeña explicación de lo que hace cada comando:

migrate:settings

Migra stores, website y core_config_data.

migrate:data

Migra prácticamente todos los datos excepto la configuración de la tienda como core_config_data. Este comando también crea los triggers de base de datos y el backlog necesarios para el comando migrate:delta.

migrate:delta

Migra datos incrementales. Esto es útil si por alguna razón se han creado datos nuevos (clientes, ventas, etc.) en la base de datos origen desde el momento en que hiciste la migración.

Ejecutar el comando migrate:data y corregir problemas

Normalmente deberías ejecutar migrate:settings, luego migrate:data y finalmente migrate:delta, pero para este caso específico solo necesitaba migrar Ventas y Clientes, así que los otros dos comandos no son necesarios.

bin/magento migrate:data -r app/code/Vendor/DataMigrationTool/etc/commerce-to-opensource/2.3.7/config.xml

Enlaces y recursos relacionados