Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Sales Force Useful Validation Formulas

Download as pdf or txt
Download as pdf or txt
You are on page 1of 32

USEFUL VALIDATION RULES

Available in: Contact Manager, Group, Professional, Enterprise, Unlimited, Developer, and Database.com Editions

User Permissions Needed To view field validation rules: To define or change field validation rules: View Setup and Configuration Customize Application

Use the following samples for validation rules in Salesforce and Force.com AppExchange apps, including: Account Validation Rules Contact Validation Rules Opportunity Management Validation Rules Quote Validation Rules Call Center Validation Rules User, Role, and Profile Validation Rules Account Address Validation Rules Date Validation Rules Number Validation Rules Cross Object Validation Rules Community Validation Rules (Answers and Ideas) Other Validation Rules

Account Address Validation Rules


Canadian Billing Postal Code
Field Description: Value Validates that the account Billing Zip/Postal Code is in the correct format if Billing Country is Canada.

Copyright 2000-2011 salesforce.com, inc. All rights reserved.

Last updated: June 7, 2011

Useful Validation Rules

Field Formula:

Value
AND( OR(BillingCountry = "CAN", BillingCountry = "CA", BillingCountry = "Canada"), NOT(REGEX(BillingPostalCode, "((?i)[ABCEGHJKLMNPRSTVXY]\\d[A-Z]?\\s?\\d[A-Z]\\d)?")) )

Error Message: Error Location:

Canadian postal code must be in A9A 9A9 format. Billing Zip/Postal Code

Billing Zip Code Is in Billing State


Field Description: Value Validates that the account Billing Zip/Postal Code is valid by looking up the first five characters of the value in a custom object called Zip_Code__c that contains a record for every valid zip code in the US. If the zip code is not found in the Zip_Code__c object, or the Billing State does not match the corresponding State_Code__c in the Zip_Code__c object, an error is displayed.
VLOOKUP( $ObjectType.Zip_Code__c.Fields.City__c , $ObjectType.Zip_Code__c.Fields.Name , LEFT(BillingPostalCode,5)) <> BillingCity

Formula:

Error Message: Error Location:

Billing Zip Code does not exist in specified Billing State. Billing Zip/Postal Code

US Billing Zip Code


Field Description: Formula: Value Validates that the account Billing Zip/Postal Code is in 99999 or 99999-9999 format if Billing Country is USA or US.
AND( OR(BillingCountry = "USA", BillingCountry = "US"), NOT(REGEX(BillingPostalCode, "\\d{5}(-\\d{4})?")) )

Note: This example uses the REGEX function; see Shipping Zip Code on page 3 if you are not familiar with regular expressions. Error Message: Error Location: Zip code must be in 99999 or 99999-9999 format. Billing Zip/Postal Code

Useful Validation Rules

Shipping Zip Code


Field Description: Formula: Value Validates that the account Shipping Zip/Postal Code is in 99999 or 99999-9999 format if Shipping Country is USA or blank.
AND( OR(ShippingCountry = "USA", ISBLANK(ShippingCountry)), OR( AND(LEN(ShippingPostalCode) <>5, LEN(ShippingPostalCode) <> 10), NOT(CONTAINS("0123456789", LEFT( ShippingPostalCode, 1))), NOT(CONTAINS("0123456789", MID( ShippingPostalCode , 2, 1))), NOT(CONTAINS("0123456789", MID( ShippingPostalCode , 3, 1))), NOT(CONTAINS("0123456789", MID( ShippingPostalCode , 4, 1))), NOT(CONTAINS("0123456789", MID( ShippingPostalCode , 5, 1))), AND( LEN(ShippingPostalCode) = 10, OR( MID( ShippingPostalCode , 6, 1) <> "-", NOT(CONTAINS("0123456789", MID( ShippingPostalCode , 7, 1))), NOT(CONTAINS("0123456789", MID( ShippingPostalCode , 8, 1))), NOT(CONTAINS("0123456789", MID( ShippingPostalCode , 9, 1))), NOT(CONTAINS("0123456789", MID( ShippingPostalCode , 10, 1))) ) ) ) )

Note: This example interprets a blank country as US. To use this example with other countries, remove the clause that checks the length of the country field. Also, validation rule criteria are case sensitive, so this rule is only enforced when the country is blank or USA in all capital letters. The rule is not enforced when the country is usa. Tip: You can also validate zip codes using a regular expression; for an example of a formula using a regular expression, see REGEX in the Salesforce online help. Error Message: Error Location: Zip code must be in 99999 or 99999-9999 format. Shipping Zip/Postal Code

Useful Validation Rules

Valid Billing State (US)


