function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Dewerys VasquezDewerys Vasquez 

Hi, I am getting the following error message when creating a new Event. Please Help.

Error: Invalid Data.
Review all error messages below to correct your data.
Apex trigger eventCreateJobOutcome caused an unexpected exception, contact your administrator: eventCreateJobOutcome: execution of AfterInsert caused by: System.QueryException: List has no rows for assignment to SObject: Trigger.eventCreateJobOutcome: line 2, column 1
Best Answer chosen by Dewerys Vasquez
Amit Chaudhary 8Amit Chaudhary 8
It look like your code is failing due to below line
RecordType followUpRecordType = [SELECT Id FROM RecordType WHERE Name='Follow Up'];
Please check in your org you have Follow Up Record Type ?


 

All Answers

Amit Chaudhary 8Amit Chaudhary 8
Please post code of your eventCreateJobOutcome Trigger so that we can help you
 
AjazAjaz

Hey Dewerys,

The above error usually shows up when you have queried for something and used the result on a VF page. But the query resulted 0 rows and still trying to access the record value (which does not exist right now per the criteria in SOQL).

Check for the criteria used in SOQL and try again. If possible help me with the source code.

Let me know the feedback.

Regards,

Zaja.

Dewerys VasquezDewerys Vasquez
Hello Amit, Ajaz, 

Sorry for the late respond. Here is the source code for the  eventCreateJobOutcome Trigger. Thanks!

