Best Practices: Claim Processing Through Apex Batch
This Page
All Documentation
Claim processes in Consumer Goods Cloud Trade Promotion Management (TPM) is done through user interface.
However, if there are a large number of claims, then it is necessary to process claims in batches. In TPM, Apex batches are used to process a large number of claims.
Considerations for Apex Batch Processing
An Apex Batch class implements three methods:
start
Defines the scope of the apex batch. This method returns every record that the Apex Batch processes.
The result is partitioned into lists of up to <batchsize> records.
The object cgcloud__Payment__c records are selected and returned.
execute
Processes one of the lists of items provided by the start method.
Here the main logic of the Apex Batch is executed.
This method is called for each partition.
finish
Used to finalize monitoring and cleanup resources, if any, that are not automatically closed.
Avoid adding system internal fields to the list of selected fields for the claims to select. For example, fields used for Version Handling. Fields that should be excluded are:
cgcloud__Version__c
cgcloud__Offplatform_Version__c
cgcloud__Skip_Version_Update__c
This hint is not only relevant for claim processing, but also for the processing of other versioned objects.
cgcloud__Promotion__c
cgcloud__Account_Plan__c (a.k.a. CBP)
Assortment
Manipulating Claims
Method: execute(BatchableContext, List<SObject>)
If payments are updated with the batch, avoid using the scoped record instance. Instead, create a new object instance where only the fields are set that identify the record (id field) and needs to be updated.
This prevents an accidental overwrite of fields that are outdated. For example, if the field is managed and set by a trigger such as version fields.
The automatic claim calculation through trigger is not considered when payments are updated in a Batch Context. The payments must be scheduled directly through a callout.
If claims should be calculated within a batch that also manipulates the claim, the claim calculation must not rely on a version that was previously loaded. For example, by the start method.
The Scheduling of the Calculation must be executed in a queueable or future method and not in the same transaction because callout after DML statements are not allowed.
Before a payment calculation is scheduled, reload the version to get the current value.
If the batch only schedules payments for calculation and does not update the claim, then load the version field into the scope.