Activity Forums Salesforce® Discussions How to update error message back to processed record in Salesforce batch apex?

  • How to update error message back to processed record in Salesforce batch apex?

    Posted by Sainath on October 29, 2019 at 10:17 am

    Can anyone guilde me how to update the error message back to the processed record in salesforce if any error occurs in batch apex.

    I am processing records from SIS_Staging__c object to create or update contact based on condition, if any error occurs for any record then I want to update the error field on SIS_Staging__c object.

    Below is my code of batch apex where I used database.savepoint method to rollback the changes if any error occurs.

    can anyone guide me on this, I don't have any idea how to process error message back to processed record please.

     

    global class newbatchapex implements Database.Batchable<sObject>, 	Database.stateful{
        global Database.QueryLocator start(Database.BatchableContext BC) {
            return DataBase.getQueryLocator([SELECT Id,Name,Status__c,SIS_Student_ID__c ,First_Name__c,Last_Name__c,Email__c,Mailing_Country__c,SIS_Application_Id__c,AdmTyp__c,Resident_Tuition__c,ActnRsn__c,Admit_Term__c,Home_Country__c,Plan__c,Prog1__c,Prog__c,
                                              ProgActn__c
                                             FROM SIS_Staging__c
                                            ]);
        }
        global void execute(Database.BatchableContext BC , List <SIS_Staging__c> staginglist) {
    		Set<String> uniquekeySet = new Set<String>();
    		for(SIS_Staging__c stagingObj : staginglist){
    			uniquekeySet.add(stagingObj.SIS_Student_ID__c);
    		}
    		List<Contact> contactToUpdate = new List<Contact>();
    		List<Contact> contactToInsert = new List<Contact>();
    		Map<String,Contact> studentIdTOContact = new Map<String,Contact>();
            Savepoint sp = Database.setSavepoint();
    		List<Contact> conList2 = [SELECT ID,SIS_Student_ID__c,FirstName,LastName FROM CONTACT WHERE SIS_Student_ID__c IN:uniquekeySet];
    		for(Contact conObj : conList2){
    			studentIdTOContact.put(conObj.SIS_Student_ID__c,conObj);	
    		}
            for (SIS_Staging__c acct : staginglist){ 
                  if(studentIdTOContact.containsKey(acct.SIS_Student_ID__c)){
    				 Contact con = studentIdTOContact.get(acct.SIS_Student_ID__c);
    				 con.FirstName = acct.First_Name__c;
                     con.LastName = acct.Last_Name__c;
                     con.hed__AlternateEmail__c = acct.Email__c;
                     con.SIS_Student_ID__c = acct.SIS_Student_ID__c;
                     con.hed__Country_of_Origin__c = acct.Home_Country__c;
                     con.Current_Country_of_Study__c = acct.Mailing_Country__c;
                     con.SIS_Application_Id__c = acct.SIS_Application_Id__c;
    				 contactToUpdate.add(con);
    
    			  }else{
    				  Contact con = new Contact();
    				 con.FirstName = acct.First_Name__c;
                     con.LastName = acct.Last_Name__c;
                     con.hed__AlternateEmail__c = acct.Email__c;
                     con.SIS_Student_ID__c = acct.SIS_Student_ID__c;
                     con.hed__Country_of_Origin__c = acct.Home_Country__c;
                     con.Current_Country_of_Study__c = acct.Mailing_Country__c;
                     con.SIS_Application_Id__c = acct.SIS_Application_Id__c;
                     con.LeadSource = acct.Status__c;
                     contactToUpdate.add(con);
    				  
    			  }
            }
            try{
                //insert contactToInsert;
                upsert contactToUpdate;
            }
            catch(exception e){
                string s = 'Error: ' + e.getMessage();
                database.rollback(sp);
            }

     

    Sainath replied 5 years ago 1 Member · 0 Replies
  • 0 Replies

Log In to reply.

Popular Salesforce Blogs

Popular Salesforce Videos

Popular Salesforce Infographics