OPD Error Handler

Overview

An OPD Error handler is a customer-implemented component used to manage the plan development failure in the orchestrator. During the fulfillment process, the orchestrator always calls out to a plan development provider.

The plan development provider designs a plan from the order. If a plan cannot be designed, then the fulfillment process cannot proceed and, if the enableOpdErrorHandling flag is true, the order might be referred to the OPD Error handler for manual intervention.

Specification

The OPD Error handler must conform to the following requirements to be a valid implementation:

  • Receive event messages on a JMS or REST queue.

  • Interpret the PreQualificationFailedRequest event and determine the best way to route the failed order for further processing.

  • Create and send a response event on a JMS or REST queue.

  • In the response event, specify RetryOPD or Withdraw as the possible actions that the orchestrator can take in response to the error.

    Note: For an amendment request, only withdraw action is supported.

The actions that can be specified are as follows:

  • RetryOPD: The OPD Error handler confirms that the order can be processed further. In this case, the orchestrator sends an order plan generation request to AOPD and moves the order to the OPD state.

  • Withdraw: The order is withdrawn from the orchestrator and not fulfilled. It is deleted from the engine and Transient Data Store.

The details of the OPD Error handler are left as a customer-specific implementation. An example of a handler can be the following:

  1. Receive a PreQualificationFailedRequest event message on a JMS queue or REST by a BusinessWorks process.

  2. BusinessWorks starts a process instance in a customer build implementation.

  3. The TIBCO iProcess® process model creates a manual task and displays a form in a work queue for operations support. The form displays the order and the details of the failure.

  4. Operations support reviews the task and chooses one of the following options:

    1. Make changes to the order that ensure that the order passes plan development. The plan development must be retried.

    2. Update configurations in back-end systems or product catalog that ensure that the order passes plan development. The plan development must be retried.

    3. Determine whether the order is invalid and withdraw the order.

    The task is completed.

  5. TIBCO iProcess® then invokes a BusinessWorks service that creates the PreQualificationFailedReply event, populates the event with the appropriate information, and flags the response to retryopd or withdraw as appropriate. This event is then sent on a JMS or REST queue to the orchestrator. The TIBCO iProcess® procedure then ends.

  6. Orchestrator receives the PreQualificationFailedReply and processes it accordingly.

PreQualificationFailedRequest Event

The PreQualificationFailedRequest event is sent by the orchestrator in case the plan fails to generate. The event is received by the OPD Error handler for manual processing. It is an asynchronous event sent to a JMS or REST queue.

Event Destination Type Destination Event Type
PreQualificationFailedRequest POST (REST) /v1/pqf Asynchronous
PreQualificationFailedRequest JMS Queue tibco.aff.orchestrator.provider.order.prequal.failed.request Asynchronous

PreQualificationFailedReply Event

PreQualificationFailedReply event is sent by the OPD Error handler as a response to the failed plan generation. Orchestrator receives the result and interprets it accordingly.

Event Destination Type Destination Event Type
PreQualificationFailedReply POST (REST) /v1/preQualificationFailedReply Synchronous
PreQualificationFailedReply JMS Queue tibco.aff.orchestrator.provider.order.prequal.failed.reply Asynchronous

You can set the following properties in the ConfigValues_OrchService.JSON file as per your requirements:

  • com.tibco.fom.orch.retryFailedOPD: Flag to enable retry of failed OPD request.

  • com.tibco.fom.orch.OPDRetries: Retry count for failed OPD request.

  • com.tibco.fom.orch.opdRetryInterval: Interval in millisecond to wait before retrying failed OPD Request.