Guidelines for Setting Up Orchestration Process Steps

Specify details about the step, such as branching, planning, and managing change.

Each step in your orchestration process specifies the task service that the step calls to fulfill the fulfillment line. Each step specifies how to run the step, such as the task type, task, service, dependencies, planning, change management, and so on. A step might also specify branching.

  • To set up an orchestration process step, you open the Edit Orchestration Process Definition page, then use the Step Definition list in the Process Details area.

  • You can't update an order line after Order Management interfaces the line to billing, so don't add a scheduling, reservation, or shipping step after a billing step.

Set Up the Orchestration Process Step

Attribute

Description

Step Type

Set the behavior for the orchestration process step.

  • Conditional. Runs a path in an orchestration process according to the results of a condition. You must specify a branching condition on a step immediately after the conditional step.

  • Merge. Identifies the point where two or more orchestration paths reunite.

  • Service. Use this step to call a service.

Task Type

Each task type includes services you can use to communicate with a fulfillment system, such as a billing system. Here are the predefined task types you can use.

  • Schedule

  • Reservation

  • Shipment

  • Invoice

  • Return

Task

Specify the task to run. A task can include more than one step. For example, the Ship task calls the Create Shipment service. It also calls the Wait for Shipment service to wait for different status values to happen in the fulfillment system updates.

CAUTION: If you use your implementation project to migrate an orchestration process instance from a development environment to a production environment, then don't modify the task name in either environment. Modifying the name might prevent Order Management from updating references to other data in the orchestration process. For details, see Guidelines for Setting Up Order-to-Cash.

Service

Specify the task service that this step calls.

Manual

Specify whether to wait for user input. If you specify a manual task, then the orchestration process waits until the user manually finishes the task in the Order Management work area.

For example, set the Schedule task as a manual task so your users can manually schedule all fulfillment lines at the end of the day.

The orchestration process waits the first time the user submits the sales order. It doesn't wait if the user revises the order line. Assume you enable the Manual attribute on the Reservation step and the next step after reservation is a shipping task. At runtime, the process stops at the Reservation step and sets the status on the order line to Manual Reservation Required. The user finishes the manual task, orchestration moves to the shipping task, sets the status to Awaiting Shipping, then proceeds to fulfillment. If the user revises the order line, then orchestration will proceed to fulfillment for the revision, such as schedule, reserve, and ship, but it won't stop on the Reservation step.

Exit Criteria

Specify the task status that determines when to exit a wait step. For example, if the status of a shipment task changes to Shipped, then exit the wait step.

If your task includes more than one wait step, then make sure these steps don't use the same exit criteria.

Use the Manage Task Status Conditions page to make sure only the last step or wait step uses the exit criterion.

If you set up more than one wait step for a task, then make sure you set the exit criteria for each wait step that happens before the final wait step to Mark as Complete. For example:

  • Assume you set up wait step x, wait step y, and wait step z on the same task, and that wait step z happens last.

  • Make sure you set the exit criteria for step x and step y to Mark as Complete.

  • If the fulfillment system doesn't reply to step x or step y, but instead replies only to step z, then the flow can continue without waiting for step x and step y to finish.

  • If you don't set Mark as Complete for x and y, then the orchestration process might remain at x or y and never proceed to the next task.

  • Make sure you specify the value Canceled as an exit criteria status to exit the wait task in your orchestration process.

Line Selection Criteria

Add a business rule that selects fulfillment lines. The orchestration process step will then process only these fulfillment lines.

  • The rule populates the result with the fulfillment line Ids that identify the fulfillment lines to select.

  • The rule runs for each fulfillment line that the orchestration process is processing.

  • If the rule doesn't select any fulfillment line, then the orchestration process skips the step.

An orchestration process might not require all of the order lines or fulfillment lines when it calls the fulfillment task service. For example, assume the item on an order line is a warranty. You typically don't ship a warranty, so you can create a business rule that specifies not to ship items that don't ship.

For details, see Select Fulfillment Lines for Orchestration Process Steps.

Pause Rule

Specify when to pause processing before calling the next step, or when to resume processing. For details, see Pause Orchestration Processes for Time.

Branch Your Process

An orchestration process branch is a path in an orchestration process that the process runs when the flow meets a condition.

You can set up an orchestration process so its linear, where steps run in a sequence with no branching, or so it contains a branch where flow travels along different paths depending on a condition.

Here's how you set up branching.

  • Use a branching condition in a single orchestration process.

  • Use an assignment rule that examines a set of orchestration processes, then assigns one for the branch.

The technique you use depends in part on the complexity you need. For example, you can create several simple, linear orchestration processes, then use an assignment rule to choose one. Or, you can combine these orchestration processes into a single orchestration process that uses branching conditions. A more complex set up might require assignment rules and branching conditions.

For details, see Add Branches to Orchestration Processes.

Here are the attributes you set for branching.

Attribute

Description

Branching Condition

Specify the criteria that the condition must meet to run the steps in a branch.

  • Add the condition on the first step of the branch, which is the first step immediately after the conditional step.

  • If you don't add a check mark to the Otherwise option on the conditional step, then you must include a branching condition.

