5

I need some quick help. I have created the following validation rule (See below) However I don’t want the validation rule to fire if User id = 00550000000lxVg

i think it be something like $UserRole.ID<> "00550000000lxVg" But where do i put this in my current validation ?

CONTAINS( 
TEXT(Client_Business_Type__c), 
'Pension' 
) 
&& 
ISPICKVAL(Pension_Fund_Type__c, "")

Looking forward to your help

2 Answers 2

5

If it is the userID you want to allow through, your validation rule will look like this:

IF(
 $User.Id == '00550000000lxVg', false,
 CONTAINS( TEXT(Client_Business_Type__c), 'Pension' ) && ISPICKVAL(Pension_Fund_Type__c, "")
)

What this does is evaluate the $User.Id, and if it matches the given on, simply returns false (which passes the Validation rule) otherwise (i.e for all other users) it goes on to evaluate your validation rule against the current criteria.

Obviously the hard-coding of ID values anywhere makes one shudder with the possibilities, but I am sure I too in the past have done this in Validation rules to allow certain Roles to skip them.

Incidentally in your question you do ask about a User ID being equal to something, and thenin your supposition you mention User Role Id - so make sure you have that bit clear in your mind too?

As an extra, you can "chain" these easy enough to "add" other users to the condition like this:

IF($User.Id == '00550000000lxVg', false, 
IF($User.Id == '00550000000lxWf', false, 
[...]
    CONTAINS( TEXT(Client_Business_Type__c), 'Pension' ) && ISPICKVAL(Pension_Fund_Type__c, "")
))

(remembering to close the relevant number of parentheses at the end) as the execution will just pass from IF to IF either escaping as false or moving on to the next evaluation.

4
  • HI Simon -All i want to do is say if user id = 00550000000lxVg then skip validation however if any other user id validation needs to apply. So i assume this will be correct IF( $User.Id == '00550000000lxVg', false, CONTAINS( TEXT(Client_Business_Type__c), 'Pension' ) && ISPICKVAL(Pension_Fund_Type__c, "") )
    – user8746
    Commented Jun 11, 2014 at 15:03
  • yep. that's spot on. as per my first bit of code snippet. just thought an explanation + extension might be useful for future people who come across this via searching :) Commented Jun 11, 2014 at 15:18
  • You could refine this by keeping the user ID in a label (eg. $Label.Privileged_User_ID ).
    – Jagular
    Commented Jun 11, 2014 at 15:20
  • Hi Simon- Thank you for detailed explanation. it will help me in the future :) i may need to exclude different user ids. so it will def help :)
    – user8746
    Commented Jun 11, 2014 at 15:29
1

Alternative, you can use:

AND($User.Id != '00550000000lxVg', CONTAINS( TEXT(Client_Business_Type__c), 'Pension' ) && ISPICKVAL(Pension_Fund_Type__c, ""))

Same thing but formatted for easier reading:

AND
(
  $User.Id != '00550000000lxVg',
  CONTAINS( TEXT(Client_Business_Type__c), 'Pension' ) && ISPICKVAL(Pension_Fund_Type__c, "")
)

EDIT: You can add as many parameters as you want within the AND.

You must log in to answer this question.

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