It's the last week of the quarter. Your top rep is trying to push a $200,000 deal to Closed Won. They update the stage, hit Save — and get an error message that says "Invalid value." They try again. Same error. They call the admin. The admin doesn't know which rule is firing. By the time it's resolved, the deal slips into next quarter.

This isn't a hypothetical. It's the most common form of admin debt that directly interrupts revenue. Conflicting validation rules are invisible until they surface at exactly the wrong moment — and when they do, they don't tell you what's wrong. They just block.

Salesforce evaluates all active validation rules in no guaranteed order on every save operation. That means two rules with opposing logic — one that requires a field to be blank, another that requires it to be populated, under overlapping conditions — will both fire. The record can never be saved. No Flow workaround fixes it. The only solution is to find the conflict and remove it.

Most orgs have several of these. They accumulate silently over years of admin turnover, copy-paste rule creation, and no systematic review process. This guide covers the five categories of validation rule problems, how to find each one manually, and a faster path using the free Luxera Validator.

Why Validation Rule Chaos Happens

Validation rules don't start broken. They start as reasonable data quality decisions made by individual admins responding to specific requests. "Require a Close Date when Stage is Closed Won." "Block saving a Case without a Priority." Each rule makes sense in isolation.

The problem is accumulation without governance.

Admin turnover. The median Salesforce admin tenure at a company is 18–24 months. Every admin who leaves takes context with them. The rules they created stay active. Nobody reviews them. The new admin inherits a set of rules they didn't write, with descriptions that say things like "added per John's request Q3 2022." John doesn't work there anymore.

Copy-paste rule creation. When admins need a rule that's "similar to the one we have for Opportunities," they copy an existing rule and modify it. If the original had a subtle formula error — ISNULL() on a text field that always returns false, for example — the copy inherits the bug. Multiply this across 10 objects and 3 admins over 5 years.

$Profile.Name bypasses accumulating. Every time an admin needs an exception for the System Admin profile or an integration user, the easiest path is $Profile.Name = "System Administrator" wrapped in a NOT(). Over time, these bypasses pile up across dozens of rules. They create a fragile dependency web — rename any profile and rules start misfiring.

No documentation, no ownership. Most orgs have no policy for who owns a validation rule after it's created, what it's supposed to do, or when it should be retired. Rules that served a one-time migration purpose in 2021 are still active in 2026, blocking record saves on edge cases nobody anticipated.

The result is an org where validation rule behavior is only understood by running into it — and the people who get blocked are your reps, not your admins.

The 5 Categories of Validation Rule Problems

These are the categories the Luxera Validator detects. Each one has a different root cause and fix path.

1. Conflicts: Opposing Logic on the Same Object

A conflict is when two active rules on the same object can never both be satisfied under the same conditions. The canonical example: one rule requires a field to be populated when Stage = "Closed Won," another rule requires the same field to be blank when Stage = "Closed Won." Both fire. The record can't be saved.

These are harder to spot than they sound. The opposing conditions aren't always obvious from reading either rule in isolation — you have to look at them side by side and reason about overlapping trigger conditions.

Formula example — conflicting pair:

Rule A: AND(ISPICKVAL(StageName, "Closed Won"), ISBLANK(Partner_Name__c))
// Requires Partner_Name__c to be populated on Closed Won

Rule B: AND(ISPICKVAL(StageName, "Closed Won"), NOT(ISBLANK(Partner_Name__c)))
// Requires Partner_Name__c to be blank on Closed Won

Both rules are syntactically correct. Neither has an error on its own. Together, they guarantee that any Opportunity in Closed Won stage can never be saved. This pair was created when admin A added Rule B to handle direct sales (no partner), not realizing Rule A already required Partner_Name__c for all Closed Won opportunities.

Fix: Consolidate into one rule with conditional logic: require the field only when a partner-involved record type is active, leave it optional otherwise.

2. Redundancy: Duplicate or Overlapping Rules

Redundant rules don't cause save failures — they cause performance degradation and confusion. Two rules that fire under the same conditions and produce the same error mean every save evaluates both formulas unnecessarily. In bulk operations (data loads, Flow updates on thousands of records), this adds up.

More commonly, redundant rules create confusion during audits: an admin disables one rule thinking they've addressed a problem, but the identical logic in a second rule continues firing.

Formula example — redundant pair:

Rule A: AND(IsClosed, ISBLANK(Close_Reason__c))
// "Close Reason is required when opportunity is closed"