Evaluation Sequence

Specify the sequence that the orchestration process uses when it evaluates each branch condition.

Set the Evaluation Sequence only if your orchestration process uses branching. If it doesn't use branching, then you can't set the sequence.

Otherwise

If you add a check mark to the Otherwise option on the conditional step, and if the branching condition does meet the criteria you specify for the branch, then the orchestration process runs the branch that doesn't meet the branching condition.

Plan Your Process

Attribute

Description

Planning Default Branch

Specify the default path that the orchestration process uses for planning. The process uses this setting only if it includes one or more conditional branches.

Fulfillment Completion Step

Add a check mark to this attribute to indicate that the fulfillment lines are fulfilled when this step finishes.

  • The orchestration process uses this setting when it does planning to make sure it meets the request date.

  • The last step that happens in chronological order in the process isn't necessarily the Fulfillment Completion Step. For example, to indicate the completion date, the orchestration process might use the requested ship date as the last step instead of using the shipped date.

Default Lead Time

Specify the duration that the orchestration process needs to do the step.

  • The process uses lead-time to plan and to predict the completion date.

    The lead-time is the amount of time the process needs to finish the step, including wait steps and pause steps.

  • If you don't specify a lead-time expression for the step, then the process uses the value you set for Default Lead Time.

  • If actual completion dates are available, then the process uses actual dates instead of estimated dates.

  • The Gantt chart in the Order Management work area displays the planned orchestration process. Order Management uses the number of days that are past the lead time when it calculates jeopardy.

Lead Time UOM

The unit of measure for the lead-time, such as days, hours, or minutes.

Lead-Time Expression

A lead-time expression is a business rule that determines the amount of time you expect the step needs to finish.

  • Use it to calculate planning for the orchestration process. For example, an item that uses complex packing might require a longer lead-time for shipping.

  • The rule populates the result with a numeric value that represents the lead time.

  • You must use BigDecimal with your lead-time expression.

Here's an example expression that determines the difference between the current date and the scheduled ship date.

BigDecimal.valueOf((DooSeededOrchestrationRules.DOOHeader/childFLines.scheduleShipDate.time-CurrentDate.date.timeInMillis)/(1000*60*60*24))

where

  • BigDecimal is a public Java class that specifies an arbitrary-precision, signed, decimal number.

  • DooSeededOrchestrationRules is a method that contains a set of predefined business rules for an orchestration process.

  • DOOHeader/childFLines specifies a relationship between the parent order head and the child fulfillment lines. The forward slash ( / ) separates the parent from the child.

  • scheduleShipDate is a sales order attribute.

  • CurrentDate is a function that returns the current date.

  • timeInMillis converts the current date to milliseconds.

  • 1000 is the number of milliseconds in one second.

  • 60 is the number of minutes in one hour.

  • 60 is the number of seconds in one hour.

  • 24 is the number of hours in one day.

For details, see Add Lead-Times for Orchestration Process Steps.

Manage Change

Attribute

Description

Hold on wait

Sends a message to the fulfillment system for each active step when the orchestration process receives a change order.

Use Transactional Item Attributes

If you enable transactional item attributes, then the step examines the transactional item attributes to help it determine the differences that exists between the change order and the previous version of the order.

Use Flexfield Attributes

If you enable flexfield attributes, then the step examines them to help it determine the differences that exists between the change order and the previous version of the order.

Compensation Pattern

Specify the set of rules that determine how to handle each step that ran before Order Management received the change order.

For example, assume a change order requests a change from carpet to tiles.

  • The orchestration process must cancel a number of the previous steps that it ran.

  • If it already scheduled carpet for shipping, then the process must cancel the steps that scheduled the shipping.

  • Order Management creates a different set of fulfillment lines for tiles when it processes the change order, so it must use a different orchestration process because a tile order requires more time to fulfill and it uses a different contractor.

  • Order Management must cancel most of the previous steps, but it doesn't cancel the Measure step because the room dimensions are still accurate.

If you don't specify a compensation pattern, then Order Management might process a step as an update, depending on the context of the operation. It might rerun some steps. If Order Management can't compensate a step for some reason, then it bypasses the step, then compensates the next step that it encounters.

Plan Your Dates

Order Management sets the required completion date for the last step of the orchestration process to the Required Fulfillment Date, then calculates the planned dates for each step and task that the orchestration process contains so they meet the Required Fulfillment Date.

Here's how Order Management does it.

  • Works through the orchestration process from beginning to end, starting with the first step in chronological order, and ending with step Last Fulfillment Completion.

  • Doesn't use the last step that happens in chronological order to identify the completion date.

  • Incorporates lead times in the dates that it calculates. You can set up these lead times.

  • Displays the replanned schedule after it finishes the calculation.

