取引先名の重複作成を止める重複ルールとフローの使い分け
同じ取引先名を何度も登録してしまう問題は、実はフローを組まなくても止められることがあります。標準の重複ルールで足りる範囲と、フローが必要になる範囲を分けて説明します。
なぜ重複作成を止めたいのか
営業担当者が同じ取引先名で何度もレコードを作ってしまうと、商談や活動が分散し、履歴が追えなくなります。この問題は、フローを自作する前に確認すべき標準機能があります。
まず結論です。取引先・取引先責任者・リード・個人取引先の重複を防ぐだけなら、標準の重複ルールと一致ルールで足ります。フローが必要になるのは、対象オブジェクトが違う場合や、独自の判定条件を保存前に必ず通したい場合です。
標準の重複ルールでできること
重複ルールは、セットアップで「重複ルール」と検索して設定します。一致ルールで「似ているレコード」の判定基準を決め、重複ルールでその判定が起きたときの動作を決める仕組みです。
| アクション | 動作 |
|---|---|
| 警告 | 重複の可能性を通知しつつ、ユーザーの判断で保存を続行できる |
| ブロック | 重複と判定されたレコードの保存を完全に禁止する |
| 許可 | 警告を出さずにそのまま保存する |
標準の重複ルールは、ビジネス用の取引先・取引先責任者・リード・個人取引先(有効化後)を対象に用意されています。Summer '17より前に作成された組織では、標準ルールが既定で有効です。
フローで重複チェックが要る場面
重複ルールの対象外のオブジェクトを守りたいときや、「保存前に必ずこの条件を通す」という独自ロジックを組みたいときは、レコードトリガーフローで作ります。ここでは取引先名の完全一致チェックを例にします。
この処理は、トリガーになったレコードの項目を保存前に検証するだけなので、保存の前(before-save)のフローで組めます。保存の前フローは、データベースへの保存の直前に実行され、$Recordの値をそのまま検証に使えます。追加の保存処理が発生しない分、保存後(after-save)のフローより高速に動きます。
レコードトリガーフローを新規作成する
Flow Builderで「新規フロー」を選び、「レコードトリガーフロー」を選択します。
開始を設定する
オブジェクトに「取引先」を選び、トリガーは「レコードが作成された時」にします。「フローを最適化」は、保存の前に動く「高速項目更新」を選びます。
レコードを取得要素を追加する
表示ラベル「同名取引先の検索」、オブジェクトは「取引先」。条件は「取引先名」が「次の文字列と一致する」「{!$Record.Name}」、AND条件で「Id」が「次の文字列と一致しない」「{!$Record.Id}」を加えます。保存するレコード数は「条件に合致するすべてのレコード」にします。
決定要素を追加する
表示ラベル「重複有無チェック」。アウトカム「重複あり」の条件要件は「同名取引先の検索が空白ではない」にします。
カスタムエラー要素を追加する
「重複あり」のパスにつなげます。エラーメッセージに「同じ取引先名がすでに登録されています。既存のレコードをご確認ください。」と入力します。表示位置は画面上部のバナーでも、取引先名フィールドへのインライン表示でも選べます。
フローを保存して有効化する
フロー名とAPI参照名を入力し、保存後に「有効化」します。
カスタムエラー要素は、レコードトリガーフローの保存前・保存後どちらのパスでも使えます。エラーが発生すると、そのトリガーによる変更全体がロールバックされ、ユーザーは保存をやり直すまでレコードを確定できません。
「レコードを取得」要素が内部で行っている判定は、SOQLに書き換えると次のようなクエリに近い形です。
SELECT Id, Name FROM Account WHERE Name = :accountName AND Id != :currentRecordId
参考として示すクエリです。フロー上では要素の設定として組み立てます。
ここで間違えやすい
| 間違い | 何が起きるか |
|---|---|
| ループの中に「レコードを取得」や「レコードを作成」を置く | 対象件数ぶんSOQL・DMLが個別に発行され、ガバナ制限に達しやすくなります。要素はループの外に置きます |
| エントリ条件を絞らずに「作成または更新時」で動かす | 更新のたびに同じチェックが走り、無関係な更新でもフローが実行されます |
| 重複ルールで足りる範囲までフローで組んでしまう | 標準機能で解決できる警告・ブロックを、保守対象の増えるフローに置き換えることになります |
| カスタムエラーのメッセージを255字を超えて書く | 保存できません。文言は短く要点だけにします |
動作確認のしかた
有効化したフローは、次の2パターンで確認します。
- 既存の取引先名と同じ名前で新規作成する。「レコードを取得」で1件以上ヒットし、「重複あり」の決定パスからカスタムエラーが表示され、保存がロールバックされることを確認します
- 既存にない取引先名で新規作成する。「レコードを取得」の結果が空になり、カスタムエラーを通らずに保存が完了することを確認します
エラーメッセージは、レコードページ上部のバナー表示と、対象フィールドへのインライン表示のどちらを選んでいるかで見え方が変わります。設定した表示位置と実際の見え方が一致しているかもあわせて確認します。
確認した環境
- 2026年9月 / Salesforce Summer '26(APIバージョン67.0)時点の公式ドキュメントで、重複ルールの仕様とレコードトリガーフローの要素構成を確認しています
- ご自身の組織で作成・有効化する際は、サンドボックスでの確認をおすすめします
まとめ
- 取引先・取引先責任者・リード・個人取引先の重複防止は、まず標準の重複ルールと一致ルールを検討します
- 重複ルールにはクイック作成やExperience Cloudサイトのセルフ登録など、動かない保存経路があります
- 標準機能の対象外や独自条件が必要なときは、レコードトリガーフローの保存前パスで「レコードを取得」「決定」「カスタムエラー」を組み合わせます
- 「レコードを取得」「レコードを作成」はループの外に置き、ガバナ制限に達しないようにします
- カスタムエラーが発生すると、そのトリガーによる変更はロールバックされます
参考:当時の画面
記事を最初に書いた当時の画面です。いまの手順と違うところは、各画像の説明に書いています。
Salesforceの導入・運用についてご相談ください
導入前の検討から、お使いの環境の改修・運用、AIとの連携まで承ります。状況を伺ったうえで、進め方をご提案します。