Commerce Migrate
Un framework de migración de propósito general para importar información de tiendas a Drupal Commerce desde diversas plataformas de comercio electrónico.
commerce_migrate
Instalar
composer require 'drupal/commerce_migrate:^4.0'
Overview
Commerce Migrate es un framework de migración integral que extiende el módulo Migrate de Drupal para facilitar la migración desde diversas plataformas de comercio electrónico a Drupal Commerce 2. Proporciona los plugins necesarios, manejadores de fuentes, plugins de proceso y plugins de destino para migrar productos, pedidos, clientes, pagos y otros datos comerciales.
El módulo incluye submódulos para migrar desde Drupal Commerce 1.x, Ubercart (tanto Drupal 6 como 7), Magento 2, Shopify y WooCommerce. Cada submódulo proporciona plugins de fuente especializados que leen datos de la plataforma origen y plugins de proceso que transforman los datos para las entidades de Drupal Commerce 2.
Al usar la interfaz Migrate Drupal UI del core o el módulo Migrate Upgrade, las configuraciones y datos de Commerce 1.x y Ubercart se actualizan automáticamente a Commerce 2. Para fuentes basadas en CSV como Magento, Shopify y WooCommerce, el módulo proporciona migraciones de ejemplo que pueden personalizarse.
Features
- Migrar productos, variaciones de productos y tipos de productos desde plataformas de comercio electrónico heredadas
- Migrar pedidos, artículos de pedidos y ajustes de pedidos con mapeo de estados adecuado
- Migrar perfiles de clientes y direcciones de facturación/envío
- Migrar transacciones de pago y pasarelas de pago
- Migrar atributos de productos y valores de atributos
- Migrar tipos de impuestos y tarifas de envío
- Soporte para migración de base de datos a base de datos desde Commerce 1.x y Ubercart
- Soporte para migraciones basadas en CSV desde Magento 2, Shopify y WooCommerce
- Integración automática con Migrate Drupal UI de Drupal para actualizaciones sin interrupciones
- Suscriptores de eventos para manejar correctamente los rollbacks mientras se preservan las entidades relacionadas
- Plugins de proceso para convertir formatos de precios entre diferentes representaciones de moneda
- Plugins de destino para crear tipos de productos de Commerce con los campos requeridos
- Plugins de migración de campos para tipos de campo específicos de Commerce como commerce_price
Use Cases
Actualización desde Drupal 7 Commerce Kickstart
Migrar un sitio Commerce Kickstart 2 completo a Drupal Commerce 2. El submódulo commerce_migrate_commerce maneja todos los aspectos incluyendo productos, pedidos, clientes, pagos y configuración. Habilita el submódulo, configura la conexión a la base de datos de origen y usa Migrate Drupal UI o Drush para ejecutar las migraciones.
Migración de Ubercart a Drupal Commerce
Actualizar una tienda Ubercart existente (Drupal 6 o 7) a Drupal Commerce 2. Los productos que eran nodos en Ubercart se convierten en productos de Commerce apropiados con variaciones. Los pedidos, clientes y pagos se migran con mapeos de estado apropiados para el flujo de trabajo de Commerce 2.
Importación de productos desde Magento
Exportar productos y categorías desde una tienda Magento 2 como archivos CSV, luego usar el submódulo commerce_migrate_magento como plantilla para crear migraciones personalizadas. Incluye manejo para imágenes de productos, categorías y perfiles de usuario.
Migración de Shopify a Drupal Commerce
Exportar datos de productos desde Shopify como archivos CSV, luego usar las migraciones del submódulo commerce_migrate_shopify para importar productos, variaciones y términos de taxonomía a Drupal Commerce.
Importación de productos CSV personalizada
Usar el submódulo commerce_migrate_csv_example como punto de partida para crear migraciones personalizadas para importar productos desde hojas de cálculo. El ejemplo demuestra la importación de términos de taxonomía, valores de atributos, imágenes, variaciones de productos y productos con campos de párrafos.
Migraciones de productos incrementales
Para importaciones de productos continuas, usar el framework de migración con Migrate Plus y Migrate Tools para configurar migraciones incrementales que solo importan productos nuevos o modificados. Las migraciones de ejemplo CSV pueden adaptarse para este propósito.
Tips
- Usa drush migrate:import --limit=5 para probar migraciones con un pequeño número de registros antes de ejecutar importaciones completas
- Usa drush migrate:import --idlist=42 para importar registros específicos para depuración
- Ejecuta las migraciones en el orden correcto - tiendas primero, luego productos, luego pedidos. Las migration_dependencies en los archivos YAML definen estas relaciones
- Para desarrollo, mantén los rollbacks rápidos limitando el número de registros migrados. Los rollbacks de pedidos pueden ser lentos debido a los pasos adicionales para preservar los artículos de pedidos
- Las migraciones del módulo de ejemplo CSV son plantillas - cópialas a un módulo personalizado y modifícalas para tu estructura de datos específica
- Al migrar desde fuentes de base de datos, usa un archivo settings.local.php separado para definir la conexión a la base de datos de origen
- Revisa las tablas de mapa de migración (migrate_map_*) en la base de datos para depurar problemas de migración y ver qué se ha migrado
- Para fuentes CSV, exporta los datos con entrecomillado adecuado (entrecomilla todas las celdas de texto) para evitar problemas de análisis
- Usa el script scripts/cp_migrations para copiar archivos YAML de migración a config/install para usar con Migrate Plus
Technical Details
Troubleshooting 6
Asegúrate de haber creado y guardado al menos una tienda de Commerce antes de ejecutar las migraciones de pedidos. Ejecuta primero la migración de tiendas o crea una tienda manualmente.
El suscriptor de eventos commerce_migrate.migrate_product debería preservar automáticamente las variaciones. Si los problemas persisten, asegúrate de que el módulo commerce_migrate esté habilitado y sus suscriptores de eventos estén registrados.
Commerce 1.x almacena los precios en unidades menores (por ejemplo, centavos). El plugin de proceso commerce1_migrate_commerce_price debería convertirlos automáticamente. Verifica que la propiedad fraction_digits se esté estableciendo correctamente en tu plugin de origen.
La migración de Ubercart usa suscriptores de eventos para cambiar los tipos de entidad de 'node' a 'commerce_product'. Asegúrate de que el módulo commerce_migrate_ubercart esté habilitado y su suscriptor de eventos PrepareRow esté activo.
Para migraciones CSV, verifica que los archivos CSV estén ubicados en el directorio correcto (generalmente sites/default/files) y que la ruta en el YAML de migración coincida. Verifica los permisos de archivo para el acceso del servidor web.
Revisa la configuración del plugin de proceso static_map en tu YAML de migración de pedidos. Personaliza los mapeos de estado para que coincidan con tu flujo de trabajo de Commerce 2 (por ejemplo, mapea 'pending' a 'validation' en lugar de 'completed' si usas el flujo de trabajo de validación).
Security Notes 3
- Al configurar conexiones a bases de datos de origen, asegúrate de que las credenciales no se comprometan en el control de versiones
- Los archivos CSV que contienen datos de clientes deben protegerse y eliminarse después de completar la migración
- Revisa los datos migrados en busca de información sensible como detalles de pago - el módulo no migra credenciales de pago reales, solo registros de transacciones