[Salesforce]小ネタ DeveloperのSandboxに簡単にレコードを送信するには?
Hola〜皆さんこんにちは。Salesforce システム管理者の清水です。
今日は全くの別件である検証していたら、あれもしかしてこれってSandboxで困っていたことに使えるんじゃない?と気がついたことがあったので、ブログに書きたいと思います。
SalesforceのSandboxとは?
管理者や開発者が本番環境に、追加したいロジックや項目などがある際にテストできる検証環境がSalesforceには用意されています。
そしてSandboxの中にも種類があり、Developer Sandboxだとメタデータ(Apexやフロー、プロセスビルダーなどのデータ)しか取得できないことに困っていました。
このような感じで、弊社もSalesforceに関わるメンバーが増えてきたのでDeveloperのSandboxを複数用意してメンバーに配布して検証を行ってもらっています。
DeveloperのSandboxだと、更新を行っても検証するときに必要な営業メンバーが作成した取引先やリードなどのレコードを1つもコピーしてきてくれません。こうなると結局、PartialのSandboxにしかレコードが入っていないので、実際にレコードがある状態でロジックの検証をしたい時などに1つしかないPartialのSandboxにメンバー全員がアクセスすることになってしまいます。
Partialで最初から全員がアクセスして検証すればいいのでは?
そう思う人もいるかもしれません。
ですがそれをやってしまうと、
・ある一人は画面をカスタマイズしてどう動くか検証したい
・別の一人はApexのコードを変更してどう動くか検証したい
・また別の一人は項目を複数作ってみて、営業にDEMOを見せたい
などSalesforceに関わるメンバーが増えれば増えるほど、1つのSandbox環境で全員が検証してしまうと本番環境から全然違った環境で皆が検証していくことになってしまい、本番に実際の改修コードなどを送信セットで送った際に予期せぬ結果が発生してしまいます。
仕様でできないのでコードを書いた
こちらの状況だと困るので、Salesforce社に他社事例などを聞いてみたのですが有益な情報が返ってきませんでした。
そのため弊社進地の方で、こちらのコードを用意してDeveloperのSandbox環境を更新後にレコードを入れていました。
[Salesforce] Data Migration Tool を使ってDeveloper Sandboxにデータ移行する
これでも使えていたので良かったのですが、Salesforceに携わっている全メンバーがSalesforce CLIの開発環境を持っているわけでもなく、Salesforceの画面UIから簡単に更新作業をするとかではないので、こちらの作業をできるメンバーが全員のSandoxにdumpしてレコードを入れる作業が必要でした。
Salesforce to Salesforceを使ったらできた
そんな時に別の検証作業で、Salesforce to Salesforceを利用して、PartialのSandbox - DeveloperのSandboxを接続する機会がありました。
作業手順は多数公式や他社ブログなどで載っているので割愛しますが、こちらを行ったところこのDeveloper Sandboxにレコードがない問題を最も簡単に解決できてしまうことがわかりました!
参考: Salesforce to Salesforceを使ってみよう!! | フォレストキャンパス | 株式会社システムフォレスト
2つのSandbox間で、先に接続の設定を行っておいて、Partial側にある取引先のテストレコードをこのように「接続に転送」をクリックして転送すると
このようにDeveloperのSandbox側にレコードがコピーされてきます。
あらかじめコピーしたい項目を接続設定で選んでおき、あとはビューからコピーしたいレコードにチェックをつけて接続転送するだけです。ちなみに、取引先の関連レコード(商談など)も転送時に一緒にチェックを入れておけば、
このようにリレーションを保ったままコピーされてくるので非常に便利です。
同期に関して
ちなみに一方同期にするか、双方向同期にするかサポートに確認してみたのですが、それぞれ設定で指定できるようです。
<一方同期>
- 送信元組織:公開オブジェクトのみ設定
- 送信先組織:登録オブジェクトのみ設定
※共有したレコードを、送信元組織で編集した内容は送信先組織にも同期されます。送信先組織で編集した内容は、送信元組織にて同期されません。
<双方同期>
- 送信元組織:公開・登録オブジェクトを両方設定
- 送信先組織:公開・登録オブジェクトを両方設定
※共有したレコードを、送信元組織で編集した内容は送信先組織にも同期されます。送信先組織で編集した内容は、送信元組織にも同期されます。
そのため、Developer Sandboxに本番環境のレコードを転送したいといった今回のような要件の場合、一方同期の設定を行えば、本番環境にあるレコードには影響がでないということになります。また同期する時間を確認してみたのですが、同期までの明確な時間は不明ということです。弊社の検証環境では1項目を更新すると、5分以内に送信先に反映されました。
また本番環境→Developer Sandboxに直接送信はできず、本番環境→Partial Copy →Developer Sandboxの手順を踏まないとできませんでした。本番環境と同期できるのは、受信側も本番環境が必要です。
終わりに
この内容に関して、すでに他社さんでわかっていて、この方法を利用している企業さんもあったのでは?と思ったのですが、Salesforce社の営業やサポート担当などから相談したタイミングで、あらかじめレクチャーしていただいてたら非常に助かったのになぁと思います。
弊社と同じように管理者、開発者が増えてきてテストレコードがDeveloper Sandboxになくて困っている企業さんのお役に立てば幸いです。