I have an validation rule on the Opportunity Object which disallows reselecting previous stages based on stage values from 1-8.

These are my stages:

01 - Identifying an Opportunity Open    
02 - Determining Problem, Impact, Ideal
03 - Validating Benefits & Value
04 - Confirming Value with Power
05 - Negotiating $$ & Mutual Plan
06 - Finalizing Closure
07 - Pending
08 - Closed Won
08 - Closed Lost
08 - Closed Lost (alternative Quote)

And this is my validation rule so far:

(PRIORVALUE(stage_value__c) > stage_value__c),
(PRIORVALUE(stage_value__c) = 8)

As you can see I have several values in stage 8. Now I want the user to be allowed to change values from stage 8 to another stage 8 value.

How can I archieve this?

  • try this AND( (PRIORVALUE(VALUE(stage_value__c)) > VALUE(stage_value__c)), (PRIORVALUE(VALUE(stage_value__c)) = 8) ) Commented May 27, 2021 at 13:14

2 Answers 2


You're validation rule can just be

PRIORVALUE(stage_value__c) > stage_value__c

This would prevent moving backward at all. So this would also prevent the stage from moving out of Stage 8, but allow users to move to other Stage 8s. What you have would prevent the user from moving from one Stage 8 to another Stage 8.


Validations rules fire when the condition evaluates to true. So it sounds like the basic logic should only fire an error when the stage value is changed, and it is an earlier stage. Try this:

  stage_value__c < PRIORVALUE(stage_value__c)

Should allow users to change the stage to any value at the current level, or a greater level, raising an error only when the stage is changed to a lower level.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .