Thursday, November 2, 2023

#994 - Monitoring Fusion Events in OIC

 I've touched this topic in a recent "new features" post, but let's look at this in a bit more detail. Fusion Apps can raise business events to which OIC integrations can subscribe. OIC now provides us with a view of these Fusion events and how they are being processed, from an OIC perspective. The post is truly a joint effort between my esteemed colleague, Ravi Pinto, and myself - so a big thank you to Ravi here.

Back to the Fusion events insight in OIC - this is available in OIC --> Observability --> Fusion Applications.

Here's a view of part of that UI in OIC- giving you an overview of the state of event processing.

But let's start with a simple example, an OIC integration subscribing to the Fusion event - Service Request Created.

The integration is banal, just the "subscriber" trigger and a Logger action. So, without further ado, let's create the SR - 

I check in OIC Observability - the event has been processed.

Now to the new Observability section - Fusion Applications

This page shows all Fusion connections in use in this OIC instance. AA-Sales-Service is the connection I am using.

This list classifies Fusion business events under the following states - 

  • Queued
  • Delivered
  • Retried
  • Maxed out Retries
Queued means the OIC integration has not, as yet, picked up the Fusion Business Event.
Delivered means the OIC integration has picked up and processed the Fusion Business Event. 
Retried refers to the number of times Fusion has tried to resent the event to OIC.
Maxed out Retries means Fusion has exhausted the number of retry attempts to send this event to OIC.

The runtime flow is as follows - Fusion attempts to deliver the event. If the integration is activated then you will see near real time delivery. But what happens if the integration is deactivated, but with event subscription still active? Yes, you got it - the event is placed in the queue. Now remember this queue is in Fusion, not in OIC. Fusion will retry to deliver the event from the queue multiple times, depending on how this has been configured at Fusion level. Let's say we have n retries with an exponential backoff of nn. The event delivery state is changed to maxed out retries, once these retries have been exhausted. 

Once an event is in this delivery state, the only way to process it from an OIC perspective is from the Observability --> Fusion Applications Page. That means, in the case of a deactivated integration being the issue, the OIC admin does the following -
  • re-activate the integration
  • resubmit the Fusion event from the Observability --> Fusion Applications page

Let's see this in action - I deactivate the subscribing integration and create a new SR is Fusion.

Note the ability to Delete event subscription. I do not check the box, this time. Checking this box, will delete the subscription, resulting in Fusion no longer pushing the event to OIC.  

Here is a new SR I just created - 

Back in Observability --> Fusion Applications -

Now we see the event is Queued for OIC delivery.

Note what is shown here is the Fusion Event Id and not the SR number.

I re-activate the integration - 
and, a couple of minutes later, see the event has been processed by OIC.

Next, an example with the maxed out retries - here I deactivate the integration , create a new SR and wait...

Now it has moved to state of Retried.

I go back to waiting for Godot...eventually I see - 

I check out the details -

The salient reason is - 

Now I re-activate the integration, 
and return to the event details page - 
here I can select the event and click Retry.

I see the instance in the Observability --> Instances page - 

Summa summarum, this is a game changer in respect of processing Fusion events. No other integration platform offers such functionality.

Finally, OIC Fusion event support also includes an all time status view - 

This is really compelling and a must-have for all those engaged in Fusion driven integration implementations.

No comments: