5 answers
Arvind, consider the following scenario: On the Opportunity object, a text field (Lost Reason) cannot be blank if the Opportunity Stage picklist is set to: 'Closed Lost'. You created a validation rule to enforce this:
AND(
TEXT(StageName) = "Closed Lost",
ISBLANK(Lost_Reason__c)
)
So a user comes in, sets the stage to Closed Lost and leaves the Lost Reason field blank and then tries to save the Opportunity record. Because of our validation rule, the user won't be allowed to save the record and will be shown an error message. The user cancels and refreshes the page.
Now there's a Workflow Rule existing on the Opportunity object which is built to do this:
If a custom field on the Opportunity (let's say Account Status) is set to 'Dropped', set the Opportunity Stage to Closed Lost.
A user comes in, sets the Account Status on Opportunity record to 'Dropped' and saves the record. Result? The Opportunity is set to Closed Lost with a blank Lost Reason field. Now you might think that the workflow rule shouldn't have fired because our validation rule doesn't allow the Lost Reason field to be blank when Stage = Closed Lost but since "updates to records based on workflow rules doesn't trigger validation rules,workflow rules can invalidate previously valid fields".
Another simple scenario:A text field has a validation rule on it to not allow any numbers in it. Let's say like this:
ISNUMBER(Text_Field__c)
A workflow rule's field update can update this field to a number and the validation rule wouldn't fire. See what's happening here?
Hope it makes sense.