前回「
フローのロックアクションでクローズした商談をロックする」を書いたときはシンプルにクローズした商談をロックする例でしたが、人間なので一度ロックしたけれど解除して編集したいときもあるかもしれないと、ロック解除の動作確認も兼ねてロック&ロック解除バージョンも作りました。
やりたいこと
・受注または失注としてクローズした(完了フラグ(IsClosed)が「True」になった)商談を、編集できないようにロックする。
・レコードの所有者のマネージャーとシステム管理者はロック時にも編集可とする。
・一度クローズした商談レコードに修正が発生した場合、レコード所有者のマネージャーまたはシステム管理者がフェーズを変更することで、ロックを解除して編集可能とする。
前提
・商談にはレコードのロック状況を表示する「ロック状況」(API参照名はLockStatus__c)というカスタムテキスト項目を作成している。基本的にフローでのみ更新し、一般ユーザーは参照のみとする。デフォルト値は「🔓未ロック」。ロック後は「🔐ロック済み」に更新する。
作成したフロー

②の決定により3つの分岐が設定されていますが、内訳はこのようになっています。
クローズ:商談がクローズしたとき(=完了フラグが True)、レコードをロックし、カスタムテキスト項目「ロック状況」の値を「🔐ロック済み」に更新する。
クローズ後の変更:一度クローズした商談のフェーズを変更したとき(前の完了フラグの値がTrueで、現在の値はFalse)、レコードのロックを解除し、カスタムテキスト項目「ロック状況」の値を「🔓未ロック」に更新する。
デフォルトの結果:クローズ以外の値でフェーズが更新されたとき。
※アクションはなし。
①開始
今回はフェーズが変更されるたびに値を確認して処理を行うような条件を設定していますが、状況によって条件は異なりますのでご注意ください。
オブジェクト商談
トリガーを設定レコードが作成または更新された
エントリ条件を設定>条件の要件すべての条件に一致
StageName(フェーズ)|変更済み|True
更新されたレコードをフローで実行するタイミングレコードを更新し、条件の要件に一致するたび
フローを最適化アクションと関連レコード
②決定>クローズ
表示ラベルとAPI参照名は組織の命名ルールに則ってわかりやすい名前を付けてください。
結果 クローズ
結果を実行する条件の要件 すべての条件に一致(AND)
トリガー Opportunity >完了フラグ|次の文字列と一致する|True
結果を実行するタイミング 条件の要件を満たす場合
②決定>クローズ後の変更
結果 クローズ後の変更
結果を実行する条件の要件 すべての条件に一致(AND)
トリガー Opportunity の前の値 >完了フラグ|次の文字列と一致する|True
トリガー Opportunity >完了フラグ|次の文字列と一致する|False
結果を実行するタイミング 条件の要件を満たす場合
デフォルトの結果は何も設定しません。

③アクション(レコードのロック):クローズしたレコードのロック
アクションLock
※テキストを入力します。
レコードIDトリガー Opportunity >商談 ID
許可されるIDトリガーOpportunity >所有者 ID >マネージャーID
④レコードを更新:ロック状況をロック済みに更新
更新するレコードを検索してその値を設定する方法フローをトリガーした商談レコードを使用
検索条件を設定なし ‐ 常にレコードを更新商談の項目値をレコードに設定LockStatus__c(ロック状況)←🔐ロック済み
⑤アクション(レコードのロック):ロック解除

アクション
Unlock
※テキストを入力します。
レコードIDトリガー Opportunity >商談 ID
⑥レコードを更新:ロック状況を更新
更新するレコードを検索してその値を設定する方法フローをトリガーした商談レコードを使用
検索条件を設定なし ‐ 常にレコードを更新
商談の項目値をレコードに設定LockStatus__c(ロック状況)←🔓未ロック
テストします
クローズにすると、レコード所有者のマネージャー、システム管理者以外はレコードが編集できなくなりました。

レコード所有者のマネージャーがフェーズを「受注」「失注」以外に変更し、未クローズの状態に戻すと、レコードの更新が可能になりました。

ひとこと
アクションの設定時に「Lock」「Unlock」と入力しなくてはならないのですが、選択肢として「True」「False」があり、選択して保存できてしまうので初見殺しだなとは思いますが、レコード全体へのロック/ロック解除が簡単に設定できるのはいいですよね。
入力規則は項目のシンプルな編集ルールを設定したいとき、カスタムエラーは関連レコード等の集計情報や複雑なルールにそってデータ更新を制御したいとき、以降のデータ更新を防ぎたいときはフローのロックアクションなど、より簡単な入力の制御方法が増え、とてもありがたいです。昔は小細工をして設定のための設定を作ってましたからねえ……。時代は変わっていきますね。
ロック関連の記事
レコードロック時、数式項目で引用している情報もロックできるか入力規則で商談クローズ後にレコードの編集を不可にするおさらい:オブジェクトの「すべて表示」「すべて変更」、および「すべてのデータの編集」権限についてフローのロックアクションでクローズした商談をロックするカスタムエラーで主従関係の子レコードがあるときは親レコードを削除させない公開:2024年10月23日
更新①:2024年12月3日