如何避免使用apex批处理在salesforce中插入重复的联系人(使用电子邮件检查)?

时间:2014-06-18 13:21:39

标签: salesforce batch-processing duplicate-removal apex

我正在尝试使用顶级批处理中的外部api调用在salesforce中插入新的联系人和潜在客户。我在一天中运行一次并在salesfoce中插入500个联系人或潜在客户。   但我的批处理文件是插入具有相同电子邮件地址的重复联系我想跳过联系人或带领记录,当相同的电子邮件ID已经与另一条记录存在时插入。

如果我使用查询检查每个记录的电子邮件地址,那么SOQL查询限制将是一个问题。

如何避免重复插入联系人或引导销售人员。

先谢谢 Rajendra J.

Apex代码:

request.setMethod(' GET&#39);               request.setTimeout(120000);               request.setEndpoint(' http://api.nurturehq.com/contacts/many?nurture_id=&#39 + + LAST_INSERT_ID'&安培;限制= 10安培;的auth_token =&#39 + obj_authentication.nurture_authentication_key__c);               request.setHeader(' X-Api-Version',' 2.0');               request.setHeader(' X-Access-Id',' APP_ID3MVG9A2kN3Bn17hvx6UytrOeZp67_J835ecdoZ5eJmyC_BQS227UFPVb5KgNJW7YpVd9oTA6sCJ19msqZQ9sY');               request.setHeader(' X-Access-Secret',' SECRET_KEY4317178691269588217');  JSONParser解析器= JSON.createParser(response.getBody());            // system.debug(' jsondataaaa' + parser);            NurtureSingleton__c nurSingle = [SELECT nurture_last_insert_contact_id__c FROM NurtureSingleton__c limit 1];             List listContacts = new List();             while(parser.nextToken()!= null){

            if (parser.getCurrentToken() == JSONToken.START_ARRAY) {
                while (parser.nextToken() != null) {

              if (parser.getCurrentToken() == JSONToken.START_OBJECT){

                  Contacts cnts = (Contacts)parser.readValueAs(Contacts.class);

                 first_name=cnts.first_name;
                 last_name=cnts.last_name;

                 if(String.isEmpty(first_name)) {
                     first_name='-';
                 }

                 if(String.isEmpty(last_name)) {
                     last_name='-';
                 }

                         listContacts.add(new Contact(FirstName = first_name , LastName = last_name,Email=cnts.email,Title=cnts.title,Birthdate=cnts.birthdate,Phone=cnts.phone,
                             MobilePhone=cnts.mobile,Fax=cnts.fax,Description=cnts.description,LeadSource=cnts.lead_source,MailingCity=cnts.city,MailingState=cnts.state,
                             MailingPostalCode = cnts.zip, MailingCountry = cnts.country,Department=cnts.department,Salutation=cnts.Salutation,
                             MailingStreet=cnts.address,Nurture_contact_id__c=cnts.id,AccountId=cnts.salesforce_account_id));

                             nurSingle.nurture_last_insert_contact_id__c = cnts.id;
                          //insert listContacts;

              }
             }
           }   

       }
       insert listContacts;

1 个答案:

答案 0 :(得分:0)

你说过 “但我的批处理文件正在插入具有相同电子邮件地址的重复联系人。”

这里的问题是,它是重复的还是只是同一个电子邮件地址?

您需要比较整个记录或至少名字,姓氏电子邮件和电话 企业业务将有联系电子邮件,这意味着史密斯夫人和其他人可以并将收到一封电子邮件,如支持@ ...或Info @ .....和customer-care @ .. 因此,如果您已经在列表中有一个人但是另一个人出现了,那么对电子邮件进行简单验证是行不通的。

成像医院AandE@xyzhospital.com,现在您正在销售健康/卫生产品并直接向医生销售,您已经向那里的2名医生和第3名(新的领导加入)销售,但您只能到达他们在AandE@xyzhospital.com下,由于您只比较电子邮件地址

,因此不会创建新的潜在客户