I came across this page in the Apex documentation and wanted to share it with everyone. So many people have asked about this in the past, so it seems a good idea to publicize it:
http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_triggers_order_of_execution.htm
Triggers and Order of Execution
When a record is saved with an insert, update, or upsert statement, the following events occur in order:
1. The original record is loaded from the database (or initialized for an insert statement)
2. The new record field values are loaded from the request and overwrite the old values
3. All before triggers execute
4. System validation occurs, such as verifying that all required fields have a non-null value, and running any user-defined validation rules
5. The record is saved to the database, but not yet committed
6. All after triggers execute
7. Assignment rules execute
8. Auto-response rules execute
9. Workflow rules execute
10. If there are workflow field updates, the record is updated again
11. If the record was updated with workflow field updates, before and after triggers fire one more time (and only one more time)
12. Escalation rules execute
13. All DML operations are committed to the database
14. Post-commit logic executes, such as sending email
Additional Considerations
Please note the following when working with triggers:
* When Enable Validation and Triggers from Lead Convert is selected, if the lead conversion creates an opportunity and the opportunity has Apex before triggers associated with it, the triggers run immediately after the opportunity is created, before the opportunity contact role is created. For more information, see “Customizing Lead Settings” in the Salesforce online help.
* If you are using before triggers to set Stage and Forecast Category for an opportunity record, the behavior is as follows:
o If you set Stage and Forecast Category, the opportunity record contains those exact values.
o If you set Stage but not Forecast Category, the Forecast Category value on the opportunity record defaults to the one associated with trigger Stage.
o If you reset Stage to a value specified in an API call or incoming from the user interface, the Forecast Category value should also come from the API call or user interface. If no value for Forecast Category is specified and the incoming Stage is different than the trigger Stage, the Forecast Category defaults to the one associated with trigger Stage. If the trigger Stage and incoming Stage are the same, the Forecast Category is not defaulted.
Dinh Khanh Nguyen says
Hallo,
In the your list of order of excecution is the Auto Response Rules included.
I think, it is not correct for “Web2Lead” Auto Response Rules. Those rules are only executed upon lead creation. But not for lead insert or update action.
Am i right ?
Best wishes
Dinh Khanh Nguyen
David Schach says
The order is correct.
Creation is the same as insert. Web2Lead only creates leads and does not update them. So Web2Lead autoresponse rules only fire upon lead insert/create… and cannot fire on update because W2L cannot update leads.
Does that make sense?
Giorgio Peresempio says
f have in process builder with more criteria that update record fields and more ‘evaluate next criteria’ immediate action the Validation rules are re calculate each time that a immediate action is execute in the same transaction of process builder? I.e. if in process builder ‘A’ have 3 immediate action one for each Cirteria with evaluate next criteria so the Validation rule are calculated 3 times for each transaction of process builder A? Or the validation rule are evaluate after the transaction of process builder is completed? In other words, the validation rule are calculated only after the commit of the process builder is done or each time a immediate action is executed into the process build?
Amina says
When are approval processes executed?
David Schach says
Approval processes aren’t automatically started (except through Apex, which is fired via a Trigger or some other event) so they’re not in the order of events. This list is things that happen when a record is created, updated, etc. Approval processes update records, so they actually cause other actions to happen.