SmartConnect 2018
Salesforce Change Data Source Objects
The following objects are created to facilitate the processing of change data source maps from Salesforce:
Change table:
The change table is used to maintain the list of that changes within Salesforce. It is defined as follows:
Object Name: eOneCh_<EntityName>
API Name: eOneCh_<EntityName>__c
Label: Change tracking for <Entity Name>
Fields:
Field |
API Name |
Data Type |
Remarks |
---|---|---|---|
Sequence |
Name |
Autonumber |
Sequence number for the change table. |
Action |
Action__c |
Picklist |
Used to store the action that triggers the data source (insert, update) |
Date Processed |
DateProcessed__c |
Date/Time |
The date the processed flag was changed to true. |
Linked Record |
Link__c |
Lookup |
Used to link the change record with the changed entity record. |
Map |
Map__c |
Text(255) |
Used to store the map id that will use this change record. |
Processed |
Processed__c |
Checkbox |
False means record has not been processed by SmartConnect, true means record has been processed by SmartConnect. |
External Sequence |
Sequence__c |
Autonumber (External) |
External Sequence Id, used to access the record to update the processed status. |
Apex triggers:
The following apex trigger is created for each entity / action combination required for change data sources:
// where <entity> is the entity triggering the real time data source // where <action_initial> is i for insert and u for update // where <action> is insert or update depending on requirements // where <mapid> is the map to process the change trigger eOneCh_<mapid>_tr_<action_initial> on <entity> (before <action>) { set<ID> ids = Trigger.newMap.keyset(); for(ID id : ids) { eOneCh_<entity>__c change = new eOneCh_<entity>__c(); change.Action__c = '<action>'; change.Link__c = id; change.Processed__c = false; change.Map__c = '<mapid>'; insert change; } }
// for example the trigger for a change data source triggered by account updates for a map SF_CHANGE would be trigger eOneCh_SF_CHANGE_tr_U on Account (before update) { set<ID> ids = Trigger.newMap.keyset(); for(ID id : ids) { eOneCh_Account__c change = new eOneCh_Account__c(); change.Action__c = 'update'; change.Link__c = id; change.Processed__c = false; change.Map__c = 'SF_CHANGE'; insert change; } } |