【Salesforce】一致ルールで困った時の監査ログと履歴で追う方法

【Salesforce】一致ルールで困った時の監査ログと履歴で追う方法
🛡️ 超解決

Salesforceの一致ルール(重複ルール)は、取引先やリードなどの重複を防止する便利な機能ですが、想定通りに動作しない、重複が検出されない、または誤って重複と判断されるなどのトラブルが発生することがあります。こうした問題を解決するためには、設定画面だけを見るのではなく、実際のデータや動作を記録する監査ログとレコードの履歴を活用した原因追跡が欠かせません。本記事では、一致ルールに関する問題を監査ログと履歴でどのように調査し、原因を特定するかについて、具体的な手順と事例を交えて解説します。

【要点】この記事で確認すること

  • 最初に見る場所: 一致ルールが動作しない場合、監査ログの「重複ルール評価」イベントと、関連レコードの「履歴追跡」を確認します。
  • 切り分けの軸: 問題がルール設定側(オブジェクト・項目・ルール定義)なのか、データ側(重複条件に合致するレコードの有無)なのか、権限側(ユーザのプロファイル・権限セット)なのかを切り分けます。
  • 注意点: 監査ログを有効にするには「設定」>「監査ログ」で設定が必要な場合があります。また、履歴追跡はオブジェクトごとに有効化が必要です。会社PCで共有の環境では、管理者による設定変更が不可欠なケースがあります。

ADVERTISEMENT

一致ルールの基本とトラブルの全体像

一致ルールは、レコード作成時や更新時に、既存のレコードと比較して重複を検出し、ユーザに警告を表示したり、保存をブロックしたりする仕組みです。標準オブジェクト(取引先、リード、取引先責任者など)に加え、カスタムオブジェクトにも設定可能です。しかし、以下のようなトラブルがしばしば発生します。

  • 重複しているはずなのにルールが動作しない
  • 重複していないレコードが重複と判断される
  • ルールの評価が行われず、警告もエラーも出ない
  • 特定のユーザだけルールが適用されない
  • 以前は動いていたルールが突然動作しなくなった

これらの原因を特定するために、監査ログと履歴を組み合わせて調査する方法をステップごとに紹介します。

監査ログで一致ルールの実行状況を確認する

監査ログの設定と確認手順

Salesforceの監査ログ(イベント監視)は、システムのイベントを記録する機能です。一致ルールの評価は「重複ルール評価」というイベントとして記録されます。このイベントを確認することで、ルールがいつ、どのレコードに対して評価されたか、その結果(重複検出の有無)を把握できます。

  1. 設定画面で「イベント監視」を検索し、「イベント監視ログファイル」を開きます。
  2. 「ログファイル」タブで、対象の日時範囲を選択します。問題が発生した前後の時間帯を含めるのがポイントです。
  3. 「イベントタイプ」のフィルタで「DuplicateRuleEval」を選択します。これで一致ルールの評価イベントだけに絞り込めます。
  4. 表示されたログをCSVでダウンロードするか、Salesforce内の「イベント監視アナリティクス」で可視化します。
  5. 各レコードの「EVENT_DATA」列を見ると、評価されたレコードID、使用されたルールID、重複結果(true/false)などが含まれています。

例えば、ある取引先レコードを作成した際に重複ルールが動作しなかった場合、監査ログを確認することで「そのレコードに対するDuplicateRuleEvalイベント自体が存在しない」か、「存在するが結果がfalse(重複なし)」かを判別できます。イベントがない場合は、ルールがそもそも評価されていない可能性が高いです。

監査ログからの原因切り分け

監査ログを分析することで、以下のような原因を絞り込めます。

  • イベントが全く記録されていない → ルールが無効、または評価条件(オブジェクト・レコードタイプ)に合致していない可能性があります。
  • イベントはあるが結果がfalse → ルールは評価されたが、既存レコードとの一致がなかった、あるいはルールの一致条件が緩すぎる可能性があります。
  • 特定のユーザだけイベントが少ない → プロファイルや権限セットでルールの適用が制限されている可能性があります。
  • エラーコードが記録されている → ルールの定義に問題がある(例えば参照項目の値が不正)可能性があります。

レコードの履歴で重複検出の前後を追跡する

履歴追跡の設定と確認

監査ログが「システムレベル」の記録であるのに対し、レコードの履歴は「レコードレベル」の変更記録です。一致ルールに関係するオブジェクト(取引先、リードなど)で履歴追跡を有効にしておくと、項目の変更履歴を確認できます。特に、ルールの一致条件に使われている項目(取引先名、電話番号、メールなど)の履歴は重要です。

  1. 設定画面で「履歴追跡」を検索し、対象オブジェクトの設定ページを開きます。
  2. 「項目の履歴追跡」セクションで、一致ルールで使用する項目(例:取引先名、電話、Eメール)を有効化します。通常、標準項目は最初から有効にできます。
  3. 問題のレコード詳細ページで「履歴」関連リストを表示します。またはSOQLで直接履歴オブジェクトをクエリすることも可能です。
  4. レコード作成時や更新時の変更を確認します。特に、一致ルールの評価が行われるタイミングでの値の状態を把握します。

履歴から読み取れること

例えば、リード作成時に重複ルールが効かなかった事例を考えます。履歴を確認したところ、作成直後に「電話」項目に値が入っていなかったことが判明しました。ルールの一致条件が「電話番号が完全一致」だったため、電話が空のリードは重複対象外となり、結果として重複検出されなかったのです。このように、項目の値がルールの条件を満たしていないケースがよくあります。

