1trigger MyAccountChangeTrigger on AccountChangeEvent (after insert) {
2 List<Task> tasks = new List<Task>();
3
4 // Iterate through each event message.
5 for (AccountChangeEvent event : Trigger.New) {
6 // Get some event header fields
7 EventBus.ChangeEventHeader header = event.ChangeEventHeader;
8 System.debug('Received change event for ' + header.entityName +
9 ' for the ' + header.changeType + ' operation.');
10
11 // Get account record fields
12 System.debug('Account Name: ' + event.Name);
13 System.debug('Account Phone: ' + event.Phone);
14
15 // Create a followup task
16 if (header.changetype == 'CREATE') {
17 Task tk = new Task();
18 tk.Subject = 'Follow up on new account for record or group of records: ' +
19 header.recordIds;
20 // Explicitly set the task owner ID to a valid user ID so that
21 // it is not Automated Process.
22 // For simplicity, we set it to the CommitUser header field,
23 // which is available for all operations.
24 tk.OwnerId = header.CommitUser;
25 tasks.add(tk);
26 }
27 else if ((header.changetype == 'UPDATE')) {
28 // For update operations, iterate over the list of changed fields
29 System.debug('Iterate over the list of changed fields.');
30 for (String field : header.changedFields) {
31 if (null == event.get(field)) {
32 System.debug('Deleted field value (set to null): ' + field);
33 } else {
34 System.debug('Changed field value: ' + field +
35 '. New Value: ' + event.get(field));
36 }
37 }
38 }
39 }
40
41 // Insert all tasks in bulk.
42 if (tasks.size() > 0) {
43 insert tasks;
44 }
45
46}