Rule B: AND(OR(ISPICKVAL(StageName, "Closed Won"), ISPICKVAL(StageName, "Closed Lost")), ISBLANK(Close_Reason__c))
// "Must enter close reason for won or lost opportunities"

Rule B is a subset of Rule A — IsClosed already evaluates to true for Closed Won and Closed Lost stages. Both rules fire on the same records and produce the same block. One of them should be deactivated.

Fix: Identify the more specific rule, document it properly, deactivate the duplicate.

3. Weak Spots: Rules That Fire Without Explaining Themselves

A weak-spot rule enforces valid business logic but provides no useful guidance when it fires. Error messages like "Invalid value," "Error," "Validation failed," or "Please check your entry" tell the rep nothing about what they did wrong or how to fix it.

This matters at scale. Every weak-spot rule that fires generates a help desk touchpoint — the rep can't self-serve, so they call the admin, open a ticket, or (most commonly) find a workaround that corrupts the data quality the rule was meant to protect.

Example of a weak error message:

Rule: AND(ISPICKVAL(StageName, "Closed Won"), ISNULL(CloseDate))
Error message: "Error: invalid data"

What it should say:

Error message: "Close Date is required before marking an Opportunity as Closed Won. Please set a Close Date and try again."

The formula is identical. The fix takes 30 seconds. The impact is immediate — reps can resolve the error without help.

Audit Your Validation Rules in Seconds

Paste your rule metadata into the free Luxera Validator — get automated detection of conflicts, redundancy, bypass smells, and weak spots. No org access required.

Open the Free Validator →

Fix: Audit every active rule's error message. Any message under 10 words that doesn't name the specific field and action required is a weak spot. Rewrite it.

4. Bypass Smells: Fragile $Profile.Name References

Any validation rule formula that includes $Profile.Name is carrying a time bomb. Profile names can be renamed by any admin at any time — and when they are, every rule that references the old name silently changes behavior. The bypass breaks. The rule starts firing for users it was meant to exclude.

In orgs with multiple $Profile.Name bypasses (the average mature org has 8–15 of them), renaming a profile for a rebranding or role restructure can trigger a cascade of unexpected validation errors across dozens of objects.

Common bypass smell:

AND(
  NOT($Profile.Name = "System Administrator"),
  ISPICKVAL(StageName, "Closed Won"),
  ISBLANK(CloseDate)
)
// Bypasses the rule for System Admins

The problem: If the "System Administrator" profile is ever renamed to "Salesforce Admin" (a common rebranding), this bypass silently breaks. System admins start hitting the validation rule — and since the error message probably doesn't say why, they don't know what changed.

The fix:

AND(
  NOT($Permission.Bypass_Opportunity_Validation),
  ISPICKVAL(StageName, "Closed Won"),
  ISBLANK(CloseDate)
)

Create a Custom Permission named Bypass_Opportunity_Validation. Assign it via a Permission Set to the users who need the bypass. The Permission Set can be assigned to individuals, not entire profiles — so your integration user gets the bypass, but not every System Administrator by default. The bypass is auditable, narrowly scoped, and doesn't break when profiles are renamed.

5. Documentation Gaps: Rules Without Context

A rule with no description field and no clear owner is a liability. When something breaks at 11pm on a deal close date, the admin on call needs to understand what a rule does without reading formula logic line by line.

Documentation gaps also signal rules that were created quickly without review — which correlates with all four of the other problem categories. Rules with no description are more likely to have weak error messages, more likely to use $Profile.Name bypasses, and more likely to conflict with other rules on the object.

What a properly documented rule looks like:

Rule Name: Opportunity_Require_Close_Date_On_Won
Description: Requires Close Date to be set when Stage is Closed Won. Created 2024-03-15 by admin@company.com per Sales Ops request. Review with owner if behavior changes.
Error Message: "Close Date is required before marking this Opportunity as Closed Won. Set a date and save again."

That takes five minutes when you create the rule. It saves hours of debugging when something goes wrong.

Step-by-Step: Manual Audit Method

For orgs that want to run a manual audit before using an automated tool:

Step 1: Export active rules per object

Go to Setup → Object Manager → [Object] → Validation Rules. You'll see all rules — active and inactive — with their names, formulas, and error messages. There's no native export to CSV from this view; use Salesforce CLI (sf force:source:retrieve) or Workbench to pull your object metadata, which includes the full rule definitions.

