0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Salesforceの重複ルールが効かないときの確認リスト ─ 許可とブロック・一致ルールの中身・API経由・前からある重複

0
Posted at

重複ルールを有効にしたのに、同じ会社の取引先が2件、同じ人のリードが3件と増えていく。設定画面を開いても「有効」になっている。

この状態で調べると、原因はだいたい次の表のどれかです。重複ルールは「見つけたら何をするか」を決め、一致ルールは「何を重複とみなすか」を決めるので、見る場所もこの2つに分かれます。手早く見られる順に並べました。

起きていること 原因 見る場所
警告は出るのに保存できてしまう 作成時・編集時のアクションが「許可」 設定 → 重複ルール
警告すら出ない 「許可」で「アラート」のチェックが外れている / 一致ルールの条件に当たっていない / ルールの条件で除外されている / 一致ルールの有効化が終わっていない 設定 → 重複ルールのアクション、一致ルール、重複ルールの「条件」
会社名は同じなのに検出されない 標準の一致ルールは取引先名だけでは一致しない。取引先名と(住所 / 市区郡+都道府県 / 郵便番号 / 電話)か、Webサイトと(電話 / 住所)の組み合わせが要る 設定 → 一致ルール → 取引先の標準一致ルール
「株式会社」の有無や全角半角で別物になる 会社名でSalesforceが自動でそろえるのは、英字の大文字小文字・前後の空白・英語の Inc / Ltd や略称まで 入力側でそろえる
編集したのに何も起きない 一致ルールに入っている項目を変えたときしか動かない 一致ルールの項目
一括で入れたデータだけ重複している 同時に保存されたレコード同士は比較されない 取り込み前のファイル
連携やアプリ経由のレコードだけ通る 連携側で保存を強制する指定(allowSave)をしていないか 開発側に確認
昔からある重複が減らない 重複ルールが動くのは作成・編集の瞬間だけで、有効化前からある重複はさかのぼって探さない。重複ジョブはPerformance / Unlimitedのみ 設定 → 重複ジョブ、またはレポート

以下、それぞれの中身です。

まず「許可」か「ブロック」かを見ます

設定の重複ルールを開くと、ルールごとに「作成時のアクション」と「編集時のアクション」があり、それぞれ「許可」か「ブロック」を選びます。「許可」のときは、「アラート」と「レポート」のチェックを付け外しできます。既定は「許可」で、アラートを表示し、レポートに残す設定です[3]。

「許可」で「アラート」にチェックが入っていると、営業担当には警告が出ますが、そのまま保存できます[2]。「アラート」のチェックを外していると、警告も出ずに保存されます。重複が作られている組織の多くは、ここが「許可」のままです。止めたいなら「ブロック」に変えます。

ルールが複数あるときは順番も見ます。最初のルールで一致が見つかると、後ろのルールはそのレコードを飛ばします。「ブロック」のルールは「許可」のルールより前に置きます[3]。並び替えは、どのルールでもいいので詳細ページを開くと「並び替え」ボタンがあります。

もう1つ、同じ編集画面にある「レコードレベルセキュリティ」も見ます。既定の「共有ルールを適用」だと、そのユーザーが見られるレコードとだけ比べます。営業担当から見えない他部署のレコードと重複していても検出されません。「共有ルールをスキップ」に変えると、所有権に関係なくすべてが比較対象になります。見えないレコードそのものは表示されず、警告とブロックだけが効きます[2]。

一致ルールの中身が、思っているより厳しいことがあります

警告すら出ないなら、見るのは一致ルールの側です。

その前に有効化の話です。重複ルールを有効化するには、ひもづいている一致ルールが全部有効になっている必要があります[3]。一致ルールの有効化には時間がかかり、終わるとメールが来ます[10]。24時間を超えて「有効化中」のまま止まる例は公式ナレッジにあり、その場合はサポートに止めてもらってから再度有効化します。複数の一致ルールを同時に有効化しないことも勧められています[11]。

取引先の標準一致ルールは、取引先名だけでは一致しません。一致の式はこうなっています[8]。

オブジェクト 標準の一致ルールが一致とみなす組み合わせ
取引先 取引先名 と (町名・番地 / 市区郡+都道府県 / 郵便番号 / 電話) のどれか。または Webサイト と (電話 / 町名・番地)
リード 名 と 姓 に加えて、メール / 電話 / 役職+会社 / 電話+会社 / 町名・番地+α のどれか
取引先責任者 リードと同じ形。会社の代わりに取引先名

つまり、住所や電話を入れずに会社名だけで登録された取引先は、標準ルールでは重複になりません。同じページには、正確に一致させるには新規レコードか編集したレコードの取引先名と、市区郡か郵便番号のどちらかに値が要る、という注意もあります[8]。リードと取引先責任者は、どの組み合わせにも名と姓が入っています。名が空欄のリードは、同じメールアドレスの既存リードがあっても一致しません[9]。

