• KuldeepNegi
  • NEWBIE
  • 0 Points
  • Member since 2018

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 0
    Questions
  • 3
    Replies
Hi,

This was working perfectly fine from past so many months and suddenly 2 days back this started throwing an error while executing test classes.

Code to execute
List<Contact> listContact = ContactTestDataFactory.createContact(1, 'FirstName', 'LastName'); insert listContact;

ContactTestDataFactory Test Class -
//Create Contact object 
public static List<Contact> createContact(Integer no_of_contact,String FirstName, String LastName){ 

List<String> lstSalutation = new List<String>{'Mr.','Ms.','Mrs.','Miss.','Dr.','U.S. Senator','U.S. Representative','Governor','Governor’s Cabinet Secretaries','Attorney General','State Senator','State Representative','Judge','Mayor','Consul-General','Ambassador','Ambassador to the U.S.','President of a Country','Former President','Lady','Police Chief','Chief Marshal','Dean','Professor','Priest','Pastor','Monsignor','Cantor','Rabbi','Nun or Sister','Brother','Bishop','Cardinal','Swami'}; 

List<Contact> listContact= new List<Contact>(); Contact objCon = new Contact(); 

for(Integer i=0;i<no_of_contact ;i++){ 
objCon = new Contact(); 
objCon.FirstName= FirstName; 
objCon.LastName= LastName; 
objCon.Salutation= lstSalutation[i]; objCon.Giving_Status__c= 'Prospect'; objCon.npe01__Primary_Address_Type__c = 'Residence'; objCon.MailingStreet = 'test'+i; 
objCon.Street_2__c = 'test 2'+i; objCon.MailingState='test'+i; objCon.MailingCity='test'+i; objCon.MailingCountry='test'+i; 
objCon.Gender__c = 'Female'; 
objCon.FirstName= FirstName; if(i/2 == 0){ objCon.Gender__c= 'Male'; 
} 
else{ 
objCon.Gender__c= 'Female'; 
} 
objCon.Unique_ID__c = String.valueOf(i); listContact.add(objCon); 
} 
System.debug('listContact'+listContact); 
return listContact; 
}

ERROR thrown - 
System.DmlException: Insert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, npsp.TDTM_Contact: execution of AfterInsert

caused by: System.DmlException: Insert failed. First exception on row 0; first error: DUPLICATE_VALUE, duplicate value found: <unknown> duplicates value on record with id: <unknown>: []

(npsp)






: []

Any help would be really really appreciated.

I checked other post from Stackexcahnge as well and tried work around but no luck yet.
Stack excahnge similar issue link - https://salesforce.stackexchange.com/questions/79799/how-to-debug-the-mysterious-duplicate-value-found-unknown-duplicates-value-o


--
Kind Regards
Mustafa
Hi All, 
        i have a batch class in which i am migrating the users(Contact in salesforce) from Zendesk. so i created a batch and make an Api call to Zendesk to fetch All the contacts of Zendesk.
but when i run the batch the Apex job is showing Argument can not be null. what is the issue?
is it related to Contact's Account. i have some contact in Zendesk that dont have any parent Account.i am trying to debug but the debug log is blank.
Any suggestions how to solve the issue?
My Batch class is given below:-
public class BatchZendeskToSalesforceCon implements Database.Batchable<sObject>,Database.AllowsCallouts, Database.Stateful{
    public Database.querylocator start(Database.BatchableContext BC){
        string query;
        query = 'SELECT Id, Name,Email, Zd_url__c, External_Id__c, Custom_Role_id__c, Zd_ticket_restriction__c,'+
            'Zd_Organisation_id__c, Zd_report_csv__c, Zd_Suspended__c, locale__c, Zd_Tags__c,'+
            'Zd_two_factor_auth_enabled__c, Zd_verified__c, Active__c, Role_Type__c, Alias__c,'+
            'Moderator__c, Only_private_Comments__c, Zendesk_Id__c, Zd_default_group_id__c,'+
            'Zd_Restricted_Agent__c, phone, Zd_Shared__c, Notes__c, locale_id__c, Zd_time_zone__c,'+
            'Zd_Shared_phone_number__c, Zd_Shared_agent__c, Chat_only__c, Zd_Signature__c ' +
            'FROM Contact ';
        //System.assert( FALSE, query );
        return Database.getQueryLocator(query);
    }
    public void execute( Database.BatchableContext BC, List<Contact> Contacts){
        
        Set<Id> contactIds = new Set<Id>();
        for( Contact con : Contacts ){
            contactIds.add( con.Id );   
        }
        //System.assert(false, contactIds);
        getContacts();
    }
    
