Salesforce Admin Zero to Hero - Module 12: Validation Rules | SF Interview Pro
🛡️ Salesforce Admin Zero to Hero — Module 12 of 25
Validation Rules
The final module of Phase 3. Formula Fields calculate a display value — Validation Rules BLOCK a save entirely when data does not meet a standard. This is where data quality actually gets enforced.
Module 12 of 25 · Phase 3: Formulas & Validation (Final Module)
🏁 This closes out Phase 3: Formulas & Validation. Modules 11 and 12 built the calculation and enforcement layer directly on top of the Phase 2 data model. Phase 4 begins in Module 13 with Flow Fundamentals — the largest phase in this course.
🎯 What You Will Master in This Module
A Validation Rule uses the exact same formula language from Module 11, but for a fundamentally different purpose: instead of calculating a value to display, it evaluates a condition and BLOCKS the save entirely if that condition is true, showing the user a custom error message. This is the primary declarative tool for enforcing data quality at the point of entry.
✓ How a Validation Rule actually works — the TRUE-blocks-save logic that trips up beginners
✓ ISCHANGED and PRIORVALUE — validating based on what changed, not just current state
✓ Error message placement — top of page vs a specific field, and why it matters
✓ Where Validation Rules sit in the Order of Execution, and why that timing matters
✓ Bypassing Validation Rules safely — for data loads, integrations, and specific Profiles
✓ Common Validation Rule anti-patterns that frustrate users unnecessarily
✓ Designing a real, multi-condition Validation Rule for an actual business requirement
📋 In This Module
Concept 1 of 7
How Validation Rules Actually Work — The TRUE-Blocks-Save Logic
This is the single most common point of confusion for beginners: a Validation Rule's formula must evaluate to TRUE for the ERROR to fire and the save to be blocked. This is the OPPOSITE direction from how most people initially think about it — you are not writing "the condition that must be true to save successfully," you are writing "the condition that describes the BAD data you want to reject."
⚡ Why This Matters
Writing a Validation Rule backwards — describing what SHOULD be true instead of what should NOT be true — is an extremely common beginner mistake that either blocks every single save (rule always evaluates true) or blocks nothing at all (rule never evaluates true), and the formula looks "correct" at a glance either way, making the bug genuinely hard to spot without understanding this core logic first.
Requirement: "Amount must be greater than zero."
WRONG instinct (describes what SHOULD be true):
Amount > 0
→ This is TRUE for every valid record, meaning the rule
fires an error on every single valid save. Backwards.
CORRECT (describes the BAD data to reject):
Amount <= 0
→ This is TRUE only when Amount is invalid (zero or negative),
which is exactly when you want the error to fire.
The mental flip: "when should this rule STOP someone,"
not "what does a good record look like."
🛠️ Hands-On: Build Your First Validation Rule
1Setup → Object Manager → Opportunity → Validation Rules → New
2Rule Name:
Amount_Must_Be_Positive3Error Condition Formula:
Amount <= 04Error Message:
Amount must be greater than zero.5Save, then try to save an Opportunity with Amount set to 0 or left blank as 0 → confirm the save is blocked with your custom error message.
6Now try saving with a positive Amount → confirm the save succeeds normally, since the error condition formula evaluates to FALSE for valid data.
⚠️ Critical Gotcha — Blank Fields in Validation Rules Behave Like Formula Fields
Just like the ISBLANK() guarding discussed in Module 11, a Validation Rule referencing a field that might be blank needs the same careful handling. A formula like
Discount__c > 20 will NOT fire if Discount__c is genuinely blank (blank is not greater than 20, but it is also not caught as invalid if blank itself should be disallowed) — if blank values should also be rejected, the formula needs an explicit OR with ISBLANK(), such as OR(ISBLANK(Discount__c), Discount__c > 20).Concept 2 of 7
ISCHANGED & PRIORVALUE — Validating What Changed
Some validation requirements are not about the current state of a field, but about HOW it changed — "Stage cannot move backward," "this field cannot be edited once set." ISCHANGED() checks whether a field's value differs from what it was before this save, and PRIORVALUE() lets you reference the actual OLD value for comparison logic.
⚡ Why This Matters
Without ISCHANGED(), a Validation Rule checking a field's current value would fire EVERY time a record is saved, even when that specific field was not touched at all — which is usually not the intended behavior for change-specific business rules like "you cannot re-open a Closed Won deal."
| Function | What It Does | Example Use |
|---|---|---|
| ISCHANGED(field) | True if the field's value is different on this save compared to before | Only validate Stage-related logic when Stage actually changed |
| PRIORVALUE(field) | Returns the field's value as it was BEFORE this save (only usable on existing/edited records) | Compare old Amount to new Amount to detect a large decrease |
| ISNEW() | True only when the record is being created for the first time (not an edit) | Apply a rule only at creation, never on subsequent edits |
🛠️ Hands-On: Build a Change-Aware Validation Rule
1Setup → Object Manager → Opportunity → Validation Rules → New
2Rule Name:
Cannot_Reopen_Closed_Won3Error Condition Formula:
AND(ISCHANGED(StageName), PRIORVALUE(StageName) = "Closed Won", StageName != "Closed Won")4Error Message:
This Opportunity was already Closed Won and cannot be moved to a different Stage.5Save, then test: move an Opportunity to Closed Won, save it, then try to change Stage to something else → confirm the save is blocked.
6Now save the SAME Closed Won Opportunity without changing Stage at all (edit a different field like Description) → confirm the save succeeds, proving ISCHANGED() correctly prevents the rule from firing on unrelated edits.
💡 PRIORVALUE() Only Works on Edits, Not New Records
Since a brand-new record has no "prior" state, PRIORVALUE() and ISCHANGED() are only meaningful on record edits. If a Validation Rule using these functions runs during record CREATION, ISCHANGED() typically evaluates as if every field changed (from nothing to something), which is worth testing explicitly rather than assuming, since edge-case behavior here is a common source of unexpected rule firing.
Concept 3 of 7
Error Message Placement — Top of Page vs a Specific Field
A Validation Rule's error message can be displayed in one of two locations: at the TOP of the page (a general banner), or attached directly to a SPECIFIC FIELD, appearing right next to the problematic input. Choosing correctly makes a real difference in how quickly a user understands and fixes the problem.
⚡ Why This Matters
A vague top-of-page error on a long record with 40 fields leaves the user hunting for what actually went wrong. An error message attached directly to the specific offending field points them straight to the fix, dramatically reducing confusion and support tickets asking "what does this error even mean."
| Placement | When to Use |
|---|---|
| Top of Page | The error involves multiple fields together, or there is no single obvious field to attach it to |
| Field-Specific | The error is clearly about ONE specific field's value — always prefer this when applicable |
🛠️ Hands-On: Compare Both Placement Options
1Go back to your
Amount_Must_Be_Positive rule from Concept 1 → Edit2Find the Error Location setting → change it from
Top of Page to Field, and select Amount from the dropdown.3Save, then trigger the error again by saving with Amount = 0 → notice the error now appears directly beneath the Amount field itself, rather than as a general banner at the top.
4Now consider your Concept 2 rule (
Cannot_Reopen_Closed_Won) — since this error is about a STAGE CHANGE ATTEMPT rather than a single field's raw value being wrong, Top of Page (or attaching it to StageName) both make reasonable sense; field-specific attachment is most valuable when the failure is unambiguously about ONE field's content.⚠️ Common Gotcha — Vague Error Messages Frustrate Users
An error message like "Invalid data" or "Validation failed" gives a user zero actionable information about what to actually fix. Always write error messages that clearly state WHAT is wrong and, ideally, WHAT TO DO about it — for example, "Amount must be greater than zero. Please enter the deal value before saving." rather than just "Amount is invalid." This small writing habit meaningfully reduces support burden.
Concept 4 of 7
Validation Rules in the Order of Execution
Validation Rules do not run in isolation — they fire at a specific, predictable point relative to other save-time logic like assignment rules, before-save Flows, and duplicate rules. Module 15 covers the FULL Order of Execution in depth, but understanding roughly where Validation Rules sit is essential context for this module.
⚡ Why This Matters
If a Validation Rule and a before-save Flow both touch the same field, knowing which runs FIRST determines whether the Validation Rule sees the Flow's updated value or the original user-entered value — getting this wrong produces confusing, hard-to-debug behavior where a rule seems to fire (or not fire) unpredictably.
Simplified save-time order (full detail in Module 15):
1. System validation (required fields, data type checks)
2. Before-save Record-Triggered Flows and before triggers
3. Duplicate Rules (Module 10)
4. VALIDATION RULES ← runs here, AFTER before-save automation
5. Save to database (assignment of Record ID, etc.)
6. After-save Record-Triggered Flows and after triggers
7. Assignment rules, auto-response rules, workflow rules (legacy)
Key takeaway: Validation Rules see the RECORD STATE as it exists
AFTER before-save Flows have already run — not the raw,
originally-submitted user input.
🛠️ Hands-On: Reason Through a Timing Scenario
1Scenario: a before-save Flow automatically sets a Discount field to 0 whenever it is left blank on a new Opportunity, BEFORE the record actually saves.
2Question: if a Validation Rule checks
ISBLANK(Discount__c) to reject blank discounts, will it ever actually fire on a new record, given the Flow above?3Reasoning: since the before-save Flow runs BEFORE Validation Rules in the order of execution, by the time the Validation Rule evaluates, Discount__c is no longer blank — it was already set to 0 by the Flow. The ISBLANK() check would never fire in this scenario, which may or may not be the intended behavior.
4This is exactly the kind of interaction between automation layers that becomes genuinely important once Flow is introduced starting in Module 13 — filing this timing question away now will make Module 15's full Order of Execution discussion click much faster.
💡 Validation Rules Cannot Be "Skipped" by Automation Running Before Them in the Wrong Direction
Because Validation Rules run relatively late in the save process, they act as a genuine final gate — no matter what Flow or trigger logic ran beforehand, if the record's final state at the point Validation Rules evaluate violates a rule, the save is still blocked. This is exactly why Validation Rules are considered Salesforce's most reliable declarative data quality enforcement mechanism.
Concept 5 of 7
Bypassing Validation Rules Safely
Sometimes a Validation Rule that is correct for normal user data entry is genuinely wrong for a specific scenario — a historical data migration (Module 10) loading old records that do not meet a NEW validation standard, or an integration user submitting data through a different, already-validated system. Salesforce provides deliberate mechanisms to bypass Validation Rules in these specific, controlled cases.
⚡ Why This Matters
Without a bypass strategy, a legitimate historical data load can be blocked entirely by a Validation Rule that was only ever intended to apply to NEW data entered going forward — forcing an Admin into the bad practice of temporarily deactivating the rule for everyone, which removes protection during the exact window when a large, risky load is happening.
| Bypass Approach | How It Works |
|---|---|
| $Profile / $Permission checks in the formula | Wrap the rule's logic in a check like AND($Profile.Name != "Data Migration User", ...) so specific Profiles are exempt |
| Custom Permission-based bypass | Create a Custom Permission, assign it via Permission Set to specific users/integrations, and reference $Permission.Bypass_Validation in the formula |
| Temporary deactivation (last resort) | Uncheck "Active" on the rule during a controlled load window, then reactivate immediately after — riskier since it removes protection for ALL users during that window |
🛠️ Hands-On: Build a Custom Permission Bypass
1Setup → Quick Find → Custom Permissions → New → Label
Bypass Validation Rules, API Name auto-fills → Save.2Create a Permission Set (Module 6 skill) called
Data Migration Bypass → add the Bypass Validation Rules Custom Permission to it.3Go back to your
Amount_Must_Be_Positive rule → Edit the formula to: AND(NOT($Permission.Bypass_Validation_Rules), Amount <= 0)4Save. Test: without the Permission Set assigned, the rule still fires normally. Assign the
Data Migration Bypass Permission Set to your Test User, then confirm they CAN now save an Opportunity with Amount = 0, while your own (non-bypassed) user still cannot.⚠️ Common Gotcha — Temporary Deactivation Removes Protection for Everyone
Simply unchecking a Validation Rule's Active checkbox during a data load is tempting because it is fast, but it removes that rule's protection for EVERY user, not just the migration process — meaning any regular user entering data through the normal UI during that window is also unprotected, potentially letting bad data in through the front door while the rule is off. The Custom Permission bypass approach is safer precisely because it is scoped to only the specific process or users that genuinely need the exception.
Concept 6 of 7
Common Validation Rule Anti-Patterns
Certain Validation Rule design mistakes show up repeatedly across real orgs — usually well-intentioned, but ending up frustrating users, blocking legitimate work, or becoming genuinely difficult to maintain. Recognizing these patterns helps design rules that enforce quality without becoming an obstacle to real work.
⚡ Why This Matters
A Validation Rule that is TOO strict trains users to find workarounds — entering placeholder data just to get past the rule, which often produces WORSE data quality than having no rule at all. Good Validation Rule design is a genuine balance, not just "add more rules."
| Anti-Pattern | Why It's a Problem |
|---|---|
| Overly rigid rules with no bypass path | Blocks legitimate edge cases and data migrations with no escape valve, as covered in Concept 5 |
| Too many rules on one object | Stacking dozens of rules makes it hard to predict which one will fire, and slows down troubleshooting significantly |
| Rules that fire on every save regardless of relevance | Missing ISCHANGED() checks (Concept 2) means a rule re-validates fields that were not even touched, annoying users making unrelated edits |
| Vague, unhelpful error messages | Covered in Concept 3 — increases support burden and user frustration |
| Business logic that should be a Flow instead | A Validation Rule can only block a save — if the real need is to fix or set a value automatically, a before-save Flow is the correct tool, not a rule that just blocks and complains |
🛠️ Hands-On: Audit Your Rules Against These Anti-Patterns
1Setup → Object Manager → Opportunity → Validation Rules → review the two rules you have built (Concepts 1 and 2).
2Check: does
Amount_Must_Be_Positive have a bypass path? It currently does, from Concept 5 — confirm this.3Check: does
Cannot_Reopen_Closed_Won use ISCHANGED() correctly so it does not fire on unrelated edits? Confirm this from your Concept 2 testing.4Ask yourself: if a THIRD requirement came in — "automatically set Probability to 100% when Stage becomes Closed Won" — should this be a new Validation Rule, or something else? Recognize this is a WRITE operation (setting a value), which Validation Rules cannot do — this belongs in Flow (Module 15), not another Validation Rule.
⚠️ Common Gotcha — Validation Rules Cannot Fix Data, Only Reject It
A Validation Rule has exactly one capability: block the save and show an error message. It cannot automatically correct, default, or adjust a field's value — that requires a Formula Field (Module 11, for calculated display values) or a Flow (Module 13-15, for actually writing corrected values). A common design mistake is reaching for a Validation Rule when the real requirement is "fix this automatically," which a Validation Rule structurally cannot do.
Concept 7 of 7
Designing a Real, Multi-Condition Validation Rule
This final concept combines everything from this module into one realistic, multi-condition Validation Rule — the kind of layered business requirement that shows up regularly in real Admin work and is a common practical test in interviews and certification exams alike.
⚡ Why This Matters
Real validation requirements rarely involve just one simple condition — they typically combine field state, change detection, and bypass logic together. Being able to decompose a plain-language business rule into the right combination of AND/OR/ISCHANGED/PRIORVALUE is the practical skill this module has been building toward.
Requirement: "When an Opportunity's Stage is changed TO
'Negotiation' or later, the Amount must be filled in and greater
than zero, UNLESS the user has the Bypass Validation Rules
Custom Permission (for data migration scenarios)."
Formula, built up piece by piece:
AND(
NOT($Permission.Bypass_Validation_Rules),
ISCHANGED(StageName),
OR(
StageName = "Negotiation",
StageName = "Closed Won"
),
OR(
ISBLANK(Amount),
Amount <= 0
)
)
Notice: the bypass check (Concept 5), ISCHANGED (Concept 2),
an OR for multiple qualifying Stages, and an OR with ISBLANK
guarding the Amount check (Module 11 principle) — all combined.
🛠️ Hands-On: Build This Exact Rule in Your Org
1Setup → Object Manager → Opportunity → Validation Rules → New
2Rule Name:
Amount_Required_At_Negotiation3Enter the complete formula from the diagram above.
4Error Location:
Field, select Amount. Error Message: Amount is required and must be greater than zero once an Opportunity reaches Negotiation or later.5Test all the paths: moving Stage to Negotiation with blank Amount (should block), moving to Negotiation with a valid Amount (should succeed), editing an unrelated field on a record already at Negotiation without changing Stage (should succeed, due to ISCHANGED), and testing with your Concept 5 bypass Permission Set assigned (should succeed regardless of Amount).
⚠️ Module Wrap-Up — Phase 3 Complete
Phase 3 is now fully complete: Formula Fields for calculated display values, and Validation Rules for enforcing save-time data quality, together give you the complete declarative toolkit for logic that does not require full automation. Module 13 begins Phase 4: Flow & Automation — the largest phase in this entire course, covering Screen Flows, Record-Triggered Flows, the full Order of Execution, Approval Processes, and legacy automation tools, building directly on the formula skills and data-quality mindset from this phase.
💬 Module 12 Interview Questions (6)
Q1A new Admin writes a Validation Rule with the formula
Amount > 0, intending to require a positive Amount, but the rule blocks every single save regardless of the value entered. What went wrong?The Admin wrote the formula backwards relative to how Validation Rules actually evaluate. A Validation Rule's error condition formula must evaluate to TRUE specifically for the BAD data that should be rejected, not for the good data that should be allowed through. The formula
Amount > 0 evaluates to TRUE whenever Amount is a valid positive number, meaning the rule fires its error precisely on every legitimate, correctly-entered record, while a record with Amount at zero or negative, which is actually the invalid case, would evaluate to FALSE and save without triggering any error at all — the exact opposite of the intended behavior. The correct formula should describe the invalid condition directly, such as Amount <= 0, which only evaluates TRUE when the data is genuinely bad, correctly blocking only the records that should be blocked."The formula describes what SHOULD be true rather than what should NOT be true — Validation Rules fire their error when the formula evaluates TRUE, so the formula must describe the bad data to reject (Amount <= 0), not the good data to allow (Amount > 0), which is exactly backwards from what was written."
Q2Why would a Validation Rule checking Stage-related logic specifically need ISCHANGED(StageName) rather than just checking the current StageName value directly?
Without ISCHANGED(StageName), a Validation Rule checking the current Stage value would re-evaluate and potentially fire its error on EVERY save of that record, even when a user is editing a completely unrelated field like Description or a custom text field, and Stage itself was never touched during that particular save. This creates a frustrating experience where users are blocked by a Stage-related validation error while trying to make an entirely unrelated edit, since the rule cannot distinguish between "Stage is currently at this value" and "Stage was JUST changed TO this value during this specific save." Wrapping the relevant Stage condition in ISCHANGED(StageName) ensures the rule's Stage-specific logic only evaluates when Stage itself was actually part of the current save's changes, correctly scoping the validation to genuine Stage transitions rather than firing indiscriminately on any edit to the record.
"Without ISCHANGED(StageName), the rule would re-fire on every save regardless of whether Stage was actually touched, blocking users making completely unrelated edits — ISCHANGED() scopes the validation specifically to genuine Stage transitions, not just Stage's current value existing on the record."
Q3A data migration needs to load 10,000 historical Opportunity records that do not meet a Validation Rule introduced last month. What is the safest way to allow this load without compromising ongoing data quality for regular users?
The safest approach is a Custom Permission-based bypass rather than temporarily deactivating the Validation Rule entirely. This involves creating a Custom Permission, assigning it via a dedicated Permission Set to only the specific integration user or migration process performing this load, and modifying the Validation Rule's formula to include a check like
AND(NOT($Permission.Bypass_Validation_Rules), [original condition]), so the rule only skips its check for users who explicitly have that Custom Permission assigned. This is significantly safer than simply unchecking the rule's Active status during the load window, because a full deactivation removes the rule's protection for EVERY user in the org during that period, including regular users entering data through the normal UI, potentially allowing bad data in through the front door precisely while the safeguard is disabled. The Custom Permission approach scopes the exception narrowly to only the migration process that genuinely needs it, leaving normal data entry fully protected throughout."Use a Custom Permission-based bypass scoped only to the migration user via a Permission Set, rather than deactivating the rule entirely — full deactivation removes protection for every user org-wide during the load window, while the Custom Permission approach keeps regular data entry fully protected."
Q4A requirement states: "When Stage moves to Closed Won, automatically set Probability to 100%." Can this be implemented as a Validation Rule? Why or why not, and what should be used instead?
No, this cannot be implemented as a Validation Rule, because a Validation Rule has exactly one capability: evaluating a condition and either allowing the save to proceed or blocking it with an error message — it has no ability to WRITE or modify any field's value, including the very record it is evaluating. Automatically SETTING Probability to a specific value based on Stage is fundamentally a write operation, which is structurally outside what any Validation Rule, or any pure formula-based mechanism, can perform. The correct tool for this requirement is a before-save Record-Triggered Flow, covered starting in Module 13 and 15, which specifically can detect that Stage has changed to Closed Won and then update the Probability field on that same record as part of the save process, something no Validation Rule can ever do since it lacks any write capability entirely.
"No — Validation Rules can only block a save with an error, they cannot write or set any field value, including on the record being evaluated. Automatically setting Probability based on Stage requires a before-save Record-Triggered Flow, which can actually perform the write operation a Validation Rule structurally cannot."
Q5An org has a before-save Flow that automatically fills in a blank Discount field with 0, and a Validation Rule that rejects blank Discount values. The Validation Rule never seems to fire, even when users leave Discount blank. Why?
This happens because of the Order of Execution timing between before-save Flows and Validation Rules: before-save Record-Triggered Flows run BEFORE Validation Rules evaluate, meaning by the time the Validation Rule checks whether Discount is blank, the before-save Flow has already run and set it to 0, so the field is no longer genuinely blank from the Validation Rule's perspective. The Validation Rule is not malfunctioning — it is correctly evaluating the record's actual state at the point it runs, which reflects the ALREADY-DEFAULTED value from the Flow, not the raw, originally blank value the user actually submitted. If the business genuinely wants to reject blank submissions rather than silently defaulting them, either the before-save Flow's defaulting logic needs to be reconsidered, or the Validation Rule needs to check a condition the Flow does not overwrite, since checking for blank Discount after a Flow already fills it in will structurally never catch the original blank submission.
"Before-save Flows run before Validation Rules in the Order of Execution, so by the time the rule checks for a blank Discount, the Flow has already defaulted it to 0 — the rule is correctly evaluating the post-Flow record state, not the user's original blank submission, so it can structurally never catch this case as written."
Q6Design a Validation Rule (describe the logic) enforcing: "Once an Opportunity reaches Negotiation stage or later, Amount must be filled in and positive, unless the user has a specific bypass permission." What functions does this require and why?
This requires several elements combined with AND logic across the whole rule. First, a bypass check using NOT($Permission.Bypass_Validation_Rules) must wrap the entire condition, since if this Custom Permission is assigned, the rule should never fire regardless of any other condition, directly addressing the migration/integration exception scenario. Second, ISCHANGED(StageName) scopes the rule so it only evaluates when Stage itself was actually part of the current save, preventing the rule from firing on unrelated edits to records already sitting at Negotiation or later. Third, an OR combining StageName equals "Negotiation" and StageName equals "Closed Won" (or additional later stages as needed) captures the "Negotiation or later" requirement, since a simple equals check against one Stage alone would not cover multiple qualifying stages. Fourth, an OR combining ISBLANK(Amount) with Amount less than or equal to zero correctly catches BOTH ways Amount could be invalid — genuinely blank, or present but zero/negative — mirroring the blank-field guarding principle from Formula Fields in Module 11, since checking Amount <= 0 alone would not catch a truly blank field.
"Requires NOT($Permission...) wrapping everything for the bypass exception, ISCHANGED(StageName) to scope it to actual Stage transitions, an OR across the qualifying Stage values for 'Negotiation or later', and an OR combining ISBLANK(Amount) with Amount <= 0 to catch both blank and invalid-but-present Amount values — all combined with AND at the top level."
📝 Module 12 Recap — Validation Rules Mastered, Phase 3 Complete
✅ A Validation Rule's formula must evaluate TRUE to BLOCK the save — describe the bad data to reject, not the good data to allow
✅ ISCHANGED() scopes a rule to genuine field transitions; PRIORVALUE() lets you compare against the old value; without these, rules can fire on unrelated edits
✅ Prefer field-specific error placement over vague top-of-page banners whenever the error clearly relates to one field
✅ Validation Rules run AFTER before-save Flows in the Order of Execution — they see the post-automation record state, not raw user input
✅ Bypass via Custom Permission scoped to specific users/integrations is safer than temporarily deactivating a rule for everyone
✅ Validation Rules can only block and complain — they cannot fix or set values; that requires Flow (write) or Formula Fields (calculated display)
✅ Real rules combine bypass logic, ISCHANGED, multi-value OR conditions, and blank-guarding together — decomposing the requirement piece by piece is the core skill
🎯 Module 12 Practical Checklist — Complete These in Your Org
1. Build a simple Validation Rule enforcing a positive numeric field, testing the TRUE-blocks-save logic explicitly.
2. Build a change-aware rule using ISCHANGED() and PRIORVALUE() that only fires on a specific field transition.
3. Set one rule's Error Location to a specific field and compare the user experience to a Top of Page error.
4. Build a Custom Permission bypass and confirm a Permission Set-assigned user can skip the rule while others cannot.
5. Build the full multi-condition Amount-required-at-Negotiation rule from Concept 7, testing all four scenarios.
Phase 3 is done. Module 13 begins Phase 4: Flow & Automation — the largest phase in this course, starting with Flow Fundamentals and Screen Flows.
2. Build a change-aware rule using ISCHANGED() and PRIORVALUE() that only fires on a specific field transition.
3. Set one rule's Error Location to a specific field and compare the user experience to a Top of Page error.
4. Build a Custom Permission bypass and confirm a Permission Set-assigned user can skip the rule while others cannot.
5. Build the full multi-condition Amount-required-at-Negotiation rule from Concept 7, testing all four scenarios.
Phase 3 is done. Module 13 begins Phase 4: Flow & Automation — the largest phase in this course, starting with Flow Fundamentals and Screen Flows.
Test yourself on this topic
2,244 practice MCQs across 27 quizzes — 5 quizzes free, no signup
RK
Written by
Rajnish Kumar
Salesforce Developer · Apex, LWC, Data Cloud & AI · Building SF Interview Pro
Keep Preparing
Practice with real people
Join the free Mock Interview Community — practice with peers, get honest feedback, and walk into your real interview confident.
Join the Community ↗