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.
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í:
- 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).
- Instalar la MDMT en la instancia de Magento a la que necesitas migrar los datos.
- Extender la MDMT con un módulo personalizado.
- Agregar la configuración al
config.xml. - Personalizar los steps.
- Ejecutar el comando y corregir errores/advertencias.
- 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:
composer require "magento/data-migration-tool":"2.4.3"Extender la MDMT
La MDMT se puede personalizar de 2 maneras:
- Modificar cosas directamente en
vendor/magento/data-migration-tooldonde está instalada la data migration. - 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:
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
- The PostProcessing step
- Sales Order Grid is empty after data migration process
- Delta Delivering Failed - Deltalog for customer_entity, is not installed in Magento 2
- Magento 2: How can we migration only customers and orders data using Data Migration tool?
- Magento 2.3.1 data migration transform field values
- Install the Data Migration Tool
- How data migration works
- Configure the Data Migration Tool