また、履歴を遡ることで、以前は重複していたレコードがなぜ重複しなくなったのか(項目値が変更された、レコードが削除されたなど)を特定できます。

監査ログと履歴の違い:状況に応じた使い分け

両者は補完的な情報源ですが、調査すべき内容によって使い分けると効率的です。以下の表で主な違いをまとめます。

項目 監査ログ(イベント監視) レコード履歴(フィールド履歴)
記録対象 システムイベント(ルール評価、ログインなど) 個別レコードの項目値の変更
一致ルールとの関係 ルール評価の有無と結果を直接確認できる ルールの一致条件を満たすかどうかの判断材料になる
確認できる情報 評価時刻、ユーザ、レコードID、ルールID、結果(重複あり/なし) 変更日時、変更者、変更前後の値
設定の必要性 有料のイベント監視ライセンスまたは監査ログ設定が必要 オブジェクトごとに履歴追跡を有効にする必要がある
調査の優先順位 最初に確認すべき:ルールが実行されたかどうか その次に確認:なぜ重複と判定されなかったかのデータ面

監査ログで「ルールが評価されていない」ことがわかったら、次は履歴ではなくルール設定や権限を見直します。一方、監査ログで「評価はされたが重複なし」という結果であれば、履歴でレコードのデータ状態を調べます。

よくある失敗パターンと解決策

パターン1: ルールの一致条件が厳しすぎる

例えば、取引先の一致ルールで「取引先名が完全一致」かつ「電話番号が完全一致」に設定している場合、名前にスペースや表記ゆれがあると一致しません。監査ログで「評価あり、重複なし」となっていたら、条件を見直す必要があります。履歴で実際の項目値を確認し、同じ会社なのに値が微妙に異なる例を見つけましょう。

パターン2: レコードタイプやプロファイルでルールが除外されている

一致ルールはレコードタイプやユーザのプロファイルで適用範囲を制限できます。監査ログで「あるユーザだけイベントが記録されていない」場合は、そのユーザのプロファイルを確認します。ルール設定画面で「有効なレコードタイプ」が特定のものだけになっていないか、プロファイルの権限で「重複ルールの上書き」が許可されていないかなどをチェックします。

パターン3: ルールの無効化や優先順位のミス

複数の一致ルールがある場合、優先順位が高いものだけが評価されます。監査ログの「RULE_ID」にどのルールが使われたかが記録されています。想定と異なるルールが評価されていた場合、優先順位が間違っているか、ルールが無効になっている可能性があります。ルール一覧で「有効」チェックと順序を確認しましょう。

管理者への確認事項と依頼すべきこと

一般ユーザでは監査ログや履歴追跡の設定を変更できないため、管理者に依頼する必要があります。以下の情報を準備して依頼するとスムーズです。

  • 問題が発生した日時(できればUTCとタイムゾーンの両方)
  • 問題のレコードID(該当する場合)
  • 問題を再現する手順(どの画面で何を入力したか)
  • 監査ログ(DuplicateRuleEvalイベント)の出力をCSVで依頼
  • 該当オブジェクトの履歴追跡が有効かどうかの確認と、不足項目の有効化依頼

管理者に依頼する際は、「一致ルールが動作しない」という曖昧な伝え方ではなく、「新規取引先作成時に重複警告が出るべきだが何も出ない。監査ログを確認してルール評価の有無を調べたい」と具体的に伝えましょう。

よくある質問(FAQ)

Q1. 監査ログに重複ルール評価イベントが全くありません。どうすればいいですか?

まず、一致ルールが有効になっているか確認してください(設定 > ルール > 一致ルール > 該当ルールの「有効」チェック)。また、イベント監視のライセンスがない場合、ログが記録されません。その場合はSalesforceのサポートに問い合わせるか、代わりに「管理イベントログビューア」などの代替手段を検討します。また、履歴追跡が有効ならそちらから手がかりを探すことも可能です。

Q2. 履歴追跡に表示される項目の変更は、一致ルールの評価タイミングと完全に同期していますか?

厳密には非同期な場合があります。レコード保存後、すぐにルール評価が走りますが、履歴は保存・コミットのタイミングで記録されます。ほぼ同時ですが、完全なリアルタイムではありません。ただし、調査上は十分に利用可能です。

Q3. 監査ログの重複ルール評価結果がfalseだったのに、重複がありました。なぜですか?

ルールの一致条件が「完全一致」や「あいまい一致」のしきい値が高すぎる可能性があります。また、ルールは「アクティブなレコード」のみを対象とする設定になっている場合、削除済みやマージ済みレコードは無視されます。重複があると思っても、ルールの定義上は別のレコードとみなされている可能性があります。

まとめ

一致ルールのトラブルシューティングでは、最初に監査ログでルール評価の有無と結果を確認し、次にレコードの履歴でデータの状態を検証するという流れが効果的です。監査ログはシステム全体の動作を、履歴は個別レコードの詳細を捉えるため、両者を組み合わせることで原因を特定しやすくなります。問題が解決しない場合は、管理者に監査ログ出力と履歴追跡の設定を依頼し、具体的なデータを基に議論しましょう。日頃から履歴追跡を有効にしておくことで、後からの調査が容易になり、再発防止にもつながります。


この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。