Skip to main content
I have a validation rule which prevents users from skipping stages in opportunities.  Here's how it looks;

 

OR(

 

AND(ISNEW(),NOT(ISPICKVAL(StageName, 'Nurture')),RecordType.DeveloperName='Sales'),

 

AND(

 

ISCHANGED(StageName),RecordType.DeveloperName='Sales',

 

OR(

 

AND(

 

ISPICKVAL(PRIORVALUE(StageName), 'Nurture'),

 

NOT(ISPICKVAL(StageName, 'Discovery')),

 

NOT(ISPICKVAL(StageName, 'Closed Lost'))

 

),

 

AND(

 

ISPICKVAL(PRIORVALUE(StageName), 'Discovery'),

 

NOT(ISPICKVAL(StageName, 'Nurture')),

 

NOT(ISPICKVAL(StageName, 'Solve & Present')),

 

NOT(ISPICKVAL(StageName, 'Closed Lost'))

 

),

 

AND(

 

ISPICKVAL(PRIORVALUE(StageName), 'Solve & Present'),

 

NOT(ISPICKVAL(StageName, 'Discovery')),

 

NOT(ISPICKVAL(StageName, 'Proof')),

 

NOT(ISPICKVAL(StageName, 'Closed Lost'))

 

),

 

AND(

 

ISPICKVAL(PRIORVALUE(StageName), 'Proof'),

 

ISPICKVAL(PRIORVALUE(StageName), 'Proof'),

 

NOT(ISPICKVAL(StageName, 'Solve & Present')),

 

NOT(ISPICKVAL(StageName, 'Contracting')),

 

NOT(ISPICKVAL(StageName, 'Closed Lost'))

 

),

 

AND(

 

ISPICKVAL(PRIORVALUE(StageName), 'Contracting'),

 

NOT(ISPICKVAL(StageName, 'Proof')),

 

NOT(ISPICKVAL(StageName, 'Closed Won')),

 

NOT(ISPICKVAL(StageName, 'Closed Lost'))

 

),

 

AND(

 

ISPICKVAL(PRIORVALUE(StageName), 'Closed Won'),

 

NOT(ISPICKVAL(StageName, 'Contracting')),

 

NOT(ISPICKVAL(StageName, 'Closed Lost'))

 

)

 

)

 

)

 

)

 

I would like to make an exception the this validation rule if opportunity type = Renewal or Other.  I thought these rules were executed top down so I thought I could just add to the top;

 

AND

 

(

 

NOT(ISPICKVAL(Type, "Renewal")),

 

NOT(ISPICKVAL(Type, "Other"))

 

),

 

However, I still get the message that I cannot bypass the stages and was hoping someone could help teach me the proper way to make this exception to my validation rule.

 

Thanks!

 

 
2 réponses
  1. 11 nov. 2020, 01:07
    Hi George,

     

    You may try with below updated formula:

     

    AND(

     

    NOT(ISPICKVAL(Type, "Renewal")),

     

    NOT(ISPICKVAL(Type, "Other")),

     

    OR(

     

    AND(ISNEW(),NOT(ISPICKVAL(StageName, 'Nurture')),RecordType.DeveloperName='Sales'),

     

    AND(

     

    ISCHANGED(StageName),RecordType.DeveloperName='Sales',

     

    OR(

     

    AND(

     

    ISPICKVAL(PRIORVALUE(StageName), 'Nurture'),

     

    NOT(ISPICKVAL(StageName, 'Discovery')),

     

    NOT(ISPICKVAL(StageName, 'Closed Lost'))

     

    ),

     

    AND(

     

    ISPICKVAL(PRIORVALUE(StageName), 'Discovery'),

     

    NOT(ISPICKVAL(StageName, 'Nurture')),

     

    NOT(ISPICKVAL(StageName, 'Solve & Present')),

     

    NOT(ISPICKVAL(StageName, 'Closed Lost'))

     

    ),

     

    AND(

     

    ISPICKVAL(PRIORVALUE(StageName), 'Solve & Present'),

     

    NOT(ISPICKVAL(StageName, 'Discovery')),

     

    NOT(ISPICKVAL(StageName, 'Proof')),

     

    NOT(ISPICKVAL(StageName, 'Closed Lost'))

     

    ),

     

    AND(

     

    ISPICKVAL(PRIORVALUE(StageName), 'Proof'),

     

    ISPICKVAL(PRIORVALUE(StageName), 'Proof'),

     

    NOT(ISPICKVAL(StageName, 'Solve & Present')),

     

    NOT(ISPICKVAL(StageName, 'Contracting')),

     

    NOT(ISPICKVAL(StageName, 'Closed Lost'))

     

    ),

     

    AND(

     

    ISPICKVAL(PRIORVALUE(StageName), 'Contracting'),

     

    NOT(ISPICKVAL(StageName, 'Proof')),

     

    NOT(ISPICKVAL(StageName, 'Closed Won')),

     

    NOT(ISPICKVAL(StageName, 'Closed Lost'))

     

    ),

     

    AND(

     

    ISPICKVAL(PRIORVALUE(StageName), 'Closed Won'),

     

    NOT(ISPICKVAL(StageName, 'Contracting')),

     

    NOT(ISPICKVAL(StageName, 'Closed Lost'))

     

    )

     

    )

     

    )

     

    )

     

    )
0/9000