Gapless Event Creation and Processing

Gapless Event Creation and Processing Overview

Applications that generate messages in the process of transaction processing to capture appropriate accounting events use the gapless event creation and processing feature. Any number of distinct message brokers can handle or receive the messages generated. If one of the receiving units is delayed, the accounting event is captured out of order in the Financial Services Accounting Hub resulting in incomplete accounting.

If all the event numbers for a set of accounting events of an event entity transaction are consecutive starting from number 1 and there are no events with a status of Incomplete, then there is no gap. A gap exists if an event is missing or has a status of Incomplete. All events with an event number higher than the gap event are put on hold and cannot be processed until the gap is eliminated.

Example 1: An application generates three distinct types of accounting events for a given transaction: Transaction Created, Transaction Adjusted, and Transaction Canceled. The Transaction Canceled event is to be accounted as a reversal of the accounting generated for the Transaction Created and Transaction Adjusted events. For a given transaction, all three events are generated. However, due to some system delays, only the Transaction Created and Transaction Canceled events are created. The message containing the Transaction Adjusted event is not processed until after the Accounting Program runs and produces accounting for the Transaction Created and Transaction Canceled events. In this scenario, the accounting produced by the Transaction Canceled event does not include reversals for the entries generated by the Transaction Adjusted event.

Gapless event creation and processing allows implementers to enable gapless event processing for an event entity. For events created for an accounting event entity with gapless processing enabled, the Accounting Program only processes events for which all previous events for the same transaction have been captured and are either eligible for or have been processed. The Accounting Program does not handle dependencies across transactions or documents.

Example 2: An application with a transaction generates three distinct types of accounting events: Transaction Created, Transaction Adjusted, and Transaction Canceled. The application marks the parent accounting event entity, Deals, as subject to gapless processing. The transaction generates in its life cycle five events as follows:

The Events API identifies gaps for accounting events belonging to an entity subject to gapless processing.

If the Events API identifies a gap before the newly created event, the new event is put on hold.

In the Example 2: Numbered Events, if an event with event number 3 is missing or has a status of Incomplete, a gap is identified and events with event number 4 and 5 are put on hold.

Assuming that the event is not created with a status of Incomplete, when the creation of an event results in the elimination of a gap, all events belonging to the same transaction with higher event numbers are evaluated. For each of these events, if no other gaps remain, the event is released for processing.

Example 3: In Example 2: Numbered Events, assume that Event Numbers 2, 3, and 4 have not been created in the Financial Services Accounting Hub by the time Event Number 5 is created as shown in the table below.

Note: In this chapter, N indicates No and Y indicates Yes.

Example 3A

Event Entity

Accounting Event Type

Event Date

Event Number

Event Status

On Hold Flag

Deals

Transaction Created

10-OCT-2003

1

Unprocessed or Processed or No Action

N

Deals

Transaction Cancelled

12-OCT-2003

5

Unprocessed or No Action

Y

There are three gaps since events 2, 3, and 4 are missing.

If event 3 is created with a status of Unprocessed or No Action since event 2 is missing, event 3 is put on hold as shown in the table below.

Example 3B

Event Entity

Accounting Event Type

Event Date

Event Number

Event Status

On Hold Flag

Deals

Transaction Created

10-OCT-2003

1

Unprocessed or Processed or No Action

N

Deals

Transaction Adjusted

11-OCT-2003

3

Unprocessed or No Action

Y

Deals

Transaction Cancelled

12-OCT-2003

5

Unprocessed or No Action

Y

After event 3 is created, only gaps for events 2 and 4 remain. Assume that event number 2 is created. Since there is no gap before event 2, the hold flag for event 2 is set to N. Check whether a gap is eliminated by the creation of event 2. If event 2 is created with a status of Incomplete, then the gap due to event 2 is not eliminated, and it is not necessary to update the flag of the events with higher event numbers. If event 2 is created with another status, then the gap on event 2 is eliminated.

The next gap is on event 4, so the On Hold flag for event 3 (higher than 2, but lower than the next gap which is on event 4) is set to N if it is set to Y. This is described in Case 1 and Case 2 in the table below.

Example 3C, Case 1 and Case 2

Event Entity

Accounting Event Type

Event Date

Event Number

Case 1: Event Status

Case 1: On Hold Flag

Case 2: Event Status

Case 2: On Hold Flag

Deals

Transaction Created

10-OCT-2003

1

Unprocessed or Processed or No Action

N

Unprocessed or Processed or No Action

N

Deals

Transaction Adjusted

10-OCT-2003

2

Incomplete

N

Unprocessed or No Action

N

Deals

Transaction Adjusted

11-OCT-2003

3

Unprocessed or No Action

Y

Unprocessed or No Action

N

Deals

Transaction Cancelled

12-OCT-2003

5

Unprocessed or No Action

Y

Unprocessed or No Action

Y

Event Updates and Deletes

The following gapless processing rules apply to event updates and deletes:

If a gap is eliminated by a change in the status of an event from Incomplete to Unprocessed or No Action or by a renumbering of the events for a transaction, then all events with a higher event number for which no other gap applies and which may have been placed on hold is released for processing.

If a gap is created by a change in status of an event from Unprocessed or No Action to Incomplete or by a renumbering of the events for a transaction, then all the events with a higher event number are put on hold.

Deletion of an event forces evaluation of all events with numbers higher than the deleted event. The On Hold flag of all affected events for which a gap was generated is updated to Y if it is set to N.

Example 4: The table below shows the state of accounting events for a transaction.

Example 4A

Event Entity

Accounting Event Type

Event Date

Event Number

Event Status

On Hold Flag

Deals

Transaction Created

10-OCT-2003

1

Unprocessed or Processed or No Action

N

Deals

Transaction Adjusted

10-OCT-2003

2

Unprocessed

N

Deals

Transaction Adjusted

11-OCT-2003

3

No Action

N

Deals

Transaction Adjusted

12-OCT-2003

4

No Action

N

Deals

Transaction Cancelled

12-OCT-2003

5

Unprocessed

N

The table below shows the results when an implementer requests the deletion of event number 2.