I've been trying to implement CDC on User entity, to handle "CREATE" event changeType unsuccessfully. I was able to receive "UPDATE" notification, but when I create a User (internal/partner user) nothing happens, there's no new log entry in Developer Console for Automated Process user. I couldn't find any problem related to this and according the CDC Developer Guide I shouldn't have trouble doing it. Everything suggests that it's possible...
This is what I have done:
1) Set up debug logs for the Automated Process entity.
2) On the Change Data Capture page in Setup, enable change notifications for the User object.
3) Create UserChangeTrigger on UserChangeEvent:
trigger UserChangeTrigger on UserChangeEvent (after insert) {
List<Task> tasks = new List<Task>();
Task tk;
// Iterate through each event message.
for (UserChangeEvent event : Trigger.New) {
// Get some event header fields
EventBus.ChangeEventHeader header = event.ChangeEventHeader;
System.debug('Received change event for ' + header.entityName + ' for the ' + header.changeType + ' operation.');
// For create operations, create a followup task
if (header.changetype == 'CREATE') {
tk = new Task();
tk.Subject = 'Follow up on created user record(s): ' +
header.recordIds;
tk.OwnerId = header.CommitUser;
tasks.add(tk);
}
// For update operations, we can get a list of changed fields
else if (header.changetype == 'UPDATE') {
System.debug('List of all changed fields:');
for (String field : header.changedFields) {
if (null == event.get(field))
System.debug('Deleted field value (set to null): ' + field);
else
System.debug('Changed field value: ' + field + '. New Value: ' + event.get(field));
}
}
}
// Insert all tasks in bulk.
if (tasks.size() > 0) {
insert tasks;
}
}
4) Create Users (tried with internal and partner users and nothing happened). Showing up next a user deactivation execution log: execution log screenshot