空欄の扱いも既定では厳しめです。標準の一致ルールでは、比べる項目が空欄だと「照合しない」扱いです。カスタムの一致ルールなら「空白項目をマッチング」を項目ごとに選べますが、選んだ場合でも、両方が空欄のときだけ一致で、片方だけ空欄なら一致しません[5]。

カスタムの一致ルールを作っている場合は、公式の考慮事項に1つ落とし穴があります。公式には「あいまい一致または完全一致を使用します。1つのルールに両方の一致種別が含まれている場合、重複は検出されません」とあります[4]。ただし、同じページの例も標準の取引先一致ルールも、取引先名(あいまい)と町名・番地(完全)を組み合わせているので、別の項目に分けて使う分には検出されます。この注意は、ORでつないだ検索条件ロジックの中に、同じ項目をあいまい一致で何度も入れる場合の話として書かれています。自作の一致ルールが検出しないときは、まず一致メソッドをすべて「完全」にそろえて試すのが早いです。

日本語の表記ゆれは、ルール側では吸収できないと考えておきます

「株式会社〇〇」と「〇〇株式会社」、「ABC商事」と「ABC商事」。どちらも人が見れば同じ会社ですが、一致ルールがどこまで同じとみなすかは、公式に書かれていません。

Salesforceが比べる前に自動でそろえる処理は、公式に項目ごとの一覧があります[7]。会社名に関わるのはこの2つです。

  • どの項目でも、英字の大文字と小文字の違い、前後の空白はそろえます
  • 「あいまい: 会社名」では、Inc / Ltd / Corporation のような英語の会社の種類と、and / the / of、特殊文字とアクセントを取り除いて比べます。IBM と International Business Machines のような英語の略称も、同じ会社として扱います

電話(記号を落として数字だけにする、米国の番号は国番号を落とす)、町名・番地(Avenue / Street を落とす)、市区郡、名、姓、メール、Webサイトにも、それぞれの処理があります。どれも標準の一致ルールか、その項目の「あいまい」の一致メソッドを使うときに効きます。

日本語の「株式会社」「(株)」は、会社名の処理に入っていません。加えて、あいまい一致は英字だけの対応で、日本語のような英語以外のデータでは完全一致を使うよう公式が勧めています[4]。日本語の会社名で「あいまい: 会社名」に期待するのは分が悪いです。

なので、対処はルールではなく入力側です。

  • 会社名の項目は「株式会社」を外して登録すると決めます
  • 正式名称とは別に、法人番号やメールのドメインのような揺れない項目を用意して、そこを完全一致で比べます
  • 入力規則で、全角の英数字を弾きます

一致ルールは「そろった入力」にしか効かない前提で組みます。

編集時は、一致ルールの項目を変えたときしか動きません

「編集時のアクション」を設定していても、重複ルールが動くのは、編集した項目が一致ルールに含まれているときだけです。カスタム項目を編集しても、その項目を含む一致ルールがなければ何も起きません[1]。

同じページに、見落としやすい条件が2つあります。

  • 更新するユーザーに、一致ルールが参照する項目へのアクセス権がないと、そのユーザーの操作では重複が識別されません。管理者が試すと動くのに、営業担当だと動かないときはこれです
  • 重複ルールの「条件」に参照関係項目を使っていて、その項目が空欄のレコードが来ると、ルールは動きません

画面以外から入ったレコードは、別のルールで動いています

ここが一番はまりやすいところです。

取り込みツール(データインポートウィザード、Data Loader)や外部システムとの連携から入る場合は、画面の警告が出せない代わりに、アクションが「許可」でもその行はエラーになって入りません[1]。公式の書き方は「アラートは表示されず、ユーザーはレコードを保存できません」で、アクションや「アラート」「レポート」のチェックによる違いは書かれていません。

それでも連携経由で重複が入るなら、まず連携側の指定を確認します。Apexや外部システムからの保存では、重複ルールのオプション(DuplicateRuleHeader)の allowSave を true にすると、「アラート」を有効にしたルールで一致しても、警告を飛ばして保存できます[17]。MAツールやフォームツールとの連携で重複が増えている場合、連携側がこの指定で通しているかを開発側に確認します。

Web-to-Leadは逆です。ルールが「ブロック」か、「許可」で「アラート」にチェックが入っているとき、フォームからのリードがルールに当たると、「許可」でもブロックされます。公式ナレッジでは、送信者へ「You're creating a duplicate record. We recommend you use an existing record instead.」のエラーが返る、とあります。フォームの投稿は人が警告を見て判断できないためです。フォームからの重複を通したいなら、Web-to-Leadの作成ユーザーを条件で除外するか、そのユーザー専用のルールを「許可」+「レポート」だけ(アラートなし)で作ります[18]。

