This section includes detailed information on each supported extensibility event.
The API name for available events are defined as constants in class FCR_ExtensibilityAPI. Event names are case sensitive.
Active Response Processed
API Name: ActiveResponseProcessed
Description:Called after completion of the entire evaluation-assignment-notification sequence for an active response to a lead or contact.
Properties:
getRecordIDs Contains one entry – a list of IDs of the leads or contacts for which an active response was processed. Note that this list can contain an arbitrary list of lead and contact IDs – it is your responsibility to separate them if necessary.
Typical use:Use this function to perform custom processing on leads, contacts and their responses. This function is called after all response processing has completed – this includes assignment and notification.
Notes:
This function may be called in a future, batch or non-future context.
This function is not synchronous during response prompt processing.
By the time this function is called, the original response may no longer be active – it is your responsibility to determine if there is still an active response on the lead or contact.This function is also called for inactive responses that result in an assignment after the assignment is complete.
In rare situations with bulk processing and large numbers of sync fields, field synchronization from the lead/contact to the response may not be complete at the time this function is called.
In rare situations where an update is deferred due to a DML lock, the lead/contact or response may not be updated before this function is called. If this is an issue in your org, you can query the FCR_DeferredUpdateItem__c object to determine if this applies to any of the objects in question.
Inactive Response Processed
API Name: InactiveTQResponseProcessed
Description:Called after completion of the evaluation sequence for a qualified response to a lead or contact that is inactive.
Properties:
getRecordIDsContains one entry – a list of IDs of the leads or contacts for which an inactive response was processed. Note that this list can contain an arbitrary list of lead and contact IDs – it is your responsibility to separate them if necessary.
Typical use:Use this function to perform custom processing on leads, contacts and their responses. This function is called after response evaluation has completed – this does not include assignment and notification.
Notes:
This function may be called in a future, batch or non-future context.You can refer to the FCR_PostAssignNotificationPending__c field on the lead or contact to determine if assignment is pending for the lead or contact. If so, the Active Response Processed event will be raised for this lead after assignment is complete. The logic here differs somewhat from the Active Response Processed event, that is not called on active responses if assignment is pending.
By the time this function is called, the original response may no longer be inactive – it is your responsibility to determine if there is still an active response on the lead or contact.
In rare situations where an update is deferred due to a DML lock, the lead/contact or response may not be updated before this function is called. If this is an issue in your org, you can query the FCR_DeferredUpdateItem__c object to determine if this applies to any of the objects in question.
Inactive Unqualified Response Processed
API Name: InactiveNonTQResponseProcessed
Description:Called after completion of the evaluation sequence for a non-qualified response to a lead or contact that is inactive.
Properties:
getRecordIDsContains one entry – a list of IDs of the leads or contacts for which an inactive response was processed. Note that this list can contain an arbitrary list of lead and contact IDs – it is your responsibility to separate them if necessary.
Typical use:Use this function to perform custom processing on leads, contacts and their responses. This function is called after response evaluation has completed – this does not include assignment and notification.
Notes:
This function may be called in a future, batch or non-future context.You can refer to the FCR_PostAssignNotificationPending__c field on the lead or contact to determine if assignment is pending for the lead or contact. If so, the Active Response Processed event will be raised for this lead after assignment is complete. The logic here differs somewhat from the Active Response Processed event, that is not called on active responses if assignment is pending.
In rare situations where an update is deferred due to a DML lock, the lead/contact or response may not be updated before this function is called. If this is an issue in your org, you can query the FCR_DeferredUpdateItem__c object to determine if this applies to any of the objects in question.
Leads Converted
API Name: LeadsConverted
Description:Called after completion lead conversion processing.
Properties:
getRecordIDsContains one entry – a list of IDs of the converted leads.
getRecordListsContains three entries:
-
- The list of converted contacts (objects)
- A list containing the active response (after conversion) on the converted contact. Entries may be null.
- A list containing the created opportunity for each conversion. Entries may be null.
getAdditionalParams contains a list of FCR_ExtensibilityAPI.ConversionHookItem objects, one for each converted lead. Each object has the following fields:
-
- ContactID - The converted contact ID
- LeadID - The lead ID
- OpportunityID - The opportunity ID (may be null)
- ConvertedLeadStatus - The conversion status of the lead (status after conversion)
- PriorLeadStatus - The status of the lead prior to conversion
- LeadIsPassive - Boolean value is true if this lead was passive at the time of conversion (converted by passive user, passive mode org, or passive record type)
Typical use:Use this function to perform custom processing after conversion.
Notes:
This function may be called in a future, batch or non-future context.All four lists have the same size, where each entry represents a conversion operation.This function is called after the response management system has completed conversion processing, but before the opportunities, contacts and responses are updated – you may modify fields during this call.You may perform a SOQL call to retrieve information about converted leads, but may not update those leads.You must not perform a DML operation on any of these objects.Because of merges, it is possible for multiple leads to convert into the same contact.
Keep in mind that operation may be asynchronous, and processing may occur well after the conversion operation has completed.
The getAdditionalParams parameter was added in version 1.18 of the application. Existing integrations may need to be configured to reference the latest version of the application to see this parameter.
Merge Complete
API Name: MERGECOMPLETE
Description:Called after lead or contact merge processing.
Properties:
getRecordIDsContains one entry – a list of IDs of the master (surviving) leads and contacts.
Typical use:Use this function to perform custom processing after merge.
Notes:
This function may be called in a future, batch or non-future context.This function is called after the response management system has completed merge processing. You may query for the merged leads or contacts by using the All Rows term and filtering on the MasterRecordID field.This function is called for leads or contacts – all IDs in the list will be of the same type.On Person Account orgs, this function is called on backing contacts – not the accounts themselves.
Notification Request
API Name: NotificationRequest
Description:Called before sending Email notifications. This function is called once for each Email message (both to a user and their delegate), and again after all notifications have been processed but before emails are sent.This function can block individual Emails from being sent.
Properties:
getRecordLists:Contains one entry – list to a single CampaignMember for which notifications are being sent. This CampaignMember contains all fields that are available during notifications. This includes both Full Circle CampaignMember fields, most standard fields and sync fields.Do NOT modify any fields in this object. Will be null if processingComplete is true on the additional parameters.
getAdditionalParams:Contains a single FCR_ExtensibilityAPI. NotificationHookItem object. This object has the following fields:
-
- leadOrContactId – The ID of the lead or contact. You can use the Use the ID.getSObjectType() method to determine the object type. Will be null if processingComplete is true.
- isActiveResponseTemplate – True if this Email is in response to a new active response (uses the active response template)
- isAlreadyEngagedTemplate – True if this email is an already engaged notification (uses the already engaged template)
- isPrecedenceCampaignTemplate – True if this email is a precedence campaign notificaiton (uses the precedence campaign template)
- isDelegate – True if this Email is going to a delegate user
- Messaging.Singleemailmessage message – A singleEmailMessage object that is ready to send. All fields in the object are set. Will be null if processingComplete is true. You may modify fields in this object.
- blockEmail - Initially false, set this field to true to prevent the Email from being sent by the Response Management application. Not applicable if processingComplete is true.
- processingComplete – This field will be true on the final call to the plugin for a series of notifications. All other fields will be null or invalid if this field is true.
Typical Use: This function is called for each Email after it is created. There are two typical uses for the function:
- Decide which Emails to block or to send using the plugin. This function will be called multiple times, once for each Email. Once all of the Emails have been processed, the function will be called one last time with the processingComplete field set to true. At this time, you can perform any final operation based on data collected in the previous calls – for example, to send out one or more Email notifications in your code.
- Modify Emails before sending – changes made to the SingleEmailMessage will apply when the application sends the Email.
Notes:
This function can be called in a trigger, future or batch context.
Do not modify the CampaignMember object provided by this function. The field values in the CampaignMember object may not reflect the values in the database if this function is called during a trigger.
More than one set of notifications can go out within an execution context.
Post Influence Rebuild
API Name: PostInfluenceRebuild
Description: Called after completion of an attribution rebuild.
Properties:
- getAdditionalParams: Contains the following entries in order:
0 - DateTime: The start time of the rebuild
1 - DateTime: The end time of the rebuild
Notes:
- This event is typically called during the Finish event of a batch. Only operations that are valid during that event should be performed (which can include starting a new batch).
- The FCR_CampaignInfluenceDetailBatchProc batch may still be deleting old Campaign Influence Detail objects when this is called. For this reason, any logic that works on Campaign influence detail objects should only operate on those created after the start time of the rebuild (as specified by the first parameter in the AdditionalParams list).
- This event only exists on version 1.37.1 and later.
Post Sequence Trigger
API Name: PostSequence
Description: Called during every trigger after completion of all Response Management processing. Triggers that occur during Response Management processing do not raise this event (in other words, triggers that result from internal DML operations).This is the preferred way to process Lead, Contact, CampaignMember, Account and Opportunity triggers.Use the ID.getSObjectType() method to determine the object type.
Properties:
- getRecordLists:Contains two entries. The first is a reference to trigger.new, the second is a reference to trigger.old.
- getRecordMaps:Contains two entries. The first is a reference to trigger.newMap, the second is a reference to trigger.OldMap
- getAdditionalParams:Contains the following entries in order:
0 - String: The object name (Lead, Contact, Opportunity, etc.)
1 - Boolean: isExecuting
2 - Boolean: isInsert
3 - Boolean: isUpdate
4 - Boolean: isDelete
5 - Boolean: isBefore
6 - Boolean: isUndelete
Typical Use:A preferred way to implement triggers if you wish to ensure processing after the response management application.
Notes:
Entries in getRecordLists and getRecordMaps may be null (depending on trigger type).
You must follow all of the standard rules for each trigger type with regards to referencing the context variables.
Field values in after triggers may not reflect the current field values in the database – it is possible that DML operations during response management application processing updated field values using clones of the objects.
The RequestedFields plugin method has no impact with this event.
Post In-Sequence Trigger
API Name: PostInSequence
Description: Called after triggers that occur during Response Management processing. It is not recommended to update objects in the same transaction of the trigger, since Response Management sequence processing is not done yet. It is best to separate the transaction by raising a platform event from the trigger, and making any DML updates in the process that subscribes to the event. This (in conjunction with Post Sequence Trigger) is the preferred way to process Lead, Contact, CampaignMember, Account and Opportunity triggers.Use the ID.getSObjectType() method to determine the object type.
Properties:
- getRecordLists:Contains two entries. The first is a reference to trigger.new, the second is a reference to trigger.old.
- getRecordMaps:Contains two entries. The first is a reference to trigger.newMap, the second is a reference to trigger.OldMap
- getAdditionalParams:Contains the following entries in order:
0 - String: The object name (Lead, Contact, Opportunity, etc.)
1 - Boolean: isExecuting
2 - Boolean: isInsert
3 - Boolean: isUpdate
4 - Boolean: isDelete
5 - Boolean: isBefore
6 - Boolean: isUndelete
Typical Use:A preferred way to implement triggers if you wish to ensure processing after the response management application.
Notes:
Entries in getRecordLists and getRecordMaps may be null (depending on trigger type).
You must follow all of the standard rules for each trigger type with regards to referencing the context variables.
Field values in after triggers may not reflect the current field values in the database – it is possible that DML operations during response management application processing updated field values using clones of the objects.
The RequestedFields plugin method has no impact with this event.
Prescoring
API Name: Prescoring
Description:Called before scoring operations to allow custom code to calculate the lead or contact score when the calculations are too complex to handle using formula fields.
Properties:
- getRecordLists:Contains two entries. The first is a list of either leads or contacts to process. The second is a list of the related CampaignMember objects (this second list may be empty during reactivation)
- getRecordMaps:Contains one entry - A map to the related campaigns for the CampaignMember objects. Note that this map will be null during reactivation.
- getAdditionalParams:Contains the following entries in order:
0 - String: A string defining the type of scoring operation. It will either be "scoring" or "reactivation"
1 - Map<ID, Double>: An override map from ID to double that can be used by the plugin to override the evaluation score directly.
Typical Use:
During the event, it's common to populate a lead, contact or campaignmember field with a calculated score. The field should be the one defined for scoring in configuration. The field can be different for regular and reactivation scoring.
Instead of populating the scoring field, it is possible to populate the override map with the score values to use for the object with that ID. For example: If a lead has a scoring field field1, instead of populating that field value, you can insert an entry in the override map that contains the desired score keyed by the lead's ID. You can override lead and campaignmember score fields only - campaign score overrides are not supported. Using this map is necessary for cases where the scoring field is a formula field (and thus write-only).
Notes:
Be sure to use the RequestedFields plugin method to define all fields required to perform the necessary calculations. The default (configured) scoring fields will be queried automatically.
Keep in mind that the objects used to determine the score varies based on the type of scoring being done. For example: regular scoring always references the lead/contact, CampaignMember and campaign score fields, whereas scoring reactivation typically only refers to the lead/contact and sometimes CampaignMember score fields.
When called during reactivation, this event will be called once for each object (i.e., the getRecordLists parameter object lists will contain one record). You should not perform any queries during this call and should optimize for performance as much as possible.
This event may be called in a synchronous or asynchronous context.
Be aware that the Campaign objects provided in the getRecordMaps parameter refer to the campaigns form the CampaignMember objects (i.e. the campaignId field on the CampaignMember corresponds to keys in this map). However, in the event that these are repeat campaigns, the score field will not be valid. Instead, you must reference the score field via the FCRM.FCR_CascadeParent__r object. For example, if the score field is score, use FCRM.FCR_CascadeParent__r.score to view the campaign score.
The scoring field that you populate will be saved during regular scoring, however whether it is saved during scoring reactivation is indeterminate. In particular, it is not saved when evaluating whether rescoring reactivation should occur, and will otherwise only be saved in cases where the evaluation is made during the same context as the lead, contact or campaignmember is being updated anyway. So you should NOT treat the scoring field as a reliable indicator of the current score, as you would a formula field. If you require a reliable complex scoring field, you should use Response Management asynchronous scoring and your own custom code.
Available on Release 1.21.33 and later. The override map parameter is available effective release 1.25.5
Reactivation - Before Update
API Name: ReactivationBeforeUpdate
Description: Called before CampaignMember update of reactivated and new default campaigns during reactivation
Properties:
getRecordMaps contains two entries:
- Entry 0: LeadMap - A map of lead IDs and leads with standard fields queried. This is available to be used by the plugin. Every lead referenced by a reactivated response will have an entry in this map.
- Entry 1:ContactMap - A map of contact IDs and contacts with standard fields queried. This is available to be used by the plugin. Every contact referenced by a reactivated response will have an entry in this map.
getRecordLists contains four entries:
Each entry is a list of reactivated CampaignMember objects, or newly inserted default CampaignMember objects. You can examine the ID field on the CampaignMember to determine if it is a reactivation of an existing response or a new response. Each list corresponds to a category of responses depending on whether they will trigger notification and assignment. Note that while these entries will not be null, they may be empty.
You may delete entries from any of these lists to block the reactivation or insertion. You may not add new entries into this list - this hook is not intended to support changes to the selection of which response to reactivate.
- Entry 0: ReactivatedCampaignMembers - Responses with no notification and no assignment
- Entry 1: ReactivatedCampaignMembersWithNotificationsAndNoAssignment - Responses with notification but now assignment
- Entry 2: ReactivatedCampaignMembersWithNotificationsAndAssignment - Responses with notification and assignment
- Entry 3: ReactivatedCampaignMembersWithAssignmentAndNoNotifications - Responses with assignment and no notificiation
getAdditionalParams Contains one entry:
- Entry 0: reactivationType - An integer defining the reactivation type as follows:
- 1 = Response prompt reactivation
- 2 = Score reactivation
- 3 = Invocable reactivation
- 4 = Active status reactivation
Notes:
- Requires Response Management version 1.37.1 or later
Reactivation - Reactivation Complete
API Name: ReactivationComplete
Description: Called after reactivated CampaignMembers have been updated or inserted
Properties:
getRecordMaps contains two entries:
- Entry 0: LeadMap - A map of lead IDs and leads with standard fields queried. This is available to be used by the plugin. Every lead referenced by a reactivated response will have an entry in this map.
- Entry 1:ContactMap - A map of contact IDs and contactss with standard fields queried. This is available to be used by the plugin. Every contact referenced by a reactivated response will have an entry in this map.
getRecordLists contains three entries:
- Entry 0: successes- A list of CampaignMember objects that were successfully update or inserted during reactivation
- Entry 1: retried- A list of CampaignMember objects that failed to update or insert due to a DML lock error. Reactivation for the leads or contacts associated with these responses will be retried asynchronously.
- Entry 2: failed - A list of CampaignMember objects that failed to update or insert during reactivation. The errors are logged in the Response Management event log
Note that the application does not requery the CampaignMember fields before calling the plugin. So CampaignMember fields set during reactivation (such as the response date) will not be valid.
getAdditionalParams Contains one entry:
- Entry 0: reactivationType - An integer defining the reactivation type as follows:
- 1 = Response prompt reactivation
- 2 = Score reactivation
- 3 = Invocable reactivation
- 4 = Active status reactivation
Notes:
- The successes list includes both updated responses and newly inserted default responses.
- At the time the time this event is called, the update/insert is complete - however asynchronous processes triggered by that update or insert will not be complete (this includes asynchronous scoring and custom funnel settings)
- Requires Response Management version 1.37.1 or later
Reactivation - Override Default Campaigns
API Name: ReactivationOverrideDefaultCampaigns
Description: Allows overriding of default campaigns during response reactivation
Properties:
getRecordIds contains one entry:
- Entry 0: personsToAddDefaultCampaign - A list of lead or contact IDs for the records that do not have a response to reactivate and for which a new response would potentially be inserted.
getRecordMaps contains two entries:
- Entry 0: LeadMap - A map of lead IDs and leads with standard fields queried. This is available to be used by the plugin. Every lead with an entry in the personsToAddDefaultCampaign list will have an entry in this map.
- Entry 1:ContactMap - A map of contact IDs and contacts with standard fields queried. This is available to be used by the plugin. Every lead with an entry in the personsToAddDefaultCampaign list will have an entry in this map.
getRecordLists contains one entry:
- Entry 0: cmsWithDefaultCampaignsToInsert - A list of CampaignMembers that represent the default CampaignMember objects that will be inserted after this hook completes. Not every entry in the personsToAddDefaultCampaign list will have a corresponding CampaignMember in this list. However, every CampaignMember in this list will have a corresponding entry in the personsToAddDefaultCampaign list.
You may do the following:- Remove an existing entry from this list to prevent the default from being inserted.
- Change the CampaignID of any CampaignMember to change the default campaign being inserted
- Insert a new CampaignMember for a person specified in the personsToAddDefaultCampaign list. Note that you are responsible for correctly setting any admin response controls to override default insertion of repeats, etc. New responses created by the reactivation system by default have a value of 2 (Creates cascades)
getAdditionalParams Contains one entry:
- Entry 0: reactivationType - An integer defining the reactivation type as follows:
- 1 = Response prompt reactivation
- 2 = Score reactivation
- 3 = Invocable reactivation
- 4 = Active status reactivation
Notes:
- A default campaign MUST be specified in reactivation configuration for this event to be called.
- Only the cmsWithDefaultCampaignsToInsert list may be modified by the plugin. Do not modify any of the other properties.
- Requires Response Management version 1.37.1 or later
Response Preprocessing
API Name: ResponsePreprocessing
Description:Called after response detection and cascade (repeat response) evaluation, but before newly created repeat campaignmembers are saved and before they are passed on to scoring.
Properties:
getRecordListsContains three entries:
-
- Entry 0: TimedOutResponses – A list of CampaignMembers that are not being treated as responses due to repeat response timeouts. If the ID field is null, these are newly inserted responses, otherwise they are updates.
- Entry 1: NonCascadeResponses – A list of CampaignMembers that are not being treated as responses due to other reasons (not allowed on the campaign, number of repeats exceeded, update that is not an automation user or from our VisualForce controller)
- Entry 2: InsertedCmResponsesToProcess – A list of CampaignMembers that are being treated as responses during an insert operation. These may be completely new responses. They may also be repeats where the CampaignID has been changed to the repeat campaign
getRecordMapsContains three entries:
-
- Entry 0: UpdatedCmResponsesToProcess – A map of IDs to CampaignMembers that are being treated as responses during an update operation. The ID key represents the ID of the originating CampaignMember – the one being updated. The CampaignMember may be the originating CampaignMember (in the case that the CampaignMember is being changed from non-responded to responded), or it may be a newly created repeat CampaignMember that is a repeat of the originating response.
- Entry 1: ExistingMap – On update, this is a map of CampaignMember ID to CampaignMember containing the "new" values during the update trigger. During an update, every CampaignMember in the other lists or maps will have an entry in this map.
- Entry 2: OldMap – On update, this is amap of CampaignMember ID to CampaignMember containing the "old" values during the update trigger. During an update, every CampaignMember in the other lists or maps will have an entry in this map.
Typical Use:Use this function to initialize CampaignMember fields during response processing. For inserted responses, you can use this hook to initialize field values on CampaignMembers based in part on how they are being processed. For updated responses, you can use this hook to copy field values from originating responses to repeat responses, to reset field values on originating responses to their original (old) values, or both.
Notes:
All of the CampaignMembers referenced by the list and map parameters can be modified directly – this hook is called during a before trigger and before insertion of new objects – no DML is required.
No DML operations should be performed during this hook
You may use SOQL queries during this function
At the time this hook is called, Cascade (or repeat) campaigns will already be created and their CampaignID values set into the repeat CampaignMember objects.
Status or Owner change
API Name: StatusOrOwnerChange
Description:Called during the Before update trigger on a lead, contact or person account when a status or owner change is detected. Both changes may be present when this event is raised.
Properties:
getRecordListsContains two entries: Entry 0 is a list of the lead, contacts or person account objects that had either a status or owner change. All items in the list are of the same type.Entry 1 is a list of the active responses corresponding to the leads, contacts or person accounts. All processing on this response is complete by the time this function is called, and the responses may no longer be active in cases where the status of the controlling object has changed to an inactive status.
getRecordMapsContains one entry – the "oldmap" map for the trigger that caused this call.
Typical use:Use this function to perform your own status or owner update processing on a lead, contact or person account. This event is raised after the FCRM processing is complete.
Notes:This event is called during a before-update trigger. All fields on each object are available and can be modified.
This event is called after the FCRM processing. Synchronization to the active response will already have been completed.
In rare situations with bulk processing and large numbers of sync fields, field synchronization from the lead/contact to the active response may not be complete at the time this function is called (you can detect this condition by seeing a non-zero value in the FCR_Admin_SyncPending__c on the active response for this object).
Scheduled (timed) asynchronous call
API Name: TimedAsync
Description:Called at approximately the time specified during a call to the FCR_SupportAPI.ScheduleAsyncOperation method.
Properties:
getXMLdata - Contains the parameter data specified by the original call to the FCR_SupportAPI.ScheduleAsyncOperation method. Despite the parameter name, this string need not contain XML content (i.e., you can use any format you wish)
Typical use: This functionality provides a simple mechanism to piggyback onto the Full Circle CRM scheduler to schedule any number of Apex operations using a single Scheduled Apex job.
Notes:
This event is called during a batch Apex operation. Standard Apex batch limits and restrictions apply.This functionality is only enabled when the new asynchronous system is enabled (advanced configuration).
Other extensibility events can be raised while this event is being processed (normally event reentrancy is not allowed).
Time Decay Model Calculation
API Name: TimeDecayModelCalculation
Description: Called during attribution calculation, and only if time decay is enabled for the model, allows to define how much decay each campaign member will get on their assigned points (weights). The decay is represented as a decimal between 0.0 and 1.0 where 1.0 means 100% of the points value will be given to the campaign member and 0 means 0% of the points will be assigned and no money will be attributed to that response (0.5 means 50% of the points value will be decayed).
Properties:
getRecordLists Contains one entry of a list with one opportunity record - the opportunity that the campaign members are related to. Contains fields like the opp created and closed date.
getRecordMaps Contains a map of all of the campaign members that are about to be used scored.
getAdditionalParams Contains 4 entries: Entry 0 is a Map<Id, Decimal> which represents the decay of each campaign member by the ID. Populate this map as the system will use it to perform the decay. Entry 1 is a string - the name of the model's configuration, it can be used in case different models need different decay models. Entry 2 is an integer - the configured number of days from the opportunity created date where no decay will take place. Entry 3 is a string - the name of a field on campaigns that is configured to be excluded from decay.
Notes:
Upsert Deferred
API Name: UpsertDeferred
Description: Called when an internal update fails and an FCR_ DeferredUpdateItem__c object is created. This is typically due to a DML lock or validation rule failure.
Properties:
getRecordListsContains a list of Sobjects that failed an upsert or update operation. This is typically because of a DML lock or a validation rule error.
Typical use:If you modify any object fields during a hook, this event indicates that one or more of the objects you may have modified may not have been saved correctly. The internal deferred object mechanism can track and recover fields modified by the application, but not fields that you modify.
If this event is called in the same execution context as a previous one, you will know that one or more of your updates may have failed. Consider logging or providing some notification with regards to the issue. This should occur rarely.
Note: Do not modify incoming records. Changes will not be saved.
Some update failures will not cause an internal deferred update object to be created - for example:attempting to update a converted lead or an object that has been deleted.
Exclude Records From Processing
API Name: ExcludeRecordsFromProcessing
Description: Called during attribution processing of Accounts, Opportunities, Campaigns and CampaignMembers. Also called on before and after trigger of each sObject before the FCI platform begins processing it.
Properties:
getRecordLists contains a list of Sobjects that are about to be processed.
getAdditionalParams contains a list of Booleans (all false). Setting a Boolean at index i indicates that the sObject at index i should be removed.
Typical use: Use this mechanism to apply exclusion logic that goes beyond the provided exclusion ability we give in configuration.
Note: Do not modify the list yourself. Simply setting the booleans in the additional parameters will let the platform know which sObjects need to be removed.
Opportunity Association - Filter Opportunity Contact Roles
API Name: OpportunityAssociationContactRoles
getRecordLists contains three entries:
- Entry 0 is a list of the Opportunity Contact Roles for all opportunities in this association context.
- Entry 1 is a list of the corresponding opportunities.
- Entry 2 is the list of possible campaign members that can be associated to each opportunity.
Typical use: Use the list of opportunities and opportunity contact roles to exclude campaign members from the final matching stage of the opportunity association. Remove the campaign members from the list and they will not be considered with the rest of the configured rules.
Notes:
- The index of the opportunities does not match the index of the OpportunityContactRoles. You must relate the two using the opportunityId field on the OCR.
- The index of the campaign members does not match the index of the Opportunity Contact Roles. You must relate the two sObjects using the ContactId field on both the CM and OCR.
Opportunity Association - Select Response to Associate
API Name: OpportunityAssociationSelectResponse
getRecordLists contains three entries:
- Entry 0 is a list with only one Opportunity at index 0, the opportunity to be associated.
- Entry 1 is a list of all possible Campaign Members that can be associated to this opportunity.
- Entry 2 is an empty list. If returned with a Campaign Member at index 0, that Campaign Member will associate to the opportunity.
getRecordMaps Contains one map of Contact IDs to the Opportunity Contact Role for this opportunity.
Typical use: Override the configured response selection for association by populating the last entry in getRecordLists with a campaign member.
Notes:
- If a contact has more than one opportunity contact role on the opp, the primary contact role will be present in the map. One will be selected at random if none of the contact roles are the primary contact role.
- If no campaign member (or null value) was added to the last entry of getRecordLists, the platform will resort to the configured response selection logic.
Opportunity Association - Override Response Status
API Name: OpportunityAssociationResponseStatus
getRecordLists contains two entries:
- Entry 0 is a list with only one Opportunity at index 0, the opportunity to be associated.
- Entry 1 is a list with only one Campaign Member at index 0, the CM to be associated.
Typical use: Override the configured response status by updating the Campaign Member.
Notes: The Campaign Member can either be a new default campaign member or an old one that was selected for association.
Opportunity Association - Set Opp Matching Time
API Name: OpportunityAssociationSetTime
getRecordIDs Contains one entry: A list of IDs of the opportunities that will be matched.
getRecordLists Contains one entry: A list of Opportunities that were considered for association in this trigger's sequence.
getAdditionalParams Contains one entry: An empty list where the plugin can populate the first index with a datetime instance (the time that opp association should run).
Typical use: Populate the additional Params list in order to override the configured delay to run opportunity association on the opportunities in the ID list.
Notes:
- Not all opportunities in the record list are going to have an ID in the record ID list.
- If the provided Datetime is more than 24 hours into the future, we ignore the result and do not create an asynchronous matching request at all.
Comments
0 comments
Please sign in to leave a comment.