You need to sign in to do that
Don't have an account?
Nicholas Mcbride
Lead not converting to account unless "Lead Owner" is an admin?
Ok, newbie here, and I am Stuck. I am stepping into an already existing salesforce instance that has a trigger for lead conversion (I am sharing the trigger below). The lead will not convert for a standard user (or another admin for that matter) unless the "Lead Owner" is an admin, however, as soon as the owner is made an admin, it will convert, so I know it is not an issue with the profile being allowed to convert leads, it has something to do with record ownership, I just don't know what :) Thank you in advance for your help!!!
trigger ConvertLead on Lead (after update) {
Database.LeadConvert[] leadList = new Database.LeadConvert[]{} ;
String convertStatus = [SELECT MasterLabel FROM LeadStatus WHERE isConverted = true limit 1].MasterLabel;
Id[] acctIds = new Id[]{};
Program_Enrollment__c[] enrollList = new Program_Enrollment__c[]{};
Semester__c[] semesterList = [SELECT Id, Name FROM Semester__c];
Map<String, Id> semesterMap = new Map<String, Id>();
Map<String, Id> studentMap = new Map<String, Id>();
if (semesterList.size() > 0)
{
for (Semester__c semester : semesterList)
{
semesterMap.put(semester.Name, semester.Id);
}
}
if (trigger.new.size() == 1)
{
String UFID = trigger.new[0].UFID__c;
Account[] student = [SELECT Id FROM Account WHERE UFID__c = :UFID limit 1];
if (student.size() == 1)
{
studentMap.put(UFID, student[0].Id);
}
}
else
{
Account[] students = [SELECT Id, UFID__c FROM Account];
if (students.size() > 0)
{
for (Account student : students)
{
studentMap.put(student.UFID__c, student.Id);
}
}
}
for (Lead applicant : trigger.new)
{
String UFID = applicant.UFID__c;
if (applicant.Status == convertStatus && applicant.isConverted == false && string.isBlank(applicant.Program__c) == false)
{
if (studentMap.containsKey(UFID))
{
applicant.addError('A student with this UFID already exists. Search for: ' + UFID);
}
else
{
Database.LeadConvert convLead = new Database.LeadConvert();
convLead.setLeadId(applicant.Id);
convLead.setConvertedStatus(convertStatus);
convLead.setDoNotCreateOpportunity(true);
leadList.add(convLead);
}
}
}
if (leadList.size() > 0)
{
Database.LeadConvertResult[] results = Database.convertLead(leadList, false);
for (Database.LeadConvertResult result : results)
{
if (result.isSuccess())
{
acctIds.add(result.getAccountId());
}
}
}
if (acctIds.size() > 0)
{
Account[] acctList = [SELECT Id, Application_Term__c, Program__c FROM Account WHERE Id IN :acctIds];
for (Account acct : acctList)
{
Program_Enrollment__c newEnroll = new Program_Enrollment__c(Program__c = acct.Program__c, Student__c = acct.Id);
if ( ! string.isBlank(acct.Application_Term__c))
{
Id semester;
if (semesterMap.containsKey(acct.Application_Term__c))
{
semester = semesterMap.get(acct.Application_Term__c);
}
else
{
Semester__c newSemester = new Semester__c(Name = acct.Application_Term__c);
insert newSemester;
semester = newSemester.Id;
semesterMap.put(acct.Application_Term__c, semester);
}
newEnroll.Semester_Start__c = semester;
}
enrollList.add(newEnroll);
}
Database.SaveResult[] results = Database.insert(enrollList, false);
}
}
trigger ConvertLead on Lead (after update) {
Database.LeadConvert[] leadList = new Database.LeadConvert[]{} ;
String convertStatus = [SELECT MasterLabel FROM LeadStatus WHERE isConverted = true limit 1].MasterLabel;
Id[] acctIds = new Id[]{};
Program_Enrollment__c[] enrollList = new Program_Enrollment__c[]{};
Semester__c[] semesterList = [SELECT Id, Name FROM Semester__c];
Map<String, Id> semesterMap = new Map<String, Id>();
Map<String, Id> studentMap = new Map<String, Id>();
if (semesterList.size() > 0)
{
for (Semester__c semester : semesterList)
{
semesterMap.put(semester.Name, semester.Id);
}
}
if (trigger.new.size() == 1)
{
String UFID = trigger.new[0].UFID__c;
Account[] student = [SELECT Id FROM Account WHERE UFID__c = :UFID limit 1];
if (student.size() == 1)
{
studentMap.put(UFID, student[0].Id);
}
}
else
{
Account[] students = [SELECT Id, UFID__c FROM Account];
if (students.size() > 0)
{
for (Account student : students)
{
studentMap.put(student.UFID__c, student.Id);
}
}
}
for (Lead applicant : trigger.new)
{
String UFID = applicant.UFID__c;
if (applicant.Status == convertStatus && applicant.isConverted == false && string.isBlank(applicant.Program__c) == false)
{
if (studentMap.containsKey(UFID))
{
applicant.addError('A student with this UFID already exists. Search for: ' + UFID);
}
else
{
Database.LeadConvert convLead = new Database.LeadConvert();
convLead.setLeadId(applicant.Id);
convLead.setConvertedStatus(convertStatus);
convLead.setDoNotCreateOpportunity(true);
leadList.add(convLead);
}
}
}
if (leadList.size() > 0)
{
Database.LeadConvertResult[] results = Database.convertLead(leadList, false);
for (Database.LeadConvertResult result : results)
{
if (result.isSuccess())
{
acctIds.add(result.getAccountId());
}
}
}
if (acctIds.size() > 0)
{
Account[] acctList = [SELECT Id, Application_Term__c, Program__c FROM Account WHERE Id IN :acctIds];
for (Account acct : acctList)
{
Program_Enrollment__c newEnroll = new Program_Enrollment__c(Program__c = acct.Program__c, Student__c = acct.Id);
if ( ! string.isBlank(acct.Application_Term__c))
{
Id semester;
if (semesterMap.containsKey(acct.Application_Term__c))
{
semester = semesterMap.get(acct.Application_Term__c);
}
else
{
Semester__c newSemester = new Semester__c(Name = acct.Application_Term__c);
insert newSemester;
semester = newSemester.Id;
semesterMap.put(acct.Application_Term__c, semester);
}
newEnroll.Semester_Start__c = semester;
}
enrollList.add(newEnroll);
}
Database.SaveResult[] results = Database.insert(enrollList, false);
}
}
1. Make sure "Convert Leads" option is checked at the profile level for the user who converting the lead.
2. If #1 is not working, put the below statement in try.. catch, Database.LeadConvertResult[] results = Database.convertLead(leadList, false); Set the Debug Log for the User Who converting lead. If failure occurs, find the exception from the Log.