Field Description: Value Validates that the account Billing State/Province is a valid two-character abbreviation if Billing Country is US, USA, or blank.
AND ( OR(BillingCountry = "US", BillingCountry="USA", ISBLANK(BillingCountry)), OR( LEN(BillingState) < 2, NOT( CONTAINS("AL:AK:AZ:AR:CA:CO:CT:DE:DC:FL:GA:HI:ID:" & "IL:IN:IA:KS:KY:LA:ME:MD:MA:MI:MN:MS:MO:MT:NE:NV:NH:" & "NJ:NM:NY:NC:ND:OH:OK:OR:PA:RI:SC:SD:TN:TX:UT:VT:VA:" & "WA:WV:WI:WY", BillingState) )))

Formula:

Note: This example interprets a blank country as US. To use this example with other countries, remove the clause that checks the length of the country field. Also, validation rule criteria are case sensitive, so this rule is only enforced when the country is blank or USA in all capital letters. The rule is not enforced when the country is usa. Error Message: Error Location: A valid two-letter state code is required.
Billing State/Province

Valid Billing Province (Canada)


Field Description: Formula: Value Validates that the account Billing State/Province is a valid two-character abbreviation if Billing Country is CA or CAN.
AND ( OR(BillingCountry = "CA", BillingCountry="CAN"), OR( LEN(BillingState) < 2, NOT( CONTAINS("AB:BC:MB:NB:NL:NT:NS:NU:ON:PC:QC:SK:YT", BillingState) )))

Error Message: A valid two-letter province code is required. Error Location: Billing State/Province

Useful Validation Rules

Valid Shipping State


Field Description: Formula: Value Validates that the account Shipping State/Province is a valid two-character abbreviation if Shipping Country is US, USA, or blank.
AND ( OR(ShippingCountry = "US", ShippingCountry="USA", ISBLANK(ShippingCountry)), OR( LEN(ShippingState) < 2, NOT( CONTAINS("AL:AK:AZ:AR:CA:CO:CT:DE:DC:FL:GA:HI:ID:" & "IL:IN:IA:KS:KY:LA:ME:MD:MA:MI:MN:MS:MO:MT:NE:NV:NH:" & "NJ:NM:NY:NC:ND:OH:OK:OR:PA:RI:SC:SD:TN:TX:UT:VT:VA:" & "WA:WV:WI:WY", ShippingState) )))

Note: This example interprets a blank country as US. To use this example with other countries, remove the clause that checks the length of the country field. Also, validation rule criteria are case sensitive, so this rule is only enforced when the country is blank or USA in all capital letters. The rule is not enforced when the country is usa. Error Message: A valid two-letter state abbreviation is required. Error Location: Shipping State/Province

Valid Shipping Province (Canada)


Field Description: Formula: Value Validates that the account Shipping State/Province is a valid two-character abbreviation, if Billing Country is CA or CAN.
AND ( OR(ShippingCountry = "CA", ShippingCountry="CAN"), OR( LEN(ShippingState) < 2, NOT( CONTAINS("AB:BC:MB:NB:NL:NT:NS:NU:ON:PC:QC:SK:YT", ShippingState) )))

Error Message: A valid two-letter province abbreviation is required. Error Location: Shipping State/Province

Valid Billing Country


Field Description: Value Validates that the account Billing Country is a valid ISO 3166 two-letter code.

Useful Validation Rules

Field Formula:

Value
OR( LEN(BillingCountry) = 1, NOT( CONTAINS( "AF:AX:AL:DZ:AS:AD:AO:AI:AQ:AG:AR:AM:" & "AW:AU:AZ:BS:BH:BD:BB:BY:BE:BZ:BJ:BM:BT:BO:" & "BA:BW:BV:BR:IO:BN:BG:BF:BI:KH:CM:CA:CV:KY:" & "CF:TD:CL:CN:CX:CC:CO:KM:CG:CD:CK:CR:CI:HR:" & "CU:CY:CZ:DK:DJ:DM:DO:EC:EG:SV:GQ:ER:EE:ET:FK:" & "FO:FJ:FI:FR:GF:PF:TF:GA:GM:GE:DE:GH:GI:GR:GL:" & "GD:GP:GU:GT:GG:GN:GW:GY:HT:HM:VA:HN:HK:HU:" & "IS:IN:ID:IR:IQ:IE:IM:IL:IT:JM:JP:JE:JO:KZ:KE:KI:" & "KP:KR:KW:KG:LA:LV:LB:LS:LR:LY:LI:LT:LU:MO:MK:" & "MG:MW:MY:MV:ML:MT:MH:MQ:MR:MU:YT:MX:FM:MD:MC:" & "MC:MN:ME:MS:MA:MZ:MM:MA:NR:NP:NL:AN:NC:NZ:NI:" & "NE:NG:NU:NF:MP:NO:OM:PK:PW:PS:PA:PG:PY:PE:PH:" & "PN:PL:PT:PR:QA:RE:RO:RU:RW:SH:KN:LC:PM:VC:WS:" & "SM:ST:SA:SN:RS:SC:SL:SG:SK:SI:SB:SO:ZA:GS:ES:" & "LK:SD:SR:SJ:SZ:SE:CH:SY:TW:TJ:TZ:TH:TL:TG:TK:" & "TO:TT:TN:TR:TM:TC:TV:UG:UA:AE:GB:US:UM:UY:UZ:" & "VU:VE:VN:VG:VI:WF:EH:YE:ZM:ZW", BillingCountry)))

