はじめに
顧客の個人情報含む本番のデータを Sandbox 上に構築することはシステムの評価上望ましいですが、コンプライアンスやセキュリティの観点からは好ましくありません。そのため氏名や住所などの個人情報はマスキング処理した上で Sandbox にデータ移行する必要があります。今回それを実施するために SFDX で手軽にできそうなプラグインツールがあったため試して記事にまとめました。
事前環境準備
SFDX のインストール
SFDX が必要なので公式が提供しているインストーラなどを使って環境を構築します。
プラグインのインストール
SFDMU (SFDX Data Move Utility) というプラグインツールを使います。インストールは sfdx コマンドを叩くだけです。
sfdx plugins:install sfdmu
SFDX の認証
SFDX でアプリケーションの認証を通していない場合下記コマンドを叩いてログインしましょう。aオプションの値はエイリアスなので任意の値に変えても問題ないです。(記事中は以下のエイリアス前提で進めます)
sfdx auth:web:login -a production # 本番環境へのログイン
sfdx auth:web:login -a sandbox # Sandbox 環境へのログイン
データ移行のやり方
設定ファイル作成
最初にデータ移行したいオブジェクトの設定ファイルを下記のように作成します。以下の例だと Name のみを取得し連携するので、他に必須項目がある場合は query
で SELECT
する項目を増やす必要があります。
{
"objects": [
{
"query": "SELECT Id, Name FROM Account",
"operation": "Insert",
"externalId": "Name",
"mockFields": [
{
"name": "Name",
"pattern": "c_seq_number('***', 0, 1)"
}
],
"updateWithMockData": true
}
]
}
各キーの意味は以下の通りです。
- query: 連携元で抽出するためのSOQL
- operation: 連携先で実行する操作。Insert, Update, Upsertなど
- mockFields: モック値を入れるフィールドを定義
- mockFields.name: モック値を入れるフィールド名(=フィールドのAPI参照名)
- mockFields.pattern: 代わりに入れるモック値
- c_seq_number関数: SFMDUで定義されている連番を入れる関数。c_seq_number(値のprefix, start, step)
データ移行
export.json を作成したディレクトリ下で下記コマンドを実行すると、 Sandbox 環境へデータ連携されます。
sfdx sfdmu:run --sourceusername production --targetusername sandbox
データ移行例
連携元

連携先

参考
部分的なマスキングなどもできるようなので、もっと細かくやりたい方は本家のヘルプを参照されたし