Determine Data Requirements and Consider Runtime Behavior

Determine the type of data you need and how you will access it. Then determine the runtime behavior your need.

Determine Your Data Requirements

Determine the type of data you need and how you will access it.

Type of Data You Need

How to Access Data

Limitation

Data from a sales order in Order Management.

To read data, use methodgetAttribute.

To write data, use the setAttribute method.

Each method can read or write only to the sales order that the Order Entry Specialist is currently entering in work area Order Management. They don't read or write to some other version of the current sales order, or to some other sales order in Order Management.

Use a public view object to access data from a sales order that isn't the current sales order.

Each method can only read from or write to an attribute. They can't create an order line.

Data from an Oracle Application outside of Order Management, such as the customer master, the item master in Oracle Procurement or Oracle Receivables, and so on.

Data from a sales order in Order Management that isn't the current sales order.

Public View Object (PVO).

For details, see Use Extensions to Get Data from Oracle Applications.

The Oracle Application must share its data through a public view object. The public view object you need might not be available, or it might not provide access to the attribute that you require. It might be necessary to submit a request to get access to the data you need.

Data from a system that resides outside of an Oracle application

Web service.

You can use only a synchronous web service. You can't use an asynchronous web service.

You can use only a SOAP service. You can't use REST API.

For details and examples, go to REST API for Oracle Supply Chain Management Cloud, expand Order Management, then click Sales Orders for Order Hub.

Consider the data that you can access.

Read Access

Write Access

Do a read operation on this data at any of the extension points.

  • Order header, including extensible flexfield

  • Fulfillment lines, including extensible flexfield

  • Sales credit

  • Pricing entity, such as charge, charge component, manual price adjustment, total, price validation, tax detail, and so on

  • Lot or serial

  • Transactional attribute

  • Payment

  • Billing plan

  • Attachment

  • Fulfillment line detail

  • Document reference

Do a write operation on this data during the On Save or the On Start of Submission Request extension points.

  • Order header, including extensible flexfield

  • Fulfillment line, including extensible flexfield

  • Attachment

  • Sales credit

  • Transactional attribute

  • Document reference

You can't do a write operation on this data during the On End of Submission Request extension point because Order Management already performed a large set of predefined validations at this point.

Perform a write operation on data during the On End of Submission Request extension point.

  • Extensible flexfield on the order header

  • Extensible flexfield on the fulfillment line

  • Attachment

For a complete list, see Entities That You Can Use With Order Management Extensions.

Consider Runtime Behavior

flow of the runtime behavior

Note

  • Order Management runs each extension in sequential order, and it only extensions where the Active attribute contains a check mark run. Assume you create extensions x, y, and z. Extension x runs first, then extension y. If you make z active, then Order Management runs extension x, and then z, and then y.

    Sequence

    Extension Name

    Active

    1

    x

    Contains a check mark

    10

    y

    Contains a check mark

    5

    z

    Doesn't contain a check mark

  • Order Management runs each active extension until it finishes unless an error or warning happens. If an error or warning happens, then Order Management doesn't run any more extensions. For example, assume x, y, and z are active, x finishes, but z ends in error. Order Management won't run extension y.

  • Each variable is local to each extension. You can't share them across extensions. For example, assume you require variable A in extensions x and y. If you define variable A in x, then you can't use A in y. Instead, you must write logic in y that references A in x.