Error Message: A valid two-letter country code is required. Error Location: Billing Country

Account Validation Rules


Account Number Is Numeric
Field Description: Formula: Value Validates that the Account Number is numeric if not blank.
AND( ISBLANK(AccountNumber), NOT(ISNUMBER(AccountNumber)) )

Error Message: Error Location:

Account Number is not numeric.


Account Number

Useful Validation Rules

Account Number Length


Field Description: Value Validates that the Account Number is exactly seven digits (if it is not blank). The number seven is simply illustrative. You can change this to any number you like.
AND( ISBLANK(AccountNumber), LEN(AccountNumber) <> 7 )

Formula:

Error Message: Error Location:

Account Number must be seven digits.


Account Number

Annual Revenue Range


Field Description: Formula: Value Validates that the account Annual Revenue is not negative and does not exceed $100 billion. This limit is designed to catch typos.
OR( AnnualRevenue < 0, AnnualRevenue > 100000000000 )

Error Message: Error Location:

Annual Revenue cannot exceed 100 billion.


Annual Revenue

Number Validation Rules


Time Cards Must Total 40 Hours
Field Description: Value Ensures that users cannot save a time card record with more than 40 hours in a work week. This example requires five custom fields on your custom object, one for each day of work.

Useful Validation Rules

Field Formula:

Value
Monday_Hours__c + Tuesday_Hours__c + Wednesday_Hours__c + Thursday_Hours__c + Friday_Hours__c > 40

Error Message: Error Location:

Your total hours cannot exceed 40.


Top of Page

Number Cannot Be Negative


Field Description: Formula: Error Message: Error Location: Value Validates that a custom field called Hours Worked is not a negative number.
Hours_Worked__c < 0

Hours Worked cannot be less than zero.


Hours Worked

Number Must Be Even


Field Description: Formula: Value Validates that a custom field called Ark Passengers is a non-negative even number.
OR( Ark_Passengers__c < 0, MOD( Ark_Passengers__c, 2) <> 0 )

Error Message: Error Location:

Ark Passengers must be a positive even number.


Ark Passengers

Number Must Be Odd


Field Description: Value Validates that a custom field called Socks Found is a non-negative odd number.

Useful Validation Rules

Field Formula:

Value
OR( Socks_Found__c < 0, MOD( Socks_Found__c, 2) = 0 )

Error Message: Error Location:

Socks Found must be an odd number.


Socks Found

Number Must Be a Multiple of Five


Field Description: Formula: Error Message: Error Location: Value Validates that a custom field called Multiple of 5 is a multiple of five.
MOD( Multiple_of_5__c, 5) <> 0

Number must be a multiple of five.


Multiple of 5

Number Must Be an Integer


Field Description: Formula: Error Message: Error Location: Value Validates that a custom field called My Integer is an integer.
FLOOR( My_Integer__c) <> My_Integer__c

This field must be an integer.


My Integer

Number Must Be Between -50 and 50


Field Description: Formula: Error Message: Error Location: Value Validates that a custom field called Volume is between -50 and 50.
ABS( Volume__c) > 50

Volume must be between -50 and 50.


Volume

Useful Validation Rules

Number Range Validation


Field Description: Formula: Error Message: Error Location: Value Validates that the range between two custom fields, Salary Min and Salary Max, is no greater than $20,000.
(Salary_Max__c - Salary_Min__c) > 20000

Salary range must be within $20,000. Adjust the Salary Max or Salary Min values.
Salary Max

Percentage Must Be Between Zero and 100


Field Description: Value Validates that a custom field called Mix Pct is between 0 and 100%. Note that percent fields are expressed divided by 100 in formulas (100% is expressed as 1; 50% is expressed as 0.5).
OR( Mix_Pct__c > 1.0, Mix_Pct__c < 0.0 )

Formula:

Error Message: Error Location:

Mix Pct must be between 0 and 100%.


Mix Pct

Contact Validation Rules


Mailing Address Fields Are Required
Field Description: Formula: Value Validates that the contact Mailing Street, Mailing City, and Mailing Country are provided.
OR( ISBLANK( MailingStreet ), ISBLANK( MailingCity ), ISBLANK( MailingCountry ) )

Error Message: Error Location:

Mailing Street, City, and Country are required.


Top of Page

10

Useful Validation Rules

Mailing Street Is Required


Field Description: Formula: Error Message: Error Location: Value Validates that the contact Mailing Street is provided.
ISBLANK( MailingStreet )

Mailing Street is required.


Mailing Street