一括で入れたデータの中だけ重複している、というケースもここです。複数のレコードが同時に保存されるとき、それらは互いに比較されず、既にSalesforceにあるレコードとだけ比較されます[1]。CSVの中に同じ会社が2行あって、その2行が同じ回で一緒に保存されると、2行とも入ります。公式が書いているのは「同時に保存された」レコード同士の話で、ファイル全体の話ではありません。「レポート」にチェックがあれば、同時保存の同士でも重複レコードセットには残ります[1]。取り込む前にファイル側で重複を消しておきます。

ルールがそもそも動かない操作も、公式に一覧があります[1]。

  • 簡易作成、コミュニティのセルフ登録で作られたレコード
  • リードの取引開始(Apexリード変換を使っていない場合)
  • ごみ箱からの復元
  • Lightning SyncやEinstein活動キャプチャで追加されたレコード
  • 手動のマージ

取引開始で取引先や取引先責任者が増えているなら、重複ルールではなく取引開始の画面で既存レコードを選ぶ運用の話になります。

前からある重複は、重複ルールでは見つかりません

判定が走るのは、レコードを作るか編集する瞬間だけです。有効化した日より前に入っていた重複は、そのまま残ります。

組織全体をスキャンする「重複ジョブ」はありますが、使えるのはPerformance EditionとUnlimited Editionだけです[12]。Enterprise Editionでは設定に出てきません。

Enterprise以下で、追加費用なしにできる探し方を挙げます。

「潜在的な重複」コンポーネントを、取引先・取引先責任者・リードのレコードページに置きます。置く場所は、レコードページの編集画面(Lightningアプリケーションビルダー)です。営業担当がレコードを開いたときに、そのレコードと重複している既存レコードが出ます。Summer '17以降に作られた組織なら初めから設定されています[15]。1件ずつではありますが、日々触るレコードから片づいていきます。

まとめて洗うなら、レポートです。取引先のサマリーレポートを取引先名でグループ化し、レコード件数が2以上のグループを見ます。表記ゆれまで拾うなら、レポートをエクスポートしてスプレッドシートに載せます。会社名から「株式会社」や空白を取り除いた列を作り、その列をCOUNTIFか「重複を強調表示」にかけます。Salesforce側の一致ルールが同じとみなさないものを、人の目で同じとみなす作業なので、どのみち表計算に持ち出して片づけます。

見つけた重複は、重複レコードセットを手で作ってまとめられます。アプリケーションランチャーから「重複レコードセット」を開き、リストビューで「新規」を押し、重複ルールを指定して、関連リストからレコードを追加します。Lightning Experienceなら、そのセットから「比較およびマージ」でマージできます[14]。

これから先の重複を追いかける仕組みも1つあります。アクションの「レポート」にチェックを入れておくと、警告を無視して保存された重複が重複レコードセットに残ります。「重複レコードセット」または取引先・リードを主オブジェクトにしたカスタムレポートタイプを作れば、そのセットをレポートで見られます[13]。「許可」のまま運用するにしても、これがないと、誰がどれだけ重複を作っているかが分かりません。

それでも分からないときは、エラーログを見ます

設定の「重複エラーログ」に、重複ルールや一致ルールの実行を妨げたシステムエラーが90日分残ります。あいまい一致のエンジンが一時的に使えず、あいまい一致を含む一致ルールが実行されなかった、といったケースがここに出ます[16]。設定を何度見ても正しいのに検出されない日がある、というときはここです。

最後に、見る場所を一覧にしておきます

  • 設定 → 重複ルール: 有効か、作成時・編集時のアクションが「許可」か「ブロック」か、「アラート」と「レポート」のチェック、ルールの並び順、「条件」の中身、編集画面の「レコードレベルセキュリティ」
  • 設定 → 一致ルール: 有効か、有効化が終わっているか、一致の式にどの項目が入っているか、「空白項目をマッチング」、ORの中に同じ項目のあいまい一致を何度も入れていないか
  • 経路: 連携やApexが allowSave を指定していないか、取り込みファイルの中に重複がないか
  • 既存の重複: エディションが重複ジョブを使えるか、使えなければレポートかスプレッドシートで洗う
  • 設定 → 重複エラーログ

重複ルールがいちばん効くのは、そろった入力が画面から1件ずつ入るときです。効いていないときは、ルールを増やす前に、レコードがどの経路から、どんな形で入っているかを見ます。原因はたいていそちらにあります。

出典(2026-09-26 確認)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?