ワークフローからの卒業:商談成立時に「完了予定日」を$Record_Priorで前の値のままにする

ワークフローからの卒業:商談成立時に「完了予定日」を$Record_Priorで前の値のままにする

シンプルなフローでも奥が深かったりします。
ワークフローからの卒業:商談成立時に「完了予定日」を$Record_Priorで前の値のままにする
64
ワークフローからの卒業:商談成立時に「完了予定日」を$Record_Priorで前の値のままにする
Admin
2023/03/08 17:41:07
ワークフロー&プロセスビルダーをフローでリメイクするシリーズ、どんどんやっていきますのでリクエストありましたらご連絡ください。よろしくお願いします。

というわけで今日も今日とて、過去にワークフローでの実装例をご紹介していた「商談成立時に「完了予定日」が今日の日付になるのを阻止したい」をフローでリメイクします。


仕様とやりたいことのおさらい

過去記事から引用します。

そもそもの仕様
商談の完了予定日に未来日が入力されている状態で成立に変更すると、自動的に完了予定日が今日の日付に変更されます。Salesforceのデフォルトの動作です。

解決方法・回避策
「完了予定日」に今日の日付ではなく、もともと入っていた未来日をそのまま保存したい場合は、「PRIORVALUE」関数を使用したプロセスビルダーかワークフロールールを作成し、「今日の日付」で保存された後、前に保存されていた値で上書きされるようにします。

通常は、完了予定日が未来の日付でフェーズを「成立(Closed Won)」に変更すると、今日の日付で更新されてしまいます。

解決方法は Salesforceさんでナレッジ記事も用意されているのですが、まだフローには未対応のようなので、さっそくフロー版を作ってしまいます!


フローでの設定方法

今回もとても簡単です。フロー初心者にもやさしい内容ですので、練習用におすすめです。

1.商談が成立したとき=レコードが更新されたときなので、「レコードトリガフロー」を選択します。


2.開始条件を設定します。
トリガレコード自体の更新になりますが、高速項目更新(保存前更新)では想定どおりに更新されないため、「アクションと関連レコード」を選択します。
オブジェクトを選択:商談
トリガを設定:レコードが作成または更新された
エントリ条件を設定:すべての条件に一致(AND)|IsWon(成立フラグ)| 次の文字列と一致する | ∞ True((true)、オン、または「はい」に相当)
更新されたレコードでフローを実行するタイミング:条件の要件に一致するレコードを更新したときのみ
フローを最適化:アクションと関連レコード



3.「トリガレコードを更新」要素を追加します。
表示ラベルAPI参照名はわかりやすい値を入力してください。
更新するレコードを検索してその値を設定する方法:フローをトリガした商談レコードを使用
検索条件を設定:なし ー 常にレコードを更新
商談の項目値をレコードに設定:項目→ CloseDate(完了予定日)|値→$Record_Prior>完了予定日(完了予定日の前の値)

-------------------------------------------
$Record_Priorグローバル変数について

あらかじめ用意されている変数です。フロー実行前のレコードの値を参照することができます。詳細はヘルプをご確認ください。
◇ SALESFORCE ヘルプ >ドキュメント >SALESFORCE SPRING '21 リリースノート >フローをトリガしたレコードの前の値の参照
-------------------------------------------


あとは保存してテストして有効化して終わりです。


こうなれば成功

設定したフローを有効化すると、元の日付を維持することができます。



注意しておきたい実行順序

今回、「高速項目更新」ではなく「アクションと関連レコード」を使用しました。最近フローを始めた方にはピンとこないかもしれませんが、「高速項目更新」は「保存前更新」とも呼ばれ、レコードのデータベースへの保存処理の前に実行されるものです。対して「アクションと関連レコード」は、データベースへの保存処理の後に実行されます。
今回、「高速項目更新」でも試してみましたが、完了予定日は今日の日付で上書きされる結果となりました。商談の「フェーズが成立になったら完了予定日が未来の場合は今日の日付に変更する」デフォルトの処理が、どこで実行されるか正確な情報はわからなかったのですが、「高速項目更新」の後に実行されるため、今日の日付で上書きされるのではないかと思います。

参考
◇ Apex 開発者ガイド/Apex の実行/Apex の呼び出し/トリガ/トリガと実行の順序
実行順序の一部を切り取っています。


自動化がうまくいかないときは、実行順序が原因となっている場合も多いです。基本的な順序は把握しておくか、↑のページを確認するようにするといいと思います。

「高速項目更新」と「アクションと関連レコード」について、ヘルプにその名称では書かれていないので読み替えが必要ですが、注意事項や動作についてよく読んでおくといいかと。
◇ SALESFORCE ヘルプ >ドキュメント >ビジネスプロセスの自動化 >保存前更新を実行するフローのレコードトリガ
◇ SALESFORCE ヘルプ >ドキュメント >SALESFORCE SUMMER '20 リリースノート >レコードの保存後に実行するフローのトリガ
◇ SALESFORCE ヘルプ >ドキュメント >ビジネスプロセスの自動化 >レコードトリガフローに関する考慮事項


フロー関連の記事

【フロー】複数ルックアップコンポーネントを使って商談一括作成画面を作ってみた
フロー画面でのレコードタイプによる選択リストの絞り込みを試してみた
毎月N日に起動させるフロー
レコードのファイルを自動で削除するフロー
フローを食わず嫌いしている人へ
実験:フローで取引先を【関連情報と共にコピー】してみた
フローで積み上げ集計(その1)
Spring’23 画面フローで複数選択リストをいつもの入力画面のように設定できます。
Spring'23 フローの参照項目でレコードが作成できます
Spring’23 フローの対話型コンポーネントを使用した画面の構築って何?
ワークフローからの卒業:日付項目を過ぎた子レコードの数を把握②フローで日付が過ぎたらレコードを更新
入力しやすさと集計どちらも叶えたい!5段階評価を画面フローで入力する
保留にしている承認者へリマインダーメールを送信したい
リストビューで選択したレコードを一括削除してみる
ワークフローのFlow移行ツール:Migration to Flow(Beta)を試してみました
担当レコードへのChatter投稿はメンションされなくても通知を受け取りたい
ワークフローからの卒業:ロングテキストエリア入力有無をフローで確認 値の削除にも対応編
カスタムオブジェクトから参照する標準オブジェクトを更新するフローは再編集時エラー出るけれど動くそう
フローの命名ルールを決めて迷わず実装&仲間にもわかりやすくしよう
gilde tech(for Salesforce)」に入会しませんか?
登録すると、「gilde tech」に掲載されているSalesforceのノウハウを全部閲覧できるだけでなく、自分が知っている知識を発信し、他の会員と交流することもできます。
またSalesforceの知識習得に役立つイベント情報も得ることができます。
是非ここで得た知識を業務に活かしてください!
64
コメント