Mailing Zip Code


Field Description: Value Validates that the contact Mailing Zip/Postal Code is in 99999 or 99999-9999 format if Mailing Country is USA or blank.

11

Useful Validation Rules

Field Formula:

Value
AND( OR(MailingCountry = "USA", ISBLANK(MailingCountry)), OR( AND(LEN(MailingPostalCode) <>5, LEN(MailingPostalCode) <> 10), NOT(CONTAINS("0123456789", LEFT( MailingPostalCode, 1))), NOT(CONTAINS("0123456789", MID( MailingPostalCode , 2, 1))), NOT(CONTAINS("0123456789", MID( MailingPostalCode , 3, 1))), NOT(CONTAINS("0123456789", MID( MailingPostalCode , 4, 1))), NOT(CONTAINS("0123456789", MID( MailingPostalCode , 5, 1))), AND( LEN(MailingPostalCode) = 10, OR( MID( MailingPostalCode , 6, 1) <> "-", NOT(CONTAINS("0123456789", MID( MailingPostalCode , 7, 1))), NOT(CONTAINS("0123456789", MID( MailingPostalCode , 8, 1))), NOT(CONTAINS("0123456789", MID( MailingPostalCode , 9, 1))), NOT(CONTAINS("0123456789", MID( MailingPostalCode , 10, 1))) ) ) ) )

Note: This example interprets a blank country as US. To use this example with other countries, remove the clause that checks the length of the country field. Also, validation rule criteria are case sensitive, so this rule is only enforced when the country is blank or USA in all capital letters. The rule is not enforced when the country is usa. Tip: You can also validate zip codes using a regular expression; for an example of a formula using a regular expression, see REGEX in the Salesforce online help. Error Message: Error Location: Zip code must be in 99999 or 99999-9999 format.
Mailing Zip/Postal Code

Phone Number Has International Format


Field Description: Value Validates that the Phone number begins with a plus sign (+) for country code. Note that this validation rule conflicts with the ten-digit rule.

12

Useful Validation Rules

Field Formula: Error Message: Error Location:

Value
LEFT(Phone, 1) <> "+"

Phone number must begin with + (country code).


Phone

US Phone Number Has Ten Digits


Field Description: Value Validates that the Phone number is in (999) 999-9999 format. This works by using the REGEX function to check that the number has ten digits in the (999) 999-9999 format.
NOT(REGEX(Phone, "\\D*?(\\d\\D*?){10}"))

Formula: Error Message: Error Location:

US phone numbers should be in this format: (999) 999-9999.


Phone

Date Validation Rules


Date Must Be a Weekday
Field Description: Formula: Value Validates that the value of a custom date field is a weekday (not Saturday or Sunday).
CASE(MOD( My_Date__c - DATE(1900, 1, 7), 7), 0, 0, 6, 0, 1) = 0

Error Message: Error Location:

Date must be a weekday.


My Date

Date Must Be a Weekend Day


Field Description: Value Validates that the value of a custom date field is a Saturday or Sunday.

13

Useful Validation Rules

Field Formula:

Value
CASE( MOD( My_Date__c - DATE(1900, 1, 7), 7), 0, 1, 6, 1, 0) = 0

Error Message: Error Location:

Date must be a weekend day.


My Date

Date Must Be in the Current Month


Field Description: Formula: Value Validates that a custom date field contains a date within the current month and year.
OR ( YEAR( My_Date__c ) <> YEAR ( TODAY() ), MONTH( My_Date__c ) <> MONTH ( TODAY() ) )

Error Message: Error Location:

Date must be in the current month.


My Date

Date Must Be in the Current Year


Field Description: Formula: Error Message: Error Location: Value Validates that a custom date field contains a date within the current year.
YEAR( My_Date__c ) <> YEAR ( TODAY() )

Date must be in the current year.


My Date

Date Must Be the Last Day of the Month


Field Description: Value Validates whether a custom field called My Date is the last day of the month. To do this, it determines the date of the first day of the next month and then subtracts 1 day. It includes special case logic for December.

14

Useful Validation Rules

Field Formula:

Value
DAY(My_Date__c) <> IF(Month(My_Date__c)=12, 31, DAY(DATE(YEAR(My_Date__c),MONTH(My_Date__c)+1,1) - 1))

Error Message: Error Location:

Date must be the last day of the month.


My Date

Date Must Be Within One Year of Today


Field Description: Value Validates whether a custom field called Follow-Up Date is within one year of todays date. This example assumes a 365 day year. (It does not handle leap years.)
Followup_Date__c - TODAY() > 365

Formula: Error Message: Error Location:

Follow-Up Date must be within one year of today.


Follow-Up Date

Day of Month Cannot Be Greater Than 15


Field Description: Formula: Error Message: Error Location: Value Validates that a custom field called Begin Date contains a date in the first 15 days of the specified month.
DAY( Begin_Date__c ) > 15

