Mark Hammer's Blog

SalesforceやTrailheadに関する情報を投稿しているブログです。

プロセスビルダーとフローの違い:個人取引先での取引先名の扱い

はじめに

取引先レコードの取引先名(Name)は、通常だと「取引先名」項目の値が設定されますが、個人取引先レコードの場合は取引先責任者の名前(Name)と同様、「(姓)+(半角スペース)+(名)」が設定されます。

法人取引先と個人取引先の取引先名

ある日「プロセスビルダーで取引先名を変更すればアクションが動作するよう設定したものが、個人取引先レコードで姓or名を変更しても動作しない」という事象が発生しました。
「個人取引先は姓か名を変えれば取引先名も当然変わるからプロセスも動作するだろう」と考えていたのですが、確認したところ確かにそのような動作でした。
また「じゃあフローだとどうなるんだろう」と試したところその後のアクションが動作するという、プロセスビルダーとは異なる動作になりました。
そこで条件を単純化しても同じ動作になるか確認してみました。

確認できた動作

実際に確認したところ、個人取引先においては以下の動作でした。

  • プロセスビルダーの場合
    • プロセスビルダーでISCHANGED([Account].Name)を条件としてプロセスを作成し、個人取引先の姓or名を編集した場合、「条件を満たさない」と判断されその後のルール適用時のアクションは動作しない。
  • フローの場合
    • ISCHANGED({!$Record.Name})を条件としたフローを作成し、個人取引先の姓or名を編集した場合、「条件を満たす」と判断されその後の処理は継続する。

デバッグログでの確認

上記動作をデバッグログで確認したところ、個人取引先のNameは姓(FirstName)、名(LastName)によらずログ上ではName=nullで固定となっていました。
プロセスビルダーでISCHANGED([Account].Name)を条件としたプロセスが動作しないのはこのためと考えられます。
一方、フローでも個人取引先のNameがName=nullで固定の動作は変わらないのですが、なぜプロセスビルダーと違いその後の処理が継続するのかは分かりませんでした。
恐らく、フローの内部動作で「個人取引先の場合、{!$Record.Name}では姓(FirstName)、名(LastName)の値を見る」ようにされているのではないかと思いますが詳細は不明です。

余談

ちなみに取引先責任者の名前(Name)での動作も確認したのですが、以下の通りどちらでも動作しませんでした。

  • プロセスビルダー
    • ISCHANGED([Contact].Name)を条件に使用したプロセスは有効化できるが、実行時に「myVariable_current.Name の値が設定されていないか、割り当てられていないため、フローでこの値にアクセスできませんでした。」エラーが発生するため実際には動作しない。
  • フロー
    • ISCHANGED({!$Record.Name})を条件に使用した時点でフローを有効化できない。

おわりに

プロセスビルダーからフローへの移行を求められている昨今、画面だけでなく機能のアップデートも図られていると感じた一件でした。
「同じ条件、アクションならプロセスビルダーもフローも動作は同じ」と思わず、検証を行うのが大事ですね。