関連するレコードの更新

関連するレコードの更新
71
関連するレコードの更新
kazunii
2024/02/27 14:01:18

はじめに


salesforceで、「大量のレコードを更新する」仕組みを、フローなどを利用して作るのは、ガバナ制限の関係もあるので、本当に苦労します。
今回は、フローで大量のレコードを更新するための、少し便利な機能をご紹介します。
(ユースケース)
  1. 営業中のお客様との契約が締結できたので、お客様獲得のために予定していたすべてのToDoを完了にする
  2. 商談が成立したら、それに紐づくすべてのToDoを完了させる
  3. 商品が販売されたら、それに紐づくすべての商談を完了させる
ちなみに、更新する件数が少ない場合は、ループを利用して同じことを実現できますが、件数が多い場合は役に立つ設定だと思います。

設定方法


レコードフロートリガーの「関連レコードを更新」を利用します。
下の図の様に、メニューからショートカットで選択する事もできますが、「レコードを更新」を選択後に「フローをトリガーした 取引先 レコードに関連するレコードを更新」を選択することもできます。

「取引先 に関連するレコード」の選択肢の、右側に「>」の付いていない項目が、取引先の子レコードになります。
表示されているapi名は、子オブジェクトの参照項目(主従関係項目)の「子リレーション名」です。
ちなみに、今回は、子レコードの更新を行いますが、親レコードの更新を行いたい場合は、「>」が付いている項目を選択します。
その後、「更新したい項目」と、「設定する値」を設定します。
「設定する値」は、決まった値だけです、各レコードごとの項目の値を基に、計算した値は設定する事はできません。
 例:
  設定できる :ToDoの「状況」を、”Completed”に設定
  設定できない:ToDoの「期日」を、各ToDoの期日から3日延長

おわりに


今回は、「すべての子レコードの更新を行う」の設定方法を説明しました。
万能な機能では無いのですが、使用できる場面はたくさんあるんじゃないかなと思います。

試しに、自分でもレコード更新のテストを行ってみたのですが、「即時実行」だと、さすがに5,000件の更新はエラー「Apex CPU time limit exceeded」になってしまいました。
ちなみに、3,000件くらいの更新は正常に動作しました。(ただ、処理が終わるまでに1分くらい時間はかかりますが。。。)
「非同期に実行」だと、更新対象が5,000件でも、問題なく更新できました。

ご活用ください。
gilde tech(for Salesforce)」に入会しませんか?
登録すると、「gilde tech」に掲載されているSalesforceのノウハウを全部閲覧できるだけでなく、自分が知っている知識を発信し、他の会員と交流することもできます。
またSalesforceの知識習得に役立つイベント情報も得ることができます。
是非ここで得た知識を業務に活かしてください!
71
コメント