Begin Date cannot be after the 15th day of month.


Begin Date

End Date Cannot Be Before Begin Date


Field Description: Formula: Error Message: Error Location: Value Validates that a custom field called End Date does not come before another custom field called Begin Date.
Begin_Date__c > End_Date__c

End Date cannot be before Begin Date.


Begin Date

15

Useful Validation Rules

Expiration Date Cannot Be Before Close Date


Field Description: Formula: Error Message: Error Location: Value Validates that a custom field called Expiration Date does not come before Close Date.
Expiration_Date__c < CloseDate

Expiration Date cannot be before Close Date.


Expiration Date

Opportunity Management Validation Rules


Conditionally-Required Field Based on Opportunity Stage
Field Description: Value Validates that a custom field called Delivery Date is provided if an opportunity has advanced to the Closed Won or Negotiation/Review stage.
AND ( OR ( ISPICKVAL(StageName, "Closed Won"), ISPICKVAL(StageName, "Negotiation/Review")), ISBLANK(Delivery_Date__c) )

Formula:

Error Message: Error Location:

Delivery Date is required for this stage.


Delivery Date

Close Date Cannot Be Prior to Current Month


Field Description: Value Validates that the Close Date of an opportunity is not within a month prior to the current month. Note the use of ISNEW and ISCHANGED in this formula to ensure the condition is only checked when the opportunity is being created or the Close Date field is modified subsequently.

16

Useful Validation Rules

Field Formula:

Value
AND( OR ( ISNEW(), ISCHANGED( CloseDate )), CloseDate < DATE( YEAR(TODAY()), MONTH(TODAY()), 1) )

Error Message: Error Location:

Close Date cannot be prior to current month.


Close Date

Close Date Must Be a Future Date


Field Description: Formula: Error Message: Error Location: Value Ensures that users do not change the Close Date of an opportunity to a day in the past.
CloseDate < TODAY()

Close Date cannot be a day in the past.


Close Date

Discounts on Opportunities
Field Description: Formula: Error Message: Error Location: Value Validates that a custom discount percent field is between 0 and 40%.
OR(Discount_Rate__c < 0, Discount_Rate__c > 0.40)

The Discount Rate must not exceed 40%.


Discount Rate

High-Value Opportunity Must Be Approved Before Closed


Field Description: Value Opportunities with amounts greater than $50,000 require that a custom checkbox field called Approved is checked in order to change the stage to Closed Won or Closed Lost. To automate this, set field-level security on the Approved checkbox so that it can only be checked via a custom approval process (Enterprise Edition or Unlimited Edition).

17

Useful Validation Rules

Field Formula:

Value
AND( OR( ISPICKVAL(StageName,"Closed Won"), ISPICKVAL(StageName,"Closed Lost")), (Amount > 50000), NOT(ISPICKVAL(Approval_Status__c ,"Approved")))

Error Message: Error Location:

All high-value opportunities must be approved for closure. Click the Request Close button.
Top of Page

Opportunity Amount Cannot Exceed $10 Million


Field Description: Formula: Value Validates that opportunity Amount is positive and no more than $10 million. This limit is designed to catch typos.
OR( Amount < 0, Amount > 10000000 )

Error Message: Error Location:

Amount cannot exceed $10 million.


Amount

Opportunity Check for Products


Field Description: Formula: Error Message: Error Location: Value Validates that an opportunity has at least one opportunity product before users can save a change to an opportunity.
NOT(OR(ISNEW(),HasOpportunityLineItem))

You must add products to this opportunity before saving.


Top of Page

Opportunity Must Have Products if Beyond Needs Analysis Stage


Field Description: Value Validates that an opportunity has opportunity products before the Stage can move beyond Needs Analysis.

18

Useful Validation Rules

Field Formula:

Value
AND ( CASE( StageName, "Value Proposition", 1, "Id. Decision Makers", 1, "Perception Analysis", 1, "Proposal/Price Quote", 1, "Negotiation/Review", 1, "Closed Won", 1, 0) = 1, NOT(HasOpportunityLineItem) )

Error Message: Error Location:

Opportunity products are required to advance beyond the Needs Analysis stage.
Top of Page

Opportunity Name Format


Field Description: Formula: Error Message: Error Location: Value Validates that an opportunity contains a hyphen as a way of enforcing an [Account] - [Amount] opportunity naming convention.
FIND( " - ", Name ) = 0

Opportunity Name should use [Account] - [Amount] format.


Opportunity Name

Prevent Sales Reps from Moving Opportunity Stage Backwards


Field Description: Value Prevent sales reps from changing opportunity Stage backwards to specific values, once they have accepted the opportunity via a custom approval process. The approval process sets the custom Accepted Flag checkbox to True.
AND( Accepted_Flag__c, OR ( ISPICKVAL( StageName, "Stage 1"), ISPICKVAL( StageName, "Stage 2")) )

