リードが作成されるとリード更新で起動するフローも動くことは頭の片隅に入れておこう

リードが作成されるとリード更新で起動するフローも動くことは頭の片隅に入れておこう

対処法編も書きたいと思ってはいます。
リードが作成されるとリード更新で起動するフローも動くことは頭の片隅に入れておこう
40
リードが作成されるとリード更新で起動するフローも動くことは頭の片隅に入れておこう
Admin
2024/12/04 11:20:01
弊社のメンバーに教えていただき、「リードとの付き合いは長かったつもりなのにまだまだ全然知らないこともあるもんだなぁ」と勉強になったので、皆様にもすぐさま共有。
リードまわりを作りこむ機会があれば遭遇する機会もあるかもしれません🤗

要点だけ先にお伝えしますと、

リードのレコードトリガーフローで「作成または更新された」+「レコードを更新し、条件の要件に一致するたび」を組みあわせて設定すると、処理が 2回実行されることもあるよ


です。

確認できた動作について書いていきますが、その前にヘルプを読んでみましょう。


Lightning Experienceでのリード作成時の仕様

◇ Salesforce ヘルプ >ドキュメント > Sales Cloud の基本 > リードを作成するためのガイドライン

あらためてヘルプページを確認したところ、こんな記載がありました。

・Lightning Experience でリードを作成すると、リードは次のようになります。
 ・[既読] とマークされ、[未読のリード] リストビューには表示されません。Salesforce Classic では、[保存 & 新規] をクリックした場合、リードは未読とマークされます。
 ・自動的に更新され、リードの更新時に実行されるように設定されたフローと Apex トリガーが発生する。

ここで重要なのは 2つ目です。
「Lightning Experienceでリードを作成すると、自動的に更新され、リードの更新時に実行されるよう設定されたフローとApexトリガーが発生する」とのこと。
そういえばそうだったような……どこかで聞いたような気がするのですが、リードとのお付き合いが少なくなったため、忘れてしまっていたのかもしれません。


リードを作成するとフローに起こること:「作成または更新された」+「レコードを更新し、条件の要件に一致するたび」

昔書いた「プロセスビルダーからの卒業:リードを親とした参照関係の子レコードを、取引開始後にも紐づける」のように、参照関係でリードを親とするアンケート履歴という子オブジェクトを作成します。

 リード(親)ーアンケート履歴(子)※カスタムオブジェクト

次の内容で、子レコードの作成と変更通知メールを送信するフローを作成しました。
(急ぎで作ったので気楽な項目になっていてすみません)
------------------------------------------------------------
・項目「状況」の値が「Working - Contacted」であり、項目「好きな色」の値が入力されたときは、アンケート履歴の子レコードを作成する。
・項目「好きな色」の値が変更された場合、メールを送信して通知し、子レコードを作成する。
 ↓
・メールは「好きな色」の値の変更のたびに(重要な項目と仮定して)送信されるようにする。
・子レコードは値が変更されるたびに追加し、履歴として確認できるようにする。
------------------------------------------------------------

テストで作成したフローです。





























開始の設定内容です。ポイントはトリガーを設定更新されたレコードでフローを実行するタイミングです。

トリガーを設定
レコードが作成または更新された

エントリ条件を設定
条件ロジック:1 AND ( 2 OR 3)
1.Status(状況)|次の文字列と一致する|Working - Contacted
2.FavoriteColor__c(好きな色)|変更済み|True
3.FavoriteColor__c(好きな色)|null|False

更新されたレコードでフローを実行するタイミング
レコードを更新し、条件の要件に一致するたび
※エントリ条件の設定の2.で「変更済み」の演算子を使用したため、自動的にこちらの設定になります。

フローを最適化
アクションと関連レコード

今回重要なのは最初の開始の部分なので、他の要素については割愛します。どちらも変わった設定はしていません。


リードを作成:レコードは 2件作成、メールは1回送信

フローを有効化し、リードを作成してみます。


作成直後の画面を見ると、子レコードが 2件作成されています。

2件の作成日時は同じです。

メールを1回、1通のみ受信しました。


意図していた動作(レコード1件作成)にはならず、更新のパスを通っていると推察されます。


リードを更新:レコードは 1件作成、メールは1回送信

今度は更新してみます。
値を追加して保存します。

レコードが1件作成されています。


メールは1回、1通のみ受信しました。

更新の場合は、意図した動作になっています。


トリガーを「更新されたとき」に設定した場合

今度は、トリガーを「レコードが更新された」に変更してみます。
先ほどとおなじフローで開始の↓のみ変更します。


レコード作成時

レコードを作成すると、子レコードは1件作成されました。

メールは1回、1通のみ受信しました。


レコード更新時
項目の値を変更して保存すると、レコードが1件作成されました。

メールは1回、1通のみ受信しました。




考察、対処法について

冒頭に確認した、ヘルプにも記載があった「Lightning Experienceでリードを作成すると、自動的に更新され、リードの更新時に実行されるよう設定されたフローとApexトリガーが発生する」によって、リード作成後に自動的に更新が行われ、「作成または更新された」+「レコードを更新し、条件の要件に一致するたび」の条件の場合、リード作成時は作成と更新両方の分岐の処理がされるのだと思われます。

対処法について色々試作してみました。重複を削除するか作らせないようにするかのいずれかなのですが、レコード作成要素で一致レコードを確認しメールテンプレートに工夫を凝らしたらよさそうなものも、重複の確認に不安が残ることもあり、ご紹介するのをためらっております。検証を進めて問題がなさそうであればあらためて記事にしてご紹介します。


リード関連の記事

見込み客の管理 ①リードとは(会員限定記事)


フローのトリガー、実行タイミング関連の記事

スケジュール済みパスに潜む罠
フローを食わず嫌いしている人へ

「レコードを更新し、条件の要件に一致するたび」で設定されたフロー
ワークフローからの卒業:ロングテキストエリア入力有無をフローで確認 値の削除にも対応編
フローのロックアクションで商談をロック/ロック解除追加編
レコードの所有者や特定ユーザだけカスタム項目を表示、更新させる

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