Introduction
OIC flow instances can abort for the following reasons -
- timeout - e.g. async flow taking longer than 6 hours.
 - flow aborted by OIC admin.
 
So how can I see such instances?
OIC Observability
https://design.integration.us-phoenix-1.ocp.oraclecloud.com/ic/api/integration/v1/monitoring/instances?integrationInstance=yourOICInstance&q={timewindow: '1h', status:'ABORTED'}
{
    "dataFetchTime": "2025-10-28T07:44:29.235+0000",
    "hasMore": false,
    "id": "instances",
    "items": [
        {
            "creationDate": "2025-10-28T07:44:06.204+0000",
            "date": "2025-10-28T07:44:21.311+0000",
            "duration": 109,
            "fifo": false,
            "flowType": "ASYNC_ONE_WAY",
            "hasRecoverableFaults": false,
            "id": "4cIoOrPREfCH0M9O6IAqnQ",
            "instanceId": "4cIoOrPREfCH0M9O6IAqnQ",
            "instanceReportingLevel": "Production",
            "integration": "ASYNCTEST|01.00.0000|AA_PROJECT2",
            "integrationId": "ASYNCTEST",
            "integrationName": "asyncTest",
            "integrationVersion": "01.00.0000",
            "invokedBy": "niall.commiskey@oracle.com",
            "isDataAccurate": true,
            "isLitmusFlow": false,
            "isLitmusSupported": false,
            "isPurged": false,
            "lastTrackedTime": "2025-10-28T07:44:21.311+0000",
            "links": [
                {
                    "href": "https://.../ic/api/integration/v1/monitoring/instances/4cIoOrPREfCH0M9O6IAqnQ?integrationInstance=....",
                    "rel": "self"
                },
                {
                    "href": "https://.../ic/api/integration/v1/monitoring/instances/4cIoOrPREfCH0M9O6IAqnQ?integrationInstance=....",
                    "rel": "canonical"
                }
            ],
            "litmusResultStatus": "",
            "mepType": "ASYNC_ONE_WAY",
            "nonScheduleAsync": true,
            "opcRequestId": "5OLUCU9R8EPMK53I4O9J4P9OHQS3WWSI/X3PTAN6JYB3GKUVWIYHYWMYVOJBRBIFG/1Y53WJY8OE8WF8TYR5X7GSR8PWXE27VM",
            "outboundQueueNames": [],
            "processingEndDate": "2025-10-28T07:44:06.671+0000",
            "projectCode": "AA_PROJECT2",
            "projectFound": true,
            "projectName": "AA-Project2",
            "receivedDate": "2025-10-28T07:44:06.562+0000",
            "replayable": false,
            "replayed": false,
            "status": "ABORTED",
            "trackings": [
                {
                    "name": "orderNr",
                    "primary": true,
                    "value": "123"
                }
            ]
        }
    ],
    "links": [
        {
            "href": "https://.../ic/api/integration/v1/monitoring/instances?integrationInstance=....",
            "rel": "self"
        },
        {
            "href": "https://.../ic/api/integration/v1/monitoring/instances?integrationInstance=....",
            "rel": "canonical"
        }
    ],
    "totalRecordsCount": 1,
    "totalResults": 1
}
The above response is for an async flow I aborted. Note the following - 
                      "hasRecoverableFaults": false,
            "mepType": "ASYNC_ONE_WAY",
            "nonScheduleAsync": true,
            ...
            "replayable": false,
            "replayed": false,
            "status": "ABORTED",
            "trackings": [
                {
                    "name": "orderNr",
                    "primary": true,
                    "value": "123"
                }
Aborted flows cannot be recovered (re-submitted). Note the message exchange pattern value, it is set to "ASYNC_ONE_WAY". Also note the tracking fields. 
Now to scheduled integrations - here is an extract from the response - 
            "mepType": "SCHEDULED",
            "nonScheduleAsync": false,
            "opcRequestId": "oci-...",
            "outboundQueueNames": [],
            "processingEndDate": "2025-10-28T09:56:35.832+0000",
            "projectCode": "AA_PROJECT2",
            "projectFound": true,
            "projectName": "AA-Project2",
            "receivedDate": "2025-10-28T09:56:35.750+0000",
            "replayable": false,
            "replayed": false,
            "status": "ABORTED",
            "trackings": [
                {
                    "name": "param_dateLastRun",
                    "primary": true,
                    "value": "2025-10-27T00:00:00.000Z"
                }
            ]
Note the message exchange pattern value, it is set to "SCHEDULED". Also note the tracking fields.
I've used a scheduled parameter, that holds the value of data last run as my primary tracking field. 
OCI Logging
This is the relevant activity stream log entry in OCI Logging - 
{
  "datetime": 1761645414299,
  "logContent": {
    "data": {
      "actionName": "ABORT",
      "actionType": "Abort",
      "eventId": "buZXXrPkEfCgjGnZvXiYSA",
      "executedTime": "2025-10-28T09:56:54.299Z",
      "instanceId": "Y7JMh7PkEfConmFtqrFmpg",
      "integrationFlowIdentifier": "LOADNEWORDERS!01.00.0000",
      "message": "Instance aborted by niall.commiskey@oracle.com  , Source: User , Reason: Abort the in-progress/recoverable instances",
      ...
      "parentEventId": "ALAFIN",
      "projectCode": "AA_PROJECT2",
      "userId": "niall.commiskey@oracle.com"
    },
    "id": "702f03b0-b3e4-11f0-a6d2-ff2cb7d37a5c",
    "oracle": {
    ...
    "specversion": "1.0",
    "time": "2025-10-28T09:56:54.299Z",
    "type": "com.oraclecloud.integration.integrationinstance.activitystream"
  },
  "regionId": "us-phoenix-1"
}
Note the message value - "Instance aborted by niall.commiskey@oracle.com ,
Source: User , 
Reason: Abort the in-progress/recoverable instances",
Also note the actionName & actionType values. I can use these in a search filter -
However, I can click the open with logging search link -
OCI Log Analytics
Let's try out the following query in Log Explorer -
'Log Source' = 'OCI Integration Activity Stream Logs' and 'Action Type' in (Abort) | stats distinctcount(Instance) as 'Aborted Flow Instances', trend(distinctcount(Instance))
Summa Summarum
AS my auld grandmother from the Monaghan/Armagh border used to say - there's many ways to skin a cat! 
I hope you find the observability options I've covered useful. Next step is to raise an alarm on aborted instances, the topic of a future post.

No comments:
Post a Comment