Automatic Alert and Recovery Capabilities Configuration

Introduction

Oracle Health Insurance applications effectively manage unexpected interruptions when processing tasks, ensuring seamless operation with an optional alert/notification. This document outlines the features and configuration options available in Oracle Health Insurance applications and focuses explicitly on the tasks' automatic alert and recovery capabilities.

When a task is found to be stuck in a specific status for an extended period (due to some unforeseen reasons), the application responds as follows:

  • Pending: A notification is sent.

  • Processing: The task is automatically re-queued (put back into the AQ), and a notification is sent.

  • Errored: The task is automatically re-queued (put back into the AQ), and a notification is sent.

These capabilities are designed to improve system resilience and minimize manual intervention to ensure that tasks are processed efficiently and any disruptions are promptly addressed and notified.

Task Types Monitored

The scheduler currently supports the following task types:

In Policies
  • IntegrationEventAggregateCreator

  • IntegrationTransformation

  • RepublishingFailedMessages

  • PolicyUpdateRequestPolling

In Claims, Authorizations, and Capitation
  • DataReplicationTargetSynchronization

Initial Configuration Properties

To customize the behavior of the scheduler to meet your specific requirements, you can configure the following properties:

Scheduler Frequency

Determines how frequently tasks are auto-recovered and notifications are sent.

Following is an example to set the scheduler frequency:
POST "/api/generic/properties"
{
  "name": "ohi.taskprocessing.scheduler.frequency",
  "value": 6400
}

The default value is 3600 seconds (1 hour); lowering this value is not recommended.

Notification Endpoint

Sets the endpoint where notifications about task status are sent.

Following is an example to set the notification endpoint:
POST "/api/generic/properties"
{
  "name": "ohi.taskprocessing.notification.endpoint",
  "value": "https://example.com/notification"
}

Following is an example of a notification response body for a task of type IntegrationTransformation stuck in PENDING status:

{
   "workId" : "16157128",
   "status" : "In Process",
   "links" : [ {
      "rel" : "self",
      "href" : "http://localhost:8080/api/generic/tasks/16157128",
      "httpMethod" : "GET"
   } ],
   "taskStatus" : "PENDING",
   "taskType" : "IntegrationTransformation"
}

Authentication Mechanism

Configures the authentication type to send notifications.

Following is an example to set the authentication:
POST "/api/generic/properties"
{
  "name": "ohi.service.StuckTasksNotificationClient.client.authentication",
  "value": "BasicAuthentication"
}

The authentication options available are None, BasicAuthentication, and OAuth. The default authentication is BasicAuthentication.

Pending Task Overhead Time

Sets the additional time considered to detect stuck tasks.

Following is an example to set an overhead to detect stuck tasks:
POST "/api/generic/properties"
{
  "name": "ohi.taskprocessing.scheduler.pending.overhead",
  "value": 600
}

The default value is 600 seconds.

Configuration by Task Type

IntegrationEventAggregateCreator

Tasks are recovered, and notifications are sent if event aggregation is enabled.

To enable event aggregation, run the following POST request:
POST "/api/generic/properties"
{
  "name": "ohi.connector.event.aggregation.activated",
  "value": true
}
To configure the aggregation interval, run the following POST request:
POST "/api/generic/properties"
{
  "name": "ohi.connector.event.aggregation.interval",
  "value": 300
}

The default interval value is 300 seconds.

To configure processing interval, run the following POST request:
POST "/api/generic/properties"
{
  "name": "ohi.taskprocessing.IntegrationEventAggregateCreator.processing.timeinterval",
  "value": 300
}

The default interval value is 300 seconds.

IntegrationTransformation

Tasks are recovered, and notifications are sent only if any connector configuration is enabled.

To configure processing time interval, run the following POST request:
POST "/api/generic/properties"
{
  "name": "ohi.taskprocessing.IntegrationTransformation.processing.timeinterval",
  "value": 300
}

The default interval value is 300 seconds.

RepublishingFailedMessages

Tasks are recovered, and notifications are sent if message republishing is activated.

To enable message republishing, run the following POST request:
POST "/api/generic/properties"
{
  "name": "ohi.connector.message.republishing.activated",
  "value": true
}
To configure the republishing interval, run the following POST request:
POST "/api/generic/properties"
{
  "name": "ohi.connector.message.republishing.interval",
  "value": 300
}

The default interval value is 300 seconds.

TO configure the processing interval, run the following POST request:
POST "/api/generic/properties"
{
  "name": "ohi.taskprocessing.RepublishingFailedMessages.processing.timeinterval",
  "value": 300
}

The default interval value is 300 seconds.

PolicyUpdateRequestPolling

Tasks are recovered, and notifications are sent if policy update request polling is enabled.

To enable policy update request polling, run the following POST request:
POST "/api/generic/properties"
{
  "name": "ohi.policyupdaterequest.polling.enabled",
  "value": true
}
To configure the polling interval, run the following POST request:
POST "/api/generic/properties"
{
  "name": "ohi.policyupdaterequest.polling.interval",
  "value": 60
}

The default interval value is 60 seconds.

To configure processing interval, run the following POST request:
POST "/api/generic/properties"
{
  "name": "ohi.taskprocessing.PolicyUpdateRequestPolling.processing.timeinterval",
  "value": 300
}

The default interval value is 300 seconds.

DataReplicationTargetSynchronization

Tasks are recovered, and notifications are sent only if any enabled entities are configured and the base URL is set.

To set the base URL, run the following POST request:
POST "/api/generic/properties"
{
  "name": "ohi.ws.sourcesystem.{0}.baseurl",
  "value": "https://example.com"
}
The entity name needs to be entered in the placeholder.
To configure the retrieval interval, run the following POST request:
POST "/api/generic/properties"
{
  "name": "ohi.datareplication.event.retrieval.interval",
  "value": 300
}

The default interval value is 300 seconds.

To configure processing interval, run the following POST request:
POST "/api/generic/properties"
{
  "name": "ohi.taskprocessing.DataReplicationTargetSynchronization.processing.timeinterval",
  "value": 300
}

The default interval value is 300 seconds.

It is recommended not to change the intervals unless required.

Examples of scenarios where the scheduler kicks in:

  1. If a task of the type DataReplicationTargetSynchronization is created at 10:00 AM and stuck at PROCESSING status and the property ohi.taskprocessing.DataReplicationTargetSynchronization.processing.timeinterval is set to 3600, then after 11:00 AM, the task is automatically re-queued, and a notification is sent out.

  2. If a task of the type PolicyUpdateRequestPolling is created at 8:00 PM while ohi.policyupdaterequest.polling.enabled is set to true and is stuck at PENDING status and the property ohi.policyupdaterequest.polling.interval is set to 600, then after 8:10 PM, a notification is sent out.