You need to sign in to do that
Don't have an account?
Raghu Cheruvu 1
Owner Id cannot be blank error
Hi,
i am getting OwnerId cannot be blank while populating OwnerId in a trigger, the trigger is working when i load the data using a batch size of 1, but when i use the batch size of 200, i am getting the error owner id cannot be blank ( i have highlighted the line at which error is occuring in bold)
trigger Account_Trigger on Account (after insert, after update) {
Map<String,User> UserDetailsMap=new Map<String,User>();
Map<String,String> UserIdMap=new Map<String,String>();
Map<String,String> UserMap=new Map<String,String>();
Map<String,String> ZipTerrMap=new Map<String,String>();
List<Account> newAccountList=new List<Account>();
Map<String,String> Zip_TerrMap=new Map<String,String>();
Set<String> AccountZipSet=new Set<String>();
Set<String> newAccountZipSet=new Set<String>();
Map<String,String> UserTerrMap=new Map<String,String>();
List<Zip_to_Terr_vod__c> ZipTerrList=new List<Zip_To_Terr_vod__c>();
List<Account> UpdateAccountList=new List<Account>();
List<Alert_vod__c> AlertList=new List<Alert_vod__c>();List<Alert_vod__c> ExistingAlertList=new List<Alert_vod__c>();
Map<Id,Alert_vod__c> AlertMap=new Map<Id,Alert_vod__c>();Set<Id> AlertSet=new Set<Id>();
List<Alert_vod__c> InsertAlertList=new List<Alert_vod__c>();
Map<Id,Account> AccountMap=new Map<Id,Account>();
Set<Id> AlertAccountIds=new Set<Id>();
List<Account> newAccList=new List<Account>([Select Id,Primary_Zip__c,Assigned_Rep__c,Rep_Territory__c,MSL_Territory__c,
New_RX_Alert_Expiration_Date__c,New_RX_Date__c,Rep_Email__c ,New_Prescriber__c,New_Precription__c,Specialty_1_vod__c
from Account where Id IN:Trigger.newMap.keySet()
]);
Profile_Custom_Settings__c p= Profile_Custom_Settings__c.getValues('SampleInstance');
string profileid=p.ProfileId__c;
if(UserInfo.getProfileId()==profileid){
List<User> UserList=new List<User>([Select Id,Primary_Territory_Vod__c,Name,Email from user where IsActive=true]);
for(User u:UserList){
UserDetailsMap.put(u.Id,u);
UserMap.put(u.Primary_Territory_vod__c,u.Name);
UserTerrMap.put(u.Primary_Territory_vod__c,u.id);
UserIdMap.put(u.Primary_Territory_vod__c,u.Email);
}
for(Account acc:newAccList){
AccountZipSet.add(acc.Primary_Zip__c);
}
ZipTerrList=[Select Name,Territory_Vod__c from Zip_To_Terr_vod__c where Name IN: AccountZipSet];
for(Zip_To_Terr_vod__C z: ZipTerrList){
ZipTerrMap.put(z.Name,z.Territory_vod__c);
}
if(checkRecursive.runOnce()) {
for(Account acc: newAccList){
IF(ZipTerrMap.get(acc.Primary_Zip__c)!=null){
acc.Rep_Territory__c=ZipTerrMap.get(acc.Primary_Zip__c).substring(0,8);
acc.Assigned_Rep__c=UserMap.get(acc.Rep_Territory__c);
acc.Rep_Email__c=UserIdMap.get(ZipTerrMap.get(acc.Primary_Zip__c).substring(0,8));
if(ZipTerrMap.get(acc.Primary_Zip__c).length()>=15){
acc.MSL_Territory__c=ZipTerrMap.get(acc.Primary_Zip__c).substring(7,15);
acc.Assigned_MSL__c=UserMap.get(acc.MSL_Territory__c);
}
updateAccountList.add(acc);
}
}
update updateAccountList;
}
List<Account> updateAccList=new List<Account>();
/*for(Account acc: newAccList){
acc.Assigned_Rep__c=UserMap.get(acc.Rep_Territory__c);
acc.Assigned_MSL__c=UserMap.get(acc.MSL_Territory__c);
acc.Rep_Email__c=UserIdMap.get(ZipTerrMap.get(acc.Primary_Zip__c).substring(0,8));
updateAccList.add(acc);
}
update updateAccList; */
}
///To Insert Alerts...
List<Alert_vod__c> AlertExistingList=new List<Alert_vod__c>([Select Id,Account__c from Alert_Vod__c]);
for(Alert_vod__c a: AlertExistingList){
AlertAccountIds.add(a.Account__c);
}
for(Account acc:newAccList ){
if(acc.New_RX_Date__c!=null){
AccountMap.put(acc.Id,acc);
}
}
ExistingAlertList=[Select Id,Account__c from Alert_vod__c];
for(Alert_vod__c a: ExistingAlertList){
AlertMap.put(a.Account__c,a);
}
AlertList=[Select Id,Activation_Date_vod__c,Expiration_Date_vod__c,Link_Reference_vod__c,
Account__c,New_Prescriber__c,
Priority_vod__c,Public_vod__c,Dismissible_vod__c,Alert_Text_vod__c,Name,User__c,
Rep_Email__c,New_Prescription__c
from Alert_vod__c where
Account__c IN: AccountMap.keyset()];
//Insert updated alerts
List<Alert_vod__c> InsertUpdAlerts=new List<Alert_vod__C>();
if(Trigger.IsUpdate){
for(Account acc: newAccList){
if(Trigger.oldMap.get(acc.Id).New_RX_Date__c!=Trigger.newMap.get(acc.Id).New_RX_Date__c){
//for(Alert_vod__c a: AlertList){
//if(AccountMap.get(a.Account__c).New_Prescriber__c=='Yes'){
if(acc.New_Rx_Date__c!=null){
Alert_vod__c a=new Alert_vod__c();
//a.Activation_Date_vod__c=AccountMap.get(a.Account__c).New_Rx_Date__c;
a.Account__c=acc.Id;
a.Activation_Date_vod__c=acc.New_Rx_Date__c;
//a.Expiration_Date_vod__c=AccountMap.get(a.Account__c).New_RX_Alert_Expiration_Date__c;
a.Expiration_Date_vod__c=acc.New_RX_Alert_Expiration_Date__c;
a.public_vod__c=false;
a.alert_text_vod__c='Specialty:' + ' ' + acc.Specialty_1_vod__c +
'\r\n' +
+ 'Click HCPs link to view additional information';
if(acc.New_Prescriber__c=='Yes'){
a.Name='New Prescriber';
a.New_Prescriber__c='Yes';
a.New_Prescription__c='No';
}
if(acc.New_Precription__c=='Yes'){
a.Name='New Prescription';
a.New_Prescription__c='Yes';
a.New_Prescriber__c='No';
}
a.Link_Reference_vod__c=acc.Id+','+'Account';
a.Priority_vod__c='Important';
a.Dismissible_vod__c=true;
a.Rep_Email__C=acc.Rep_Email__c;
a.OwnerId=UserTerrMap.get(ZipTerrMap.get(acc.Primary_Zip__c).substring(0,8));
InsertUpdAlerts.add(a);
//}
}
}
}
}
insert InsertUpdAlerts;
if(Trigger.IsInsert){
for(Account a: Trigger.new){
if(a.New_RX_Date__c!=null){
if(!AlertAccountIds.contains(a.id)){
Alert_vod__c al=new Alert_vod__c();
al.Account__c=a.id;
al.Activation_Date_vod__c=a.New_Rx_Date__c;
al.Expiration_Date_vod__c=a.New_RX_Alert_Expiration_Date__c;
al.public_vod__c=false;
al.alert_text_vod__c='Specialty:' + ' ' + a.Specialty_1_vod__c +
'\r\n'+
+ 'Click HCPs link to view additional information';
if(a.New_Prescriber__c=='Yes'){
al.name='New Prescriber';
al.New_Prescriber__c='Yes';
al.New_Prescription__c='No';
}
if(a.New_Precription__c=='Yes'){
al.name='New Prescription';
al.New_Prescription__c='Yes';
al.New_Prescriber__c='No';
}
al.Link_Reference_vod__c=a.Id+',' + 'Account';
al.Priority_vod__c='Important';
al.Rep_Email__C=a.Rep_Email__c;
al.Dismissible_vod__c=true;
al.OwnerId=UserTerrMap.get(ZipTerrMap.get(a.Primary_Zip__c).substring(0,8));
InsertAlertList.add(al);
}
}
}
insert InsertAlertList;
}
}
i am getting OwnerId cannot be blank while populating OwnerId in a trigger, the trigger is working when i load the data using a batch size of 1, but when i use the batch size of 200, i am getting the error owner id cannot be blank ( i have highlighted the line at which error is occuring in bold)
trigger Account_Trigger on Account (after insert, after update) {
Map<String,User> UserDetailsMap=new Map<String,User>();
Map<String,String> UserIdMap=new Map<String,String>();
Map<String,String> UserMap=new Map<String,String>();
Map<String,String> ZipTerrMap=new Map<String,String>();
List<Account> newAccountList=new List<Account>();
Map<String,String> Zip_TerrMap=new Map<String,String>();
Set<String> AccountZipSet=new Set<String>();
Set<String> newAccountZipSet=new Set<String>();
Map<String,String> UserTerrMap=new Map<String,String>();
List<Zip_to_Terr_vod__c> ZipTerrList=new List<Zip_To_Terr_vod__c>();
List<Account> UpdateAccountList=new List<Account>();
List<Alert_vod__c> AlertList=new List<Alert_vod__c>();List<Alert_vod__c> ExistingAlertList=new List<Alert_vod__c>();
Map<Id,Alert_vod__c> AlertMap=new Map<Id,Alert_vod__c>();Set<Id> AlertSet=new Set<Id>();
List<Alert_vod__c> InsertAlertList=new List<Alert_vod__c>();
Map<Id,Account> AccountMap=new Map<Id,Account>();
Set<Id> AlertAccountIds=new Set<Id>();
List<Account> newAccList=new List<Account>([Select Id,Primary_Zip__c,Assigned_Rep__c,Rep_Territory__c,MSL_Territory__c,
New_RX_Alert_Expiration_Date__c,New_RX_Date__c,Rep_Email__c ,New_Prescriber__c,New_Precription__c,Specialty_1_vod__c
from Account where Id IN:Trigger.newMap.keySet()
]);
Profile_Custom_Settings__c p= Profile_Custom_Settings__c.getValues('SampleInstance');
string profileid=p.ProfileId__c;
if(UserInfo.getProfileId()==profileid){
List<User> UserList=new List<User>([Select Id,Primary_Territory_Vod__c,Name,Email from user where IsActive=true]);
for(User u:UserList){
UserDetailsMap.put(u.Id,u);
UserMap.put(u.Primary_Territory_vod__c,u.Name);
UserTerrMap.put(u.Primary_Territory_vod__c,u.id);
UserIdMap.put(u.Primary_Territory_vod__c,u.Email);
}
for(Account acc:newAccList){
AccountZipSet.add(acc.Primary_Zip__c);
}
ZipTerrList=[Select Name,Territory_Vod__c from Zip_To_Terr_vod__c where Name IN: AccountZipSet];
for(Zip_To_Terr_vod__C z: ZipTerrList){
ZipTerrMap.put(z.Name,z.Territory_vod__c);
}
if(checkRecursive.runOnce()) {
for(Account acc: newAccList){
IF(ZipTerrMap.get(acc.Primary_Zip__c)!=null){
acc.Rep_Territory__c=ZipTerrMap.get(acc.Primary_Zip__c).substring(0,8);
acc.Assigned_Rep__c=UserMap.get(acc.Rep_Territory__c);
acc.Rep_Email__c=UserIdMap.get(ZipTerrMap.get(acc.Primary_Zip__c).substring(0,8));
if(ZipTerrMap.get(acc.Primary_Zip__c).length()>=15){
acc.MSL_Territory__c=ZipTerrMap.get(acc.Primary_Zip__c).substring(7,15);
acc.Assigned_MSL__c=UserMap.get(acc.MSL_Territory__c);
}
updateAccountList.add(acc);
}
}
update updateAccountList;
}
List<Account> updateAccList=new List<Account>();
/*for(Account acc: newAccList){
acc.Assigned_Rep__c=UserMap.get(acc.Rep_Territory__c);
acc.Assigned_MSL__c=UserMap.get(acc.MSL_Territory__c);
acc.Rep_Email__c=UserIdMap.get(ZipTerrMap.get(acc.Primary_Zip__c).substring(0,8));
updateAccList.add(acc);
}
update updateAccList; */
}
///To Insert Alerts...
List<Alert_vod__c> AlertExistingList=new List<Alert_vod__c>([Select Id,Account__c from Alert_Vod__c]);
for(Alert_vod__c a: AlertExistingList){
AlertAccountIds.add(a.Account__c);
}
for(Account acc:newAccList ){
if(acc.New_RX_Date__c!=null){
AccountMap.put(acc.Id,acc);
}
}
ExistingAlertList=[Select Id,Account__c from Alert_vod__c];
for(Alert_vod__c a: ExistingAlertList){
AlertMap.put(a.Account__c,a);
}
AlertList=[Select Id,Activation_Date_vod__c,Expiration_Date_vod__c,Link_Reference_vod__c,
Account__c,New_Prescriber__c,
Priority_vod__c,Public_vod__c,Dismissible_vod__c,Alert_Text_vod__c,Name,User__c,
Rep_Email__c,New_Prescription__c
from Alert_vod__c where
Account__c IN: AccountMap.keyset()];
//Insert updated alerts
List<Alert_vod__c> InsertUpdAlerts=new List<Alert_vod__C>();
if(Trigger.IsUpdate){
for(Account acc: newAccList){
if(Trigger.oldMap.get(acc.Id).New_RX_Date__c!=Trigger.newMap.get(acc.Id).New_RX_Date__c){
//for(Alert_vod__c a: AlertList){
//if(AccountMap.get(a.Account__c).New_Prescriber__c=='Yes'){
if(acc.New_Rx_Date__c!=null){
Alert_vod__c a=new Alert_vod__c();
//a.Activation_Date_vod__c=AccountMap.get(a.Account__c).New_Rx_Date__c;
a.Account__c=acc.Id;
a.Activation_Date_vod__c=acc.New_Rx_Date__c;
//a.Expiration_Date_vod__c=AccountMap.get(a.Account__c).New_RX_Alert_Expiration_Date__c;
a.Expiration_Date_vod__c=acc.New_RX_Alert_Expiration_Date__c;
a.public_vod__c=false;
a.alert_text_vod__c='Specialty:' + ' ' + acc.Specialty_1_vod__c +
'\r\n' +
+ 'Click HCPs link to view additional information';
if(acc.New_Prescriber__c=='Yes'){
a.Name='New Prescriber';
a.New_Prescriber__c='Yes';
a.New_Prescription__c='No';
}
if(acc.New_Precription__c=='Yes'){
a.Name='New Prescription';
a.New_Prescription__c='Yes';
a.New_Prescriber__c='No';
}
a.Link_Reference_vod__c=acc.Id+','+'Account';
a.Priority_vod__c='Important';
a.Dismissible_vod__c=true;
a.Rep_Email__C=acc.Rep_Email__c;
a.OwnerId=UserTerrMap.get(ZipTerrMap.get(acc.Primary_Zip__c).substring(0,8));
InsertUpdAlerts.add(a);
//}
}
}
}
}
insert InsertUpdAlerts;
if(Trigger.IsInsert){
for(Account a: Trigger.new){
if(a.New_RX_Date__c!=null){
if(!AlertAccountIds.contains(a.id)){
Alert_vod__c al=new Alert_vod__c();
al.Account__c=a.id;
al.Activation_Date_vod__c=a.New_Rx_Date__c;
al.Expiration_Date_vod__c=a.New_RX_Alert_Expiration_Date__c;
al.public_vod__c=false;
al.alert_text_vod__c='Specialty:' + ' ' + a.Specialty_1_vod__c +
'\r\n'+
+ 'Click HCPs link to view additional information';
if(a.New_Prescriber__c=='Yes'){
al.name='New Prescriber';
al.New_Prescriber__c='Yes';
al.New_Prescription__c='No';
}
if(a.New_Precription__c=='Yes'){
al.name='New Prescription';
al.New_Prescription__c='Yes';
al.New_Prescriber__c='No';
}
al.Link_Reference_vod__c=a.Id+',' + 'Account';
al.Priority_vod__c='Important';
al.Rep_Email__C=a.Rep_Email__c;
al.Dismissible_vod__c=true;
al.OwnerId=UserTerrMap.get(ZipTerrMap.get(a.Primary_Zip__c).substring(0,8));
InsertAlertList.add(al);
}
}
}
insert InsertAlertList;
}
}
Incase it doesnt work, try puutting some Debug statements and track the flow.