Supposing you needed some custom logic to happen immediately after a lead was qualified. You can achieve this by registering a Plug-in on the QualifyLead Post Operation stage. From within this Plug-in you can easily get a reference to the newly created Account, Contact and Opportunity and make any changes you need.
Inside the PlugIn you need the following code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | IOrganizationService service = localContext.OrganizationService;
EntityReference leadid = (EntityReference) localContext.PluginExecutionContext.InputParameters[ "LeadId" ];
Lead lead = (Lead)service.Retrieve(leadid.LogicalName, leadid.Id, new ColumnSet(LeadAttributes.crm_AccountType));
Contact contact = null ;
Opportunity opportunity = null ;
Account account = null ;
foreach (EntityReference created in (IEnumerable< object >) localContext.PluginExecutionContext.OutputParameters[ "CreatedEntities" ])
{
switch (created.LogicalName)
{
case Contact.EntityLogicalName:
contact = (Contact)service.Retrieve(Contact.EntityLogicalName, created.Id, new ColumnSet( true ));
break ;
case Account.EntityLogicalName:
account = (Account)service.Retrieve(Account.EntityLogicalName, created.Id, new ColumnSet( true ));
break ;
case Opportunity.EntityLogicalName:
opportunity = (Opportunity)service.Retrieve(Opportunity.EntityLogicalName, created.Id, new ColumnSet( true ));
break ;
}
}
|
If you need to make any changes to the created records, you can simply use:
1 2 | contact.LastName = "some change" ;
service.Update(contact);
|
Hope this helps.