Development questions
When a Case is created with Origin = 'Email' and Priority = 'High', automatically assign it to a specific SLA Queue and create an Entitlement task.
Use before insert to set the owner to a Queue and after insert to create the Task. Query the Queue once.
apex
trigger CaseTrigger on Case (before insert, after insert) {
if (Trigger.isBefore) {
Id qId = [SELECT Id FROM Group WHERE Type = 'Queue' AND DeveloperName = 'High_Priority_SLA' LIMIT 1].Id;
for (Case c : Trigger.new) if (c.Origin == 'Email' && c.Priority == 'High') c.OwnerId = qId;
} else {
List<Task> tasks = new List<Task>();
for (Case c : Trigger.new) {
if (c.Origin == 'Email' && c.Priority == 'High') {
tasks.add(new Task(Subject = 'Review Entitlement / SLA', WhatId = c.Id, ActivityDate = Date.today().addDays(1)));
}
}
insert tasks;
}
}
Case Assignment Rules or Flow can also route to queues declaratively.
apex-triggertriggercodingscenariocase
More Development questions
- What is an Apex Trigger in Salesforce and when should you use it over Flows?
- What is the difference between before triggers and after triggers?
- Explain all Trigger context variables (isInsert, isUpdate, isDelete, isUndelete, isBefore, isAfter, isExecuting, size, operationType).
- What is the difference between Trigger.new and Trigger.old?
- In which trigger events are Trigger.new and Trigger.newMap available?
- In which trigger events are Trigger.old and Trigger.oldMap available?