trigger eventCreateJobOutcome on Event (after insert) {
    RecordType followUpRecordType = [SELECT Id FROM RecordType WHERE Name='Follow Up'];
    List<Event> newEvents = new List<Event>();
    Set<Id> whatIds = new Set<Id>();
    Set<Id> whoIds = new Set<Id>();
    Map<Id, Event> eventMap = new Map<Id, Event>();
    List<Event> Events = new List<Event>();
    if(Trigger.isInsert){
        for(Event E : Trigger.new){ 
            if(E.RecordTypeId != followUpRecordType.id || E.whoId == null) continue;
            if(string.valueOf(E.whoId).substring(0, 3) != '003') continue;
            boolean hasModifiedFields = false;
            for(Schema.FieldSetMember f: SObjectType.Event.FieldSets.FollowupOutcomes.getFields()){
                if(E.get(f.getFieldPath()) != null) hasModifiedFields = true;
            }
            if(hasModifiedFields) Events.add(E);
        } 
    }       
    
    if(Events.size()>0){
        List<Job_Outcome__c> JobOutcomes = new List<Job_Outcome__c>();
        for(Event E : Events){
            JobOutcomes.add(
                            new Job_Outcome__c(
                                Benefits_Added__c = E.Benefits_Added__c,
                                Contact__c = E.whoId,
                                Job_Made_Permanent__c = E.Job_Made_Permanent__c,
                                Job_Placement__c = E.whatId,
                                New_Hours_Week__c = E.New_Hours_Week__c,
                                New_Title__c = E.New_Title__c,
                                New_Wage__c = E.New_Wage__c,
                                New_Wage_Type__c = E.New_Wage_Type__c,
                                Outcome_Date__c = E.ActivityDate,
                                EventId__c = E.Id,
                                Promoted__c = E.Promoted__c));          
        }
        if(jobOutcomes.size()>0) upsert jobOutcomes;
    }       
/*
    if(!eventMap.isEmpty()){
        List<Job_Outcome__c> JobOutcomes = new List<Job_Outcome__c>();
        List<Job_Outcome__c> JobInserts = new List<Job_Outcome__c>();
        Map<Id, Contact> contactMap = new Map<Id, Contact>([select id, Last_Successful_Follow_Up__c from Contact where Id IN :whoIds]);
        List<Contact> contactUpdates = new List<Contact>();
        Set<Id> updatedOutcomeEvents = new Set<Id>();
        for(Event E : eventMap.values()){
            if(contactMap.get(E.whoId).Last_Successful_Follow_Up__c == null || 
                    E.ActivityDate > contactMap.get(E.whoId).Last_Successful_Follow_Up__c)
                    contactUpdates.add(new Contact(id=E.whoId, Last_Successful_Follow_Up__c = E.ActivityDate ));
        }                        
        for(Job_Outcome__c J : [select Id,EventId__c from Job_Outcome__c where EventId__c IN :eventMap.keySet()]){
            updatedOutcomeEvents.add(J.EventID__c);
            JobOutcomes.add(
                            new Job_Outcome__c(
                                Benefits_Added__c = eventMap.get(J.EventId__c).Benefits_Added__c,
                                Contact__c = eventMap.get(J.EventId__c).whoId,
                                Job_Made_Permanent__c = eventMap.get(J.EventId__c).Job_Made_Permanent__c,
                                New_Hours_Week__c = eventMap.get(J.EventId__c).New_Hours_Week__c,
                                New_Title__c = eventMap.get(J.EventId__c).New_Title__c,
                                New_Wage__c = eventMap.get(J.EventId__c).New_Wage__c,
                                New_Wage_Type__c = eventMap.get(J.EventId__c).New_Wage_Type__c,
                                Outcome_Date__c = eventMap.get(J.EventId__c).ActivityDate,
                                EventId__c = eventMap.get(J.EventId__c).Id,
                                Id = J.Id,
                                Promoted__c = eventMap.get(J.EventId__c).Promoted__c));    
        }
        if(JobOutcomes.size()>0) update JobOutcomes; 
        if(contactUpdates.size()>0) update contactUpdates;  
        Map<Id, Job_Placement__c> placementMap = new Map<Id, Job_Placement__c>([select id, job_retention__c from Job_Placement__c where Id IN :whatIds]); 
        for(Event E : eventMap.values()){
            if(!updatedOutcomeEvents.contains(E.id)){
            JobInserts.add(
                            new Job_Outcome__c(
                                Benefits_Added__c = E.Benefits_Added__c,
                                Contact__c = E.whoId,
                                Job_Made_Permanent__c = E.Job_Made_Permanent__c,
                                Job_Placement__c = E.WhatId,
                                Job_Retention__c = placementMap.get(E.whatId).Job_Retention__c,
                                New_Hours_Week__c = E.New_Hours_Week__c,
                                New_Title__c = E.New_Title__c,
                                New_Wage__c = E.New_Wage__c,
                                New_Wage_Type__c = E.New_Wage_Type__c,
                                Outcome_Date__c = E.ActivityDate,
                                EventId__c = E.Id,
                                Promoted__c = E.Promoted__c)); }
        }        
        if(jobInserts.size()>0) insert jobInserts;
    }     
    if(newEvents.size()>0){
        List<Job_Outcome__c> JobOutcomes = new List<Job_Outcome__c>();
        List<Contact> contactUpdates = new List<Contact>();
        Map<Id, Job_Placement__c> placementMap = new Map<Id, Job_Placement__c>([select id, job_retention__c from Job_Placement__c where Id IN :whatIds]);
        Map<Id, Contact> contactMap = new Map<Id, Contact>([select id, Last_Successful_Follow_Up__c from Contact where Id IN :whoIds]);      
        system.debug(placementMap);
        for(Event E : newEvents){
            Date eventDate = E.ActivityDate;
            if(E.Follow_Up_Outcome__c == 'Working' && 
               (contactMap.get(E.whoId).Last_Successful_Follow_Up__c == null || 
                    eventDate > contactMap.get(E.whoId).Last_Successful_Follow_Up__c))
                    contactUpdates.add(new Contact(id=E.whoId, Last_Successful_Follow_Up__c = eventDate ));  
            JobOutcomes.add(
                            new Job_Outcome__c(
                                Benefits_Added__c = E.Benefits_Added__c,
                                Contact__c = E.whoId,
                                Job_Made_Permanent__c = E.Job_Made_Permanent__c,
                                Job_Placement__c = E.WhatId,
                                Job_Retention__c = placementMap.get(E.whatId).Job_Retention__c,
                                New_Hours_Week__c = E.New_Hours_Week__c,
                                New_Title__c = E.New_Title__c,
                                New_Wage__c = E.New_Wage__c,
                                New_Wage_Type__c = E.New_Wage_Type__c,
                                Outcome_Date__c = eventDate,
                                EventId__c = E.Id,
                                Promoted__c = E.Promoted__c));    
        }
        if(contactUpdates.size()>0) update contactUpdates;
        if(JobOutcomes.size()>0) insert JobOutcomes;

    }*/
}
 
Amit Chaudhary 8Amit Chaudhary 8
It look like your code is failing due to below line
RecordType followUpRecordType = [SELECT Id FROM RecordType WHERE Name='Follow Up'];
Please check in your org you have Follow Up Record Type ?


 
This was selected as the best answer
Dewerys VasquezDewerys Vasquez
You were correct Amit, the Record Type Label was named "Client Follow Up", So I renamed "Follow Up" to match the code and it worked!
I am a Junior Admin with no programming background and I come accross a different problem almost everyday, this was really helpfull to me. 

Thank you very much!