Transaction dependency
In the order fulfillment cycle, you can have specific products and services in an order that need to be fulfilled in a particular sequence. You can set up dependencies on a transaction such that an order line cannot be processed until certain conditions are met.
The dependencies enable you to define rules based on item classifications, item IDs, service types, and many other conditions that can be defined for on an order line.
Transaction Dependencies can be configured at a specific enterprise, document type, and process type level. For example, a dependency specified by an enterprise for a schedule transaction applies to all the sales orders of that enterprise, regardless of the pipeline used.
Before processing, each order line is checked for any dependencies on the transaction. If multiple dependencies are defined for a transaction, all the dependencies have to be satisfied before the line can be processed.
Dependencies can also be defined for bundle components and based on any order date. In the case of the bundle components, the order lines may have interdependencies while fulfilling a bundle order. The bundle parent line cannot be invoiced until every child line has completed the specified transaction. Therefore, it is necessary to allow for transactions to understand that an order line cannot be processed until certain conditions are met.
The order date related dependency can be configured for a transaction based on specific order dates. You can specify these dependencies using templates provided with Sterling Order Management System Software.
Transaction dependency usage scenario
The transaction dependency for an order can be used in the following scenario:
For any order line with item classifications of MODEM, FILTER, or CABLE, the schedule transaction is not allowed to process until 24 hours after all the order lines containing items with the classification of LINE ACTIVATION have completed the ship order transaction.
If this dependency is specified, the schedule transaction first checks to see if there is an item with the MODEM classification in the order. If the item is identified, other lines on the order are checked to see if any of them have a LINE ACTIVATION class item. For each line with an item classification of LINE ACTIVATION, it is then determined if it has been at least 24 hours since that line reached the “SHIP_ORDER” transaction.
Transaction dependency halting other transactions
When a transaction dependency halts an order-level transaction, such as payment processing, a flag is returned in the output XML of the API to indicate that the order cannot be processed due to dependencies. The flag is not returned in the output XML of all APIs. For more information, see the Javadoc. Since most transactions are status-based, they ignore any lines that have not met the dependencies. However, when an agent encounters an order that cannot be processed, either in whole or in part due to a dependency, it silently ignores whatever lines cannot be processed and updates the task queue to process them at a later time.
Overriding dependencies
To override transaction dependencies, you can pass a flag to the API that invokes the transaction so that the transaction dependencies are ignored. This flag is only supported by some APIs. For more information about APIs, see the Javadoc.
Circular dependencies
Circular dependencies arise when a transaction is dependent on another transaction that is waiting for the main transaction to either change its status or complete. You can set up dependencies in such a way that a transaction may never process an order due to a circular dependency.
For example, there may be a rule that says ITEM1 cannot be scheduled until ITEM2 has completed the schedule transaction. There could be another rule that prevents ITEM2 from scheduling until ITEM1 has scheduled. As a result, a circular dependency arises. In this case, the circular dependency is detected by the transaction dependency logic and an exception is thrown along with a list of the dependencies that caused this circular loop.