Step 2: Grep for conflict indicators

In your exported metadata, look for:

Step 3: Test conflicts in sandbox

For any conflict candidates you identified, test them in a sandbox by attempting to save a record that would trigger both rules simultaneously. If you get a save error that you can't resolve by changing field values, you've confirmed a conflict.

This process is tractable for 10–20 rules on 2–3 objects. It doesn't scale to the average mature org, which has 50–200 active rules across 10+ objects.

Faster Path: The Free Luxera Validator

The Luxera Validation Rule Auditor runs all five category checks automatically from your validation rule metadata — no org access, no credentials, no installation.

Paste your rule metadata or upload your .object-meta.xml files. The validator detects:

You get a scored, prioritized output — the same five-category breakdown — with the specific rules that need attention. Most audits complete in under a minute.

Start with the validator to build your prioritized list, then use the manual method above to verify and remediate the top candidates.

What to Do After the Audit

Conflicting rules: Identify which rule reflects current business intent. Deactivate the other. Do not delete — keep it inactive with a note in the description explaining why it was deactivated. Deploy the deactivation via change set to sandbox first, test the previously-conflicting scenario, then deploy to production.

Redundant rules: Deactivate the more general rule. Keep the more specific one. Same deployment process.

Weak error messages: Edit the rule's error message in place. This doesn't require a change set for message-only changes. Rewrite to name the field, state the condition, and give the rep an action.

$Profile.Name bypasses: Create a Custom Permission, create a Permission Set that grants it, assign to relevant users, update the rule formula to use $Permission.. Test in sandbox. This is a behavior change — deploy carefully and communicate the change to the affected users before it goes live.

Documentation gaps: Add a description to every rule that currently has none. Include: what it enforces, why it was created, when it was created, and who owns it. Fifteen minutes of documentation work per rule pays dividends for every admin who inherits the org.

Ownership assignment: Every validation rule should have a named owner — the team or admin responsible for reviewing it quarterly. Ownerless rules become unreviewed rules become ghost rules that nobody knows the purpose of.

Frequently Asked Questions

Why are my Salesforce validation rules conflicting?
Validation rules conflict when two or more active rules have opposing logic under the same conditions — for example, one rule requires a field to be blank and another requires it to be populated when the same record type is saved. Salesforce evaluates all active rules in no guaranteed order on every save, so both conditions fire simultaneously, making the record unsaveable.

How do I find conflicting validation rules in Salesforce?
The manual method is to export rules per object from Setup → Object Manager → Validation Rules and compare formulas for opposing conditions. The faster method is the free Luxera Cloud Validation Rule Auditor — automated detection across all five problem categories from your rule metadata.

Is $Profile.Name safe to use in Salesforce validation rules?
No. $Profile.Name is fragile — if the profile is renamed, the bypass silently breaks. Use $Permission.CustomPermissionName via a Custom Permission and Permission Set instead for auditable, rename-safe bypasses.

What is a validation rule weak spot?
A rule with a generic, non-actionable error message — "Invalid value," "Error," "Please fix" — that fires correctly but gives the rep no information about what to fix or how. Weak spots increase help desk load because reps can't self-serve the resolution.

How many validation rules can you have per object in Salesforce?
Up to 500 per object on Enterprise/Unlimited. In practice, performance degrades long before that. Keep active rules to the minimum necessary; consolidate overlapping logic using AND/OR rather than creating separate rules.

Do validation rules run before or after Flows?
Validation rules run after triggers and Flows in Salesforce's order of execution. A Flow that updates a record's fields can trigger validation rules to fire — producing errors that look unrelated to the Flow. If you're seeing unexpected failures triggered by automations, check whether any active Flows update the fields your rules evaluate.

Next Steps

Validation rule chaos is a symptom, not the disease. The disease is admin debt — the accumulated weight of configuration decisions made without governance, documentation, or review.

The validation audit is one part of a complete org health picture. If your org also has unused custom fields, stale flows, or picklist sprawl, those issues compound each other. A rep blocked by a conflicting validation rule on a field that nobody uses anymore is a problem with two sources.

Luxera Cloud's full org scanner covers all five admin debt categories in one pass — including validation rule health. Founding Member pricing locks in early access for the first 50 seats.

Start with the free validator — it takes 60 seconds and will tell you exactly where your rules stand.

Join the Founding Member waitlist →