You need to sign in to do that
Don't have an account?
vali Palagiri 1
batch class issue while splitting the data from Source to Target objects.
ERROR::
09:02:02.0 (435391)|CODE_UNIT_STARTED|[EXTERNAL]|01pP0000000Gy1L|Update_policy_status 09:04:07.202 (125202124964)|FATAL_ERROR|Internal Salesforce.com Error 09:04:07.202 (125202204681)|CUMULATIVE_LIMIT_USAGE
global class Update_policy_status implements Database.Batchable<sObject>,Database.Stateful,Database.AllowsCallouts{
global list<string> subscribercontractid = new list<string>();
global list<string> responseid = new list<string>();
global list<string> membercontractid = new list<string>();
global list<string> groupresponseid = new list<string>();
global String query;
global String voidquery;
String csv = 'Policy Id, Sub/Mem_Contract_Id\n';
global String targetObjectname;
global Transaction_Log__c transactionLog;
global String message = System.now()+' : Policy Void Job Started.';
global list<Policy_Void_Criteria__c> UpdateVoidedstatus = new list<Policy_Void_Criteria__c>();
//string recname='A-1193844';
global Update_policy_status( list<Policy_Void_Criteria__c> PolicyVoidcriteria , String Objectname ){
query = 'Select id,Contract_or_Rate__c,Field_name__c,Target_Object__c,Voided_key__c,To_be_Voided__c from Policy_Void_Criteria__c where To_be_Voided__c = true and Target_Object__c = \''+Objectname+'\'';
System.debug('Query Error'+query);
targetObjectname = Objectname ;
}
global Database.QueryLocator start(Database.BatchableContext BC)
{
transactionLog = new Transaction_Log__c();
transactionLog.Started_On__c = System.now();
transactionLog.Type_of_Transaction__c = 'Policy Void Job';
transactionLog.Status__c = 'In Progress';
transactionLog.Logs__c = message;
insert transactionLog;
return Database.getQueryLocator(query);
}
global void execute(Database.BatchableContext BC,List<sObject> sObjList)
{
system.debug('Execute Error '+sObjList);
subscribercontractid = new list<string>();
responseid = new list<string>();
membercontractid = new list<string>();
groupresponseid = new list<string>();
UpdateVoidedstatus = new list<Policy_Void_Criteria__c>();
Policyselection((list<Policy_Void_Criteria__c>)sObjList);
System.debug('voidquery----'+Database.query(voidquery));
//added this code
if(Database.query(voidquery)!=null || !(Database.query(voidquery).isEmpty())){
UpdatePolicydata(Database.query(voidquery));
try{
system.debug('UpdateVoidedstatus Error'+UpdateVoidedstatus);
update UpdateVoidedstatus;
}
catch(Exception e)
{
system.debug('GetMessage Error'+e.getMessage());
if(message.length()<30000)
{
system.debug('error3'+message.length());
message = message+'\n'+e.getMessage();
transactionLog.Status__c = 'Failed';
transactionLog.Ended_On__c = System.now();
transactionLog.Logs__c = message;
system.debug('transactionLog Error'+transactionLog);
update transactionLog;
}
}
}
}
global void finish(Database.BatchableContext BC)
{
message += '\n'+System.now()+' : Policy Void Job Completed for ' + targetObjectname ;
transactionLog.Status__c = 'Policy Void Job Completed';
transactionLog.Ended_On__c = System.now();
transactionLog.Logs__c = message;
update transactionLog;
Attachment attach = new Attachment();
attach.body = Blob.valueOf(csv);
attach.Name = String.valueOf('Voided_Policy_file.csv');
DateTime dt = Datetime.now();
attach.ParentId = transactionLog.id;
insert attach;
}
public void Policyselection(list<Policy_Void_Criteria__c> voidlist){
system.debug('voidlist error2'+voidlist);
for (Policy_Void_Criteria__c PV : voidlist)
{
if(PV.Target_Object__c == 'vlocity_ins__Policy__c' && PV.Field_name__c == 'Subscriber_Contract_Id__c')
{
if(PV.Contract_or_Rate__c == 'SUBSCRIBER_CONTRACT')
{
subscribercontractid.add(PV.Voided_key__c);
}
else if(PV.Contract_or_Rate__c == 'RATE_RESPONSE')
{
responseid.add(PV.Voided_key__c);
}
else if(PV.Contract_or_Rate__c == 'GROUP_RATE')
{
groupresponseid.add(PV.Voided_key__c);
}
}
if(PV.Target_Object__c == 'vlocity_ins__PolicyPartyRelationship__c' && PV.Field_name__c == 'External_Id__c')
{
if(PV.Contract_or_Rate__c == 'MEMBER_CONTRACT')
{
membercontractid.add(PV.Voided_key__c);
}
}
PV.To_be_Voided__c = false;
UpdateVoidedstatus.add(PV);
}
system.debug('criteria1'+subscribercontractid);
system.debug('criteria2'+responseid);
system.debug('criteria3'+groupresponseid);
if( targetObjectname == 'vlocity_ins__Policy__c') {
voidquery = 'select Id,Rate_Response__c,Subscriber_Contract_Id__c,Group_Policy_Id__c,Voided__c,Subscriber_Contract__c from vlocity_ins__Policy__c where Voided__c=false and (Rate_Response__c in: responseid OR Rate_Response__c in: groupresponseid OR Subscriber_Contract__c in: subscribercontractid) and (Rate_Response__c != NULL OR Subscriber_Contract__c != NULL)' ;
system.debug('void query'+voidquery); }
else if(targetObjectname == 'vlocity_ins__PolicyPartyRelationship__c')
voidquery = 'select Id,Voided__c,External_Id__c from vlocity_ins__PolicyPartyRelationship__c where Voided__c=false and Member_Contract__c in: membercontractid';
system.debug('void query1'+voidquery);
}
public void UpdatePolicydata(List<sObject> sObjList)
{
system.debug('sObjList error'+sObjList);
list<vlocity_ins__Policy__c> Policylist = new list<vlocity_ins__Policy__c>();
list<vlocity_ins__PolicyPartyRelationship__c> Policyrelationlist = new list<vlocity_ins__PolicyPartyRelationship__c>();
system.debug('query is'+sobjList.size());
if(sObjList.size()>0 )
{
if(targetObjectname == 'vlocity_ins__Policy__c')
{
For(vlocity_ins__Policy__c Po : (list<vlocity_ins__Policy__c>)sObjList)
{
system.debug('n is'+po);
Po.Voided__c = True ;
Policylist.add(Po);
system.debug('targetObjectname == vlocity_ins__Policy__c '+ Po);
if(Po.Subscriber_Contract_Id__c != null && Po.Subscriber_Contract_Id__c != '')
{ csv += Po.id + ',' + Po.Subscriber_Contract_Id__c.escapeCsv() + '\n'; system.debug('targetObjectname == vlocity_ins__Policy__c '+ Po);}
if(Po.Group_Policy_Id__c != null && Po.Group_Policy_Id__c != '')
{ csv += Po.id + ',' + Po.Group_Policy_Id__c.escapeCsv() + '\n'; system.debug('targetObjectname == vlocity_ins__Policy__c '+ Po);}
}
system.debug('n is'+csv);
ProcessDatainChunk(Policylist);
}
if(targetObjectname == 'vlocity_ins__PolicyPartyRelationship__c')
{
For(vlocity_ins__PolicyPartyRelationship__c PPR : (list<vlocity_ins__PolicyPartyRelationship__c>)sObjList)
{
PPR.Voided__c = True ;
Policyrelationlist.add(PPR);
csv += PPR.id + ',' + PPR.External_Id__c.escapeCsv() + '\n';
}
ProcessDatainChunk(Policyrelationlist);
}
}
System.debug ('############# '+ message);
}
public void ProcessDatainChunk(List<sObject> sObjList)
{
integer i=0;
integer j;
list<sObject> lstsObject=new list<sObject>();
map<id,sObject> mapsObj= new map<id,sObject>();
while(i < sObjList.size())
{
for(j=i; j<i+7000; j++)
{
if(j<sObjList.size()) mapsObj.put(sObjList[j].id,sObjList[j]);
else break;
}
try{
update mapsObj.values();
}
catch(Exception e)
{
message += '\n'+System.now()+' : The Policy Void Update failed ' + e ;
}
i=j+1;
System.debug ('#############1 '+ message);
}
}
}
09:02:02.0 (435391)|CODE_UNIT_STARTED|[EXTERNAL]|01pP0000000Gy1L|Update_policy_status 09:04:07.202 (125202124964)|FATAL_ERROR|Internal Salesforce.com Error 09:04:07.202 (125202204681)|CUMULATIVE_LIMIT_USAGE
- Maximum records are showing inprogress status.
global class Update_policy_status implements Database.Batchable<sObject>,Database.Stateful,Database.AllowsCallouts{
global list<string> subscribercontractid = new list<string>();
global list<string> responseid = new list<string>();
global list<string> membercontractid = new list<string>();
global list<string> groupresponseid = new list<string>();
global String query;
global String voidquery;
String csv = 'Policy Id, Sub/Mem_Contract_Id\n';
global String targetObjectname;
global Transaction_Log__c transactionLog;
global String message = System.now()+' : Policy Void Job Started.';
global list<Policy_Void_Criteria__c> UpdateVoidedstatus = new list<Policy_Void_Criteria__c>();
//string recname='A-1193844';
global Update_policy_status( list<Policy_Void_Criteria__c> PolicyVoidcriteria , String Objectname ){
query = 'Select id,Contract_or_Rate__c,Field_name__c,Target_Object__c,Voided_key__c,To_be_Voided__c from Policy_Void_Criteria__c where To_be_Voided__c = true and Target_Object__c = \''+Objectname+'\'';
System.debug('Query Error'+query);
targetObjectname = Objectname ;
}
global Database.QueryLocator start(Database.BatchableContext BC)
{
transactionLog = new Transaction_Log__c();
transactionLog.Started_On__c = System.now();
transactionLog.Type_of_Transaction__c = 'Policy Void Job';
transactionLog.Status__c = 'In Progress';
transactionLog.Logs__c = message;
insert transactionLog;
return Database.getQueryLocator(query);
}
global void execute(Database.BatchableContext BC,List<sObject> sObjList)
{
system.debug('Execute Error '+sObjList);
subscribercontractid = new list<string>();
responseid = new list<string>();
membercontractid = new list<string>();
groupresponseid = new list<string>();
UpdateVoidedstatus = new list<Policy_Void_Criteria__c>();
Policyselection((list<Policy_Void_Criteria__c>)sObjList);
System.debug('voidquery----'+Database.query(voidquery));
//added this code
if(Database.query(voidquery)!=null || !(Database.query(voidquery).isEmpty())){
UpdatePolicydata(Database.query(voidquery));
try{
system.debug('UpdateVoidedstatus Error'+UpdateVoidedstatus);
update UpdateVoidedstatus;
}
catch(Exception e)
{
system.debug('GetMessage Error'+e.getMessage());
if(message.length()<30000)
{
system.debug('error3'+message.length());
message = message+'\n'+e.getMessage();
transactionLog.Status__c = 'Failed';
transactionLog.Ended_On__c = System.now();
transactionLog.Logs__c = message;
system.debug('transactionLog Error'+transactionLog);
update transactionLog;
}
}
}
}
global void finish(Database.BatchableContext BC)
{
message += '\n'+System.now()+' : Policy Void Job Completed for ' + targetObjectname ;
transactionLog.Status__c = 'Policy Void Job Completed';
transactionLog.Ended_On__c = System.now();
transactionLog.Logs__c = message;
update transactionLog;
Attachment attach = new Attachment();
attach.body = Blob.valueOf(csv);
attach.Name = String.valueOf('Voided_Policy_file.csv');
DateTime dt = Datetime.now();
attach.ParentId = transactionLog.id;
insert attach;
}
public void Policyselection(list<Policy_Void_Criteria__c> voidlist){
system.debug('voidlist error2'+voidlist);
for (Policy_Void_Criteria__c PV : voidlist)
{
if(PV.Target_Object__c == 'vlocity_ins__Policy__c' && PV.Field_name__c == 'Subscriber_Contract_Id__c')
{
if(PV.Contract_or_Rate__c == 'SUBSCRIBER_CONTRACT')
{
subscribercontractid.add(PV.Voided_key__c);
}
else if(PV.Contract_or_Rate__c == 'RATE_RESPONSE')
{
responseid.add(PV.Voided_key__c);
}
else if(PV.Contract_or_Rate__c == 'GROUP_RATE')
{
groupresponseid.add(PV.Voided_key__c);
}
}
if(PV.Target_Object__c == 'vlocity_ins__PolicyPartyRelationship__c' && PV.Field_name__c == 'External_Id__c')
{
if(PV.Contract_or_Rate__c == 'MEMBER_CONTRACT')
{
membercontractid.add(PV.Voided_key__c);
}
}
PV.To_be_Voided__c = false;
UpdateVoidedstatus.add(PV);
}
system.debug('criteria1'+subscribercontractid);
system.debug('criteria2'+responseid);
system.debug('criteria3'+groupresponseid);
if( targetObjectname == 'vlocity_ins__Policy__c') {
voidquery = 'select Id,Rate_Response__c,Subscriber_Contract_Id__c,Group_Policy_Id__c,Voided__c,Subscriber_Contract__c from vlocity_ins__Policy__c where Voided__c=false and (Rate_Response__c in: responseid OR Rate_Response__c in: groupresponseid OR Subscriber_Contract__c in: subscribercontractid) and (Rate_Response__c != NULL OR Subscriber_Contract__c != NULL)' ;
system.debug('void query'+voidquery); }
else if(targetObjectname == 'vlocity_ins__PolicyPartyRelationship__c')
voidquery = 'select Id,Voided__c,External_Id__c from vlocity_ins__PolicyPartyRelationship__c where Voided__c=false and Member_Contract__c in: membercontractid';
system.debug('void query1'+voidquery);
}
public void UpdatePolicydata(List<sObject> sObjList)
{
system.debug('sObjList error'+sObjList);
list<vlocity_ins__Policy__c> Policylist = new list<vlocity_ins__Policy__c>();
list<vlocity_ins__PolicyPartyRelationship__c> Policyrelationlist = new list<vlocity_ins__PolicyPartyRelationship__c>();
system.debug('query is'+sobjList.size());
if(sObjList.size()>0 )
{
if(targetObjectname == 'vlocity_ins__Policy__c')
{
For(vlocity_ins__Policy__c Po : (list<vlocity_ins__Policy__c>)sObjList)
{
system.debug('n is'+po);
Po.Voided__c = True ;
Policylist.add(Po);
system.debug('targetObjectname == vlocity_ins__Policy__c '+ Po);
if(Po.Subscriber_Contract_Id__c != null && Po.Subscriber_Contract_Id__c != '')
{ csv += Po.id + ',' + Po.Subscriber_Contract_Id__c.escapeCsv() + '\n'; system.debug('targetObjectname == vlocity_ins__Policy__c '+ Po);}
if(Po.Group_Policy_Id__c != null && Po.Group_Policy_Id__c != '')
{ csv += Po.id + ',' + Po.Group_Policy_Id__c.escapeCsv() + '\n'; system.debug('targetObjectname == vlocity_ins__Policy__c '+ Po);}
}
system.debug('n is'+csv);
ProcessDatainChunk(Policylist);
}
if(targetObjectname == 'vlocity_ins__PolicyPartyRelationship__c')
{
For(vlocity_ins__PolicyPartyRelationship__c PPR : (list<vlocity_ins__PolicyPartyRelationship__c>)sObjList)
{
PPR.Voided__c = True ;
Policyrelationlist.add(PPR);
csv += PPR.id + ',' + PPR.External_Id__c.escapeCsv() + '\n';
}
ProcessDatainChunk(Policyrelationlist);
}
}
System.debug ('############# '+ message);
}
public void ProcessDatainChunk(List<sObject> sObjList)
{
integer i=0;
integer j;
list<sObject> lstsObject=new list<sObject>();
map<id,sObject> mapsObj= new map<id,sObject>();
while(i < sObjList.size())
{
for(j=i; j<i+7000; j++)
{
if(j<sObjList.size()) mapsObj.put(sObjList[j].id,sObjList[j]);
else break;
}
try{
update mapsObj.values();
}
catch(Exception e)
{
message += '\n'+System.now()+' : The Policy Void Update failed ' + e ;
}
i=j+1;
System.debug ('#############1 '+ message);
}
}
}