In Oracle indirect mode JDBC driver is polling the eventlog with
following kind of statement:

SELECT * FROM IDM.EVENTLOG WHERE STATUS = 'N' AND ROWNUM <= 32 ORDER BY
RECORD_ID ASC

To my knowledge this presents a problem if there would be more events
than the batch size (32 above) and there would be several changes to the
same identity and same attribute in the bunch of rows waiting to be
processed.

The statement above first selects 32 event log entries and AFTER that it
sorts them by RECORD_ID. The problem is that the first 32 rows are in
any order but they are ordered by some kind of Oracle generated row id
that does not go chronologically.

I am not an Oracle expert but I think the right kind of event log
polling statement would go something like this:

SELECT * FROM
(SELECT * FROM IDM.EVENTLOG WHERE STATUS = 'N' ORDER BY RECORD_ID ASC)
WHERE STATUS = 'N' AND ROWNUM <= 32 ORDER BY RECORD_ID ASC

So the sorting would happen BEFORE chopping it to the batch size chunks.

Or did I forget something?