Formula:

Error Message: Error Location:

Invalid stage for accepted opportunity.


Stage

19

Useful Validation Rules

Probability Must Be 100% for Won Opportunities


Field Description: Formula: Value Validates that the probability of a won opportunity is properly set to 100%. This is useful for data cleanliness and reporting purposes.
AND ( ISPICKVAL( StageName, "Closed Won"), Probability <> 1)

Error Message: Error Location:

Probability must be 100% for won opportunities.


Probability

Probability Must Be Zero for Lost Opportunities


Field Description: Formula: Value Validates that the probability of a lost opportunity is properly set to zero. This is useful for data cleanliness and reporting purposes.
AND ( ISPICKVAL( StageName, "Closed Lost"), Probability <> 0)

Error Message: Error Location:

Probability must be 0% for lost opportunities.


Probability

Project Start Date


Field Description: Value Validates that a field is conditionally required based on the values of other fields. Use this validation formula to ensure that users include a Project Start Date for an opportunity that is closed/won.
AND(ISPICKVAL(StageName, "Closed Won"), ISNULL(Project_Start_Date__c))

Formula:

Error Message: Error Location:

Project start date is required for won opportunities.


Project Start Date

20

Useful Validation Rules

Quote Validation Rules


Display Error if Quote Line Item Discount Exceeds 40%
Field Description: Formula: Error Message: Error Location: Value Shows an error if a quote line item's discount exceeds 40%.
Discount > .40

The discount on this quote line item cannot exceed 40%.


Discount on quote

Call Center Validation Rules


Conditionally Require Description When Case Reason is Other
Field Description: Formula: Value Validates that a custom field called Other Reason contains a value if a case has a Case Reason of Other.
AND( ISPICKVAL( Reason, "Other" ), ISBLANK(Other_Reason__c) )

Error Message: Error Location:

Description of Other Reason is required.


Other Reason

Prevent Open Cases from Being Reset to New


Field Description: Value If a case is already open, prevents the Status from being changed back to New.

21

Useful Validation Rules

Field Formula:

Value
AND( ISCHANGED( Status ), NOT(ISPICKVAL(PRIORVALUE( Status ), "New")), ISPICKVAL( Status, "New") )

Error Message: Error Location:

Open case Status cannot be reset to New.


Status

Restrict Status of Re-Opened Cases


Field Description: Formula: Value Validates that the case Status is Re-opened when a closed case is opened again.
AND( ISCHANGED( Status ), OR( ISPICKVAL(PRIORVALUE( Status ), "Closed"), ISPICKVAL(PRIORVALUE( Status ), "Closed in SSP")), NOT( ISPICKVAL( Status, "Re-Opened")) )

Error Message: Error Location:

Closed case can only be changed to Re-opened.


Status

Prevent Case Milestone Completion After Cases Are Closed


Field Description: Formula: Error Message: Error Location: Value Validates that a milestone's Completion Date can't occur after the case's Status is Closed.
Case.IsClosed = true

You can't complete a milestone after a case is closed.


Top of Page

Prevent Case Milestone Completion Before Case Creation Dates


Field Description: Value Validates that the milestone's Completion Date has occurred after the case's Date/Time Opened.

22

Useful Validation Rules

Field Formula:

Value
CompletionDate CompletionDate >= <= Case.CreatedDate Case.ClosedDate &&

Error Message: Error Location:

The milestone Completion Date must occur after the date the case was created and before the case was closed.
Top of Page

User, Role, and Profile Validation Rules


Discount Percent Does Not Exceed Role-Based Limit
Field Description: Value Validates that a custom field on opportunities called Discount Percent does not exceed a maximum value that varies depending on the users role. The default maximum is 15%.
Discount_Percent__c > VLOOKUP($ObjectType.Role_Limits__c.Fields.Limit__c, $ObjectType.Role_Limits__c.Fields.Name, $UserRole.Name)

Formula:

Error Message: Error Location:

Discount (%) exceeds limit allowed for your role.


Discount Percent

Expense Amount Does Not Exceed User's Max Allowed Expense


Field Description: Formula: Error Message: Error Location: Value Validates a custom field called Expense Amount against a custom user field called Max Allowed Expense.
Expense_Amount__c > $User.Max_Allowed_Expense__c

Amount cannot exceed your maximum allowed expense.


Expense Amount

23

Useful Validation Rules

Only Record Owner Can Change Field


Field Description: Formula: Value Ensures that only the record owner can make changes to a custom field called Personal Goal.
AND( ISCHANGED( Personal_Goal__c ), Owner <> $User.Id )

Error Message: Error Location:

Only record owner can change Personal Goal.


Personal Goal

Only Record Owner or Administrator Can Change Field


Field Description: Value Ensures that a user can make changes to a custom field called Personal Goal only if the user is the record owner or has a custom profile of Custom: System Admin.
AND( ISCHANGED( Personal_Goal__c ), Owner <> $User.Id, $Profile.Name <> "Custom: System Admin" )

