I am new to salesforce. I wanted to know that what will be the flow of trigger execution when the lead is getting converted. like before/After trigger on lead,Account and contact.
2 Answers
The usual order of execution detailed at http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_triggers_order_of_execution.htm still applies with some special considerations
The Before triggers and validation rules do not fire unless that checkbox is ticked under Customise > Lead > Settings. Note that for orgs created prior to '08 you'll need to contact support to enable this (related answer)
After triggers still always fire irrespective of the above setting
To check if a Lead has been converted and do custom lead conversion logic, the best home for such is the LeadAfter trigger, where you can check
If (trigger.isUpdate && Lead.IsConverted && !trigger.oldmap.get(lead.id).IsConverted)
//do your stuff
Here you will have access to the convertedAccountId, convertedContactId, ConvertedOpportunityId and any OpportunityContactRoles
This is also a good place to re parent any custom related list records from the converted Lead to either of Company or Contact
Just added some debug logs to triggers, and here's the order of execution : (This is with the Enforce Validations and Triggers on Lead Conversion Enabled)
Account Before (Fires based on lead settings) Account After Contact Before (Fires based on lead settings) Contact After Opportunity Before (Fires based on lead settings) Opportunity After (OCR's not available) Lead Before Lead After (OCR's available)
If the Enforce Validations and Triggers setting is turned off, none of the Before triggers fire. The After triggers however still fire.
Once you create a lead the lead status will be 'open-not contacted' When you convert it the contact information will go to 'Contacts' object, Company details will go to 'Accounts' and lead will be converted to opportunity. That is the status will change to closed.
Lead
->Accounts
->Contacts
->Opportunity
This is the flow.