    public static void getContacts(){
        //ZendeskApis.ZendeskContactApi();
        HttpRequest req = new HttpRequest();
        req.setMethod( 'GET' );
        String username = 'kevin@sfdcconsultants.com';
        String password = '45j2JpHB^qy*';
        Blob headerValue = Blob.valueOf( username + ':' + password );
        String authorizationHeader = 'BASIC ' + EncodingUtil.base64Encode( headerValue );
        req.setHeader( 'Authorization', authorizationHeader );
        req.setHeader( 'Content-Type', 'application/json' );
        req.setEndpoint( 'https://timerack.zendesk.com/api/v2/users.json' );
        Http binding = new Http();
        HttpResponse res = binding.send( req );
        
        Map<String, Object> results = ( Map<String, Object> )JSON.deserializeUntyped( res.getBody() );
        
       // system.assert(false,results);
        
        List<Object> lstUsers = ( List<Object> )results.get( 'users' );
        List<Map<String, Object>> customerAtt = new List< Map< String, Object >>();
        for ( Object customer : lstUsers ) {
            Map<String, Object> customerAttributes = ( Map< String, Object >)customer;
            customerAtt.add( customerAttributes );
        }
        List< Contact > listContactToUpsert = new List< Contact >();
        for( Map< String, Object> attMap : customerAtt ){
            Contact ct = new Contact();
            String fullName = String.valueOf( attMap.get( 'name' ));
            if( fullName.split(' ').size() > 1 ){
                ct.FirstName = fullName.substring( 0, fullName.indexOf(' ') );
                ct.LastName = fullName.substring( fullName.indexOf(' ') + 1 );
            }else{
                ct.LastName = fullName;
            }
            ct.Zendesk_Id__c = String.valueOf(attMap.get( 'id' ));
            System.debug('Zendesk id'+ct.Zendesk_Id__c);
            ct.email = String.valueOf( attMap.get( 'email' ));
                        System.debug('Zendesk id'+ct.email);

            ct.Zd_url__c =  String.valueOf( attMap.get( 'url' ));
                        System.debug('Zendesk id'+ct.Zd_url__c);

            ct.Zd_time_zone__c = String.valueOf(attMap.get('time_zone'));
                        System.debug('Zendesk id'+ct.Zd_time_zone__c);

            ct.Zd_iana_time_zone__c = String.valueOf( attMap.get( 'iana_time_zone' ));
                        System.debug('Zendesk id'+ct.Zd_iana_time_zone__c);

            ct.phone = String.valueOf( attMap.get( 'phone' ));
                        System.debug('Zendesk id'+ct.phone);

            ct.Zd_Shared_phone_number__c = Boolean.valueOf( attMap.get( 'shared_phone_number' ));
                        System.debug('Zendesk id'+ct.Zd_Shared_phone_number__c);

            ct.Photo__c = String.valueOf( attMap.get( 'photo' ));
                        System.debug('Zendesk id'+ct.Photo__c);

            ct.locale__c = String.valueOf( attMap.get( 'locale' ));
            System.debug('Zendesk id'+ct.locale__c);

            ct.locale_id__c =  Integer.valueOf(attMap.get('locale_id'));
            System.debug('Zendesk id'+ct.locale_id__c);

            ct.Zd_Organisation_id__c = String.valueOf( attMap.get( 'organization_id' ));
             System.debug('Zendesk id'+ct.Zd_Organisation_id__c);

            ct.Zd_role__c =  String.valueOf( attMap.get( 'role' ));
                System.debug('Zendesk id'+ ct.Zd_role__c);

            ct.Zd_verified__c = Boolean.valueOf( attMap.get( 'verified' ));
                 System.debug('Zendesk id'+ct.Zd_verified__c);

            ct.External_Id__c = String.valueOf( attMap.get( 'external_id' ));
                        System.debug('Zendesk id'+ct.External_Id__c);

            ct.Zd_Tags__c = String.valueOf(attMap.get('tags'));
                        System.debug('Zendesk id'+ct.Zd_Tags__c);

            ct.Alias__c = String.valueOf( attMap.get( 'alias' ));
                        System.debug('Zendesk id'+ct.Alias__c);

            ct.Active__c = Boolean.valueOf( attMap.get( 'active' ));
                        System.debug('Zendesk id'+ct.Active__c);

            ct.Zd_Shared__c = Boolean.valueOf( attMap.get( 'shared' ));
                        System.debug('Zendesk id'+ct.Zd_Shared__c);

            ct.Zd_Shared_agent__c = Boolean.valueOf( attMap.get( 'shared_agent' ));
                        System.debug('Zendesk id'+ct.Zd_Shared_agent__c);

            ct.Zd_last_login_at__c = Date.valueOf( attMap.get( 'last_login_at' ));
                        System.debug('Zendesk id'+ct.Zd_last_login_at__c);

            ct.Zd_two_factor_auth_enabled__c = Boolean.valueOf(attMap.get('two_factor_auth_enabled'));
                        System.debug('Zendesk id'+ct.Zd_two_factor_auth_enabled__c);

            ct.Zd_Signature__c = String.valueOf(attMap.get('signature'));
                        System.debug('Zendesk id'+ct.Zd_Signature__c);

            ct.Notes__c = String.valueOf( attMap.get( 'notes' ));
                        System.debug('Zendesk id'+ct.Notes__c);

            ct.Role_Type__c = Integer.valueOf( attMap.get( 'role_type' ));
                        System.debug('Zendesk id'+ct.Role_Type__c);

            ct.Custom_Role_id__c =  Integer.valueOf(attMap.get('custom_role_id'));
                        System.debug('Zendesk id'+ct.Custom_Role_id__c);

            ct.Moderator__c = Boolean.valueOf(attMap.get('moderator'));
                        System.debug('Zendesk id'+ct.Moderator__c);

            ct.Zd_ticket_restriction__c = String.valueOf(attMap.get('ticket_restriction'));
                        System.debug('Zendesk id'+ct.Zd_ticket_restriction__c);

            ct.Only_private_Comments__c = Boolean.valueOf( attMap.get( 'only_private_comments' ));
                        System.debug('Zendesk id'+ct.Only_private_Comments__c);

            ct.Zd_Restricted_Agent__c = Boolean.valueOf( attMap.get( 'restricted_agent' ));
                        System.debug('Zendesk id'+ct.Zd_Restricted_Agent__c);

            ct.Zd_Suspended__c = Boolean.valueOf( attMap.get( 'suspended' ));
                        System.debug('Zendesk id'+ct.Zd_Suspended__c);

            ct.Chat_only__c = Boolean.valueOf( attMap.get( 'chat_only' ));
                        System.debug('Zendesk id'+ct.Chat_only__c);

            ct.Zd_default_group_id__c = Integer.valueOf( attMap.get( 'default_group_id' ));
                        System.debug('Zendesk id'+ct.Zd_default_group_id__c);

            ct.Zd_report_csv__c = Boolean.valueOf( attMap.get( 'report_csv' ));
                        System.debug('Zendesk id'+ct.Zd_report_csv__c);

            
            listContactToUpsert.add(ct);
            /*if(ct.Name == 'testBC'){
               System.assert(false, listContactToUpsert);
              }*/
        }
        insert listContactToUpsert;
    }
    public void finish(Database.BatchableContext BC){
        
    }  
    
}