Commerce Migrate
様々なeコマースプラットフォームからDrupal Commerceにストア情報を移行するための汎用マイグレーションフレームワークです。
commerce_migrate
インストール
composer require 'drupal/commerce_migrate:^4.0'
概要
Commerce Migrateは、DrupalのMigrateモジュールを拡張し、様々なeコマースプラットフォームからDrupal Commerce 2への移行を容易にする包括的なマイグレーションフレームワークです。商品、注文、顧客、支払い、その他のコマースデータを移行するために必要なプラグイン、ソースハンドラ、プロセスプラグイン、デスティネーションプラグインを提供します。
このモジュールには、Drupal Commerce 1.x、Ubercart(Drupal 6と7の両方)、Magento 2、Shopify、WooCommerceからの移行用サブモジュールが含まれています。各サブモジュールは、ソースプラットフォームからデータを読み取る専用のソースプラグインと、Drupal Commerce 2エンティティ用にデータを変換するプロセスプラグインを提供します。
コアのMigrate Drupal UIインターフェースまたはMigrate Upgradeモジュールを使用する場合、Commerce 1.xおよびUbercartの設定とデータは自動的にCommerce 2にアップグレードされます。Magento、Shopify、WooCommerceなどのCSVベースのソースについては、カスタマイズ可能なサンプルマイグレーションが提供されています。
Features
- レガシーeコマースプラットフォームから商品、商品バリエーション、商品タイプを移行
- 適切なステートマッピングで注文、注文アイテム、注文調整を移行
- 顧客プロファイルと請求先/配送先住所を移行
- 支払いトランザクションと支払いゲートウェイを移行
- 商品属性と属性値を移行
- 税タイプと配送料金を移行
- Commerce 1.xおよびUbercartからのデータベース間移行をサポート
- Magento 2、Shopify、WooCommerceからのCSVベースの移行をサポート
- シームレスなアップグレードのためのDrupalのMigrate Drupal UIとの自動統合
- 関連エンティティを保持しながらロールバックを適切に処理するイベントサブスクライバ
- 異なる通貨表現間で価格形式を変換するプロセスプラグイン
- 必須フィールドを含むCommerce商品タイプを作成するデスティネーションプラグイン
- commerce_priceなどのCommerce固有のフィールドタイプ用のフィールドマイグレーションプラグイン
Use Cases
Drupal 7 Commerce Kickstartからのアップグレード
完全なCommerce Kickstart 2サイトをDrupal Commerce 2に移行します。commerce_migrate_commerceサブモジュールが商品、注文、顧客、支払い、設定を含むすべての側面を処理します。サブモジュールを有効にし、ソースデータベース接続を設定し、Migrate Drupal UIまたはDrushを使用してマイグレーションを実行します。
UbercartからDrupal Commerceへの移行
既存のUbercartストア(Drupal 6または7)をDrupal Commerce 2にアップグレードします。Ubercartでノードだった商品は、バリエーションを持つ適切なCommerce商品になります。注文、顧客、支払いはCommerce 2のワークフローに適したステートマッピングで移行されます。
Magentoからの商品インポート
Magento 2ストアから商品とカテゴリをCSVファイルとしてエクスポートし、commerce_migrate_magentoサブモジュールをテンプレートとして使用してカスタムマイグレーションを作成します。商品画像、カテゴリ、ユーザープロファイルの処理が含まれます。
ShopifyからDrupal Commerceへの移行
ShopifyからCSVファイルとして商品データをエクスポートし、commerce_migrate_shopifyサブモジュールのマイグレーションを使用して商品、バリエーション、タクソノミータームをDrupal Commerceにインポートします。
カスタムCSV商品インポート
commerce_migrate_csv_exampleサブモジュールを出発点として使用し、スプレッドシートから商品をインポートするためのカスタムマイグレーションを作成します。このサンプルは、タクソノミーターム、属性値、画像、商品バリエーション、Paragraphsフィールドを持つ商品のインポートを示しています。
増分商品マイグレーション
継続的な商品インポートには、Migrate PlusおよびMigrate Toolsとともにマイグレーションフレームワークを使用して、新規または変更された商品のみをインポートする増分マイグレーションを設定します。CSVサンプルマイグレーションはこの目的に適応できます。
Tips
- drush migrate:import --limit=5を使用して、フルインポートを実行する前に少数のレコードでマイグレーションをテストする
- drush migrate:import --idlist=42を使用して、デバッグ用に特定のレコードをインポートする
- 正しい順序でマイグレーションを実行する - 最初にストア、次に商品、その後注文。YAMLファイルのmigration_dependenciesがこれらの関係を定義している
- 開発時は、移行するレコード数を制限してロールバックを高速に保つ。注文のロールバックは注文アイテムを保持するための追加ステップのため遅くなる可能性がある
- CSV exampleモジュールのマイグレーションはテンプレート - カスタムモジュールにコピーして、特定のデータ構造に合わせて変更する
- データベースソースから移行する場合、ソースデータベース接続を定義するために別のsettings.local.phpファイルを使用する
- データベースのマイグレーションマップテーブル(migrate_map_*)を確認して、マイグレーションの問題をデバッグし、何が移行されたかを確認する
- CSVソースでは、パースの問題を避けるために適切な引用符付きでデータをエクスポートする(すべてのテキストセルを引用符で囲む)
- scripts/cp_migrationsスクリプトを使用して、マイグレーションYAMLファイルをconfig/installにコピーし、Migrate Plusで使用する
Technical Details
Troubleshooting 6
注文マイグレーションを実行する前に、少なくとも1つのCommerceストアを作成して保存していることを確認してください。最初にストアマイグレーションを実行するか、手動でストアを作成してください。
commerce_migrate.migrate_productイベントサブスクライバが自動的にバリエーションを保持するはずです。問題が続く場合は、commerce_migrateモジュールが有効で、イベントサブスクライバが登録されていることを確認してください。
Commerce 1.xは価格を最小単位(例:セント)で保存します。commerce1_migrate_commerce_priceプロセスプラグインがこれらを自動的に変換するはずです。ソースプラグインでfraction_digitsプロパティが正しく設定されていることを確認してください。
Ubercartマイグレーションはイベントサブスクライバを使用してエンティティタイプを「node」から「commerce_product」に変更します。commerce_migrate_ubercartモジュールが有効で、PrepareRowイベントサブスクライバがアクティブであることを確認してください。
CSVマイグレーションでは、CSVファイルが正しいディレクトリ(通常はsites/default/files)に配置され、マイグレーションYAMLのパスが一致していることを確認してください。Webサーバーアクセスのためのファイルパーミッションを確認してください。
注文マイグレーションYAMLのstatic_mapプロセスプラグイン設定を確認してください。Commerce 2のワークフローに合わせてステートマッピングをカスタマイズしてください(例:バリデーションワークフローを使用する場合は「pending」を「completed」ではなく「validation」にマッピング)。
Security Notes 3
- ソースデータベース接続を設定する際、資格情報がバージョン管理にコミットされないようにする
- 顧客データを含むCSVファイルは保護し、マイグレーション完了後に削除する
- 支払い詳細などの機密情報について移行されたデータを確認する - モジュールは実際の支払い資格情報ではなく、トランザクションレコードのみを移行する