こんにちは。
Heroku & Salesforce でプロダクト、サービス開発をする仕事をしております、白石です。
今回はHeroku Advent Calendar 2019 の 16日目の記事ということで
Heroku Postgresを複数のSalesforce組織とコネクトする方法についてご紹介したいと思います。
はじめに
Heroku Postgresと、Salesforce組織のデータを双方向に同期・共有するためのサービスとして「Heroku Connect」というアドオンがあります。
これを活用すると、開発をしなくても、Postgresデータベースのデータと、Salesforceデータベースの標準オブジェクト・カスタムオブジェクトデータを投稿することが可能です。
HerokuとSalesforceでデータ連携をしたいという要件・ニーズがある場合は、ほぼ間違いなく必要になるサービスなので、初めて名前を聞いたような方は是非下記のリンクにて内容を確認いただければと思います。
これまでは、Heroku Postgresに対して、Salesforce組織のデータベースを1つ割り当てて連携するという運用で事足りたのですが、とあるプロジェクトで下記のようにHeroku Postgresと複数のSalesforce組織をコネクトする必要がありました。
今回は具体的なコネクト方法をお伝えするので、もしご興味ある方は以下を参考に試してみてもらえると幸いです。
設定方法
Heroku Postgresと、複数のSalesforce組織をコネクトする設定は簡単です。
- HerokuダッシュボードのResourcesタブを開く
- Add-onsの検索フィールドに「Heroku Connect」と入力する
- ポップアップでProvionを選択する
- 連携が必要なSalesforce組織分、上記1〜3を繰り返し行う
私自身、勝手な先入観で 1つのアプリ内に同一のアドオンを複数設定できない
と思い込んでいたのですが、@sho7650 さんに問い合わせしたところ、何個でも追加できるよということを教えていただき、あっさり設定することができました。
気をつけたいポイント
1. 同じスキーマ名を命名することや、同じスキーマに複数のSalesforce組織のオブジェクトをコネクトすることはできない
「Heroku Connect」ダッシュボードの画面で、Salesforce組織との連携初期設定する際、すでに存在しているスキーマと同じ名称にすると、下記のようなエラーが発生して、設定ができないことがわかります。
また、色々と試したのですが、同じスキーマ内に複数のSalesforce組織のオブジェクト情報を連携することはできませんでした。
複数のSalesforceオブジェクトをコネクトする際は、必ずスキーマをわけて用意・連携する必要があります。
スキーマが分かれるため、ひと目みてどのSalesforce組織と連携しているスキーマかが判別しやすいように命名することをオススメします。
2. 「Heroku Connect」内で設定したMappingsの内容は、別の「Heroku Connect」へインポートできる
Heroku Connectを用いて複数のSalesforce組織と連携する際に、すでに設定済みのMapping(HerokuとSalesforceオブジェクトとの詳細な連携設定)が存在をしていて、全く同じ設定内容で問題ないということであれば、Mapping設定をエクスポート・インポートするのが最も効率よく設定ができます。
ダッシュボード画面の Settings > Import/Export Configuration
にてjson形式の設定ファイルをエクスポート・インポートができるので覚えておくと良いと思います。
このテクニックは、STG環境で設定したHeroku Connect設定を、本番環境に移行する際にも活用することができます。
まとめ
いかがだったでしょうか。
プロジェクトの特性上、どうしてもHeroku Postgresと複数のSalesforceをコネクトする必要がある場合は、是非本記事を参考に設定をしていただければと思います。
Herokuアプリから該当のスキーマを呼び出すため、Heroku環境変数にスキーマ名を登録しておいたり、アプリのサブドメインをスキーマ名とあわせたりして、どのアプリからどのスキーマを使用するかという設計・開発が必要になります。
このあたりの設計・開発の工夫やポイントについては次回また記事にできればと考えております。
それでは、良いお年を。