Apex Code Example: Insert/Update with Response Handling
•52 min read
Here's a comprehensive example showing how to handle insert/update operations and return responses with IDs:
Simple Insert/Update Example
apex
public class TaskService {
// Response wrapper class
public class TaskResponse {
public Boolean success;
public String id;
public String message;
public List<String> errors;
public TaskResponse() {
this.errors = new List<String>();
}
}
// Insert new Task
public static TaskResponse insertTask(Task newTask) {
TaskResponse response = new TaskResponse();
try {
insert newTask;
response.success = true;
response.id = newTask.Id;
response.message = 'Task created successfully';
} catch (DmlException e) {
response.success = false;
response.message = 'Error creating task';
response.errors.add(e.getMessage());
}
return response;
}
// Update existing Task
public static TaskResponse updateTask(Task taskToUpdate) {
TaskResponse response = new TaskResponse();
try {
update taskToUpdate;
response.success = true;
response.id = taskToUpdate.Id;
response.message = 'Task updated successfully';
} catch (DmlException e) {
response.success = false;
response.message = 'Error updating task';
response.errors.add(e.getMessage());
}
return response;
}
}JavaScriptUsage Example
apex
// Insert example
Task newTask = new Task(
Subject = 'Follow up',
ActivityDate = System.today(),
Status = 'Open'
);
TaskService.TaskResponse insertResponse = TaskService.insertTask(newTask);
if (insertResponse.success) {
System.debug('Task inserted with ID: ' + insertResponse.id);
} else {
System.debug('Error: ' + insertResponse.message);
System.debug('Details: ' + insertResponse.errors);
}
// Update example
Task existingTask = [SELECT Id FROM Task LIMIT 1];
existingTask.Status = 'Completed';
TaskService.TaskResponse updateResponse = TaskService.updateTask(existingTask);JavaScriptAdvanced Example with Bulk Operations
apex
public class BulkTaskService {
public class BulkTaskResponse {
public Boolean success;
public List<String> successIds;
public List<String> errors;
public Integer totalProcessed;
public BulkTaskResponse() {
this.successIds = new List<String>();
this.errors = new List<String>();
this.totalProcessed = 0;
}
}
// Insert multiple tasks
public static BulkTaskResponse insertMultipleTasks(List<Task> tasksToInsert) {
BulkTaskResponse response = new BulkTaskResponse();
response.totalProcessed = tasksToInsert.size();
Database.SaveResult[] saveResults = Database.insert(tasksToInsert, false);
for (Integer i = 0; i < saveResults.size(); i++) {
if (saveResults[i].isSuccess()) {
response.successIds.add(saveResults[i].getId());
} else {
String errorMsg = 'Record ' + i + ': ';
for (Database.Error error : saveResults[i].getErrors()) {
errorMsg += error.getMessage() + ' | ';
}
response.errors.add(errorMsg);
}
}
response.success = response.errors.isEmpty();
return response;
}
// Update multiple tasks
public static BulkTaskResponse updateMultipleTasks(List<Task> tasksToUpdate) {
BulkTaskResponse response = new BulkTaskResponse();
response.totalProcessed = tasksToUpdate.size();
Database.SaveResult[] saveResults = Database.update(tasksToUpdate, false);
for (Integer i = 0; i < saveResults.size(); i++) {
if (saveResults[i].isSuccess()) {
response.successIds.add(saveResults[i].getId());
} else {
String errorMsg = 'Record ' + i + ': ';
for (Database.Error error : saveResults[i].getErrors()) {
errorMsg += error.getMessage() + ' | ';
}
response.errors.add(errorMsg);
}
}
response.success = response.errors.isEmpty();
return response;
}
}JavaScriptUsage Example for Bulk Operations
apex
List<Task> tasks = new List<Task>{
new Task(Subject = 'Task 1', Status = 'Open'),
new Task(Subject = 'Task 2', Status = 'Open'),
new Task(Subject = 'Task 3', Status = 'Open')
};
BulkTaskService.BulkTaskResponse bulkResponse = BulkTaskService.insertMultipleTasks(tasks);
System.debug('Success: ' + bulkResponse.success);
System.debug('Inserted IDs: ' + bulkResponse.successIds);
System.debug('Total processed: ' + bulkResponse.totalProcessed);
System.debug('Errors: ' + bulkResponse.errors);JavaScriptKey Points
- Database.insert/update with
falseparameter allows partial success (doesn't rollback on errors) - DmlException catches single record errors
- SaveResult objects provide detailed success/failure info for bulk operations
- Always wrap in try-catch for production code
- Use
response.idfor single records,response.successIdsfor bulk operations
Related Posts

How to Automatically create a follow-up Task when a Lead is converted

How You need to update a related child record whenever a parent record’s status changes, but only if the status is “Closed Won.” How would you design this in Apex?
