You need to sign in to do that
Don't have an account?
APEX trigger to update opportunity contact role values on opportunity insert
Hi folks,
We're using a dev environment of the non-profit starter pack, and we're trying to fire a trigger that updates the opportunity contact role record's Role and IsPrimary values immediately upon conversion from a lead record.
If we understand everything correctly, we're unable to grab the value of the opportunity contact role on insert of the new opportunity. It seems like the reason for this is because when the Opportunity trigger fires upon "after insert", the opportunity contact role isn't created yet. Therefore, our opportunity trigger can't find a related opportunity contact role, and errors out. Interestingly, if there are other opportunity records, and we make our query generic enough, our trigger does properly update the Role and IsPrimary values...of another opportunity.
I've read that by unchecking the lead converstion setting (Your Name | Setup | Customize | Leads | Settings) for "Enable Validation and Triggers from Lead Convert" you can make sure that the opportunity contact role is created before any "after insert" triggers are fired, but it still doesn't seem to work.
Has anyone run into this problem? How are we supposed to set a contact role on the insert of an opportunity if we can't fire a trigger to make this happen on the Opportunity object and there isn't a way to fire a trigger on the OpportunityContactRole object?
Cheers,
Ryan
Ryan, I can think of a couple of ways around this
First of all - "I've read that by unchecking the lead converstion setting (Your Name | Setup | Customize | Leads | Settings) for "Enable Validation and Triggers from Lead Convert" -- I don;t think this is true -- if the box is unchecked, no triggers or validation rules on account/contact/opportunity will fire
Option 1: Do the work in the after update trigger of the lead -- this has access to the converted oppo/account/contact
Option 2: use a future method fired by the Oppo trigger; the method won't execute until the oppo+contact+contactRole are all built. You would pass in the Opportunityid to the future method
All Answers
Ryan, I can think of a couple of ways around this
First of all - "I've read that by unchecking the lead converstion setting (Your Name | Setup | Customize | Leads | Settings) for "Enable Validation and Triggers from Lead Convert" -- I don;t think this is true -- if the box is unchecked, no triggers or validation rules on account/contact/opportunity will fire
Option 1: Do the work in the after update trigger of the lead -- this has access to the converted oppo/account/contact
Option 2: use a future method fired by the Oppo trigger; the method won't execute until the oppo+contact+contactRole are all built. You would pass in the Opportunityid to the future method
Eric,
You were absolutely right on option 1, worked just like a charm. I just made a trigger after update on the Lead object using the Converted IDs, and then updated the OCR. Thanks so much for that tip!
For reference, I thought this document was good in providing an overview on the conversion process, step by step.
The "ConvertLead" Lead Conversion Process of Salesforce
Best,
Ryan