Formula:

Note: $Profile merge fields are only available in Enterprise, Unlimited, and Developer Editions.

Error Message: Error Location:

Only record owner or administrator can change Personal Goal.


Personal Goal

Opportunity Close Date Can Only Be Back-Dated by Administrator


Field Description: Value Validates that the Close Date of an opportunity does not fall prior to the current month, except for users who have a custom profile called Custom: System Admin.

24

Useful Validation Rules

Field Formula:

Value
AND( OR ( ISNEW(), ISCHANGED( CloseDate )), CloseDate < DATE( YEAR(TODAY()), MONTH(TODAY()), 1), $Profile.Name <> "Custom: System Admin" )

Note: $Profile merge fields are only available in Enterprise, Unlimited, and Developer Editions.

Error Message: Error Location:

Close Date cannot be prior to current month.


Close Date

Cross Object Validation Rules


Discounts Must Be Within Range
This example consists of three validation rules on opportunity products. The examples below work together to help you manage discount amounts for products and require a custom percent field on opportunity products called Line Discount. The examples below also require you to use price books and customize the Product Family field to include the following values: Software, Consulting, and Training. Software Discounts Field Description: Formula: Value Prevents users from saving software products with a discount over 10 percent.
AND(Line_Discount__c > 0.10, ISPICKVAL(Product2.Family, "Software"))

Error Message: Error Location:

The discount must be 10% or less for software products.


Line Discount

Consulting Discounts

25

Useful Validation Rules

Field Description: Formula:

Value Prevents users from saving consulting products with a discount over 15 percent.
AND(Line_Discount__c > 0.15, ISPICKVAL(Product2.Family, "Consulting"))

Error Message: Error Location:

The discount must be 15% or less for consulting products.


Line Discount

Training Discounts Field Description: Formula: Value Prevents users from saving training products with a discount over 20 percent.
AND(Line_Discount__c > 0.20, ISPICKVAL(Product2.Family, "Training"))

Error Message: Error Location:

The discount must be 20% or less for training products.


Line Discount

Prevent Changing Opportunity Products on Closed Opportunities


This example consists of two validation rules: one on opportunity products and another on opportunities. Field Description: Value Prevents users from editing opportunity products after an opportunity is closed. Create the following validation rule example on opportunity products.
OR(ISPICKVAL(Opportunity.StageName, "Closed Won"), ISPICKVAL(Opportunity.StageName, "Closed Lost"))

Formula:

Error Message: Error Location:

Cannot change opportunity products for closed opportunities.


Top of Page

The following validation rule is on opportunities.

26

Useful Validation Rules

Field Description:

Value Prevents users from deleting opportunity products after an opportunity is closed. Create the following validation rule example on opportunities. It uses a custom roll-up summary field on opportunities that counts the number of opportunity products on an opportunity.
AND(OR(ISPICKVAL(StageName, "Closed Won"), ISPICKVAL(StageName, "Closed Lost")), Number_of_Line_Items__c < PRIORVALUE(Number_of_Line_Items__c) )

Formula:

Error Message: Error Location:

Cannot delete opportunity products for closed opportunities.


Top of Page

Prevent Saving a Case When Account Does Not Have Support


Field Description: Value Prevents users from saving a case for an account that does not have support. This example assumes you have a custom checkbox field on accounts called Allowed Support that tracks if the account has support.
Account.Allowed_Support__c FALSE =

Formula:

Error Message: Error Location:

Unable to create cases for this account because it is not signed up for support.
Top of Page

Prevent Saving a Case When Contact is No Longer with the Company


Field Description: Value Prevents users from saving an open case associated with a contact that is no longer with the company. This example uses a custom checkbox field on contacts called No Longer With Company.

27

Useful Validation Rules

Field Formula:

Value
AND(Contact.Not_Longer_With_Company__c, NOT(IsClosed))

Error Message:

Unable to save this case because the related contact is no longer with the company. To continue, choose another contact.
Contact Name

Error Location:

Community Validation Rules


Preventing Offensive Language in Questions
Field Description: Formula: Value Prevents users from entering offensive language in the Title and Description fields when asking a question.
OR(CONTAINS(Title, 'darn'), CONTAINS(Body, 'darn'))

Error Message:

Question title or description contains offensive language.

Preventing Offensive Language in Replies


Field Description: Formula: Error Message: Value Prevents users from entering offensive language when replying to a question.
OR(CONTAINS(Body, 'darn'), CONTAINS(Body, 'dang'))

Reply contains offensive language.

Preventing Offensive Language in Ideas


Field Description: Value Prevents users from entering offensive language in the Title and Description fields when posting an idea.

28

Useful Validation Rules

Field Formula:

Value
OR(CONTAINS(Title, 'darn'), CONTAINS(Body, 'darn'))

Error Message:

