31
votes

I wanted to map custom fields of lead to map with custom field of contact' when converted using binding.convertLead().

It should replicate the behaviour what we are manually doing from UI when custom fields of Lead are mapped with contact (Navigate to SetUp->Customize->Leads->Fields then in Lead Custom Fields & Relationships section Map Lead Fields button.)

I have the C# code to convert a lead into contact. However I need to map the custom fields of lead to custom fields of contact.

Like for e.g:

1) Lead.Newsletter__c (Custom field of check box type in lead)

2) Contact.Newsletter__c (Custom field of check box type in contact)

3) Now, if Lead.Newsletter__c is checked then when I convert any lead to contact, then Contact.Newsletter__c should be checked automatically.

I am able to fetch all the custom fields by using describeSObjects of Partener WSDL proxy class, but still unable to located where the changes should be made

2
Could you let me know if you are trying to convert a lead through Apex Controller class.?Ilyas

2 Answers

1
votes

If you want a simple design, essentially I would do it in a static mapper class. We definitely need more information to help you, but short of that, here is some psuedocode (not production code) that should be a sufficient design pattern.

public static class CustomMapper
{
    public static void leadToContact(Lead lead, ID contactID)
    {
        var contact = new Contact(contactID);
        ///do mapping here
        ///eg
        ///returnval.Newsletter__c = Lead.Newsletter__c;

        contact.save();
    }
}

then for the usage:

//convert the lead to a contact prior to usage here, and get the resulting contact id
CustomMapper.leadToContact(myOldLead, myContactID);

If you perform the conversion, then immediately after perform the custom mapping with an update, then it will seem instantaneous to the users anyways. Without more information, this is the best, generic design pattern that I could recommend.

0
votes

You havent provided a lot of detail to work with, but can you perhaps use a Linq projection?

eg Leads.Select(x=>new Contact{Newsletter = x.Newsletter});