SFDX Data Move Utility(SFDMU)を使って、データ移行してみた。

やりたいこと
Salesforce組織間でデータ移行を、Dataloaderを使用せずに行いたい。
背景
Developer Sandboxは、本番からデータがコピーされない。そのため、初期データを手動で作成する必要があり、手間がかかっている。
解決方法のポイント
- SFDX Data Move Utility(SFDMU)をインストールする。
- 設定ファイル『export.json』を作成する。
- 「sfdx sfdmu:run」コマンドを実行する。
SFDMUを利用してデータ移行を行ってみる
SFDMUをインストールする
sfdx plugins:install sfdmu
設定ファイル『export.json』を作成する
例) 取引先オブジェクトの項目「区分」=”Prospect”であるレコードと、その取引先レコードの取引先責任者レコードを移行する。
{
"objects": [
{
"query": "SELECT all, RecordTypeId FROM Account Where Type = 'Prospect'",
"operation": "Upsert",
"externalId": "Name",
"master": true,
"deleteOldData": true
},
{
"query": "SELECT all, RecordTypeId FROM Contact",
"operation": "Upsert",
"externalId": "Name",
"master": false,
"deleteOldData": true
}
]
}
項目 | 説明 |
query | 移行する対象データを、SOQL文を用いて指定する。SELECT句に all を用いると、全項目を取得可。 ただし、レコードタイプのようにマルチセレクトキーワードでは取得できない項目も存在する。 詳細:https://help.sfdmu.com/full-documentation/advanced-features/field-multiselect |
operation | 移行時の操作内容を指定する。"Insert"、"Update"、"Upsert"、"Delete"など。 |
externalId | 外部ID。一意な識別子。"Insert"と “Readonly “を除く操作において、移行元と移行先のレコードを比較するキー項目となる。 |
master | “true"は、データ移行における最上位階層のオブジェクトを意味します。queryで取得される全レコードが移行対象となります。"false"を指定すると、"true"を指定したqueryで取得されるレコードの子レコードのみを移行対象にできる。 |
deleteOldData | “true"は、移行先からQueryで取得されるレコードを削除する。データ洗い替え時に利用する。 |
移行組織の認証を行う
例)移行元(DevHub組織)と移行先(Scratch 組織)の両組織を認証する。
※スクラッチ組織やSandBox組織は、"-r"でSandboxインスタンスURLを指定する。
sfdx org login web -a DevHub
sfdx org login web -a Scratch -r https://test.salesforce.com
データ移行を実行する
例)DevHub組織からScratch組織にデータ移行を実行する。
※export.jsonファイルが存在するパスで、コマンドを実行する。
※"–sourceusername"には、username(xxx@yyyy.co.jp)もしくは alias を指定する。
sfdx sfdmu:run --sourceusername DevHub --targetusername Scratch
その他の機能のご紹介
- 移行データをマスキングする。
https://help.sfdmu.com/full-documentation/advanced-features/data-anonymization - 移行元と移行先で異なるオブジェクトに移行する。
https://help.sfdmu.com/full-documentation/advanced-features/fields-mapping - 多態性ルックアップ項目を移行する。
https://help.sfdmu.com/full-documentation/advanced-features/polymorphic-lookup-fields
まとめ
従来は、Developer Sandbox環境で開発する場合、初期データ作成に時間がかかっていました。
SFDMUプラグインを利用することで環境構築する時間を短縮でき、本題であるアプリケーション開発に時間を割くことに繋がりました。
今回紹介していない機能もまだまだ存在するため、興味がある方は実際に触ってみてはいかがでしょうか