Salesforceレコードデータをパッケージ化して任意の組織へロードする方法
概要
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=[email protected]
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組織の 設定 > アプリケーション > パッケージ > パッケージマネージャ から該当のパッケージ名を検索し、詳細画面に以下のようにコンポーネントが含まれていることを確かめます。
パッケージのアップロード
パッケージの詳細画面から、「アップロード」ボタンをクリック。
パッケージ名、パッケージバージョンを適当に入力し、「アップロード」を実行。
しばらくするとインストール用URLが表示されます。
このインストールURLを利用して、他の組織に対しても簡単にデモデータを配布可能となります。
パッケージのインストール
先のステップで得られたインストールURLにアクセスし、デモデータをインポートしたいSalesforce組織に管理者アカウントでログインします。
Sandbox組織やScratch組織の場合、URL中の login.salesforce.com を test.salesforce.com に置き換えてアクセスする必要があります。
パッケージ詳細画面が現れたらそのまま「インストール」を実行
インストール完了したら、アプリケーションランチャーから「Migration Commander」タブを検索し、選択
タブの画面内にパッケージされたCSVデータのリストが表示されます。
データのロード
Migration Commander内の Load Data ボタンをクリックすると、ダイアログが表示され、パッケージされているCSVデータのローディングが開始されます。
ロード完了後、エラーなどがある場合は Failuresタブ内に情報が表示されます。
実際にデータがロードされたかどうかを確かめます。ちゃんと元々のSalesforce組織での参照関係を維持した状態でデータの取り込みが行われています。
データロードが完了したら、このパッケージは用済みです。アンインストールして構いません。
設定 > アプリケーション > パッケージ > インストール済みパッケージからアンインストール可能です。
なお Migration Commander 画面で表示されるテーブル内の Num of Existing Records
列には、現在のSalesforce組織内で格納されているレコードの総数が表示されます。この数字の横にあるDeleteリンクを押すと、その組織にあるオブジェクト内のレコードデータを全消去します。データをかんたんにクリーンにすることができますが、組織環境によっては危険な行為になりうるので、実行する際には細心の注意をもって実行してください。
Author And Source
この問題について(Salesforceレコードデータをパッケージ化して任意の組織へロードする方法), 我々は、より多くの情報をここで見つけました https://qiita.com/stomita/items/9a1d1396f0801acc5e6e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .