While
working on a recruiting application, I found a solution for being able to load
data into a SalesForce application without being blocked by validation rules.
Validation
rules are usually intended to be applied only when a user creates a record and
not when data is being imported from an external database. In this recruiting
application, candidate records go several stages in a sequence (1-lead,
2-phone, 3-applicant, 4-interview, 5-contract negotiation, etc.) and this
validation rule prevented the import process from loading candidate records in
a stage higher than lead.
So
the solution was to create a Custom Setting of type Hierarchy with a
flag/checkbox in it that disables validation rules for a given user or profile.
That is, all the validation rules will include this flag and only apply when
the value of this flag is enabled.
To
implement it:
1)
click Setup, then on the left side, click Develop/Custom Settings.
2)
click New and create your settings as hierarchy/public
3)
now create a custom field of type Checkbox: click New, select Checkbox, click
Next, type the name of the field as “Disable Validation Rules”, default to
Unchecked, click Next, then click Save.
4)
in the Custom Setting Definition/Your App Settings screen, click Manage to
start configuring the setting you just created.
5)
click the New button above “Default Organization Level Value”, leave the
checkbox “Disable Validation Rules” unchecked and then click Save.
6)
click “Back to List”, click the New button at the bottom, select Profile or
User then choose the user id or profile that will perform the data loading,
then click “Disable Validation Rules” and click Save.
7)
now edit the validation rule appending the expression (highlighted below)
&& NOT( $Setup.Your_App_Settings__c.Disable_Validation_Rules__c )
&& NOT( $Setup.Your_App_Settings__c.Disable_Validation_Rules__c )
8
) click Save
9)
now the validation rule will only apply if the setting checkbox
Disable Validation Rules is unchecked for your profile/user
Disable Validation Rules is unchecked for your profile/user
10)
you can now load data freely and then, later, re-enable all
validation rules for your profile/user by changing the custom
setting.
validation rules for your profile/user by changing the custom
setting.
11)
you can use this way of implementing Custom Settings on
triggers too, just use the syntax below:
triggers too, just use the syntax below:
- Your_App_Settings__c s =
Your_App_Settings__c.getInstance( UserInfo.getUserID() );
- if(
s.Disable_Validation_Rules__c ) return;
No comments:
Post a Comment