2021.10.04

Heroku Connect を試す

  • このエントリーをはてなブックマークに追加
  • follow us in feedly
gettyimages (22089)

はじめに

こんにちは、佐藤です。
今回はHerokuとSalesforceの間で簡単に同期が行えるHeroku Connectをご紹介いたします。

Heroku Connectとは

Heroku ConnectはSalesforce内のデータとHeroku Postgresの間の同期をノーコードで設定できるHerokuのアドオンです。デフォルトではSaleforce⇒Herokuの同期ですが、設定によってHeroku⇒Salesforceの双方向同期を行う事も出来るようになります。

事前準備

今回は例としてSalesforceの取引先オブジェクトとの間で同期を行います。

以下が事前に準備されていることを前提とします。
・Salesforceのデベロッパー組織を取得済み
・Herokuアカウントを作成済み
・Heroku CLI, PostgreSQLがインストール済み
>heroku --version
heroku/7.59.0 win32-x64 node-v12.21.0

>psql --version
psql (PostgreSQL) 13.2
バージョン情報

Salesforce ⇒ Heroku の同期

Herokuへログインし、Add-OnsよりHeroku PostgresとHeroku Connectをプロビジョニングします。

Plan nameを選択し、Submit Order Formをクリックします。(画像はHeroku Postgresのみ)

Heroku Connectを開き、Setup Connectionをクリックします。

接続するPostgresのデータベースを選択し、スキーマ名を設定します。
一つのアプリ内で複数のHeroku Postgresを追加している場合は注意して選択しましょう。

接続するSalesforce環境とバージョンを選択し、Authorizeをクリックします。

Salesforce組織のログイン情報を入力し、Heroku Connectからのアクセスを許可します。

認証完了後Mappingタブをクリックし、Create Mappingをクリックします。

今回は取引先との同期を行うため、Accountをクリックします

Poll Frequency でSalesforceとHeroku Postgres間のポーリング頻度を設定します。
無料版であるDemo Editionでは最短10分間隔です。
Accelerate Pollingを選択した場合、Salesforceのマッピングしたオブジェクトに変更があった場合、ポーリングを開始します。

Heroku PostgresからSalesforceへの同期を行う場合は、こちらにチェックを付けます。
マッピングしたオブジェクトに外部ID項目が存在する必要があります。

続いてマッピングを行う項目を選択します。
Heroku公式によると、CreateDateとNameはマッピングする事が推奨されています。
また、インデックスを付けることも可能です。

設定が完了したらsaveをクリックします。
ここまででSalesforce内のデータがHeroku Postgresに同期が行われます。

ExplorderタブでSalesforce内の取引先が表示されているかを確認しましょう。

Heroku ⇒ Salesforce の同期

続いてHeroku CLI上からSalesforce内のデータを参照、更新してみます。

コマンドプロンプトから適当なディレクトリで以下のコマンドを実行します。
heroku pg:psql [データベース名] --app [herokuのアプリ名]
heroku pg:psql

なおデータベース名と、herokuのアプリ名はHeroku Postgresから確認できます。
スキーマ名はHeroku PostgresのDataClipから確認します。

今回は次のクエリを実行しidとnameを表示しました。

Salesforceの開発者コンソールから、取引先オブジェクトのデータと一致している事が確認できます。

今回は"sForce"取引先の名称を"terraForce"へ変更します。
以下のSQL文を実行します。
UPDATE salesforce.account SET name = 'terraForce' WHERE id=1;
update
取引先名が変更されていることが確認できます。

最後に取引名がSalesforce側でも変更されているか確認します

"sForce"という取引先名が"terrraForce"に変更されています。

このことからHeroku⇒Salesforceの同期が行われていることが検証できました。

Heroku Connectの注意点

双方向同期では、無限ループが考慮すべき事項に上がります。
Heroku Connectではテーブル変更の監視し、Salesforceに更新を送信するかどうか決定することによって、無限ループの発生を防いでいます。

またSalesforceへの書き込みがメンテナンス等で失敗した場合は、利用可能となるまで書き込みをキューに入れます。
しかし、それ以外の原因でSalesforceへの書き込みが失敗した場合は、ユーザで手を加える必要があります。Heroku Connectではコンフリクトを解消しません。
例として、Heroku → Salesforceの更新にてSalesforceで設定した入力規則に抵触する場合を考えます。
当該のレコードはHeroku側では更新されますが、Salesforce側では更新されません。
Heroku Connectの性質上Salesforce → Heroku への同期エラーは起こりにくいと考えられますが、Heroku → Salesforceへの同期エラーは入力規則等により、比較的多いと考えられるため注意が必要です。
そのため、Heroku管理カラムである_hc_lastopカラムや、管理テーブルの_trigger_logテーブルを利用し、同期エラーをチェックすると良いでしょう。

終わりに

Heroku Connectを用い、Salesforce内のデータをHeroku Postgresとの間で同期を行いました。
ノンコーディングで連携が行える便利なツールなのでぜひ試してみてください!

参考サイト
Heroku Dev Center
Trailhead :  Salesforce に統合する Heroku アプリケーションの開発
Heroku ConnectでSalesforceデータを簡単に読み取る
Heroku Tips (5) Heroku Connect
53 件
     
  • banner
  • banner

関連する記事