Asynchronous Call from Orchestrator to AOPD

The communication between Orchestrator and AOPD is asynchronous.

The following asynchronous APIs are introduced in AOPD:

  • /v1/plan/async to generate plans
  • /v1/plan/amend/async to amend plans

Orchestrator calls AOPD through these APIs to generate or amend plans. In the response, AOPD acknowledges that it has received the plan generation request. Then AOPD generates the plans and submits the plans to the Orchestrator in the submitOrderExecutionPlan API.

Note: These new APIs are not yet secured and hence are not exposed on Swagger.

Retry Mechanism

The plan publication is backed up by a retry mechanism. This retry can be controlled by the following newly introduced properties:

  • planSubmissionRetryCount (Default = 5)
  • planSubmissionRetryDuration (Default = 5 seconds)

For example, you have the default values and plan generation fails, AOPD retries up to 5 times in 5-second intervals to submit the plan to Orchestrator.

Note: The retry mechanism is ignored for the BadRequest and Unauthorized errors.

Troubleshooting:

When the plan generation fails even after maximum retry attempts, perform the following steps to generate or amend plans.

  1. Call getOrderDetails API from Orchestrator to get the order request details.
  2. Call v1/generatePlan or v1/plan/amend APIs from AOPD to generate or amend plans.
  3. Submit the generated plan to Orchestrator using the submitOrderExecutionPlan API.

The call between Orchestrator and AOPD is asynchronous, hence the updated order flow is as follows:

PENDING > FEASIBILITY > OPD > EXECUTION > COMPLETE