LoginSignup
8
8

More than 1 year has passed since last update.

Salesforceレコードデータをパッケージ化して任意の組織へロードする方法

Last updated at Posted at 2021-08-20

概要

Salesforceで構築したシステムのテスト環境を用意する際、複数組織に渡って統一されたデータ環境を準備するのは困難です。Sandbox組織でも Full / Partial Copyができない環境のことも多く、また組織コピーには時間がかかり、回数にも制限があります。かといってデータローダーでのインポートは手作業が多く、特に参照関係をまたがったデータのローディングは熟練者でもなかなか至難の業です。

一方、Salesforceではパッケージという仕組みで、カスタムオブジェクトやカスタム項目などのメタデータ定義をまとめ、さらにそのパッケージをアップロードして配布用のURLを作成し、他組織に配布することができます。

ここではその仕組を利用して、ある組織で作成したレコードデータをパッケージ化し、そのパッケージをインストールすることで、誰でもSalesforceデータの初期ロード(移入)とセットアップが容易にできるようにします。

活用シーン

  • テストデータの配布
  • デモデータの配布
  • チュートリアルコンテンツの配布
  • 本番環境から(Developer) Sandbox組織へのデータ移行

事前セットアップ

レコードデータをバンドルしたパッケージを作成するには、Salesforce CLIおよびプラグインを利用します。
これはパッケージの作成者のみが必要なものであり、作成されたパッケージをインストールしてデータをロードするユーザには必要ありません(Salesforceの管理者アカウントとWebブラウザのみでOK)。

Salesforce CLIのインストール

sfdx-migration-automatic プラグインのインストール

$ sfdx plugins:install sfdx-migration-automatic

Salesforce CLIからSalesforce組織へのログイン

$ sfdx auth:web:login

ブラウザ画面が立ち上がるので、デモデータを作成したSalesforce組織の管理者ユーザでログインしておきます。

パッケージの作成

CSVデータのエクスポート

(事前にSalesforce上で対象となるレコードがオブジェクトに保存されている前提)
Salesforce CLIから以下のコマンドを実行し、オブジェクトに含まれるレコードデータを全部CSVファイルとして排出します。

$ sfdx automig:dump \
   --objects CustomObj01__c,CustomObj02__c \
   --outputdir dump \
   --targetusername {Salesforce組織ユーザ名} 

--objects 以下にデータをCSVファイルとしてエクスポートしたいオブジェクトのAPI参照名をカンマ区切りで列挙します。--outputdir にCSVの排出先のディレクトリ名を指定します。

エクスポート対象のデータに他オブジェクトのレコードへの参照が含まれている場合、以下のようにオブジェクト名の後に :related と付与することで、参照しているレコードのみをエクスポートします。

$ sfdx automig:dump \
   --objects CustomObj01__c,CustomObj02__c,Account:related,Contact:related \
   --outputdir dump \
   --targetusername {Salesforce組織ユーザ名} 

コマンド実行後、dump ディレクトリ以下にCSVファイルが生成されていることを確認します。

CSVデータをバンドル化してパッケージを作成

以下のコマンドを実行して、CSVデータをパッケージにバンドルして追加します。

$ sfdx automig:package \
   --inputdir dump \
   --packagename {パッケージ名} \
   --targetusername {Salesforce組織ユーザ名} 

--packagename オプションで新規作成するパッケージの名前を指定します。既存のパッケージ名を指定した場合はそのパッケージにバンドルされたCSVデータがコンポーネントとして追加されます。

パッケージ作成に成功するとパッケージIDがコンソール表示されます。

$ sfdx automig:package --inputdir dump --packagename="デモ用パッケージ" --targetusername=admin@example.com
Creating Migration App Package... done

Status: Succeeded
Success: true
Done: true
Number Component Errors: 0
Number Components Deployed: 3
Number Components Total: 3
Number Test Errors: 0
Number Tests Completed: 0
Number Tests Total: 0

Deployed Package ID: 0332J000000DSeBQAW

Salesforce組織の 設定 > アプリケーション > パッケージ > パッケージマネージャ から該当のパッケージ名を検索し、詳細画面に以下のようにコンポーネントが含まれていることを確かめます。

image.png

パッケージのアップロード

パッケージの詳細画面から、「アップロード」ボタンをクリック。

image.png

パッケージ名、パッケージバージョンを適当に入力し、「アップロード」を実行。

image.png

しばらくするとインストール用URLが表示されます。
このインストールURLを利用して、他の組織に対しても簡単にデモデータを配布可能となります。

image.png

パッケージのインストール

先のステップで得られたインストールURLにアクセスし、デモデータをインポートしたいSalesforce組織に管理者アカウントでログインします。
Sandbox組織やScratch組織の場合、URL中の login.salesforce.com を test.salesforce.com に置き換えてアクセスする必要があります。

パッケージ詳細画面が現れたらそのまま「インストール」を実行

image.png

インストール完了したら、アプリケーションランチャーから「Migration Commander」タブを検索し、選択

image.png

タブの画面内にパッケージされたCSVデータのリストが表示されます。

image.png

データのロード

Migration Commander内の Load Data ボタンをクリックすると、ダイアログが表示され、パッケージされているCSVデータのローディングが開始されます。

image.png

ロード完了後、エラーなどがある場合は Failuresタブ内に情報が表示されます。

image.png

実際にデータがロードされたかどうかを確かめます。ちゃんと元々のSalesforce組織での参照関係を維持した状態でデータの取り込みが行われています。

image.png

データロードが完了したら、このパッケージは用済みです。アンインストールして構いません。
設定 > アプリケーション > パッケージ > インストール済みパッケージからアンインストール可能です。

image.png

なお Migration Commander 画面で表示されるテーブル内の Num of Existing Records 列には、現在のSalesforce組織内で格納されているレコードの総数が表示されます。この数字の横にあるDeleteリンクを押すと、その組織にあるオブジェクト内のレコードデータを全消去します。データをかんたんにクリーンにすることができますが、組織環境によっては危険な行為になりうるので、実行する際には細心の注意をもって実行してください。

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8