Idea title or description contains offensive language.

Preventing Offensive Language in Idea Comments


Field Description: Formula: Value Prevents users from entering offensive language when posting a comment.
OR(CONTAINS(CommentBody , 'darn'), CONTAINS(CommentBody, 'dang'))

Error Message:

Comment contains offensive language.

Other Validation Rules


Allow Number to Be Increased but Not Decreased
Field Description: Value Allows a custom field called Commit Amount to be increased but not decreased after initial creation. This rule uses the PRIORVALUE() function to compare the updated value of the field to its value prior to update.
PRIORVALUE(Commit_Amount__c) > Commit_Amount__c

Formula: Error Message: Error Location:

Commit Amount cannot be decreased.


Commit Amount

California Driver's License


Field Description: Value Ensures that a custom field called Drivers License is in the correct A9999999 format when the Mailing State is CA.

29

Useful Validation Rules

Field Formula:

Value
AND( MailingState = "CA", NOT(REGEX(Drivers_License__c, "([A-Z]\\d{7})?")) )

Error Message: Error Location:

Invalid California driver's license format.


Drivers License

Force Users to Check I Accept Terms to Enter Certain Values


Field Description: Value Uses a checkbox labeled I accept terms to force the user to select a checkbox in order to enter a value called Number of Days that exceeds their Paid Time Off (PTO) balance available.
AND( NOT( I_accept_terms__c ), Number_of_Days__c > $User.PTO_Balance__c )

Formula:

Error Message: Error Location:

Request will cause a negative PTO balance. You must accept Negative PTO Balance terms.
I accept terms

Prohibit Changes to a Field After It Has Been Saved


Field Description: Formula: Value Prevents users from changing a custom field called Guaranteed Rate after it has been saved initially.
AND( NOT( ISNEW() ), ISCHANGED( Guaranteed_Rate__c ) )

Error Message: Error Location:

Guaranteed Rate cannot be changed.


Guaranteed Rate

Social Security Number Format


Field Description: Value Validates that a custom text field called SSN is formatted in 999-99-9999 number format (if it is not blank). The pattern specifies: Three single digits (0-9):\\d{3} A dash

30

Useful Validation Rules

Field

Value Two single digits (0-9):\\d{2} A dash Four single digits (0-9):\\d{4}
NOT( OR( ISBLANK(Social_Security_Number__c), REGEX( Social_Security_Number__c , "[0-9]{3}-[0-9]{2}-[0-9]{4}") ) )

Formula:

Error Message: Error Location:

SSN must be in this format: 999-99-9999.


SSN

Valid Currency
Field Description: Value Validates selected currency against an explicit subset of active currencies in your organization using the Currency picklist. Use this example if you only allow some of the active currencies in your organization to be applied to certain types of records.
CASE(CurrencyIsoCode, "USD", 1, "EUR", 1, "GBP", 1, "JPY", 1, 0) = 0

Formula:

Error Message: Error Location:

Currency must be USD, EUR, GBP, or JPY.


Currency

Valid Credit Card Number


Field Description: Value Validates that a custom text field called Credit_Card_Number is formatted in 9999-9999-9999-9999 or 9999999999999999 number format when it is not blank. The pattern specifies: Four digits (0-9) followed by a dash: \\d{4} The aforementioned pattern is repeated three times by wrapping it in () {3} Four digits (0-9) The OR character (|) allows an alternative pattern of 16 digits of zero through nine with no dashes: \\d{16}

31

Useful Validation Rules

Field Formula:

Value
NOT( REGEX( Credit_Card_Number__c , "(((\\d{4}-){3}\\d{4})|\\d{16})?"))

Error Message: Error Location:

Credit Card Number must be in this format: 9999-9999-9999-9999 or 9999999999999999.


Credit Card Number

Valid IP Address
Field Description: Formula: Value Ensures that a custom field called IP Address is in the correct format, four 3-digit numbers (0-255) separated by periods.
NOT( REGEX( IP_Address__c, "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.) {3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$" ))

Error Message: Error Location:

Error: IP Address must be in form 999.999.999.999 where each part is between 0 and 255.
IP Address

Website Extension
Field Description: Formula: Value Validates a custom field called Web Site to ensure its last four characters are in an explicit set of valid website extensions.
AND( RIGHT( RIGHT( RIGHT( RIGHT( RIGHT( RIGHT( RIGHT( RIGHT( ) Web_Site__c, Web_Site__c, Web_Site__c, Web_Site__c, Web_Site__c, Web_Site__c, Web_Site__c, Web_Site__c, 4) 4) 4) 4) 4) 4) 6) 6) <> <> <> <> <> <> <> <> ".COM", ".com", ".ORG", ".org", ".NET", ".net", ".CO.UK", ".co.uk"

Error Message: Error Location:

Web Site must have an extension of .com, .org, .net, or .co.uk.


Web Site

32

You might also like