migrate/MAGENTO_MIGRATION_README.md

4.2 KiB

Magento Category Migration Tool

This Laravel application provides a web-based interface to migrate categories from Magento 1 to Magento 2 with multi-store support.

Features

  • Multi-store category migration
  • Web-based user interface
  • Real-time migration progress
  • Database connection testing
  • Category preview before migration
  • Detailed migration logs

Setup

1. Database Configuration

Add the following environment variables to your .env file:

# Magento 1 Database
MAGENTO1_DB_HOST=127.0.0.1
MAGENTO1_DB_PORT=3306
MAGENTO1_DB_DATABASE=magento1
MAGENTO1_DB_USERNAME=root
MAGENTO1_DB_PASSWORD=your_password
MAGENTO1_DB_PREFIX=

# Magento 2 Database
MAGENTO2_DB_HOST=127.0.0.1
MAGENTO2_DB_PORT=3306
MAGENTO2_DB_DATABASE=magento2
MAGENTO2_DB_USERNAME=root
MAGENTO2_DB_PASSWORD=your_password
MAGENTO2_DB_PREFIX=

2. Access the Migration Interface

Once your Laravel application is running, navigate to:

http://your-domain/migration

Or if using DDEV:

https://migrate.ddev.site/migration

Usage

1. Test Database Connections

Click the "Test Connections" button to verify that both Magento 1 and Magento 2 databases are accessible.

2. Map Stores

For each Magento 1 store, select the corresponding Magento 2 store from the dropdown menu. This mapping determines which store view the category attributes will be migrated to.

3. Preview Categories (Optional)

Click "Preview Categories" to see a list of categories that will be migrated from Magento 1.

4. Start Migration

Click "Start Migration" to begin the migration process. The tool will:

  • Migrate category structure (parent-child relationships)
  • Migrate category attributes (name, URL key, is_active) for each mapped store
  • Preserve category hierarchy and positions
  • Generate detailed migration logs

How It Works

Category Migration Process

  1. Category Structure: The tool reads all categories from Magento 1 and builds a tree structure
  2. Level-by-Level Migration: Categories are migrated level by level, ensuring parent categories exist before child categories
  3. Attribute Migration: For each store mapping, category attributes (name, URL key, is_active) are migrated to the corresponding Magento 2 store view
  4. Path Building: Category paths are automatically built to maintain the correct hierarchy

Database Tables Used

Magento 1:

  • catalog_category_entity - Category entities
  • catalog_category_entity_varchar - Category text attributes
  • catalog_category_entity_int - Category integer attributes
  • core_store - Store information
  • eav_attribute - Attribute definitions
  • eav_entity_type - Entity type definitions

Magento 2:

  • catalog_category_entity - Category entities
  • catalog_category_entity_varchar - Category text attributes
  • catalog_category_entity_int - Category integer attributes
  • store - Store information
  • eav_attribute - Attribute definitions
  • eav_entity_type - Entity type definitions

Important Notes

⚠️ Backup First: Always backup your Magento 2 database before running the migration.

⚠️ Test Environment: It's recommended to test the migration on a development/staging environment first.

⚠️ Store Mapping: Ensure that store mappings are correct. Incorrect mappings may result in categories being assigned to the wrong store views.

⚠️ Root Category: The tool assumes Magento 2's root category ID is 2 (default). If your setup uses a different root category ID, you may need to adjust the code.

Troubleshooting

Connection Errors

If you see connection errors:

  1. Verify database credentials in .env
  2. Ensure both databases are accessible from your Laravel application
  3. Check database table prefixes if your Magento installations use them
  4. Verify network connectivity and firewall settings

Migration Errors

If migration fails:

  1. Check the migration logs in the web interface
  2. Review Laravel logs: storage/logs/laravel.log
  3. Ensure Magento 2 database has proper permissions
  4. Verify that required Magento 2 tables exist

Support

For issues or questions, please check:

  • Laravel logs: storage/logs/laravel.log
  • Migration logs displayed in the web interface
  • Database connection status in the web interface