見出し画像

【Salesforce】Heroku Connectを使用したService Cloudでの承認フローベストプラクティス



はじめに

はじめまして、CREFILでコンサルタントをしている飯塚です。
今回は、私が担ったService Cloud導入案件でお客様の要件を実現するのに苦労した「承認フローを使用したオブジェクトを他システムへの連携」に関して、当時考えた案と採用案をご紹介してきます。

私が苦労していたときには、参考となる情報がなかったため
「Salesforceの承認対象オブジェクトを他システムへ連携する」といった要件を検討している人が『実装方針の参考』『実装イメージが持てる』ようになってもらえたら幸いです。


実際の案件の要件とは

Service CloudでECサイトの商品管理を行う案件でした。

前提
・データ連携はHeroku Connectを使用
Heroku Connect公式リファレンス
・マスタ情報はHeroku Connectで数分単位で、SvC⇒統合DBへ同期
・連携されたデータはCommerce Cloudで表示
・Service Cloudの標準機能である「承認プロセス」を実装
・マスタ情報と実績データの紐付け担保が必要

要件の流れ

画像1

①担当者が商品登録を行い、承認申請
②上長が商品登録が正しい内容か確認し、申請を承認
③承認された情報だけがHeroku Connectを介して顧客の画面(Commerce Cloud)へ表示

要件のポイント
・承認申請にて承認された情報だけを連携する。
・単純に、Salesforce標準の承認プロセスで実装するとService Cloudで申請中の情報も連携されてしまう。
・マスタ情報と紐づく実績データを保持

実際に提案した3案紹介

3案ほど検討して、案1・案2を不採用とし、案3を実際には採用しました。
実装方針を検討する上で、参考になるよう不採用案も含めて紹介いたします。

■案1(不採用)
既存レコードの変更は行わず、変更時はService Cloud[コピー]機能を用いてレコードの削除/追加で更新を行う。

画像2

懸念点
①マスタ情報と実績データの紐付けを実現させるためには、「マスタレコードを削除しない(=Heroku Connectレコード増)」
または
②実績データとマスタの紐づけを担保するためには、実績データのmasterIDをマスタデータと紐づくように更新

■案2(不採用)
承認対象カラムを[変更前][変更後]をそれぞれ保持する。

画像3

懸念点
①修正の可能性がある項目すべてを2重で項目保持が必要なため、必要情報の確認がしづらくなる。
②オブジェクトの項目数が過度に多くなると、パフォーマンス低下を招く恐れがある。(関連リファレンス
③承認プロセスと項目更新の実装が複雑。

■案3

画像4

[承認申請オブジェクト]と[マスタオブジェクト]の2種オブジェクトを保持する

採用案の詳細
[承認申請オブジェクト]では、承認プロセスを実施し、[承認申請オブジェクト]で「承認済み」となったレコードのみを自動で[マスタオブジェクト]に反映。
この時「マスタオブジェクト」へ反映させる方法は、フローまたはApexにて可能。
「マスタオブジェクト」のみHeroku ConnectでCommerce Cloudへ連携することで、承認済みのデータのみを連携可能にした。
※フローやApexにて「マスタオブジェクト」へデータ反映させる方法に関しては別記事にて今後、紹介したいと思います。

さいごに

Salesforceでは承認中のデータも保存した瞬間にデータ自体が上書きされてしまうため、承認有無に関わらずデータ連携されてしまうところ。加えて、登録したマスタデータに対する履歴なども管理していたため、実績データとの紐付けを担保しなければならない点が考慮しなければならないポイントを多くさせ頭を悩ませた。
私と同様の案件をこれから遂行していく方、既に要件が決まっていて実現の検証をする方への参考になれば幸いです!





この記事が参加している募集