Here's how Order Management sets the Required Fulfillment Date.

  1. Sets the Required Fulfillment Date to the date that your source system provides.

  2. If the source system doesn't provide a date, then Order Management sets Required Fulfillment Date to Requested Ship Date.

  3. If Requested Ship Date doesn't contain a value, then Order Management sets Required Fulfillment Date to Requested Arrival Date.

  4. If Requested Arrival Date doesn't contain a value, then Order Management sets Required Fulfillment Date to Order Date.

  5. If Order Date doesn't contain a value, then Order Management sets Required Fulfillment Date to System Date. The operating system of the computer that runs Order Management contains the system date.

Order Management exits this sequence as soon as it successfully sets the date. For example, if your source system provides a date, then it does only step 1, and doesn't do steps 2 through 5.

Keep this sequence in mind when you set up your integration and orchestration process.

Delete a Step

If you delete a step, and if the step references a status value from the orchestration process or the fulfillment line, then you must delete the status value before you delete the step. If you don't, then you can't release the orchestration process.

Assume you copy an orchestration process, it contains Step 3 Create Reservation and Step 4 Create Shipment Request. Step 3 references the Reserved status value from the orchestration process. You know from historical demand data that there's always sufficient inventory and don't want to reserve inventory for the item. So you delete step 3, but then encounter an error when you attempt to release the orchestration process.

Task name Reservation does not exist in the Process definition

Here's how you can fix that.

  1. Go to the Manage Orchestration Process Definitions task, then open your orchestration process for editing.
  2. On the Edit Orchestration Process Definition page, in the Process Details area, click Status Conditions.
  3. Click Orchestration Process Status Values.

    If your step referenced a fulfillment line value, then you would click Fulfillment Line Status Values > Edit Status Rule Set, then remove the status value from the rule set.

  4. Click the row that has Reserved in the Status Value attribute, then click Actions > Delete.
  5. Click Step Definition.
  6. Click the row that has Reserve in the Step Name attribute, then click Actions > Delete.

Duplicate a Predefined Process

If you create a duplicate of a predefined orchestration process and replace the first step of the process with your own custom step, and if you must add a business rule on the first step, then enable the Advanced Mode option and disable the Tree Mode option when you create your rule. If you can't set these options, then don't add a rule on the first step because your rule will fail validation.

Keep Predefined Rules

Some predefined orchestration processes come with a rule on the first step. For example, the first step of ReturnOrderGenericProcess is named Create Receiving Advice, and it comes with a line-selection criteria named Receiving.

Assume you need to create a custom process that's similar to ReturnOrderGenericProcess, except your first step must send a transportation request. You still need the Receiving line-selection criteria but you need it on the second step, not the first.

  1. Go to the Setup and Maintenance work area, then go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Orchestration Process Definitions

  2. On the Manage Orchestration Process Definitions page, search for ReturnOrderGenericProcess, then click Actions > Duplicate.

  3. On the Edit Orchestration Process Definition page, set the value.

    Attribute

    Value

    Process Display Name

    My Return Order Process

  4. In the Process Details area, in the first row, Create Receiving Advice, set the value.

    Attribute

    Value

    Step Name

    Temporary

    You can use any value. You will change it soon.

  5. Click the first row, then click Actions > Add Row.

    The page adds a new step, 200, right after step 100.

  6. Set the values for step 200. You are duplicating step 100, so set these values.

    Attribute

    Value

    Step Name

    Create Receiving Advice

    Step Type

    Service

    Task Type

    Return

    Task

    Return Receipt

    Service

    Create Expected Receipt Advice

    Update Service

    Update Expected Receipt Advice

    Cancel Service

    Cancel Expected Receipt Advice

  7. Click Save.

  8. Copy the rule in step 100.

    • On step 100, in the Line-Selection Criteria column, click Click for Rule.

    • In the Line-Selection Criteria dialog, notice the rule named Receiving, click Properties, then set the values.

      Attribute

      Value

      Advanced Mode

      Contains a check mark

      Tree Mode

      Doesn't contain a check mark

      You must set these values. If you don't, your copy will fail validation.

    • Add a check mark in the option that's right next to Receiving, click the down arrow next to the scissors, click Copy, then click Cancel.

  9. Paste the rule into step 200.

    • On step 200, in the Line-Selection Criteria column, click Click for Rule.

    • In the Line-Selection Criteria dialog, click Paste.

    • Click Validate, then verify that the Message contains No validation errors/warnings found!.

    • Click Save.

  10. On step 100, set the value.

    Attribute

    Value

    Step Name

    Transportation Request

    Set other attributes to meet your requirements.

Improve Performance

The way you set up your orchestration processes and orchestration process steps can directly affect performance in your environment. Here are some tips.

  • Remove each step that you don't need. Each step eats up resources and increases processing time. For example, if you use the predefined ShipOrderGenericProcess and don't need to do invoicing, then delete the Create Invoice and Wait for Invoice steps.

    Don't use line-selection criteria to skip steps you don't need because that approach increases processing time and might lead to a step that remains in a Not Started status for a long time, or a process that seems to take forever to finish.

  • Use a separate orchestration process to accomplish each goal. Don't use one large, monolithic process that has a lot of branches and skipped steps to do all your processing. Instead, use several processes with fewer branches.