9Set Up Configure-to-Order

This chapter contains the following:

Overview

Overview of Configure-to-Order

Use configure-to-order to allow your customer to choose options for each component of a configured item.

For example, order a laptop computer with a 1 terabyte hard drive. The computer is an example of a configured item. The hard drive is an example of a configure option. 1 terabyte and 500 megabytes are each values your customer can choose for the option. A configured item can include more than one configure option. A laptop computer can include other options, such as memory, the display, color of the chassis, and so on.

Configure-to-order is the process of ordering and fulfilling a configured item.

Why Should I Use Configure-to-Order?

  • Its expensive to build and stock supply for all the different possible combinations of options, store it in inventory, then wait for your customers to order. Instead, use just-in-time manufacturing and other manufacturing processes, such as postponement, to build the item on demand, when and where you customer orders it.

  • Some options rarely sell, but when they do sell, they meet an important customer requirement.

  • Some items cost a lot of money and are expensive to maintain as on-hand inventory.

  • Some items are physically large and not practical to stock in every possible combination.

  • Modeling each configured item separately improves handling and helps the warehouse and shop floor to identify and manage the item.

  • Improve visibility for the item and on-hand quantities in inventory, promising, and planning.

What's a Configuration Model?

Here's a generic structure of a configuration model.

generic structure of a configuration model.

Here are some important concepts.

Concept Description

Configuration model

A structure that defines the options your user can choose for each component. You can also specify that a component is required. You define the model during set up. You don't order or build the model at run time.

Option class

An object you use to organize configure options.

Configure option

Child of an object class. The hard drive, monitor, and mouse are each an example of a configure option. Your user can choose the value for a configure option from a list of available options.

Configured item

An item that includes one or more configure options that your user chooses. A desktop computer where you choose the hard drive, monitor, and mouse is an example of a configured item. A configured item is the result of the choices that your user makes at run time when configuring the item.

Required component

Component in the model that the user can't choose. For example, you usually can't choose the cooling fan when you order a laptop computer.

Note.

  • You create the model, classes, options, and structure in the Product Information Management work area at design time.

  • A user chooses options in the Order Management work area in a sales order at run time.

Example

Here's an example of a configuration model.

example of a configuration model.

Note.

  • The model, each option class, and each option are separate items that you create in the Product Information Management work area. For example, CTO_474000 is the item name for the model, CTO_474100 is the name of the screen option class, and CTO_474101 is the name of the 14" screen option.

  • The processor and battery are required components in this model. You can't order a laptop without them.

  • The screen option class is required. You can't order a laptop without a screen, but you can order a 14" screen or 15.6" screen.

  • The camera option class is optional. You can order a laptop without a camera. If you add a camera, then you can add a front camera, rear camera, or front and rear camera.

  • Your user chooses the options at run time.

You use the Product Information Management work area to create the structure. For example.

  • Create an item for each screen option.

  • Create an item for the screen option class, then add the screens to the class.

  • Create the model, then add the option class to the model.

Types of Configurations

Configuration Description

Assemble-to-order (ATO)

Item that isn't yet manufactured and isn't ready to ship. You make it or procure it according to the options that your user sets.

  • A warehouse usually doesn't stock every possible set of options your user might set. Instead, the warehouse receives the work order, then.

  • Uses a drop-ship flow or back-to-back flow to purchase the configured item from a supplier.

  • Uses a back-to-back flow to manufacture the item according to the work order.

Pick-to-order (PTO)

Item where you already manufactured the components, or you must make or purchase them.

  • Can include a back-to-back flow.

  • Can include drop ship.

  • Can include back-to-back and drop ship, but you must ship to your customer in one package.

Hybrid

A pick-to-order item that contains at least one assemble-to-order component.

Examples of Using Configure-to-Order

Examine some examples that use configure-to-order.

Simple Example

Here's an example that includes a few configure options..

 example of how your customer configures an item
in the Order Management work area.

You go to the Order Management work area, create a sales order, search for a configuration model on the catalog line, then click Configure and Add. Use the Configure page to set configure options. For details, see the Add Configured Items to Order Lines topic.

Create a Complex Model

Add complexity to your model. Assume you sell a kitchen stove top with oven. You need to provide a variety of configure options, such as gas, electric, convection, commercial, residential, type of finish, and so on. For this sales order, your customer needs large commercial gas burners for the stove top, a convection gas main oven, a convection gas warning oven, a griddle with commercial burners, large knobs, and stainless steel finish.

Add complexity to your model.

Note.

  • This configuration includes a parent model. The parent references child models.

  • Deluxe Viking Stove is the parent model.

  • Viking Stove Burner ATO and Oven ATO are each a child model.

  • Burner Knobs is an option class.

  • Large Knobs and Small Knobs are each a configure option in the Burner Knobs class.

  • Finish is an option class.

  • Midnight Black Finish, Stainless Steel Finish, and Winter White Finish are each a configure option in the Finish class.

  • In this example, the user has chosen options.

    • Viking Stove Burner ATO

    • Oven ATO

    • Large Knobs

    • Stainless Steel Finish

  • Click the pencil to configure a child model.

This model includes two different types of ovens. The main oven and a warming oven. The user can choose the type of oven and the type of warmer.

choose the type of oven and the type of warmer

Note.

  • The Oven ATO model is a child of the parent Deluxe Viking Stove model.

    Note that VIK12 is an abbreviation for Deluxe Viking Stove. You can specify it.

  • Oven Type is an option class in the Oven ATO model.

  • Gas, Gas with Convection, and Electric Oven are each an option in the Oven Type class.

  • Warming Oven is an option class in the Oven ATO model.

  • Gas, Gas with Convection, and Electric Oven are each an option in the Warming Oven class.

Continue to add options to your model.

Continue to add options to your model.

Note.

  • Burner Style ATO is a child model of the Viking Stove Burner ATO model and a grandchild of the parent Deluxe Viking Stove model.

  • In this example, the user can choose two options for the Commercial Burners class.

    • The Large Commercial option specifies to use large commercial burners for the stove top.

    • The Griddle option specifies to include a griddle burner for the griddle part of the stove top. Commercial stove tops often include more than one burn area. One area includes an open flame and another area includes a flat, steel griddle. This model illustrates how you can set up your configuration to meet specialized customer requirements.

    • You can continue to add child, grandchild, great grandchild models and so on to meet your specific hierarchical requirements.

For details about this example model, see the Overview of Using Web Services with Configure-to-Order topic.

More Examples

Here are some more examples.

Add More Choices to Your Configuration

For example.

  • Use a transaction attribute to add content at run-time, such as the weight of the item.

  • Add detail, such as display a second dialog that includes choices for accessories.

Here's an example where you choose options for a car, such as color, seat trim, seats, and so on.

example where you choose options for a car, such
as color, seat trim, seats, and so on.

How Configure-to-Order Works

Here's an example of how Supply Orchestration fulfills a configured item in a make flow.

example of how Supply Orchestration fulfills a
configured item in a make flow.

Note.

  1. Your user creates a sales order in the Order Management work area, searches the catalog line for the zCZ_AT6751010- Vision Slimline 5001 item, clicks Configure and Add, uses the Configure dialog to set configure options, clicks Finish, then submits the order.

    the zCZ_AT6751010- Vision Slimline 5001 item
  2. Order Management sends a request to Supply Orchestration. The request includes details about the configured item, including options that the user chooses.

    If its an assemble-to-order request, or a pick-to-order request with at least one assemble-to-order component, then Supply Orchestration examines the request to determine whether it already processed the configured item during a prior request.

    If Supply Orchestration Description

    Hasn't already processed the configured item during a prior request.

    Supply Orchestration sends a request to Product Information Management to create a new one, and Product Information Management creates it.

    Product Information Management stores the configuration in a single record with a unique name. Order Management stores the record identifier in the Configuration Item attribute on the order line.

    For example.

    • Assume the user adds the Vision Slimline 5001 to an order line. It includes configure options for the screen and CPU. The user sets the screen to 10" and CPU to 2.5GHz. Supply Orchestration searches it records and finds that no other order line has ever requested this configuration, so it sends a request to create it.

    • Some time later, the user adds another Slimline and sets the screen to 10" and CPU to 2.5GHz. Supply Orchestration finds the exact same configuration and uses it.

    • Some time later, the user adds another order line that contains the Slimline, but this time sets the screen to 8" and CPU to 2.5GHz. Supply Orchestration doesn't find the exact same configuration, so it sends a request to create it.

    Supply Orchestration sends a request to create a new configuration even if only one option is different from configurations it already created.

    This feature works the same across users, order lines, and orders.

    Already processed the configured item with the same configure options in a previous request.

    Supply Orchestration sends the Configuration Item attribute to Order Management.

    Here's how Product Information Management stores the zCZ_AT6751010.

    how Product Information Management stores the zCZ_AT6751010.

    Note.

    • A search for zCZ_AT6751010 returns the model and each instance of the model.

    • zCZ_AT6751010 is the configuration model you create. Product Information Management doesn't update it.

    • Supply Orchestration sent a request to Product Information Management to create the other two instances when your user ordered them in Order Management.

      • zCZ_AT6751010*1088 is a unique instance of zCZ_AT6751010. It contains specific values that your user chooses, such as a 10" screen and 2.5GHz CPU.

      • zCZ_AT6751010*1089 is another unique instance of zCZ_AT6751010. It contains an 8" screen and 2.5GHz CPU.

      Product Information Management stores the item as a nonconfigured item with no structure. It doesn't store the structure of the configured item instance. It does this to avoid storing duplicate structural elements in tables. Supply Orchestration stores the choices your user makes for each configure option and the structure in the match repository that Supply Orchestration uses. If you enable transaction attributes on your item, then Supply Orchestration also stores them in the match repository.

  3. The flow continues. It uses the same steps that a make flow uses for an item that isn't configured. For details, see the How Supply Orchestration Works topic.

Points to Consider

  • Configure-to-order primarily supports the make flow and the buy flow. It also supports the transfer flow and drop ship flow. For example, if your customer returns a configured item, then its available for transfer or ship from stock.

  • Supply Orchestration sends a request to Product Information Management to create the configured item for assemble-to-order when the user clicks Submit in the Order Management work area.

  • The configure-to-order flow creates the configured item in Product Information Management on demand, when you need it. If the configuration already exists, then the flow reuses it instead of creating a new record.

    Inventory creates the physical item just-in-time, only when you need it, then ships it. Inventory doesn't stock the item before you need it. Inventory creates another instance of the physical item for each shipment.

  • Configure-to-order also supports drop ship where you source and ship from a supplier. Supply Orchestration doesn't manage supply for drop ship, but it does manage creating the configured item in a drop ship flow.

  • To support the make flow, configure-to-order uses the work definition to create a work order at run time. The model can be valid in Product Information Management but the flow can still fail in manufacturing. For example, if the work order in manufacturing fails to assign even one option or option class to an operation step, then the work definition isn't valid, Promising won't provide a recommendation, and the flow will fail.

  • Use the View Configured Item Structure page or a web service to get details about each configure option. For details, see the View Structures of Configured Items topic.

  • You can't disable matching because it makes sure your flow is efficient.

    • You can add a transactional item attribute for configuration matching that implements specificity in your configuration. You can add it to an item class at any level of your model.

    • The Match Configuration attribute on the Specifications tab on the Edit Item page in Product Information Management applies to Oracle E-Business Suite. It has no effect on Oracle Cloud applications.

Child Components

Configure-to-order supports each item or assemble-to-order model as a child component in a pick-to-order model. The back-to-back flow can stock each component separately, in different locations.

  • It isn't necessary to source all child components in a pick-to-order model from the same business-to-business flow.

  • You can ship some children in a typical Order Management shipment as long as you ship them together with the business-to-business items.

  • If you use the same date, then you can ship all children in a business-to-business flow or none in the business-to-business flow.

  • You can drop ship all children from the same supplier.

Main Setup

Overview

Guidelines for Setting Up Configuration Models

Follow guidelines to help your setup go smoothly.

Use a Proven Setup Sequence

You use various work areas to set up your configuration model. Here's an example sequence for the make flow.

example sequence for the make flow

Note.

  1. Use a graphics program or pen and paper to visualize your hierarchy.

  2. Use the Setup and Maintenance work area to manage the item class.

  3. Use the Product Information Management work area.

    • Create the model, option classes, and configure options.

    • Set up a structure for your model.

    • Add classes to your model.

    • Set up numbering.

  4. Use the Pricing Administration work area to set up pricing for your model and configure options.

  5. Use the Global Order Promising work area.

    • Specify catalog and category.

    • Collect setup data and runtime data.

    • Create promising and sourcing rules.

  6. Use the Work Definition work area.

    • Create work definitions.

    • Add operations.

    • Add resources to operations.

Organize Your Model

  • You can set up a hybrid configuration model. For example, add a child assemble-to-order model to a parent pick-to-order model or assemble-to-order model. The configurator views each child as a component of the parent, and it creates all child models at the same time.

  • Reuse your option classes. For example, create an option class for hard drives, then reuse it for different laptop computer models. Or sell it as an individual component to your customer who needs to expand their drive capacity or replace a failed drive.

  • You can include a configure option in your hierarchy that isn't part of an option class.

  • Don't include a child pick-to-order component in a parent assemble-to-order model.

  • Set the Optional attribute to Yes for each component of an assemble-to-order or pick-to-order item when you create the item in Product Information Management. Setting it to Yes means the user can set a value for it, or not set any value.

    For example, if you set Optional to Yes for the Hard Drive component, and if the user doesn't choose an option for the hard drive, such as 1TB or 2TB, then configure-to-order uses the default value that you set for the hard drive.

  • If you use a transaction attribute, then, to create a new configured item at run time, set the scope to Configuration Matching in the item class for your transaction attribute. You must set the scope for each transaction attribute that's unique in your assemble-to-order model. If you don't do this, then Order Management will save the value, but Supply Orchestration won't save it or send it to manufacturing.

create the model, each class, and each option.

Note.

  • Click Tasks > Create Item in the Product Information Management work area to create the model, each class, and each option.

  • Click Specifications > Manufacturing.

    • Set Build In WIP to Yes for an assemble-to-order model and each option. It instructs manufacturing to build the item.

    • Set Shippable to Yes for an assemble-to-order model model and each of its options. Set it to No for a pick-to-order model and each of its options. Pick-to-order is already built, for example, with a return or transfer order.

    • Set Shippable and Build In WIP to No for any option class. You don't build or ship the class. You build and ship the option in the class.

  • Click Specifications > Sales and Order Management.

    • Set Back to Back Enabled to Yes for an assemble-to-order model for all Inventory organizations.

    • Set Shippable to Yes for an assemble-to-order model model. Set it to No for a pick-to-order model and each of its option classes and options.

Set Up Global Order Promising

Here are some setups you can do.

  • Promise an assemble-to-order item, pick-to-order item, or a hybrid that includes an assemble-to-order item inside a pick-to-order item.

  • Consider lead times for the model, option class, and option when determining the lead time for the configured item. You can do supply chain availability but not lead-time promising when you use an available-to-promise rule in a business-to-business flow. You can set some values, but don't mix rule types.

  • Exclude sourcing on each option and option class.

  • Create a supply recommendation at run time for each configured item in a back-to-back flow.

  • Promise each configured item in a drop ship flow.

  • Make sure Supply Planning is available for each component. Planning plans each component, including child models.

Collect your configured item on a schedule

Note.

  • Go to the Plan Inputs work area, then click Tasks > Collect Planning Data.

  • Collect your configured item on a schedule, such as at the end of each day, so the flow can include them in the on-hand quantity. For example, the return orders you receive throughout the day might increase on-hand quantity.

  • Collect items, item structures, and work definitions for your new model. Promising won't provide a make recommendation if you don't collect the work definition.

  • Collect on-hand inventory for each configure option. If even one component isn't in stock, then Promising won't display availability for your model.

  • You must collect each new configured item.

  • Refresh the repository after you collect.

Avoid the Not Available message at run time.

  • Create an available-to-promise (ATP) rule to get a recommendation from Promising during the back-to-back flow.

  • Explicitly reference the model and each component in your available-to-promise rule. If you don't explicitly reference them, then include them in a category.

Use the Configurator Models Work Area

Use the Configurator Models work area to extend your configuration model. For example.

  • Set default choices or values.

  • Automatically select a configure option according to another choice your user makes when configuring the item.

  • Prevent your user from selecting options that result in a configured item that won't work.

  • Control the number of instances your flow creates for a model at run time.

  • Calculate and set values for numeric configure options.

If you use the Configurator Models work area, then follow these guidelines.

  • If you must display a transaction attribute at run time, then import your model into the Configurator Models work area.

  • If you import a configured item at run time through.

    • File-base data import. Use the same template you use when you import a sales order that includes only one order line.

    • Web service. Use the same web service you use when you import a sales order that includes only one order line.

    • Make sure your import includes child lines for the configure options and that it establishes a relationship between the child and parent configured item.

  • If you revise a model, update the item class, add it to an unreleased workspace, then release the workspace into the Configurator Models work area.

For details, see the How You Create and Maintain Configurator Models topic.

Troubleshoot

You set up a configuration model in two phases.

  1. Create the model, options, classes, and hierarchy in Production Information Management.

  2. Send details about the model to your downstream systems.

    Use the Manage Configured Item Exceptions page to examine most errors that occur in this step. Correct the error and resubmit, or ignore it.

    Use the Manage Configured Item Exceptions page
to examine most errors that occur in this step. Correct the error
and resubmit, or ignore it.

For details, see the Troubleshoot Problems with Configure-to-Order topic.

Other Guidelines

Use two browser applications during set up. Opening a second browser application allows you toggle between work areas without having to close a work area, go through the Navigator, then open another work area. For example, you can keep the Product Information Management work area open in browser x, open the Work Definition work area in browser y, then toggle between x and y as necessary if you find you need to modify your set up in Product Information Management.

Overview of Setting Up Configuration Models

Set up a configuration model, including the model hierarchy, item class, creating the model, pricing, and so on.

Summary of the Setup

Do the work described in these topics.

  1. Visualize the Hierarchy for Your Configuration Model

  2. Manage Item Class

  3. Create Your Configuration Model

  4. Set Up Numbers for Configuration Models

  5. Set Up Pricing for Configuration Models

  6. Specify Catalog and Category for Configuration Models

  7. Collect Planning Data for Configured Items

  8. Create Promising Rules for Configured Items

  9. Create Sourcing Rules for Configured Items

Details

Visualize the Hierarchy for Your Configuration Model

Use a graphics program or pen and paper to visualize the hierarchy.

Assume you must set up configuration model CTO_474000, Build My Laptop, in a make flow that uses assemble-to-order.

Use a graphics program or pen and paper to visualize
your hierarchy.

Note.

  • Come up with a meaningful name for your model, such as Build My Laptop.

  • Identify the classes in your model that you will allow your customer to choose. For example, you can often choose from different screen sizes, memory, and hard drives when you buy a laptop, but you usually can't specify the voltage for the hard drive.

  • Identify the options you will provide in each class, such as a 14" screen and a 15.6" screen.

  • Design a number nomenclature that uniquely identifies the model, each class, and each option. For example, CTO_474000 identifies the model, where CTO means configure-to-order, and 474000 identifies the model. Each class and each option use CTO_474xxx to identify that they're part of CTO_474000. For example.

    • The Screen class uses CTO_474100 to identify that its part of CTO_474000.

    • The 14" option uses CTO_474101 to identify that its part of the CTO_474100.

  • Determine the price you plan to charge for the model and each option.

Manage Item Class

Use a predefined class or create your own for your configuration model.

Create your own class so you can manage your model independently of other models, such as how to number each unique configuration, specifying who can configure the model, specifying transaction attributes to store data that the flow creates at run time, and so on.

For now, you will do the minimum setup you need to get started when you create your own class.

  1. In the Navigator, click Setup and Maintenance, click Tasks > Search, search for, then open Manage Item Classes.

  2. On the Manage Item Classes page, in the search results, click Actions > Create.

  3. In the Create Item Class dialog, set values, then click Save and Add Details.

    Attribute Value

    Item Class

    My Laptop

    Internal Name

    My_Laptop

    Description

    Class to use for the Build My Laptop model.

  4. On the Edit Item Class page, verify the options, then click Save and Close.

    Attribute Value

    Enabled

    Contains a check mark

    Item Creation Allowed

    Contains a check mark

Create Your Configuration Model

Use the Product Information Management work area to create your configuration model.

Here's an example model you will create.

the model you will create.

Summary of the Set Up

  1. Create classes and configure options.

  2. Add options to your option classes.

  3. Create the model.

  4. Add classes to your model.

  5. Associate your model with an inventory organization.

  6. Verify your set up.

Create Classes and Configure Options

You start at the bottom of the hierarchy. You create classes and configure options, then add them to the model.

  1. In the Navigator, click Product Management > Product Information Management.

  2. On the Product Information Management page, click Tasks > Create Item.

  3. In the Create Item dialog, set values, then click OK.

    Attribute Value

    Organization

    V1

    V1 is an abbreviation for Vision Operations.

    Create New

    Selected

    Number of Items

    9

    This is a nifty feature you can use to add more than one item to the same class.

    Item Class

    My Laptop

    This is the class you created earlier.

    Template

    Finished Goods

    As an alternative, use the ATO Item template for configure options and the ATO Option Class template for option classes. If you use them, verify each value that the template sets.

  4. On the Create Multiple Items page, don't click Save. Instead, set values.

    Item Description User Item Type

    CTO_474101

    14 Inch Laptop Screen

    Finished Good

    CTO_474102

    15.6 Inch Laptop Screen

    Finished Good

    CTO_474201

    8 GB Memory

    Finished Good

    CTO_474202

    12 GB Memory

    Finished Good

    CTO_474301

    1 TB Hard Drive

    Finished Good

    CTO_474302

    2 TB Hard Drive

    Finished Good

    CTO_474100

    Screen

    ATO Option Class

    CTO_474200

    Memory

    ATO Option Class

    CTO_474300

    Hard Drive

    ATO Option Class

    Leave other attributes at their default values.

    Attribute Value

    Item Status

    Active

    Lifecycle Phase

    Design

    Pack Type

    Leave empty.

    Here's what your set up should look like.

    what your set up should look like
  5. Set values for the first item in the list.

    • Click the row that contains CTO_474101 in the Name column, click Specifications > Sales and Order Management, then set the value.

      Attribute Value

      Order Management Indivisible

      Yes

      Specify whether your user can use a decimal quantity for the item. If Yes, then your user can use only a whole number for the quantity, such as 1, 2, or 3, and can't use a decimal, such as 1.4.

      In this example, each item is indivisible. For example, you can't order a fraction of a screen, memory, or hard drive.

    • Click Associations, click Actions > Select and Add, search for an inventory organization, click Apply, then click Done.

      Attribute Value

      Organization

      M1

      You must specify an inventory organization. If you don't, you can't create a work definition for your item.

      Organization Name

      Seattle Manufacturing

      In this example, assume you already set up Seattle Manufacturing as an inventory organization.

  6. Repeat step 5 for each row.

  7. Set values for the option classes.

    You use the option class to group options but you don't actually ship the class. You do ship the option. So, you set some values differently for the option class than you do for the option.

    • Set values for the screen. Click the row that contains CTO_474100 in the Name column, click Specifications, click Manufacturing under Item Organization, then set values.

      Attribute Value

      Structure Item Type

      Option Class

      Pick Components

      No

      Assemble to Order

      Yes

      Build in WIP

      No

      Supply Type

      Phantom

      The class is a phantom. You don't pick, assemble, or build it. You do pick, assemble, and build the option.

    • Click Sales and Order Management, then set the value.

      Attribute Value

      Shippable

      No

      You don't ship the class. You ship the option.

    • Repeat this step for the memory option class, CTO_474200.

    • Repeat this step for the hard drive option class, CTO_474300.

  8. Accept all other default values, then click Save > Save and Close.

Add Options to Your Option Classes

  1. Search for and open the screen class for editing.

    • Click Tasks > Manage Items.

    • Search for the screen class.

      Attribute Value

      Name

      CTO_474100

    • In the search results, click the M1 version.

      Note: Product Information Management creates a new version of each item when you associate the item with an inventory organization, then appends the name of the organization, such as M1, to the name of the item. The search results display the V1 and M1 versions in separate rows, but doesn't display V1 or M1. It displays only the name. Make sure you click the M1 version. Its usually the second row.
    open the screen option class for editing
  2. Add the structure.

    • On the Edit Item page, click Structures, then click Actions > Create from Common.

      Don't use Actions > Create. If you do, you will be creating a separate structure. Instead, click Create from Common to use the structure you created for the V1 version.

    • In the Create New Item Structure from Common dialog, set values, then click OK.

      Attribute Value

      Organization Name

      Vision Operations

      Item

      CTO_474100

      Structure Name

      Primary

      Common Structure Levels

      First Level

    • In the Item Structures list, in the Name column, click Primary.

    • On the Edit Item Structure page, click View, then add a check mark to Component Order Management.

  3. Add an option.

    • On the Edit Item Structure page, click Actions > Select and Add.

    • In the Select and Add dialog, search for the item.

      Attribute Value

      Item

      CTO_474101

    • In the search results, click the row, then click Edit and Add.

    • In the Edit Multiple Components dialog, set the values, then click OK.

      Attribute Value

      Optional

      Set to No for the option classes.

      Set to Yes for the configure options.

      Note.

      • An option class can be required or optional. For example, a laptop computer can't function without a screen, so the screen class isn't optional.

      • If you set Optional to No for the option class, and if you set Optional to Yes for at least one option in the class, then the Order Management work area will display the class on the Configure page at run time. This allows your user to choose the option.

      • If you set a configure option to No, then Order Management won't display it at run time, your user can't set the option, and the purchase order and shipping documents won't include it. If its a manufactured item, then the work order will still include it because its part of the item structure.

      Minimum Quantity

      1

      Specify the minimum quantity the user can set for this option. A laptop computer must have one and only one screen, so set the minimum quantity to 1 and the maximum quantity to 1.

      Maximum Quantity

      1

      Instantiability

      Don't modify for this example.

      Specify whether to create a separate flow for each instance of the item on the order line. If the quantity of the component is greater than one, and if Instantiability is Yes, then use a separate instance for each assemble-to-order flow.

      For example, assume you add an order line for the CTO_474000 with a quantity of 12, and Instantiability is.

      • Enabled. Create 12 separate flows and set the quantity on each flow to 1. Enable Instantiability when each item requires a slight variation that the flow must fulfill. For example, the item is a personal computer that includes two hard drives, and you must serialize each drive. For another example, the item is a cell phone and you must provision a unique telephone number for each phone.

      • Not enabled. Create one flow and set the quantity on the flow to 12.

  4. Repeat step 3 for the CTO_474102 option.

  5. Click Done, then click Save > Save and Close.

  6. Repeat these steps but create the memory hierarchy.

    CTO_474200
       CTO_474201
       CTO_474202
  7. Repeat these steps but create the hard drive hierarchy.

    CTO_474300
       CTO_474301
       CTO_474302
Create the Model

Create the CTO_474000 model so it works in an assemble-to-order flow.

  1. On the Product Information Management page, click Tasks > Create Item.

  2. In the Create Item dialog, set values, then click OK.

    Attribute Value

    Organization

    V1

    Create New

    Selected

    Number of Items

    1

    Item Class

    My Laptop

    Template

    ATO Model

    Move ATO Model from the available list to the selected list.

    Make sure the selected list contains only ATO Model.

  3. On the Create Item page, set values, then click Save.

    Attribute Value

    Name

    CTO_474000

    Description

    Build My Laptop

    Item Status

    Active

    Lifecycle Phase

    Design

    User Item

    ATO Model

    Pack Type

    Leave empty

  4. Click Specifications, then set values. Use these values for an assemble-to-order flow.

    Attribute Value

    Structure Item Type

    Model

    Autocreated Configuration

    No

    Pick Components

    No

    Assemble to Order

    Yes

    Build in WIP

    Yes

    Set it to Yes for an assemble-to-order item that you will make.

    If you were setting up a pick-to-order flow, you would use different values.

    Attribute Value

    Pick Components

    Yes

    Assemble to Order

    No

    Build in WIP

    No

  5. Click Sales and Order Management, then set values.

    Attribute Value

    Customer Ordered

    Customer Orders Enabled

    Order Management Transaction Enabled

    Yes

    If you set these attributes to No, the flow will fail in Order Management.

    Back-to-Back Enabled

    Yes

    This attribute allows Supply Orchestration to procure the item in a back-to-back flow, such as buy or make.

    • Set to Yes for an assemble-to-order item.

    • Set to No for pick-to-order. You can enable the configure options for back-to-back in a pick-to-order flow, but not the model.

    Shippable

    Yes

    Note.

    • Set to Yes for an assemble-to-order model. Order Management views the model as the item. The configured item is an attribute on the model. So you must make the model is shippable.

    • Set to No for a pick-to-order model. Each item in the pick-to-order model is shippable, but the pick-to-order model only represents the collection of items to ship. It isn't shippable.

    Ship Model Complete

    No

    Note.

    • Set to No for assemble-to-order because an assemble-to-order model is a single item.

    • Set to Yes for pick-to-order because Order Management only supports shipping all pick-to-order items together from the same warehouse.

    Invoiced

    Yes

    If you set this attribute to No, then the flow won't send any details to Accounts Receivable.

  6. Click Planning, then set values.

    Attribute Value

    Planning Method attribute in the MPS MRP Planning area

    MPS Planning

    If you set it to MPS Planning or MRP Planning, then the model, option classes, options, and components display in Planning Central.

    For details, see the Item MRP and MPS Planning Specifications topic.

    Forecast Control

    Consume Then Explode

    Use this value if you intend to forecast the model. For details, see the Forecast an Assemble-to-Order Item topic.

  7. Click Purchasing, set values, then click Save.

    Attribute Value

    Purchasable

    Yes

    Set to Yes for the model, each option class, and each option.

    List Price

    100

    Purchasing uses this value as the default purchase price in the purchase order. It applies only when you create a blanket purchase agreement with your supplier. It has nothing to do with set ups you make in the Pricing Administration work area.

    Set a value for the model and each option, but not the option classes.

    For details, see the Create Purchase Orders for Configured Items topic.

  8. Add a structure.

    • Click Structures, then click Actions > Create.

    • In the Create New Structure dialog, set the value, then click OK.

      Attribute Value

      Name

      Primary

    • Click Save.

Add Classes to Your Model

  1. Add the CTO_474100 class.

    • On the Edit Item page, on the Structures tab, in the Item Structures list, in the Name column, click Primary.

    • On the Edit Item Structure page, click Actions > Select and Add.

    • In the Select and Add dialog, search for the value.

      Attribute Value

      Item

      CTO_474100

    • Click the row that contains CTO_474100 in the search results, then click OK.

    • On the Edit Item Structure page, click the row that contains CTO_474000 in the Item column.

  2. Repeat step 2 to add the memory class, CTO_474200.

  3. Repeat step 2 to add the hard drive class, CTO_474300.

  4. Click Done, then click Save.

  5. Add a picture of your model.

    • On the Edit Item page, in the large empty area under the page name, under the text No items to display, next to the text None, click the plus sign.

    • In the Attachments dialog, click Browse to locate a file that contains an image of your model, click OK, then click Save.

Associate Your Model with an Inventory Organization

  1. Add the association.

    • On the Edit Item page, click Associations.

    • Click Actions > Select and Add.

    • In the Select and Add dialog, search for an inventory organization, then click Apply > Done.

      Attribute Value

      Organization

      M1

      Organization Name

      Seattle Manufacturing

      Note: Make sure the organization you choose as an inventory organization. If it isn't, then it won't display when you create the work definition. For details, see the Inventory Organizations topic.

    • Click Save > Save and Close.

  2. Create the structure in the M1 version from the structure you created in the V1 version.

    • On the Manage Items page, open the CTO_474000 (M1) version of your model for editing.

      Its typically the second row in the results.

    • On the Edit Item: CTO_474000y (M1) page, click Structures, then click Actions > Create from Common.

      You add the structure from the V1 version you created earlier. In this example, the V1 version is the master organization. This way, you use a single structure for all classes and options in the configured item, which helps manage and maintain the item. For example, if you update the structure in V1, then Product Information Management updates the structures that reference V1.

      Don't use Actions > Create. If you do, you will be creating a separate structure for the M1 version.

      For details about master organizations, see the Item Organizations topic.

    • In the Create New Item Structure from Common dialog, set values, then click OK.

      Attribute Value

      Organization Name

      Vision Operations

      Item

      CTO_474000

      Structure Name

      Primary

      Common Structure Levels

      All Levels

    • In the Information dialog, click OK.

    • Click Save > Save and Close.

Verify Your Set Up

  1. Sign into Order Management and create a sales order.

    Attribute Value

    Customer

    Computer Service and Rentals

  2. On the catalog line, enter the value.

    Attribute Value

    Item

    CTO_474000

  3. Wait for the search results to display, then verify that the catalog line displays the Configure and Add button.

    Configure and Add displays only for a configured item.

  4. Click Configure and Add, then verify the Configure page.

    verify the Configure page

Note.

  • Verify that the hierarchy on the Configure page reflects the hierarchy you set up in Product Information Management.

  • Verify that you can choose one, and only one configure option in each class.

  • Notice there's no pricing. You set it up in the Set Up Pricing for Configuration Models topic.

Set Up Numbers for Configuration Models

Set up the item class so that the item name for each configured item is unique. A unique name can be useful to help track and manage each item.

Here's what your setup looks like after you complete the procedure.

Set up the item class so the item name for each
configured item is unique.

Note.

  • You use the Edit Item Class page in the Setup and Maintenance work area to specify the number at design time.

  • Order Management displays the number in the Configuration Item attribute on the sales order at run time.

Let's say you need to add a suffix to the item name for each unique configuration of item CTO_474000. You need to start the suffix with the number 100, increment it by 1 each time a user orders the item, and use a hyphen (-) to separate the suffix from the name. For example, here's the name that the flow creates the first time the user adds the item.

CTO_474000-100

where

  • CTO_474000 is the name of the configured item

  • - (the dash) is the delimiter

  • 100 is the starting number of your sequence

Here's the name for the next time a user adds the item.

CTO_474000-101

The number is unique across order lines, sales orders, and users.

Summary of the Setup

  1. Get the name of the class.

  2. Modify the class.

  3. Verify your setup.

Get the Name of the Class

  1. In the Product Information Management work area, click Tasks > Manage Items.

  2. On the Manage Items page, search for CTO_474000, then open it for editing.

    This topic assumes you already created the CTO_474000. For details, see the Create Configuration Model topic.

  3. On the Edit Item page, note the value in the Item Class attribute.

    Assume the class for the CTO_474000 is named My Laptop.

Modify the Class

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

    • Offering: Product Management

    • Functional Area: Items

    • Task: Manage Item Classes

  2. On the Manage Item Classes page, in the search results list, search for, then open the My Laptop class for editing.

  3. On the Edit Item Class page, click Item Management, then set values.

    Attribute Value

    Item Number Generation Method

    User Defined

    This means you, the administrator, defines numbering. Not the end-user who creates the sales order.

    Configured Item Number Generation Method

    Sequence

  4. In the Details area, set values.

    Attribute Value

    Starting Number

    100

    Prefix Type

    Model Item Number

    Specify what displays before the starting number.

    Increment By

    1

    Suffix Type

    None

    Specify what displays after the starting number.

    Delimiter

    Hyphen

    Specify the character that separates the starting number from the prefix or the suffix.

  5. Click Save and Close.

Verify Your Setup

  1. Go to the Order Management work area and create a sales order.

  2. Add the CTO_474000 item to order line 1.

  3. Add the CTO_474000 item again, but this time add it to order line 2. Set the options for CTO_474000 on order line 2 different that the options you set for it on line 1.

  4. Click Submit.

  5. Click Actions > Switch to Fulfillment View.

  6. On the Order page, click Fulfillment Lines.

  7. Click the row that contains 1-1 in the Fulfillment Line column.

  8. In the Attributes area, click Item Details, then notice that the value of the Configuration Item attribute is CTO_474000-100.

  9. Click the row that contains 2-1 in the Fulfillment Line column.

  10. Notice that the value of the Configuration Item attribute is CTO_474000-101.

You can see the number throughout the configure-to-order flow:

  • In fulfillment views and the Availability Options area in the Order Management work area.

  • In the Item column of the Supply Lines area of the Supply Order Details page in the in the Supply Orchestration work area.

  • In the Item column of the Review Dispatch List in the Inventory Management work area.

Set Up Pricing for Configuration Models

Use the Pricing Administration work area to set up pricing for your configuration model.

Suppose you must add your new model to the Corporate Segment Price List, and you already set up Pricing so it uses this price list for your Computer Service and Rentals customer.

You use the Pricing Administration work area to set up pricing for the configuration model you create in the Product Information Management work area.

use the Pricing Administration work area to set
up pricing for the configuration model you create in the Product Information
Management work area

For details about price lists, see the Manage Price Lists topic.

Do these steps to set up pricing for configuration models. You must be a pricing administrator to do this task.

  1. In the Navigator, click Order Management > Pricing Administration.

  2. Click Tasks > Manage Price Lists.

  3. On the Manage Price Lists page, search for Corporate Segment Price List, then open it for editing.

  4. Add the charge for each item.

    • On the Edit Price List page, in the Search Results area, click Actions > Add Row, then search for the item.

      Attribute Value

      Item

      CTO_474000

    • Wait for the search results to display the description, then set Pricing UOM to Each.

    • Click Create Charge, scroll down, set values, then click Save.

      Attribute Value

      Pricing Charge Definition

      Sale Price

      Calculation Method

      Price

      Base Price

      100

      Start Date

      Choose the current date.

    • Repeat this step for each charge.

      Here's the pricing you set up when you visualized the hierarchy in the Set Up Configure-to-Order topic. Use the same values for each attribute except for Base Price.

      Item Description Base Price

      CTO_474100

      Build My Laptop

      100

      CTO_474101

      14 Inch Laptop Screen

      200

      CTO_474102

      15.6 Inch Laptop Screen

      300

      CTO_474201

      8 GB Memory

      5

      CTO_474202

      12 GB Memory

      10

      CTO_474301

      1 TB Hard Drive

      50

      CTO_474302

      2 TB Hard Drive

      100

      Your set up should look like this.

      Your set up should look like this
  5. Save your changes.

  6. Verify your set up.

Verify Your Set Up

  1. Use another browser to sign into Order Management, create a sales order, then search for CTO_474000 on the catalog line.

    Notice that your design time set up on the Edit Price List page in Pricing Administration displays on the order line of the sales order in Order Management at run time.

    Verify that the catalog line in Order Management
displays the base price you set for the CTO_474000 in Pricing Administration,
which is $100
  2. Verify that the catalog line in Order Management displays the base price you set for the CTO_474000 in Pricing Administration, which is $100.

  3. Click Configure and Add, then verify that each item contains the pricing you set up in Pricing Administration.

    Notice that your design time set up on the Edit Price List page in Pricing Administration displays on the Configure page of the sales order in Order Management at run time.

    verify that each item contains the pricing you
set up in Pricing Administration.

    For example, verify that the price for the 15.6" screen is $300.

  4. Click Finish and Review, verify the summary displays the correct pricing for your choices and calculates the correct total, then click OK.

  5. Click Submit to send your sales order to order fulfillment.

Specify Catalog and Category for Configuration Models

A catalog is a collection of categories you use to classify your model and organize it in a hierarchy. Product Information Management associates each item it creates with the categories you set for the model.

Product Information Management associates each
item it creates with the categories you set for the model.

Global Order Promising uses the category when it runs the available-to-promise rule for your model. The category helps Promising to recognize the configured item.

  • You must assign at least one catalog that the Catalog for Sourcing Assignments profile in Promising contains. Supply Orchestration sends a request to Product Information Management to create the configured item, then copies the catalog to the item when Product Information Management creates the item.

  • In this example, Global Order Promising uses the predefined GOP_Category (Global Order Promising) to assign the configured item to the rule.

  • Make sure you assign each component in your model to an available-to-promise rule or associate it with a catalog that you assign to an available-to-promise rule.

  • If you don't set up the catalog and category correctly, the flow will usually create the configured item, but other downstream processing might fail, such as scheduling. For details, see the Troubleshooting Configure-to-Order topic.

  • The Product Information Management work area might automatically add catalogs and categories to your model depending on how you set up the work area. It might still be necessary to add a catalog to support your configure-to-order flow.

For details, see the Relationship Between Categories and Catalogs topic.

Try it.

  1. Identify the category you must use.

    • In the Navigator, click Global Order Promising.

    • Click Tasks > Manage Planning Profile Options.

    • On the Manage Planning Profile Options page, search for the value.

      Attribute Value

      Profile Option Code

      MSC_SRC_ASSIGNMENT_CATALOG

    • In the search results, in the Profile Values area, note the value.

      Attribute Value

      Profile Value

      GOP_Catalog

      This attribute identifies the catalog that Promising uses when assigning an assignment set. You specify this value in the Catalog attribute on your model in Product Information Management.

      If you change the Profile Value, then you must specify your value on the model. For example, if you set Profile Value to my_value, then you must set the Catalog attribute on your model to my_value.

      GOP_Catalog is an example. You can add a catalog in the Profile Values list and use it instead of GOP_Catalog.

  2. Add the category to your item.

    • In the Product Information Management work area, click Tasks > Manage Items.

    • Search for, then open your model, such as CTO_474000 for editing.

    • On the Edit Item page, click Categories.

    • Click Actions > Add Row, set values, then click Save.

      Attribute Value

      Catalog

      GOP_Catalog

      Category

      GOP_Category

  3. Collect data and refresh the server. See the Collect Planning Data for Configured Items topic.

    Here are the catalogs that the flow copies to the configured item.

    • Inventory

    • Purchasing

    • Planning

    • Cost

    • Order Entry

    • Product Line Accounting

    • Asset Management

    • Distributed Order Orchestration

    • Order Capture

    • Pricing

    • Configurator

    • Supply Chain Financial Flow Orchestration

Collect Planning Data for Configured Items

Collect planning data at various points of your set up process, and also after you finish set up.

Global Order Promising promises orders that it receives from Order Management Cloud. It uses data from your supply chain network and supplies that you collect. You set up rules in Promising that specify how to plan and promise.

You collect data into the Global Order Promising repository. The repository also stores setups that you make in the Global Order Promising work area, such as rules for sourcing, available-to-promise, and supply allocation. Promising and sourcing work together to determine what to deliver to your customer within the time frame that the sales order requests.

Collect Setup Data

Collect your set ups from various Oracle Fusion applications into Global Order Promising. Collect organizations, items, structures, routings, suppliers, transit times, and so on. For example, collect the catalog you assign on you model in Product Information Management so you can use it in an available-to-promise rule in Global Order Promising.

You must collect data several times during setup. Collect each time you.

  • Create or modify a model.

  • Modify the item, item structure, catalog, or work definition.

  • Set up a new item in the Product Information Management work area.

For details, see the Overview of Data Collections for Supply Chain Planning topic.

Try it.

  1. In the Navigator, click Plan Inputs.

    Don't use the Plan Inputs task that's available in the Setup and Maintenance work area. Use the Plan Inputs work area instead.

  2. In the Plan Inputs work area, click Tasks > Collect Planning Data.

  3. In the Collect Planning Data dialog, set the value.

    Templates are available, such as Static Data for Supply Planning. For this set up, do the steps instead so you can more clearly visualize the flow.

    Attribute Value

    Source System

    GPR

    Your source system will be different.

    Collection Type

    Automatic Selection

    This value gives the server the choice. If targeted collections haven't run, you don't get an error.

  4. On the Reference Data tab, move entities from the Supply Entities list to the Selected Entities list.

    Attribute Value

    Items

    Item Structures

    You must include these entities for each model.

    Work Definitions

    You must include this entity for a make flow. If you don't, or if you haven't added all parts of the model to an operation, then Global Order Promising won't provide a recommendation for the make flow, and Supply Orchestration won't create a supply order.

    Order Management still processes the order but fulfillment won't benefit from the recommendation and supply order.

Collect Runtime Data

Collect dynamic data at run time, such as on-hand supply and purchase orders.

Global Order Promising makes availability-to-promise and sourcing decisions when your user creates a sales order at run time. It allows the user to explore different scenarios to increase margin, improve delivery, and so on. Promising needs the most up-to-date supply and demand data to make these decisions.

Its important to periodically collect data for each new configured item your users add when they create a sales order because collection gets the on-hand quantity for return orders and canceled order. The quantity affects planning.

Try it.

  1. Click Supply Planning Data, then move entities from the Supply Entities list to the Selected Entities list.

    Attribute Value

    On Hand

    Promising uses this entity to get the inventory that's in stock for the model. If all components in the configured item aren't in stock, then Promising won't find availability for the model.

    For example, assume the schedule requires you to build the item within five days to meet the delivery date. Promising examines the build schedule for each component, the current backlog of purchase orders for component x, and determines component x isn't available for your order until the sixth day.

    Purchase Orders and Requisitions

    Transfer Orders

    Work Order Supplies

    Add these entities so Global Order Promising can get availability across the entire supply chain.

    Don't use templates that the dialog displays, such as Dynamic Data for Supply Planning. The templates don't apply for configure-to-order.

  2. Click Submit.

  3. Refresh the server.

Refresh the Server

You must refresh the server each time you collect data. You must also refresh each time you create or update a promising rule or sourcing rule.

For details, see the Refreshing the Global Order Promising Engine: Explained topic.

Try it.

  1. In the Navigator, click Scheduled Processes.

  2. On the Scheduled Processes page, click Action > Schedule New Process.

  3. In the Schedule New Process dialog, set the value.

    Attribute Value

    Name

    Refresh and Start the Order Promising Server

  4. Add a check mark to the parameters you must update, then click Submit.

    Here are the parameters you refresh for most set ups.

    • On Hand. You need the on-hand inventory to replenish components in an inventory transaction or to process return orders.

    • ATP Rules.

    • Sourcing.

    • Items.

    • Organizations. Include only when you create a new inventory organization.

    • Resources. Include only when you create a new resource.

  5. Click Actions > Refresh, then verify status is Succeeded. Repeat, as necessary.

Create Promising Rules for Configured Items

Use an available-to-promise (ATP) rule and sourcing rule to promise your sales order in different ways.

Use an available-to-promise (ATP) rule and sourcing
rule to promise your sales order in different ways.

Note.

  • Your customer places a sales order that includes the item and requested delivery date.

  • You create an available-to-promise rule, which is a set of instructions you specify that tells Global Order Promising how to analyze supply that's available in your supply chain so it can promise the item and meet the delivery date. You specify the supply type to consider, such as supply that's on hand or in transit, supply that various documents create, such as purchase orders, requisitions, or work orders.

  • You create a sourcing rule that specifies the supply sources to consider when promising, such as whether to consider make, buy, or transfer sources. You can also specify the optimal location that can supply the demand.

At run time, Promising determines the lead time for the model and components, depending on the option classes and options your customer chooses. Here's how Promising does it.

  • Examines various paths in the item structure and determines the longest path.

  • Considers fixed and variable lead times for items across the structure. The lead time for the model influences order promising behavior. For example, if a sales order requests a model but no supply exists, then Promising makes sure it promises the sales order only on or after the model lead time.

You can use a similar setup to promise a pick-to-order model.

  • Make sure you set the Ship Model Complete attribute to Yes on the model in Product Information Management.

  • Make sure all components will be available on a specific date in the specified warehouse so Promising can promise the model for the date.

  • If a delay occurs in receiving a component in the warehouse at some later time, then a person in shipping might decide to ship only the parts of the configured item that are available. You might need to do more processing to ship the remaining part of the configured item that doesn't involve promising.

This section describes how to set up rules for a configured item. For more details about rules, see the How Order Promising Rules Work Together topic.

Assume you must create an available-to-promise rule for the CTO_474000 model. For details about this model, see the Create Your Configuration Model topic.

Try it.

  1. In the Navigator, click Global Order Promising.

  2. On the Global Order Promising page, click Tasks > Manage ATP Rules.

  3. On the Manage ATP Rules page, click Actions > Create, then set values.

    Attribute Value

    Name

    ATP rule for Build My Laptop

    Promising Mode

    Choose a value.

    • Supply Chain Availability Search. Consider supply for the configuration components in your model when promising availability.

      Choose this value for most configured items.

      You must use this value for a back-to-back flow.

    • Lead Time Based. Use this value when the supply chain for your item is reliable and predictable.

    • Infinite Availability Based. Use when your item is always available.

    Search Components and Resources

    Enable it.

    Allow Promising to consider components and resources when promising an assemble-to-order model.

    If you source the item through a back-to-back flow, then you must enable this option. Enabling produces the planning recommendation that the flow needs to create the supply order.

    User Defined Fence in Days

    Specify the point in time when the flow can consider that the configured item is always available.

    To make sure processing for an advance order is timely, set your time fence to a lead time that exceeds your typical lead time.

    For this example, enable all attributes in the Supply Types area and Demand Types area. Global Order Promising will consider each type you chose when it analyzes your supply chain.

    In your actual deployment, disable attributes you know aren't viable.

  4. Click ATP Rule Assignment, click Actions > Add Row, then set values. Add a separate row for the model, for each option class, and each configure option.

    Assignment Basis Assigned-to Item

    Item

    CTO_474000

    Item

    CTO_474101

    Item

    CTO_474102

    Item

    CTO_474201

    Item

    CTO_474202

    Item

    CTO_474301

    Item

    CTO_474302

    Item

    CTO_474100

    Item

    CTO_474200

    Item

    CTO_474300

    Note.

    • You must assign a rule to the model, each option class, and each configure option in your model at some hierarchical level.

    • You typically assign at the Item level.

    • You typically use the same rule for model, classes, and options. You can use different rules, but using the same rule simplifies set up, maintenance, and troubleshooting.

  5. Click Actions > Add Row, then set values.

    Assignment Basis Assigned-to Item Category

    Category

    GOP_Category

    Note.

    • This step assigns your rule at the Category level so the same rule can recognize each instance of your configured item that Product Information Management creates at run time, such as CTO_474000-100 and CTO_474000-101.

    • Supply Orchestration associates the configured item that it creates at run time with the same category you set for the configuration model in Product Information Management at design time. Downstream processes also use the same catalog at run time.

Create Sourcing Rules for Configured Items

Create a sourcing rule to specify where and under what circumstances to make your model and its components available to your customer.

Assume you need a sourcing rule that sources the Build My Laptop model from Seattle Manufacturing. Seattle Manufacturing stocks the required components and the configure options. Their job is to assemble the components according to choices your user makes in the sales order.

Try it.

  1. On the Global Order Promising page, click Tasks > Manage Sourcing Rules.

  2. On the Manage Sourcing Rules page, Click Actions > Create, then set values.

    Attribute Value

    Name

    Sourcing rule for Build My Laptop

    Organization Assignment Type

    Local

    Set to.

    • Global when you must specify where to fulfill and ship the sales orders. You don't specify an organization to create supply. Instead, you specify a transfer or buy source. Use buy for a drop ship supplier.

    • Local when you must specify how to create supply and the organization that creates it.

    Organization

    Seattle Manufacturing

  3. In the Sourcing Rule Effective Dates area, click Actions > Add Row, then set the start date.

  4. In the Effective Start Date area, Click Actions > Add Row, then set values.

    Attribute Value

    Type

    Make At

    Set to Make At or Buy From for an assemble-to-order model, such as the Build My Laptop model.

    You typically make an assemble-to-order item instead of keeping it in inventory. So, you usually don't use Transfer From for the model.

    Use Transfer From for a made-to-stock item, such as a component. For example, you don't stock the laptop, but you probably would stock screens for the laptop.

    Global Order Promising enables Make At only when you set assignment type to Local.

    Supplier

    Supplier Site

    Supplier Site Source System

    If you create a global rule for a Buy From sourcing type, then you must specify values for these attributes.

    If your supply chain includes more than one supplier, then create a separate sourcing rule for each supplier. Add a separate row for each supplier.

    Allocation Percent

    100

    In this example, you add only one row, so specify 100%.

    If you add more than one row, then you can allocate demand across sources. For example, if you add a row for Vision Manufacturing and set allocation to 70%, add another row for Vision Distribution and set allocation to 30%, then Promising will use Vision Manufacturing to promise 70% of the orders.

    Rank

    1

    If you add more than one row, then you can specify the rank order to use for sources. For example, if you add a row for Vision Manufacturing and set Rank to 1, add another row for Vision Distribution and set Rank to 2, then Promising will use Vision Manufacturing to promise the order first. If Promising determines that Vision Manufacturing can't fulfill the order, then Promising will consider Vision Distribution.

    Shipping Method

    Global Order Promising disables Shipping Method for a local rule. You can't edit it. Leave it empty for a global rule.

    If you set a value for a global rule, you might get an error.

    The value provided for the Shipping Method attribute is invalid.

    Don't set shipping method in this context because it specifies where supply originates, not how to ship it to the customer.

    Exclude for Options and Option Classes

    Exclude options and option classes when promising a sales order. Exclude them for a Make At or Buy From sourcing type.

    For example, exclude an item from planning when you know your source can't make it because it includes toxic chemicals that the source isn't authorized to handle, or your company limits production to only one specific site.

    For another example, assume you know Seattle Manufacturing created a large oversupply of the CTO_474100 screen option class from a prior marketing campaign. You already know supply is available. To improve planning performance, you decide to exclude it from planning.

  5. Click Save > Save and Close.

  6. Assign your sourcing rule.

    • Click Tasks > Manage Assignment Sets.

    • On the Manage Assignment Sets page, click Actions > Create.

    • On the Create Assignment Set page, set values.

      Attribute Value

      Name

      Assignment Set for Sourcing Rules

      Catalog

      GOP_Catalog

      Use the same catalog you use for your model in Production Information Management and in your available-to-promise rule.

  7. Click Actions > Add Row, then set values.

    Attribute Value

    Assignment Level

    Item

    Note.

    • Promising fulfills your sales order only from the source that you assign to the assignment set.

    • Assign at least one sourcing rule at the global level so Global Order Promising can use it to identify a ship-from location. If you don't, then your users must specify the warehouse in every sales order.

    • You must use the same ship-from and source in a configure-to-order make flow.

    Item

    CTO_474000

    Assign your model. In this example, CTO_474000 is the Build My Laptop model.

    Sourcing Type

    Sourcing Rule

    Sourcing Rule or Bill of Distribution

    Sourcing rule for Build My Laptop

Add More Assignments

You can add more than one sourcing rule and assign them differently. Global Order Promising offers you a wide range of choices.

add more than one sourcing rule and assign them
differently

For example, assume you create three different sourcing rules and assign them differently according to item, organization, and customer.

  1. Assign the CTO_474000 Build My Laptop item, which is the model, to Sourcing rule for Build My Laptop.

  2. Assign the CTO_474000 to Sourcing rule for Build My Laptop only if the customer is Computer Service and Rentals.

  3. Assign the CTO_474300 Hard Drive, which is an option class, to the Hard Drives sourcing rule, which is a rule you set up that's optimized to source hard drives.

  4. Assign the CTO_474100 Screen, which is an option class, to the Monitor sourcing rule, which is a rule you set up that's optimized to source monitors. Source the CTO_474100 only from D1 Denver Manufacturing when running the sourcing rule.

If you add more than one assignment, then Global Order Promising considers the sourcing rule you set for the most detailed assignment level first. Here's a list of assignment levels you can use, listed from least detailed to most detailed. For example, Region is more detailed than Global. If you add a global assignment and a regional assignment, then planning runs the regional assignment first, then the global assignment.

  • Global

  • Region

  • Demand class

  • Customer

  • Customer and customer site

  • Category

  • Category and region

  • Item

  • Category and demand class

  • Category and customer

  • Category and customer site

  • Item and region

  • Item and demand class

  • Item and customer

  • Item and customer site

Troubleshoot Problems with Configure-to-Order

Troubleshoot problems that occur during setup or at run time in a configure-to-order flow.

Problems That Occur During Setup

Problem Details Solution

Can't Find Item When Creating Work Definition

I search for my item in the Create Work Definition dialog, but the search can't find it, or parts of my structure are missing in the Work Definition work area. For example, I create an applicability rule, but the rule editor doesn't display a configure option, or I manually add rule text and encounter an error.

Assume you set up a hierarchy in Product Information Management.

  • CTO_474000 is the model (computer)

    • CTO_474300 is an option class (hard drive)

      • CTO_474301 is a configure option (1TB hard drive)

You associate CTO_474000 and CTO_474300 with an inventory organization, but don't associate CTO_474301 with an inventory organization.

You then manually add an applicability rule.

ITEM='CTO_474000'.'CTO_474300'.'CTO_474301'

But when you click Validate, you get an error.

The rule contains an invalid item CTO_474301

The Work Definition work area only recognizes items that you associate with an inventory organization. Make sure you add an inventory organization on the Associations tab in Product Information Management for the model, each option class, and each configure option.

For details, see these topics.

  • Create Your Configuration Model

  • Inventory Organizations

Structure Not Associated With an Inventory Organization

I encounter an error when I use the Create Work Definition dialog.

For Assemble to Order model CTO_474000, Primary item structure is not available.

Use the Associations tab in Product Information Management to add your inventory organization, open the new version that Product Information Management creates, then use the Structures tab to add your structure to the new version.

If you add the structure first, Product Information Management creates a new version of your item, appends (M1) to it, but doesn't copy the structure from the V1 version to the M1 version, and you must add the structure again to M1.

Error When Creating Applicability Rule

I create an applicability rule, validate it, and close the rule editor. I then click Save to save the work definition, but encounter an error.

Attribute RuleText in RuleEO is required.

This error sometimes occurs if you navigate away from the rule editor and come back to it, or add and remove rule text several times.

Click Cancel on the Edit Work Definition Details page, reopen the work definition, then add your rule.

Product Information Management Doesn't Delete My Items

I create items in the Product Information Management work area. During testing, I find I need to revise some and delete others. I search for my item on the Manage Delete Groups, click Actions > Delete, add it to a delete group, but it persists in the work area.

Try this.

  1. Click Tasks > Manage Delete Groups.

  2. On the Manage Delete Groups page, search for and open your delete group.

  3. Select your item, click Actions > Delete, then click Submit.

  4. Wait a few minutes for the delete to take effect.

For details, see the Group Deletions of Items, Structures, New Item Requests, and Change Orders topic.

Manage ATP Rules Page Doesn't Contain My Item

I add a catalog to my model. I search the Manage ATP Rules page for my item but the search doesn't return anything.

Collect data and refresh the repository. See the Collect Planning Data for Configured Items topic.

Warning on Plan Inputs Page

I receive a warning when I use the Plan Inputs page to collect data.

You requested net change collections, but a prior targeted collection was not performed for one or more of the selected entities. Do you want to continue?

In the Collect Planning Data dialog, change the Collection Type to Automatic Selection to let the server choose the data to collect. You can use Net Change the next time you collect data.

Promising Keeps Giving Available-To-Promise Recommendations

I test my make or buy setup, but Promising keeps giving available-to-promise recommendations.

This problem typically occurs in a test environment where your flow isn't finished yet or Promising isn't refreshed. Promising identifies on-hand quantities for the item and uses them to source supply until you exhaust the quantities.

Examine and correct your inventory quantities, run collections, then run the Refresh and Start the Order Promising Engine scheduled process.

Problems That Occur at Run Time

Problem Details Solution

Configuration Page in Order Management Doesn't Display Options

I set up my item in Product Information Management. I create a sales order in Order Management, search for the item on the catalog line, click Configure and Add, but the configuration page displays only the name of the item. It doesn't display any components or configure options.

Make sure you set the Optional attribute to Yes for each class that contains an option, and for each option. For the option, you must set this attribute on the child structure. You can't set it from the parent structure.

Transaction Attribute Doesn't Display in Order Management Work Area

No additional details.

The Configurator Models work area doesn't come predefined to include transactional attributes. You must import the model so Order Management can populate them at run time.

Try this.

  1. Go to the Configurator Models work area, click Tasks > Manage Snapshots, click Actions > Import Model Item, then import your model.

  2. Take action depending on whether your model is new or revised.

    • New. Release the workspace.

    • Revised.

      • Update the item class.

      • Add it and the model to an unreleased workspace.

      • Release the workspace.

Order Management Fails to Create Item

I configure the item in Order Management, then click Submit. Order Management displays an error message and sets the sales order status to Draft.

The assemble-to-order flow attempts to create the configured item but fails.

Try this.

  1. Make sure all applications and servers are up and running.

  2. If the problem persists, there's probably a problem in your setup. Use the error message to investigate the root cause of the error. Start with the Manage Items page in Product Information Management.

  3. Resubmit the order in Order Management.

Exception Occurs After I Click Submit

I configure the item in Order Management, then click Submit. Order Management accepts the configuration and sets the sales order status to Processing.

The flow creates the configured item but an error occurs in downstream processing.

For details on how to fix this problem, see the Manage Exceptions for Configured Items topic.

Flow Doesn't Create a Supply Order

An assemble-to-order flow doesn't create a supply order.

Different problems might cause this problem. They're similar to problems that occur in back-to-back fulfillment with an item that isn't configured.

Here are some fixes you can try.

  • Run the scheduled process to release planning recommendations.

  • Examine your available-to-promise and sourcing rules in Global Order Promising. Make sure you aren't missing rules and that they don't conflict with one another.

  • Supply for a component in the configured item isn't available in the requested time frame.

  • Examine your work definition. Global Order Promising can't do a Make recommendation if there's a problem in your work definition.

  • Collect data for Global Order Promising.

Do the fix, then release the planning recommendations to create the supply order.

Flow Creates Purchase Requisition But Doesn't Create Purchase Order

No additional details.

If a blanket purchase agreement exists with the supplier, and if the flow sends a purchase requisition, then it normally creates the purchase order.

Try this.

  1. Sign into the purchasing application and examine the state of the requisition. If an error message indicates that pricing is missing, then a setup problem might exist in the item definition.

  2. Go to the Product Information Management work area, then click Tasks > Manage Items.

  3. Search for and open you item, then examine the item structure. Make sure the Specifications area for each component includes a price.

  4. In Purchasing, make sure an approver approved the blanket purchase agreement. If not, correct errors and resubmit it.

Flow Fails to Create Work Order

I set up a pick-to-order model that includes pick components and a child assemble-to-order component.

I successfully assign a Make At or Buy From sourcing rule for each of my options. I set the lead time for each item in the model to 0 days or empty at the organization level.

I notice that if on-hand availability doesn't exist for any pick-to-order or assemble-to-order option, then the flow fails to create a work order.

I wonder whether the flow expects on-hand inventory to exist for all items in the model before it creates the work order.

Note.

  • You must create a sourcing rule, assignment set, and available-to-promise rule for an assemble-to-order model so the flow can do a supply chain search.

  • You don't need a sourcing rule for components that you keep on hand, but you must set the ship date for the order schedule for them to Infinite.

  • To schedule the work order on a specific ship date, you must maintain on-hand inventory for the components or set up a sourcing rule.

  • If you get the components through your own purchase order process or manually, and if Global Order Promising must schedule the order in a specific period that isn't infinite, then you must create a separate sourcing rule for your components and use infinite availability in your available-to-promise rule.

Global Order Promising Doesn't Make Recommendation

Inventory contains the on-hand quantities for the configured item, but Global Order Promising doesn't make an available-to-promise recommendation.

Promising is only aware of on-hand quantities that you collect and refresh.

To collect on-hand quantities from your warehouse, run the scheduled process Refresh and Start the Order Promising Engine.

Encounter Error When Creating Sales Order

You create a sales order that includes a configuration model, click Submit, then encounter an error.

JBO-FND:::FND_CMN_SYS_ERR: FND-2An application error occurred. Your help desk was notified.JBO-FND:::FND_CMN_INVALID_ATTRB_API_SERV: The value of the attribute User Item Type is not valid.

You set the User Item Type when you create the configuration model in Product Information Management. Its possible you chose a type that isn't enabled. For details, see the Create Your Configuration Model topic.

Try one of these fixes.

  • Use a different value in the Template attribute when you create the configuration model. The Template attribute sets the value for the User Item Type attribute. Use a type that's enabled, such as Finished Goods or ATO Option Class.

  • Enable the lookup code for the User Item Type attribute that you're currently using.

Exception Messages

Here's an example exception message.

com.oracle.bpel.client.BPELFault: faultName: {{http://schemas.oracle.com/bpel/extension}remoteFault} messageType: {{http://schemas.oracle.com/bpel/extension}RuntimeFaultMessage} parts: {{ summary=<summary>oracle.fabric.common.FabricInvocationException: Unable to invoke endpoint URI "http://scm-internal.oracleoutsourcing.com:10617/invUom/UnitOfMeasureService" successfully due to: javax.xml.soap.SOAPException: javax.xml.soap.SOAPException: Bad response: 503 Service Temporarily Unavailable from url

The text Bad response: 503 Service Temporarily Unavailable indicates that the web service isn't available. Its possible something is restarting, such as the server, a component or system that the service calls, or the service itself. Wait a few minutes, then click Resubmit.

If the message describes a setup problem, then fix the setup, then Resubmit.

For details, see the Manage Exceptions for Configured Items topic.

Getting Help

It might be necessary to contact Oracle Support. If you do, here's an article on My Oracle Support that can help you prepare.

  • SRDC - Configure to Order : Data Collection for Configure to Order (Doc ID 2141338.1)

Other Setups

Work Definitions

Guidelines for Creating Work Definitions for Configured Items

Assemble-to-order in a make flow creates the work order for the configured item dynamically at run time according to the primary work definition that you set up at design time.

Here's what Oracle Manufacturing Cloud does.

  1. Receives a request to create a work order for a configured item:

  2. Uses the work definition that you set up to create a work order.

Note.

  • Manufacturing uses the assemble-to-order (ATO) model as the ordered item when it creates the customer order. The item includes configure options that your user sets at run time.

  • You must set up a work definition for the assemble-to-order model.

  • You must set the structure name of the model to Primary in Product Information Management. If the name isn't Primary, then you can't create a work definition for the model.

  • Manufacturing currently supports work definitions for an assemble-to-order model only for discrete manufacturing.

Create Work Definition

  • Use the right side of the page in the work definition to view each level of the model.

  • You can expand each option class and view the options in the class.

  • Set Production Priority to 1.

Specify Operations

  • You can assign the component of a model and a manufacturing resource to each operation.

  • You can assign an option class, which will assign all of its components.

  • You can apply an item to an operation only if the item is a component in the model.

To specify that the operation depends on the configure option, open your work definition for editing. On the Edit Work Definition Details page, click your operation, click Actions > Edit, then, in the Edit Operation dialog, set the Option Dependent attribute.

Value Description

Contains a check mark.

The work order for the configured item includes the operation if.

  • Your user chooses the configure option that the flow assigns to the operation.

    or

  • The flow meets the criteria you set up in the applicability rule for the operation.

Doesn't contain a check mark.

The operation is required. The work order for the configured item always includes a required operation.

Specify Operations in the Hierarchy

You can assign each component to an operation from any level of the item structure.

  • You can expand an option class to view the configure options that the class contains.

  • You can expand a phantom to view the configure options that phantom contains.

  • If you assign the parent, then you can't assign its children.

  • If you already assigned the children, you can assign the parent, but the work definition will delete the child assignments.

  • You can choose to assign the option class or the options.

  • For a phantom that isn't an assemble-to-order item, you can choose to assign the parent phantom or the components.

  • If you assign an option class to an operation that depends on an option, and if the user selects at least one option in the class, then the work order for the configured item includes the operation that you specify in the work definition.

  • You can't expand a child assemble-to-order model.

  • You must assign the entire quantity for the component to the operation.

    • You can't update or split the quantity to more than one operation.

    • You can't inverse the quantity, unit of measure, or yield.

    • You can't assign an item that isn't part of the model structure.

Specify Child Models

If the supply type of a child model.

  • Is phantom. You don't need to create a separate work definition for the child model. The work order for the parent configured item includes the components of the configured item of the child model.

  • Isn't phantom. You must create a separate work definition for the child model. Use Planning to create supply for the configured item of the child.

Set Up Phantoms

A phantom is an item that you physically build but don't stock. If you specify an item as a phantom, and if your user chooses the item, then manufacturing stores it as part of the structure.

  • If you set the supply type for the component to Phantom in Product Information Management, then you can expand the phantom and view its components in the work definition.

  • You can keep expanding until you encounter a component that isn't a phantom.

  • You can't expand a child model even if its supply type is Phantom.

  • Manufacturing replaces each phantom with its physical counterpart at the next level of the hierarchy when configure-to-order creates the work order.

For details, see the Overview of Phantom Explosion in Work Orders topic.

Apply Operation to Work Order

Use an applicability rule to assign an option-dependent operation.

  • Specify the criteria that determines whether to include the operation in the work order.

  • Create a rule for a configure option, option class, transaction attribute, or a combination of them.

  • Add a check mark to the Option Dependent option in the Option Dependent Details area. Enabling Option Dependent turns on the Add icon. Click Add to open the Add Applicability Rule dialog.

  • The Add Applicability Rule dialog displays the item structure for your model, but it only displays the configure options.

  • The dialog displays configure options and transaction attributes according to the date you select in the Date list on the Edit Work Definition Details page. It doesn't options and attributes that aren't currently in effect.

  • Expand each option class to view the configure options that the class contains.

  • You can't expand a child model.

Transaction Attribute

If you use a transaction attribute in an applicability rule.

  • Create the transaction attribute in Oracle Fusion Product Hub.

  • Assign the application scope to Configuration Matching when you create the transaction attribute. Configuration matching uses the value of the transaction attribute to determine whether the configuration already exists. Manufacturing also uses the transaction attribute to identify the operations it needs to build the configured item.

  • Use the item class to apply the transaction attribute to the configuration model, configure option, or child model. You associate a transaction attribute with an item class. Each item in the item class inherits the transaction attribute.

  • Assign either the configure option or the applicability rule to your option-dependent operation. Don't assign both. If you assign both, then the work definition doesn't evaluate the rule.

  • If your transaction attribute uses numeric data or string data, then make sure the validation type for the value set is independent or subset.

  • Expand the configure option in your rule to display the transaction attribute. Expand the transaction attribute to display the attribute value.

  • Use the internal name. The Add Applicability Rule dialog displays the display name of the transaction attribute. You can translate the display name. If the value set that the transaction attribute uses is translatable, then the item structure displays the internal name of the value and the translated value in parenthesis. For example, internal name(translated value). The work definition uses the value of the internal name to evaluate the rule. It doesn't use the translated value.

Operators

Use operators in the Rule Text window.

  • Include a combination of items and transaction attributes.

  • Use AND and OR conditions to create a complex rule.

Validate Your Rule

Click Validate to validate your rule syntax.

Use valid syntax.

  • Use single quotation marks to enclose each item number.

  • Use dot notation to separate each level of the hierarchy.

  • Use upper case letters for each operator.

Keywords

Syntax Example Value

Use the ITEM keyword to specify whether the item a model or option class.

ITEM='CTO_474000'.'CTO_474300'.'CTO_474301'

where

  • CTO_474000 is the name of the model

  • CTO_474300 is the name of the option class

  • CTO_474301 is the name of the configure option

Use the TRANSACTIONALATTRIBUTE keyword to specify a transaction attribute.

Use double quotation marks to enclose each transaction attribute name and value.

'CTO_474000'.'CTO_474300'.'CTO_474301'. TRANSACTIONALATTRIBUTE ["Finish"] is equal to "Matte"

where

  • Finish is the name of the transaction attribute.

  • Matte is the value of the transaction attribute.

Operators

Numeric Attributes String Attributes
  • Equal to

  • Not equal to

  • Less than

  • Less than or equal to

  • Greater Than

  • Greater than or equal to

  • Equal to

  • Not equal to

  • STARTSWITH

  • ENDSWITH

  • CONTAINS

  • DOESNOTCONTAIN

Verify Assignments

Make sure you assign each component in your work definition. If you don't, the flow will fail to create the work order for the configured item.

Go to the Edit Work Definition Details page, then click Actions > Export Operation Item Assignments. The export saves the entire model structure to Microsoft Excel.

Examine the status in Excel. If the status of your configuration model is.

  • Complete. You assigned all the required operations.

  • Incomplete. Identify which part of the hierarchy you must assign, then assign it.

Assignment Status Description

Complete

You assigned an operation to the parent and each child.

Incomplete

You didn't assign the parent and each child.

Explicit

You assigned a child configure option.

Implicit

You assigned the parent and the child inherited the parent assignment.

Modify Attributes

The work definition gets values for attributes from the model you create in the Product Information Management work area.

  • Basis

  • Quantity

  • Inverse Quantity

  • UOM

  • Item Yield

  • Planning Percent

  • Optional

  • Supply Type

You can't modify any of these attributes in the work definition except for Supply Type.

Create Work Definitions for Configured Items

Use the Work Definition work area to specify the operations needed to build the configuration model you set up in the Production Information Management work area, and the resources needed to do the operations.

For example, specify assemble, test, and pack operations for the CTO_474000 model.

specify assemble, test, and pack operations for
the CTO_474000 model

For background details, see the Overview of Work Definitions topic.

This example assumes you already set up the work centers and you create your own supply. You don't get supply from a supplier.

Try it.

  1. In the Navigator, click Work Definition.

  2. Create a name for your work definition.

    • On the Overview page, click Tasks > Manage Work Definition Names.

    • On the Manage Work Definition Names page, click Add Row, set values, then click Save and Close.

      Attribute Value

      Display Name

      Configurable Laptops

      Internal Name

      Configurable Laptops

      Description

      Work definition for configure-to-order laptop computers.

      Type

      Standard

      Used in Planning

      Enabled

  3. Create the work definition.

    Create the work definition
    • Click Tasks > Manage Work Definitions.

    • On the Manage Work Definitions page, click Actions > Add.

    • In the Create Work Definition dialog, set values, then click Next.

      Attribute Value

      Item

      CTO_474000

      Name

      Configurable Laptops

      Production Priority

      1

      Priority 1 specifies to use the primary work definition.

    • Click Add Row and set values.

      Attribute Value

      Sequence

      10

      Operation Type

      In-house

      Name

      Assemble

      Work Center

      Assembly

    • Click Add Row and set values.

      Attribute Value

      Sequence

      20

      Operation Type

      In-house

      Name

      Test

      Work Center

      Test Bay

    • Click Add Row, set values, then click Save and Edit.

      Attribute Value

      Sequence

      30

      Operation Type

      In-house

      Name

      Pack

      Work Center

      MFGPACKING1

      Count Point

      Enabled

      Use this attribute to specify that the last step in the sequence is done.

      You must specify Count Point on the last step. You can also specify it on other steps to indicate activities that must finish for them.

Add Resources to Operations

You aren't required to add resources to operations, but you can if you need to specifically control who does the operation. You use resources to specify how.

Add Resources to Operations

Try it.

  1. On the Edit Work Definition Details page, in the area that displays the item structure, click Resources.

  2. Add resources to your first operation.

    • Click the Assemble operation.

    • Click the Kit Assembly Labor resource, drag it, then drop it onto the Assemble operation.

      Each work center has resources that do the operation. Your work center might use resources that are different than this example uses. For details about how to create a work center and it's resources, see the How You Manage Work Centers topic.

    • In the Assign Operation Resource dialog, set values, then click OK.

      Attribute Value

      Units Assigned

      1

      Basis

      Variable

      This attribute determines whether you need more resources as the quantity increases when you assemble the item. You typically need more resources to assemble a laptop as quantity increases, so set it to Variable.

      Usage

      1

      Inverse Usage

      1

      Scheduled

      No

      Principal

      Not checked

      Specify priority when you use the same sequence number for more than one resource. In general, don't use the same sequence number for more than one resource. Instead, sequence them consecutively so it isn't necessary to specify a principal.

      Charge Type

      Manual

      Activity

      Setup

      For details about these attributes, see the Edit Operation Resources section in the How You Edit Work Definitions topic.

    • Click the Final Assembly Labor resource, drag it and drop it onto the Assemble operation, set values in the dialog, then click OK.

  3. Repeat step 2 for the Test operation.

  4. Repeat step 2 for the Pack operation.

Your set up should like something like this.

Edit work definition details page
Apply Operation to Work Order

As an option, create a rule that determines when to do an operation in the work order that creates the configured item.

As an option, create a rule that determines when
to do an operation in the work order that creates the configured item.

Assume you must do a performance test that depends on a configure option your user sets in Order Management. You can create two different operations.

  • Do the 1 Terabyte Hard Drive Test operation only if the user chooses the 1 terabyte hard drive.

  • Do the 2 Terabyte Hard Drive Test operation only if the user chooses the 2 terabyte hard drive.

Try it.

  1. In the Navigator, click Work Definition.

  2. Create a work definition for the CTO_474000 item.

  3. Add two operations.

    Attribute Value

    Name

    Test 1 TB Hard Drive

    Name

    Test 2 TB Hard Drive

  4. Add a test for the 1 TB hard drive.

    • On the Edit Work Definition Details page, click the Test 1 TB Hard Drive operation, then click Actions > Edit.

    • In the Edit Operation dialog, add a check mark to Option Dependent.

    • Next to Applicability Rule, click Add.

    • In the Applicability Rule dialog, in the Item Structure area, click the CTO_474300 Hard Drive component.

    • Drag and drop the CTO_474301 1 TB Hard Drive option onto the Rule Text area.

      Notice the text area adds some code.

      ITEM='CTO_474000'.'CTO_474300'.'CTO_474301'

      CTO_474000 is the model, CTO_474300 is the option class for the hard drive, and CTO_474301 is the 1 TB hard drive.

      Here's the hierarchy the code uses.

      ITEM='model'.'option class'.'option'
    • Click Validate, then make sure the validation succeeds.

      If it doesn't, see the Troubleshoot Problems with Configure-to-Order topic.

    • Click OK, notice that the Edit Operation dialog displays your rule text, then click OK.

  5. Repeat step 4 for the 2 TB hard drive, except add your test to the Test 2 TB Hard Drive operation, and drag the CTO_474302 item when you create the rule.

  6. On the Edit Work Definition Details page, click Save.

  7. Test your rule.

    • In the Navigator, click Order Management.

    • In the Order Management work area, create a sales order, add the CTO_474000 item, choose the 2 TB Hard Drive option, add it to an order line, then click Submit.

Forecast

Forecast an Assemble-to-Order Item

Set up a forecast according to your organization for an assemble-to-order item.

  • Use the Planning Central work area to set up the forecast.

  • Create a statistical forecast for an assemble-to-order item. Use shipment history and booking history to do the forecast.

  • Consume the forecast for your model. Each sales order that contains your configured item consumes the forecast.

  • Explode the forecast that remains after the model is done consuming. Generate a production forecast for your option classes and options.

    Planning Central displays the forecast for the options, option classes, and child models as a production forecast. It indicates the forecast that remains after planning consumes the forecast for the model that your sales orders needs to fulfill the configured item.

    Planning uses the planning percent you set on the class and option to forecast demand. You specify the percent when you set up the structure for the item in the Product Information Management work area.

  • Create supply for your forecast according to organization. Set up a planning sourcing rule that sources components and subassemblies.

  • Planning uses the fixed and variable lead times you set up on the model to offset the production forecast it creates for the options.

Here's an example.

example of Forecast an Assemble-to-Order Item

Assume you need organization M1 to manufacture an assemble-to-order model that includes a hierarchy.

  • Laptop Computer Model

    • Camera Option Class

      • Dual Camera Option

      • Single Camera Option

    • Speaker Option Class

      • Built-in Option

      • External Option

Assume your market research indicates you expect.

  • 100% demand for the camera. Everybody wants one.

  • 60% demand for a dual camera and 40% for a single camera.

  • 80% demand for high-fidelity speakers.

  • Of the 80% who want high-fidelity, 70% want built-in speakers, and 30% want external speakers.

Assume you set up the model.

Object Forecast Control Planning Percent

Laptop Computer Model

Consume Then Explode

Not applicable.

Camera Option Class

Consume Then Explode

100

Dual Camera Option

Consume Then Explode

60

Single Camera Option

Consume Then Explode

40

Speaker Option Class

Consume Then Explode

80

Built-in Option

Consume Then Explode

70

External Option

None

30

The configured item in the sales order consumes part of the forecast. Planning explodes what's left over according to your set up. Assume 1,000 units are available to explode after the sales order consumes the configured item.

Here's the math.

Object Math

Camera Class

The model consumes one unit of the camera class for each laptop. You expect 100% of your customers will want a camera. So planning calculates the production forecast at 1,000.

100% multiplied by 1,000 units that are available to explode equals 1,000.

1,000 multiplied by a quantity of one equals 1,000.

Dual Camera Option

The dual camera option needs two cameras for each laptop, so the model consumes two units.

You expect 60% of your customers will choose this option. Planning calculates the forecast at 1,200.

60% multiplied by 1,000 units in the camera class equals 600.

600 multiplied by a quantity of two equals 1,200.

Single Camera Option

The single camera option needs only one camera for each laptop, so the model consumes one unit.

You expect 40% of your customers will choose this option. Planning calculates the forecast at 400.

40% multiplied by 1,000 units in the camera class equals 400.

400 multiplied by a quantity of one equals 400.

Speaker Class

The model consumes one unit of the speaker class for each laptop. Assume the speaker class allows your user to choose high-fidelity speakers, either built-in or external. You expect 80% of your customers will want high-fidelity speakers. Planning calculates the forecast at 800.

80% multiplied by 1,000 units that are available to explode equals 800.

800 multiplied by a quantity of one equals 800.

Built-in Option

You need only one set of built-in speakers for each laptop, so the model consumes 1 unit of the built-in option.

You expect 70% of your customers will choose this option. Planning calculates the forecast at 560.

70% multiplied by 800 units in the built-in class equals 560.

560 multiplied by a quantity of one equals 560.

External Option

You need only one set of external speakers for each laptop, so the model consumes 1 unit of the external option.

You expect 30% of your customers will choose this option, but you set the Production Forecast to None for this option. So planning doesn't calculate a forecast.

Assume you set the fixed lead time for the model to 5 days and the variable lead time to 0. Here's how planning explodes the forecast that's due on day 15.

Object Production Forecast Date Quantity, in Units

Model

Day 15

1000, after consuming forecast for the model

Camera Class

Day 10

1000

Dual Camera

Day 10

1200

Single Camera

Day 10

400

For background details, see the Forecasting for CTO Products topic.

Weight Configure Options When Forecasting Demand

Specify the percent to use when forecasting demand for a configure option.

Assume your market research indicates you expect demand will be about 70% for the 14" screen option and 30% for the 15.6" screen option. Here's your set up.

demand will be about 70% for the 14" screen option
and 30% for the 15.6" screen option

Note.

  • The sum of the values you set for configure options in a single class must equal 100%.

  • The Planning Central work area uses the value you set when it forecasts demand.

You will modify the CTO_474000 model. For details about how to set it up, see the Set Up Configure-to-Order topic.

Try it.

  1. Navigate to your configure option.

    • In the Product Information Management work area, click Tasks > Manage Items.

    • On the Manage Items page, search for the CTO_474000 (M1) configuration model, and open it for editing.

    • On the Edit Item page, click Structures, then click Primary.

    • On the Edit Item Structure page, click View, then make sure Component Details contains a check mark.

    • Expand the Build My Laptop model, then click the CTO_474100 screen option.

    • On the Edit Item CTO_474100 page, click Structures.

    • In the Name column, click Primary.

  2. Set the value for the 14" screen.

    • On the Edit Item Structure CTO_474100 - Primary page, expand the CTO_474100 screen model, click the row that contains 14 Inch Laptop Screen in the description column, then click Actions > Edit.

    • In the Edit Components Dialog, set the value, then click OK.

      Attribute Value

      Planning Percent

      70

  3. Repeat step 2 but set the value for the 15.6" screen.

    Attribute Value

    Planning Percent

    30

  4. Click Done.

  5. On the Edit Item CTO_474100 page, click Save and Close.

  6. On the Edit Item Structure: CTO_474000 - Primary page, expand the screen option, then verify your values.

    Object Planning Percent

    CTO_474100 Screen

    100

    CTO_474101 14 Inch Laptop Screen

    70

    CTO_474102 15.6 Inch Laptop Screen

    30

  7. Click Done, then click Save.

Capture Transaction Details

Guidelines for Capturing Transaction Details

Create a transaction attribute to capture details in an Oracle Cloud application where the details change for each transaction.

Order Management Cloud uses a sales order to record details about a transaction you make between you and your customer. Use a transaction attribute to capture details that are specific to each sales order transaction. For example, assume the item is Transmission Service, and License Plate Number is the transaction attribute. The license plate number changes for each transmission service transaction, but you can only capture the license plate number at run time because its specific to each customer. You don't know who the customer is at design time so you can't use an extensible flexfield that references a predefined value set.

You use an item class to organize your transaction attributes. For example, create an item class named Auto Repair Services, then add transaction attribute Transmission Service to it. Add other relevant transaction attributes to the same class. For example, add transaction attribute Transmission Serial Number to capture the serial number of the transmission you repair.

Note.

  • Use a transaction attribute to store values that change at run time.

  • Set the attribute up as part of the item class. A child class can inherit the attribute, so don't place it on the root item class. A root class might inherit values from a wide range of items, but you typically use a transaction attribute for a specific item. You can't delete a transaction attribute if you assign it to a lower class.

  • Supply Orchestration can use a transaction attribute throughout fulfillment, but some fulfillment systems might not support them, such as purchasing or shipping.

  • If your value set uses numeric values, then make sure you include a minimum value and a maximum value on the Manage Value Sets page. If you don't, the Configurator Models work area might raise an error when you import the model snapshot.

For details, see the Transaction Attributes topic.

For details about how to add an attribute that allows your user to add details to a sales order while the user creates the sales order, see the Overview of Using Extensible Flexfields in Order Management topic.

Set the Application Scope

Use the Application Scope to choose the applications where you use the transaction attribute.

Use the Application Scope to choose the applications
where you use the transaction attribute.

If you use Order Management Cloud, then you must add a check mark to each of these application scopes. They enable downstream work areas and applications to use your transaction item as part of a configure-to-order flow.

Scope Description

Configuration Matching

Enable Supply Orchestration to examine the match repository to see if there's a match.

If your flow uses the transaction attribute to create a unique configured item, then you must add a check mark to Configuration Matching. If you do, Supply Orchestration will examine the match repository. If it doesn't find a match, it will create a new configuration for each unique attribute value, then save the configuration.

Pricing

Use the values you set in the Pricing Administration work area to price the item.

Configurator

Configure the item at run time during order capture.

Order Capture

Capture the sales order that your user creates in the Order Management work area or that you import.

Distributed Order Orchestration

Use the orchestration part of Order Management Cloud, particularly the orchestration process.

Manufacturing Execution

Enable manufacturing to add your configured item to the work order.

Your user must also select an option that your model uses as a transaction attribute when the user configures the assemble-to-order item on the sales order in Order Management.

Capture Details During Transactions

Assume you need to use a transaction attribute to allow your customer to set the color of a stylized pattern to magenta, black, or blue on the lid of the CTO_474000 laptop computer. Your factory then stamps a unique color pattern onto the lid just-in-time, during assembly.

For details about how to set up the CTO_474000, see the Create Your Configuration Model topic.

Summary of the Setup

  1. Create the lookup.

  2. Create the value set.

  3. Create the transaction attribute.

  4. Import your model into the configurator.

  5. Test your setup.

Create the Lookup

Create the lookup you will use to provide values your user can choose.

  1. In the Navigator, click Setup and Maintenance.

  2. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Order Lookups

  3. Click Actions > New, set values, then click Save.

    Attribute Value

    Attribute

    Value

    Lookup Type

    DOO_COMPUTER_COLOR

    Meaning

    Color of Laptop Lid

    Description

    Colors for the top of a laptop computer.

    Module

    Orchestration

  4. In the Lookup Codes area, use Actions > New three times to add three codes. Make sure Enabled contains a check mark for each code.

    Lookup Code Display Sequence Meaning

    MAGENTA

    1

    Magenta

    BLACK

    2

    Black

    BLUE

    3

    Blue

  5. Click Save and Close.

Create the Value Set

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

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage SCM Common Value Sets

  2. On the Manage SCM Common Value Sets page, click Actions > Create, then set values.

    Attribute Value

    Value Set Code

    Lid Color

    Description

    Color of the lid of a laptop computer

    Module

    Supply Chain Management Common Components

    Validation Type

    Table

    Value Data Type

    Character

  3. Set values.

    Attribute Value

    From Clause

    FND_LOOKUPS

    Value Column Name

    DESCRIPTION

    Description Column Name

    MEANING

    ID Column Name

    LOOKUP_CODE

    Enabled Flag Column Name

    'Y'

    You must enclose Y with single quotation marks ( ' ).

    Start Date Column Name

    START_DATE_ACTIVE

    End Date Column Name

    END_DATE_ACTIVE

    WHERE Clause

    LOOKUP_TYPE = 'DOO_COMPUTER_COLOR'

  4. Click Save and Close.

These values filter the Oracle database for the lookup you created earlier in this topic.

Setup varies for different types of value sets. For details, see the Value Sets topic.

Create the Transaction Attribute

  1. In the Setup and Maintenance work area, on the Setup page, click Search.

  2. Search for, then open Manage Item Classes.

  3. On the Manage Item Class page, in the Item Class column, click the class that your item references.

    For this example, assume you set up your item in a class named ATO Models.

  4. On the Edit Item Class page, click Transactional Attributes.

  5. Click Actions > Create.

  6. In the Create Transactional Attribute dialog, set values.

    Attribute Value

    Name

    Lid Color

    Internal Name

    Lid_Color

    Description

    Color of the lid of a laptop computer

    Application Scope

    For this example, add a check mark to each choice.

    • Configurator

    • Distributed Order Orchestration

    • Order Capture

    • Pricing

    • Configuration Matching

    Data Type

    Number or String. For this example, choose String.

    Value Set

    Lid Color

    Note.

    • Lid Color is the value set you created earlier in this topic.

    • The value set is optional, but recommended. It constrains the values that the transaction attribute can contain. For example, constrain values that your customer can set or enter for the attribute at run time according to data type or length, or provide a pick list that your customer uses to set the value.

    • Make sure the values are valid with the model you set up for the item in the Configurator work area. For example, if you use the attribute to allow the user to choose black or purple for the lid, then make sure values in the value set also include Black and Purple.

    Default Value

    Black

  7. Click OK, then click Save and Close.

Import Your Model Into the Configurator

  1. In the Navigator, click Configurator Models.

  2. Create a workspace.

    • Click Tasks > Manage Workspaces.

    • On the Manage Workspaces page, click Actions > Create.

    • In the Create Workspace dialog, set the value, then click Save and Close.

      Attribute Value

      Name

      Workspace for Assemble-to-Order Models in M1 (Seattle Manufacturing)

      You used the M1 organization when you set up the CTO_474000 in Product Information Management, so, for this example, you create a workspace for M1.

    • On the Manage Workspaces page, search for your new work space, then click it in the search results.

  3. Add your model to the workspace.

    • On the Workspace page, in the Workspace Participants area, click Actions > Select and Add > Models.

    • In the Select and Add dialog search for CTO_474000, click it in the search result, add a check mark to Include Updated Item Snapshots For Models, then click Apply > OK.

      You add the configuration model. You don't add an option class, configure option, component, or child model.

  4. Click Release.

If you update a model that you already added to a workspace, then do this instead of the steps above.

  1. On the Overview page, click Tasks > Manage Snapshots.

  2. On the Manage Snapshots page, click Actions > Import Model Item.

  3. In the dialog, search for and select item CTO_474000, then click Submit.

  4. In the Confirmation dialog, notice the request ID, click OK, wait a moment, search for your item, then verify that the search results displays your item.

  5. Click Tasks > Manage Workspaces, locate your workspace, then click Release.

    If you add a transaction attribute to a model that you already added to a workspace, then you must import the model into the configurator and release the workspace. The import makes the attribute visible in Order Management so the user can select it at run time.

    If some time later you change the attribute, then you must create a new workspace, add your model, add an updated snapshot for the item class, then release the new workspace.

For details, see the Importing Items topic and Releasing Workspaces topic.

Test Your Setup

  1. Go to the Order Management work area, create a sales order, then add the CTO_474000 item to an order line.

  2. Verify that the order line displays the Lid Color attribute and sets the default value to Black.

  3. Set the value of Computer Color to Magenta, then click Submit.

  4. Open the work order and verify that it specifies to stamp the pattern onto the laptop lid with magenta ink.

Manage Purchase Orders

How Purchase Orders Work with Configured Items

Learn how a blanket purchase agreement can create a purchase order for a configured item.

Set up a blanket purchase agreement with your supplier
to automatically create a purchase order for a configured item.

The buy flow works the same as the make flow except.

  • You set up a blanket purchase agreement with your supplier in Purchasing.

  • You create a purchase order in Purchasing instead of a work definition in Inventory Management.

  • Your supplier uses a purchase order to supply the item instead of creating the work order in Inventory Management and making the item.

  • During the buy flow, if a blanket purchase agreement.

    • Exists. Supply Orchestration automatically converts the purchase requisition (PR) to a purchase order (PO).

    • Doesn't exist. You must manually do the conversion. For example, you must find the purchase request, then create a document to generate the purchase order. For details, see the Use the Purchase Orders Work Area topic.

Configure-to-order uses the Configure-to-Order Blanket Purchase Agreement template to create a relationship between a component and the parent. Use the template to set up pricing for the model instead of for each component.

For details about the make flow, see the How Configure-to-Order Works topic.

Create Purchase Orders for Configured Items

Set up a blanket purchase agreement with your supplier to automatically create a purchase order for a configured item.

Here's the agreement you set up in this topic.

the agreement you set up in this topic

Assume you must set up an agreement with your supplier.

  • Computer World is your supply. They will supply configuration model CTO_474000 and its configure options.

  • You negotiated pricing with your supplier that's 50% of the base price. The base price is the price you charge your customers.

    Item Description Base Price Price Negotiated with Supplier

    CTO_474100

    Build My Laptop

    100

    50

    CTO_474101

    14 Inch Laptop Screen

    200

    100

    CTO_474102

    15.6 Inch Laptop Screen

    300

    150

    CTO_474201

    8 GB Memory

    5

    2.50

    CTO_474202

    12 GB Memory

    10

    5

    CTO_474301

    1 TB Hard Drive

    50

    25

    CTO_474302

    2 TB Hard Drive

    100

    50

    For details about setting up base price, see the Set Up Pricing for Configuration Models topic.

    Note.

    • You must enable the Configuration Ordering Enabled option on the style you use.

    • You can't combine an assemble-to-order item and an item that isn't configured on the same blanket purchase agreement. Instead, create two agreements that cover all the components of a pick-to-order model. Use the configure-to-order template for your assemble-to-order model. Create another agreement for your item that isn't configured.

    • The agreement stores price for the assemble-to-order model and uses configure options to procure the configured item. The agreement contains only the models and options, so the flow calculates the purchase price of the configured item each time it procures the item outside of Oracle Fusion.

    • You must add each configure option to the agreement.

    • Don't add option classes to the agreement. The configure options in each class contain pricing, not the class.

    • Don't add required items to the agreement. Each required item comes priced as part of the model.

    • If necessary, use the Revision attribute on each line to specify the revision of each item.

Summary of the Setup

  1. Enable your configuration model for purchasing.

  2. Create the agreement.

  3. Test your set up.

Enable Your Configuration Model for Purchasing

  1. Go to the Product Information Management work area.

  2. On the Product Information Management page, click Search, search for CTO_474000, then open it for editing.

    For details about how to set up the CTO_474000, see the Create Your Configuration Model topic.

  3. On the Edit Item page, click Specifications.

  4. In the Item Organization area, click Purchasing, then set the value.

    Attribute Value

    Purchased

    Contains a check mark.

  5. Click Categories, then verify that the Catalog column contains a row for the Purchasing catalog. If it doesn't, then click Actions > Add Row, and add it.

    Attribute Value

    Catalog

    Purchasing

    Controlled At

    Master Level

    Category

    Miscellaneous_1

    Category Code

    MISC.MISC

  6. Click Save.

  7. Repeat this procedure for each of your option classes and configure options.

Create the Agreement

  1. Open another browser application, then sign in with a user who has privileges to set up purchasing.

    If you don't sign in with these privileges, then the work areas you use in this procedure don't display.

  2. Set up your document style.

    Use the document style to control the look and feel of the application so it matches the usage of the purchasing document.

    You can typically use the predefined Configure to Order Blanket Purchase Agreement style. Do this step only if you can't find a predefined style that meets your needs.

    • In the Navigator, click Setup and Maintenance.

    • In the Setup and Maintenance work area, go to the task.

      • Offering: Procurement

      • Functional Area: Procurement Foundation

      • Task: Manage Document Styles

    • On the Manage Document Styles page, click Actions > Create.

    • On the Create Document Style page, set values, then click Save and Close.

      Attribute Value

      Style

      Style for Configure-to-Order Item

      Configuration Ordering Enabled

      Contains a check mark.

      Instructs the Purchase Agreements work area to display the Parent Item attribute and Top Model attribute.

      Display Name in the Purchase Order area

      Purchase Order for Configure-to-Order Item

      Display Name in the Blanket Purchase Agreement area

      Blanket Purchase Agreement for Configure-to-Order Item

      Display Name in the Contract Agreement area

      Contract Agreement for Configure-to-Order Item

  3. Create the agreement.

    • In the Navigator, under Procurement, click Purchase Agreements.

    • Click Tasks > Create Agreement.

    • In the Create Agreement dialog, set values, then click Create.

      Attribute Value

      Style

      Blanket Purchase Agreement for Configure-to-Order Item

      This value identifies the style you created in step 2.

      Supplier

      Computer World

      Supplier Site

      Choose the address where your supplier ships the item from.

  4. Add the configuration model to your agreement.

    • In the Lines area, click Actions > Add Row, set values, then click Save.

      Attribute Value

      Line

      1

      Type

      Goods

      Item

      CTO_474000

      Description

      Build My Laptop

      Parent Item

      Leave empty

      Specify the number or code you use to identify the parent of the item you're adding on this line.

      If you add a configure option, then specify the option class that contains the option.

      You are adding the model, which doesn't have a parent, so leave it empty.

      Top Model

      Leave empty

      Specify the number or code that you use to identify the configuration model. You are adding the model, so leave it empty.

      Price

      50

      Note.

      • Enter the purchase price for the item you're adding on the line. It's the price you negotiated with Computer World, your supplier.

      • You can enter zero or a negative value to reflect a discount for an agreement that you use to price and source a configured item.

      • If you provide a price for a configure option, then the flow applies the price only if your customer chooses the option when ordering the configured item.

  5. Add the configure options.

    • Add a separate row for each option.

    • Set the Type to Goods for each row.

    • Use the Parent Item attribute and Top Model attribute to replicate the structure of your configuration model.

    Here's what your set up should look like.

    Line Item Description Parent Item Top Model Price

    1

    CTO_474100

    Build My Laptop

    Not applicable

    Not applicable

    50

    2

    CTO_474101

    14 Inch Laptop Screen

    CTO_474100

    CTO_474100

    100

    3

    CTO_474102

    15.6 Inch Laptop Screen

    CTO_474100

    CTO_474100

    150

    4

    CTO_474201

    8 GB Memory

    CTO_474200

    CTO_474100

    2.50

    5

    CTO_474202

    12 GB Memory

    CTO_474200

    CTO_474100

    5

    6

    CTO_474301

    1 TB Hard Drive

    CTO_474300

    CTO_474100

    25

    7

    CTO_474302

    2 TB Hard Drive

    CTO_474300

    CTO_474100

    50

    For reference, here's the structure you replicate.

    the structure you replicate
  6. At the top of the page, click View PDF, then open it.

  7. Examine the output. Make sure it contains your model, options, and pricing. The buy flow sends this document to your supplier at run time.

    The buy flow sends this document to your supplier
at run time.

    For brevity, this screen print includes only the model and one option. The actual document includes a cover letter and another page that has the rest of the options.

  8. Click Save, then sign out.

    Don't click Submit. Submit sends the agreement to approval. If you clicked Submit, then query the document on the Manage Agreements page and cancel it.

Test Your Setup

Create a Sales Order

  1. Sign into Order Management.

  2. In the Navigator, click Order Management > Order Management.

  3. On the Overview page, create a new sales order.

    Attribute Value

    Customer

    Computer Service and Rentals

  4. On the catalog line, search for CTO_474100.

  5. Click Configure and Add, set some options, click Finish, then click Submit.

Examine the Purchase Order

  1. Click Actions > Switch to Fulfillment View.

  2. Click Fulfillment Lines.

  3. In the Attributes area, click Supply Details, click the link next to Supply Order Number, then examine the details.

  4. Click the supply tracking line, then examine the orchestration plan.

    The flow created the purchase order and reserved inventory for the sales order.

  5. In the Item Details area, click Buy.

  6. Click the arrow next to the purchase requisition number, then examine the requisition details.

  7. Click the arrow next to the purchase order number, then examine the purchase order details.

    The value in the Document Number column identifies the purchase order number that the flow will process to fulfill the sales order. Make a note of this value. You use it soon. For this example, assume the value is 58459.

  8. Click View PDF at the top of the page, save it, open it, and examine the contents.

  9. Click Done.

Verify Configuration Details

  1. Click Tasks > Manage Orders.

  2. Search for purchase order 58459, then open it.

  3. In the Lines area, click View Configuration.

  4. Verify that the pricing uses the values you set when you created the blanket purchase agreement, then click Done.

  5. Click View PDF, then verify that the configuration detail displays the structure for your configured item.

Receive Purchase Order for Configured Item

Assume your supplier shipped the purchase order for your configured item. You must now receive it, then put the item away in the destination warehouse.

Receive the item in the destination warehouse.

  1. Receive the item.

    • In the Navigator, click Receipts.

    • Click Tasks > Receive Expected Shipments.

    • Enter the purchase order for the configured item, then click Search.

    • Select the record, then click Receive.

    • Click Show Receipt Quantity to default the quantity entered for the purchase order.

    • Click Create Receipt, then click Submit.

    • Note the receipt number.

    • Click OK > Done.

  2. Put away the receipt.

    • Click Tasks > Put Away Receipts.

    • Enter the purchase order number, then click Search.

    • Select the record, click Put Away, then click Submit.

    • Click OK > Done.

  3. Examine the on-hand quantity in the destination organization.

    • In the Navigator, under Warehouse Operations, click Inventory.

    • In the Advanced Search area, enter the configured item you just received, then click Search.

    • Click Expand next to the organization to examine the on-hand inventory in your subinventories.

    • Click Expand next to the subinventory that received the item.

    • Verify that the on-hand quantity is correct.

View Structures of Configured Items

Examine the values of a configured item without opening the sales order or work order.

The user, such as an Order Entry Specialist, sets configure options for a configured item in the sales order. The work order includes the configured item, required components, configure options, substitutions, and transactional item attributes.

You use the Product Information Management work area to set up a configured item. You can't use it to view how the user sets configuration options because the work area doesn't store the bill of materials for the configured item. Fulfillment uses values that the user sets at run time to create the bill of materials. You can use the View Configured Item Structure page to examine the configured item the user set up without accessing the sales order.

Use the Item attribute in the Search area to search for the configured item, then use the Item Structure Details area to drill down to the configured item and configure options.

Use the Configured Item Service

You can also use the ConfiguredItemService web service to get the item structure.

  • For details, see the Overview of Using Web Services with Configure-to-Order topic.

  • You must make sure the required components and configure options for each configured item are the same across organizations.

Monitor Downstream Fulfillment

A configured item meets the needs of a specific sales order. So the make flow picks and moves it directly to a shipping lane from receiving instead of putting it into stock. The receiving agent can view the sales order.

The flow receives the configured item into inventory, picks, then ships it just like it does any other item in inventory. The configured item doesn't need a unique process or special treatment to transact it in your shipping application.

The flow receives the configured item into inventory,
picks, then ships it just like it does any other item in inventory.

The flow also supports an advanced shipment notice (ASN) that it receives from your supplier or during an internal material transfer from a shipping organization.

The flow also supports an advanced shipment notice
(ASN) that it receives from your supplier or during an internal material
transfer from a shipping organization.

Assume.

  • You finished the setup described in the Create Your Configuration Model topic.

  • Manufacturing finished the work order. Inventory contains the configured item and Shipping contains shipment lines for the configured item.

  • You set up the pick release process for the organization so it automatically pick confirms and creates the shipment.

Next, put on your Shipping Manager hat (pretend you're the Shipping Manager). You receive an urgent request to fulfill a configured item, so you manually pick release and ship confirm it.

put on your Shipping Manager hat (pretend you're
the Shipping Manager).

You will navigate to the Shipments work area and use it to search for shipments and shipment lines. You can also click graphs that display the outstanding and completed work for the current day. This is where you determine the work activities to do and drill into an activity.

Summary of the Setup

  1. Release and confirm the shipment.

  2. Examine and print reports.

  3. Track sales order progress through the fulfillment lifecycle.

Release and Confirm the Shipment

  1. Sign in with a user who has privileges to access the Warehouse Operations work area.

    If you don't have the privileges, the work areas you use in this topic don't display.

  2. In the Navigator, click Warehouse Operations > Shipments.

  3. Accept the All default value in the dialog, then click OK.

    The Shipments work area displays. Get shipments or shipment lines according to status. Click a status on the Shipments or Shipment lines chart, or click a number link in one of the tables below the charts.

  4. Click Tasks > Manage Shipment Lines.

  5. In the Advanced Search area, enter the order number in the Order attribute, then click Search.

  6. On the Edit Shipment Line page, verify that the shipment line status is Ready to Release.

  7. Click Actions > Pick Release, click OK in the confirmation dialog, then click Save and Close.

  8. On the Manage Shipment Lines page, click Save to refresh the page. Repeat until the flow creates the shipment and the line status displays Staged.

  9. Click Shipment and note the shipment number on the Edit Shipment page.

  10. Set the weight and volume, then click Ship Confirm.

  11. Click Yes in the warning dialog.

    The flow confirms the shipment.

Examine and Print Reports

  1. In the Navigator, click Scheduled Processes.

  2. On the Overview page, in the Name column, notice the reports that ship confirm created.

    • Print Packing Slip Report

    • Manage Shipment Interface

    • Print Bill of Lading Report

  3. Examine the Print Packing Slip Report.

    • Click Print Packing Slip Report.

      The Packing Slip Report displays the details of the configured item.

    • Click the output name in the Output area of the Print Packing slip report.

      Ship confirm doesn't automatically submit the Commercial Invoice. You must manually submit it.

  4. Go to the Scheduled Processes page, then click Schedule New Process.

  5. On the Schedule New Process page, set the value.

    Attribute Value

    Name

    Print Commercial Invoice

  6. In the Process Details dialog, set values, then click Submit.

    • Enter the ship-from organization, such as 002 - Atlanta.

    • Enter the same shipment number you entered earlier in this procedure when you used the Parameters section of the dialog.

  7. Wait for the status to change to Succeeded.

  8. Examine the invoice.

    Examine the invoice.

    The invoice includes.

    • The configured item, CTO_474000-101 Build My Laptop

    • The model, CTO_474000 Build My Laptop

    • Each option your user chose, such as CTO_474102 15.6 Inch Laptop Screen (1 per unit)

Note.

  • It isn't necessary to do any more set up to get and display the invoice.

  • A web service in Supply Orchestration gets details for this sales view when you ship confirm the sales order.

  • You can view the model and options for the configured item on the commercial invoice and the packing slip.

  • The invoice displays the quantity for each component in the configured item assuming that the configured item quantity is one.

  • You don't have to do any special document setup for configured items.

Here's an example of the packing slip.

example of the packing slip.

Track Sales Order Progress Through the Fulfillment Lifecycle

  1. In the Navigator, click Order Management.

  2. On the Overview page, enter the order number, then click Search.

    Notice the order line status is Awaiting Billing.

  3. Click Action > Switch to Fulfillment View.

  4. Click Fulfillment Lines, then, in the Attributes section at the bottom of the page, click Supply Details.

  5. Click Supply Order Number to view the supply order details.

  6. Click the supply tracking line, then notice the value of the status.

Control Explosion Dates for Configuration Models

Specify the date when order fulfillment explodes a configuration model.

Control the explosion date for.

  • The ordered date in a kit

  • The included items and current date in a pick-to-order model

  • More than one split line and the current date

A bill-of-material (BOM) is a structure you use to store lists of items that you associate with a parent item. The structure stores details that describe how to relate each item to the parent. You arrange child items in the structure hierarchically so they reflect the composition of the parent item. For example, a laptop computer is the parent, and the hard drive, screen, and memory are each a child item.

A structure explosion is the act of breaking apart each assembly or subassembly into its component parts. You explode to improve order fulfillment efficiency.

Example

Assume you have a bill-of-materials for parent item CTO_474000, Build My Laptop.

Child Item Description

CTO_474101

14 Inch Laptop Screen

CTO_474102

15.6 Inch Laptop Screen

CTO_474201

8 GB Memory

CTO_474202

12 GB Memory

CTO_474301

1 TB Hard Drive

CTO_474302

2 TB Hard Drive

CTO_474100

Screen

CTO_474200

Memory

CTO_474300

Hard Drive

CTO_474400

My Mouse Pad

You need to explode this bill of materials so you can pick each item separately, then assemble them into the parent CTO_474000. You pick items separately so you can more quickly fulfill them item. For example, pick items from different inventories.

For another example, assume you need to pick a newer part for an item from inventory instead of an older part. For example, you sell laptop computers to college students. You manufacture a mouse pad every week, and the pad is an included part in a kit. As part of a promotion, you stamp the name and logo of a popular music group on the pad. You stamp the pad each week with the group that's currently #1 on the Worldwide Music Singles Chart. The chart changes every week, but some groups return to the #1 spot several times in subsequent weeks with the same song or a different song, so you keep older pads in stock in case they return to the #1 spot. You use the Configuration Models work area to change the mouse pad, item CTO_474400, in parent model CTO_474000, Build My Laptop.

Here are some more examples.

  • You prefer to use last-in-first-out (LIFO) where you consume the item you most recently manufactured rather than an older one.

  • Assume order management sends a change request for a line. If the line is awaiting shipping, then you must make sure fulfillment doesn't change an existing child item.

Set the Order Management Parameters

Use order management parameter Configuration Effective Date for Exploding Included Items to control which model to explode.

Value Explode the Model the Exists When Fulfillment Creates. . .

Configuration Effective Date

The Configuration

Parent Creation Date

The Parent

Note.

  • The Product Information Management work area stores a different version each time you revise the model. The sales order uses the Configuration Effective Date parameter to determine which model to use.

  • Fulfillment skips closed or canceled lines. Instead, it copies child items from the original model.

  • This parameter doesn't affect the current explosion behavior when the user creates the sales order.

  • Use this parameter only for a bill-of-material explosion.

  • Don't change the validation behavior for configured items.

  • You also use the Configuration Effective Date parameter to control behavior.

  • For details about the attributes in an explosion, see the Item Structure Explosion section in Oracle Supply Chain Management Cloud SOAP Web Services for SCM On Oracle Help Center at https://docs.oracle.com/en/cloud/saas/supply-chain-management/19c/oessc/business-object-services.html#itemstructureexplosion-d24777e193193.

Split Lines

You can split a fulfillment line so you can use a new item. You can specify whether to use the date when fulfillment creates the configuration for the bill-of-material structure, or the date when it creates the parent.

When you submit a revision or pick-to-order model you don't want to explode the existing kit and add new included items to it. Instead, you only want to explode the new kit.

You can use only one open item when you split the quantity where you reduce the quantity and add a new line for the split quantity. Assume the original quantity on line 1 is 10. You split line 1 into line 1 and line 2. You reduce the quantity on line 1 to 7 and set the quantity on line 2 to 3.

If you set the Configuration Effective Date order management parameter to Ordered Date, then fulfillment uses the same included item.

Assume you change the bill of materials for the kit and need to explode on the date when you make the change. If you set Configuration Effective Date for Exploding Included Items to Parent Creation Date, then fulfillment explodes the new line according to the date you make change instead of the date that Configuration Effective Date specifies.

Kit Example

Assume you create sales order 58697 on June 12 that includes the Movie Basket kit. The kit includes one fulfillment line, and the line includes two items, Popcorn and Ice Cream.

Line Number Item Item Type Ordered Quantity Ordered Date Creation Date of Fulfillment Line Configuration Effective Date

1

Movie Basket

Kit

10

June 12

June 12

June 12

-

Popcorn

Included Item

10

June 12

June 12

June 12

-

Ice Cream

Included Item

10

June 12

June 12

June 12

Assume you use the Configuration Models work area on June 15 to change the model for the kit. You replace Ice Cream with Big Drink.

On June 20, you revise order 58697. You add a new fulfillment line that includes another Movie Basket kit.

Continue reading to see what happens.

Use Ordered Date

Next, assume you set the Configuration Effective Date parameter to Ordered Date.

Here's what happens.

Line Number Item Item Type Ordered Quantity Ordered Date Creation Date of Fulfillment Line Configuration Effective Date

1

Movie Basket

Kit

10

June 12

June 12

June 12

-

Popcorn

Included Item

10

June 12

June 12

June 12

-

Ice Cream

Included Item

10

June 12

June 12

June 12

2

Movie Basket

Kit

10

June 12

June 20

June 12

-

Popcorn

Included Item

10

June 12

June 20

June 12

-

Ice Cream

Included Item

10

June 12

June 20

June 12

The sales order uses the Configuration Effective Date of June 12 for fulfillment line 1 and fulfillment line 2. The Ordered Date is June 12, so the order doesn't use the new configuration you revised in the model. It continues to use Ice Cream instead of Big Drink.

Use Parent Creation Date

Assume you set parameter Configuration Effective Date for Exploding Included Items to Parent Creation Date.

Here's what happens.

Line Number Item Item Type Ordered Quantity Ordered Date Creation Date of Fulfillment Line Configuration Effective Date

1

Movie Basket

Kit

10

June 12

June 12

June 12

-

Popcorn

Included Item

10

June 12

June 12

June 12

-

Ice Cream

Included Item

10

June 12

June 12

June 12

2

Movie Basket

Kit

10

June 12

June 20

June 20

-

Popcorn

Included Item

10

June 12

June 20

June 20

-

Big Drink

Included Item

10

June 12

June 20

June 20

The sales order uses a Configuration Effective Date of June 12 for fulfillment line 1. The Movie Basket in fulfillment line 2 is the parent, you created it on June 20, so the sales order uses a Configuration Effective Date of June 20 for fulfillment line 2. You replaced Ice Cream with Big Drink in the configuration model on June 15, so the sales order includes Big Drink instead of Ice Cream on line 2.

Pick-to-Order Example

Assume you create sales order 53867 on June 12 that includes the My Phone pick-to-order model, and it includes one fulfillment line.

Line Number Item Item Type Ordered Quantity Ordered Date Creation Date of Fulfillment Line Configuration Effective Date

1

My Phone

Pick-to-Order

10

June 12

June 12

June 12

-

Wallet Case

Option Class

10

June 12

June 12

June 12

-

Charger

Included Item

10

June 12

June 12

June 12

Assume you use the Configuration Models work area on June 15 to change the model. You replace Charger with Wireless Charger.

On June 20, you revise order 53867. You add a new fulfillment line that includes another My Phone model.

Continue reading to see what happens.

Use Current Date

Assume you set the Configuration Effective Date parameter to Current Date.

Line Number Item Item Type Ordered Quantity Ordered Date Creation Date of Fulfillment Line Configuration Effective Date

1

My Phone

Pick-to-Order

10

June 20

June 12

June 20

-

Wallet Case

Option Class

10

June 20

June 12

June 20

-

Wireless Charger

Included Item

10

June 20

June 12

June 20

2

My Phone

Pick-to-Order

10

June 20

June 20

June 20

-

Wallet Case

Option Class

10

June 20

June 20

June 20

-

Wireless Charger

Included Item

10

June 20

June 20

June 20

The Current Date is the date that when you click Revise or Submit.

The sales order uses the Current Date of June 20 for the Configuration Effective Date for line 1 and line 2. So, the sales order uses the new configuration you revised in the model on June 15. It uses Wireless Charger instead of Charger on both lines.

Use Ordered Date and Parent Creation Date

Assume you set.

Order Management Parameter Value

Configuration Effective Date

Ordered Date

Configuration Effective Date for Exploding Included Items

Parent Creation Date

Here's what happens.

Line Number Item Item Type Ordered Quantity Ordered Date Creation Date of Fulfillment Line Configuration Effective Date

1

My Phone

Pick-to-Order

10

June 20

June 12

June 12

-

Wallet Case

Option Class

10

June 20

June 12

June 12

-

Charger

Included Item

10

June 20

June 12

June 12

2

My Phone

Pick-to-Order

10

June 20

June 20

June 20

-

Wallet Case

Option Class

10

June 20

June 20

June 20

-

Wireless Charger

Included Item

10

June 20

June 20

June 20

The sales order uses the Parent Creation Date. The My Phone is the parent for line 1. You created line 1 on June 12, so the sales order uses the model that existed on June 12 for line 1. That model uses Charger, not Wireless Charger.

The My Phone is the parent for line 2. You created line 2 on June 20, so the sales order uses the model that exists on June 20 for line 2. That model uses Wireless Charger, not Charger.

Split Example

Assume you set the Configuration Effective Date parameter to Current Date.

Assume you create sales order 79639.

Line Number Item Item Type Ordered Quantity Ordered Date Creation Date of Fulfillment Line Configuration Effective Date

1

DVD

Not Configured

3

June 12

June 8

June 8

2

Movie Basket

Kit

10

June 12

June 12

June 12

-

Popcorn

Included Item

10

June 12

June 12

June 12

-

Chocolates

Included Item

10

June 12

June 12

June 12

Assume.

  • You add line 1 on June 8. It includes the DVD item, which is a standard item.

  • You use the Configuration Models work area on June 10 to change the model. You replace Ice Cream with Chocolates.

  • You add line 2 on June 12. It includes the Movie Basket item, which is a kit that includes two items. The sales order uses the model that exists as of the Current Date, which is June 12. The current date is the date you revise or submit the sales order. You updated the model on June 10, so the order includes Chocolates.

Split the Line

Assume you use the Configuration Models work area on June 15 to change the model. You replace Chocolates with Big Drink.

On June 20, you revise the sales order. You split line 2 into two lines, lines 2.1 and 2.2.

Here's what happens.

Line Number Item Item Type Ordered Quantity Current Date Creation Date of Fulfillment Line Parent Creation Date Configuration Effective Date

1

DVD

Not Configured

3

June 20

June 8

June 8

June 20

2.1

Movie Basket

Kit

6

June 20

June 12

June 12

June 20

-

Popcorn

Included Item

6

June 20

June 12

June 12

June 20

-

Big Drink

Included Item

6

June 20

June 12

June 12

June 20

2.2

Movie Basket

Kit

4

June 20

June 20

June 12

June 20

-

Popcorn

Included Item

4

June 20

June 20

June 12

June 20

-

Big Drink

Included Item

4

June 20

June 20

June 12

June 20

The order uses the Configuration Effective Date parameter to determine which model to use. In this example, you set Configuration Effective Date to Current Date. The current date is the date that you revise or submit the order, which is June 20, so the order uses the model that exists as of June 20 to identify the items it must include. On June 15, you updated the model to use Big Drink instead of Chocolates, so the order includes Big Drink on lines 2.1 and 2.2.

Split the Line Again

Assume you use the Configuration Models work area on June 24 to change the model. You replace Big Drink with Little Drink.

On June 25, you revise the sales order again. You split line 2.1 into two lines, lines 2.2 and 2.3.

Here's what happens.

Line Number Item Item Type Ordered Quantity Current Date Creation Date of Fulfillment Line Parent Creation Date Configuration Effective Date

1

DVD

Not Configured

3

June 20

June 8

June 8

June 20

2.1

Movie Basket

Kit

6

June 20

June 12

June 12

June 20

-

Popcorn

Included Item

6

June 20

June 12

June 12

June 20

-

Big Drink

Included Item

6

June 20

June 12

June 12

June 20

2.2

Movie Basket

Kit

4

June 20

June 20

June 12

June 20

-

Popcorn

Included Item

4

June 20

June 20

June 12

June 20

-

Big Drink

Included Item

4

June 20

June 20

June 12

June 20

The order uses the Configuration Effective Date parameter to determine which model to use. In this example, you set Configuration Effective Date to Current Date. The current date is the date that you revise or submit the order, which is June 20, so the order uses the model that exists as of June 20 to identify the items it must include. On June 15, you updated the model to use Big Drink instead of Chocolates, so the order includes Big Drink on lines 2.1 and 2.2.

Use Current Date and Parent Creation Date

Assume you.

  • Set the Configuration Effective Date to Current Date.

  • Set the Configuration Effective Date for Exploding Included Items to Parent Creation Date.

  • Use the Configuration Models work area on June 10 to change the model. You replace Ice Cream with Chocolates.

Here's what happens to sales order 79639 when you split line 2.

Line Number Item Item Type Ordered Quantity Current Date Creation Date of Fulfillment Line Parent Creation Date Configuration Effective Date

1

DVD

Not Configured

3

June 20

June 8

June 8

June 12

2.1

Movie Basket

Kit

6

June 20

June 12

June 12

June 12

-

Popcorn

Included Item

6

June 20

June 12

June 12

June 12

-

Chocolates

Included Item

6

June 20

June 12

June 12

June 12

2.2

Movie Basket

Kit

4

June 20

June 20

June 12

June 12

-

Popcorn

Included Item

4

June 20

June 20

June 12

June 12

-

Chocolates

Included Item

4

June 20

June 20

June 12

June 12

You set Configuration Effective Date to Current Date. The current date is June 20. It's the date you revise or submit the order. So the order uses the model that exists as of June 20 to identify the items it must include. On June 10, you updated the model to use Chocolates instead of Ice Cream, so the order includes Chocolates on lines 2.1 and 2.2.

Split the Line Again

Assume you use the Configuration Models work area on June 24 to change the model. You replace Ice Cream with Chocolates.

On June 25, you revise the sales order again. You split line 2.1 into two lines, lines 2.2 and 2.2.

Here's what happens to sales order 79639 when you split line 2.

Line Number Item Item Type Ordered Quantity Current Date Creation Date of Fulfillment Line Parent Creation Date Configuration Effective Date

1

DVD

Not Configured

3

June 25

June 8

June 8

June 12

2.1

Movie Basket

Kit

6

June 25

June 12

June 12

June 12

-

Chocolates

Included Item

6

June 25

June 12

June 12

June 12

2.2

Movie Basket

Kit

4

June 25

June 20

June 12

June 12

-

Chocolates

Included Item

4

June 25

June 20

June 12

June 12

2.3

Movie Basket

Kit

4

June 25

June 25

June 12

June 12

-

Chocolates

Included Item

4

June 25

June 25

June 12

June 12

You set Configuration Effective Date to Current Date. The current date is June 25, so the order uses the model that exists as of June 25 to identify the items it must include. On June 24, you updated the model to use Chocolates instead of Ice Cream, so the order includes Chocolates on lines 2.1, 2.2, and 2.3.

Web Services

Overview of Using Web Services with Configure-to-Order

Use web service ConfiguredItemService to create, read, update, or delete a configured item.

Get and view the options your user selects for the model and the configured item structure, including the model reference and description, selected options and description, and transaction attributes that the selected options reference.

Example

Here's an example of an assemble-to-order model for the VIK12 Viking Stove. For an introduction to this model, see the Examples of Using Configure-to-Order topic.

example of an assemble-to-order model for the VIK12
Viking Stove.

The top parent, VIK12 Viking Stove, includes.

  • STVU, which is the stove unit base.

  • OVOC, an assemble-to-order model for the oven.

  • BRN1 an assemble-to-order model for the burners.

  • FINOC, an option class for the finish. It contains options your user can choose to specify the type of finish, such as stainless steel.

  • CLK, a phantom for the clock assembly. It includes options your user can choose to specify the display and type of control. A phantom is an item that you physically build but don't stock. In this example, you assemble the clock on demand. You don't build it in anticipation of demand and stock it.

OVOC, the oven, contains option classes.

  • Option class OVTY specifies the oven type. It contains options Gas, Gas Convection, and Electric. Gas Convection and Electric aren't configure options.

  • Option class WRM specifies options for the warming oven.

Here's the hierarchy for the BRN1 model.

hierarchy for the BRN1 model.

Note.

  • BRN1 is a complex child model that includes its own assemble-to-order model.

  • FTOC is an option class your user uses to choose the fuel type, such as electric, propane, or gas.

  • BSOC is an assemble-to-order model that specifies the style as residential or commercial.

  • BSOC is a child of BRN1 and a grandchild of VIK12.

  • RES and COM each contain options and phantoms.

  • RES contains BRSS and GRD, which are items you stock. It also contains BRLG, a phantom you don't stock. You don't stock BRLG and COMLG because your market research indicates customers don't order these options very often, its costly to keep in inventory, so you build it on demand.

  • COMLG is a phantom of COM. It contains its own phantom COMLG, and COMLG contains a phantom, COM-BRN. Customers use the CM-BRN-BS to choose the type of base and COM-BRN_VAL to choose the type of value to use when building COM-BRN.

Here's an example configured item, VIK12-100, that your customer ordered. It includes only the options the customer chose.

example configured item, VIK12-100, that your customer
ordered.

Note.

  • STVU is the stove unit base. Its required. The work order includes STVU but VIK12-100 doesn't.

  • An oven can use only one type of fuel, burner style, oven type, and warming oven. So each of these components includes only the one option you customer chooses.

  • The customer didn't want the clock, didn't choose CLK, so its not in VIK12-100.

  • The customer chose COM, the commercial burner, and GRD, the griddle for the commercial burner. The customer also chose COMLG, the large commercial burner.

Operations You Can Use with Web Services for Configured Items

Use operations with the ConfiguredItemService web service to create, read, update, or delete a configured item.

Operation Value

findCtoSalesStructure

Get the set of options, option classes, and transaction attributes you user selects at run time.

findCtoItemStructure

Get the entire structure of the configured item that your user selects at run time. It includes child configured items, options, required components, phantoms, substitutions and transaction attributes.

refreshConfigStructure

Refresh the item structure in the explosion repository.

deleteConfigStrucure

Delete the item structure from the explosion repository.

findCtoSalesStructure and findCtoItemStructure Operations

Get Sales Structure

Here's the payload that the findCtoSalesStructure operation returns for the VIK12-100 configured item. For details about this item, see the Overview of Using Web Services with Configure-to-Order topic.

LINE_ID SUB_ITEM_TYPE ITEM_NUMBER PARENT_ LINE_ID CONFIG ITEM NUMBER QTY UOM

1

ATO

VIK12

1

VIK12-100

1

EA

2

ATO

BRN1

1

BRN1-11

1

EA

3

OPTION CLASS

FTOC

2

FTOC

1

EA

4

RES

GAS

3

GAS

1

EA

5

ATO

BSOC

2

BSOC-2

1

EA

6

OPTION CLASS

COM

5

COM

1

EA

7

RES

COMLG

6

COMLG

1

EA

8

RES

GRD

6

GRD

1

EA

The payload includes each of the child assemble-to-order items. Assume BRN-11, BSOC-2, and OVOC-30 are the child configured items.

Get Item Structure

Here's the payload that the findCtoItemStructure operation returns for the VIK12-100 configured item.

LINE_ID SUB_ITEM_TYPE ITEM_NUMBER INVENTORY_ITEM_ID PARENT_LINE_ID CONFIG ITEM_NUMBER QTY UOM WIP_SUPPLY_TYPE RootPhantomItemId

1

ATO

VIK12

100

1

VIK12-100

1

EA

-

-

2

ATO

BRN1

101

1

BRN1-11

1

EA

-

-

3

OPTION CLASS

FTOC

102

2

FTOC

1

EA

-

-

4

STD

GAS

103

3

GAS

1

EA

-

-

5

ATO

BSOC

200

2

BSOC-2

1

EA

-

-

6

OPTION CLASS

COM

201

5

COM

1

EA

-

-

7

RES

COMLG

202

6

COMLG

1

EA

Phantom

-

8

RES

COM-BRN

203

7

COM-BRN

1

EA

Phantom

202

9

RES

COM-BRN-BS

204

8

COM-BRN-BS

1

EA

-

202

10

RES

COM-BRN-VAL

205

8

COM-BRN-VAL

1

EA

-

202

11

RES

COM-BCAP

206

7

COM-BCAP

1

EA

-

202

12

RES

GRD

207

6

GRD

1

EA

-

-

13

ATO

OVOC

300

1

OVOC-30

1

EA

-

-

14

OPTION CLASS

OVTY

301

13

OVTY

1

EA

-

-

15

RES

GASC

302

14

GASC

1

EA

-

-

16

OPTION CLASS

WRM

303

13

WRM

1

EA

-

-

17

RES

WRMGASC

304

16

WRMGASC

1

EA

-

-

18

OPTION CLASS

FINOC

104

1

FINOC

1

EA

-

-

19

RES

FINSS

105

18

FINSS

1

EA

-

-

20

RES

STVU

106

1

STVU

1

EA

-

-

21

RES

CLK

107

1

CLK

1

EA

Phantom

-

22

RES

CLSS

108

21

CLSS

1

EA

-

107

23

RES

CL-CTRL

109

21

CL-CTRL

1

EA

-

107

findCtoItemStructure includes details that findCtoSalesStructure doesn't include.

  • The payload includes the required items STVU and CLK.

  • PARENT_LINE_ ID identifies the parent of the item. For example, PARENT_LINE_ ID for BRN1 is 1. BRN1 is a child in VIK12. The LINE_ID for VIK12 is 1.

  • WIP_SUPPLY_TYPE indicates whether the item is a phantom.

  • COMLG and CLK are phantom items, so the detail includes their subassemblies.

  • RootPhantomItemId identifies the phantom that contains the item. For example, the RootPhantomItemId for CM-BRN is 202. CM-BRN is an item in phantom COMLG. The INVENTORY_ITEM_ ID for COMLG is 202.

Transaction Attributes

The web service also returns transaction attributes when it returns the item.

LINE_ID ATTRIBUTE_NAME CHARACTER_ATTRIBUTE_VALUE NUMBER_AT TRIBUTE_VALUE TIMESTAMP_ ATTRIBUTE_VALUE

7

FINISH

Black

-

-

refreshConfigStructure and deleteConfigStrucure Operations

Configure-to-order saves structure details for the configured item in the explosion repository when the flow requests the structure. You use the refreshConfigStructure operation to refresh this data. Refreshing helps to reduce the amount of data that findCtoItemStructure returns and improves performance.

Details for the configured item are already available in the repository, so it isn't necessary to bring data into the repository as part of findCtoItemStructure.

  • Use refreshConfigStructure before you use findCtoItemStructure.

  • Use the same set of parameters you use with findCtoItemStructure.

  • Set the RefreshStructure attribute in the first row of your payload. Set it to.

    • true. Refresh data that already exists in the repository before getting it.

    • false. Save only the missing structure details in the repository. Don't refresh data that already exists in the repository. The default value is false.

Use deleteConfigStrucure to delete structure details of the configured item from the repository.

Parameters You Use with Operations

Here are the parameters you can use with the operations to identify the item you want to find, refresh or delete. Use them with operations.

  • findCtoSalesStructure

  • findCtoItemStructure

  • refreshConfigStructure

  • deleteConfigStrucure

You must use at least one of parameter. If you don't, the web service will raise an error.

Attribute Type Description

ConfigItemId

Long

Value that identifies the configured item.

ConfigItemNumber

String

Name of the configured item.

BaseModelId

Long

Value that identifies the assemble-to-order model.

BaseModelItemNumber

String

Name of the assemble-to-order model.

CreationDateFrom

Date

Date when the flow started to create the configured item.

CreationDateTo

Date

Date when the flow finished creating the configured item.

For example, to refresh data for the VIK12-100, set ConfigItemNumber to VIK12-100.

Structure Your Configured Item Payload

Structure your payload when you call the ConfiguredItemService web service.

Here's the hierarchy you use.

  • 1 findCriteria. Structure that contains the entire object and attribute filter criteria.

    • 1.1 fetchStart and fetchSize. Required. Specify the number of rows in the result set, and specify which row to start with.

      • fetchStart. Row to use as the starting point. The default is 0. If you set the value to 0, then the result set begins with the first row of the data set. If you set the value to 99, then the result set begins with the 100th row of the data set.

        Caution: If you use findCtoItemStructure, and if you set fetchStart to any value other than 0, then you must use refreshConfigStructure before you use findCtoItemStructure. The web service assumes the configured item is available in the explosion repository and gets records beginning with the starting point. Using refreshConfigStructure makes sure the starting point contains a value.
      • fetchSize. Maximum number of rows to get. If you set fetchSize to -1 (negative one), then the search gets all rows that it finds, starting with the row that fetchStart specifies.

        If fetchSize is greater than the number of remaining rows, then the search returns only the remaining rows. The predefined maximum fetchSize is 500. You can't exceed it in a single query. If you set fetchSize to a value greater than 500 or to -1, and if more than 500 records match your search criteria, then the web service creates an exception.

    • 1.2 filter. Structure that contains runtime search conditions. The view criteria restricts data that your query returns to the rows that match the filters you specify. If no view criteria exists, then the web service doesn't apply filters when it processes your request.

      Think of view criteria as a collection of one or more query-by-example (QBE) rows that define a data filter for a view object. The web service converts view criteria to an SQL WHERE clause.

      • 1.2.1 conjunction. Specify how to evaluate search conditions in relation to each other. For example, And, Or, Not, AndNot, and OrNot.

        If you don't specify a value, then the web service uses AND. Behavior is similar to how Oracle Application Development Framework works when a conjunction exists between view criteria and the previous view criteria.

        Conjunction is case sensitive.

      • 1.2.2 Structure that contains a set of runtime filter conditions for one or more attributes. Behavior is similar to how Oracle Application Development Framework handles a list of view criteria rows, where each row defines one view criteria.

        • 1.2.2.1 conjunction. See level 1.2.1.

        • 1.2.2.2 item. Structure that contains one runtime search condition for an attribute.

          • 1.2.2.2.1 conjunction. See level 1.2.1.

          • 1.2.2.2.2 upperCaseCompare. Boolean value that specifies whether to convert the attribute value that the search returns to uppercase. Conversion happens before filtering.

          • 1.2.2.2.3 attribute. For details, see the Attributes subtopic, below.

          • 1.2.2.2.4 operator. For details, see the Operators subtopic, below.

          • 1.2.2.2.5 value. Filter criteria the web service uses when it searches for an attribute. You can use % as a wildcard, but you must not use % as the first character. For example, you can use MySearch%, but you can't use %MySearch.

    • 1.3 sortOrder. Sort the result set in ascending order or descending order.

    • 1.4 findAttribute. Attributes to get after the web service applies your filter criteria. If you specify attribute x, then the web service only gets the value for attribute x. If you don't specify a value, then the web service gets all attributes. A child object is an attribute of the parent object.

    • 1.5 excludeAttribute. Boolean value. If True, get all attributes except the ones you specify in findAttribute. If False, get the attributes you specify in findAttribute.

  • 2 findControl. Get all translations of attributes that exist. This parameter affects the entire result set.

1.2.2.2.3 Attributes

Include the case sensitive name of the attribute to filter on. The root node of a child object is an attribute of the parent object.

Here are the attributes you can use. You must use at least one of them. If you don't, the web service will raise an error.

Attribute Type Description

ConfigItemId

Long

Value that identifies the configured item.

ConfigItemNumber

String

Name of the configured item.

BaseModelId

Long

Value that identifies the assemble-to-order model.

BaseModelItemNumber

String

Name of the of the assemble-to-order model.

CreationDate

Date

Date when the flow created the configured item.

You can also include one of these attributes, as necessary.

Attribute Type Description

OrganizationId

Big Decimal

Value that identifies the organization you associate with the configured item.

OrganizationCode

String

Abbreviation that identifies the organization.

EffectiveAsOfDate

Date

Date that the configured item goes into effect.

RefreshStructure

Boolean

Contains.

  • True. Refresh the structure in the explosion repository before the web service does the search.

  • False. Don't refresh. The default value is false.

1.2.2.2.4 Operators

Note.

  • Use one of =, >=, <=, >, <,<>, ISBLANK, ISNOTBLANK, CONTAINS, STARTSWITH, AFTER, ONORAFTER, BEFORE, ONORBEFORE, BETWEEN, or NOTBETWEEN.

  • Some operators won't work for all attribute types, such as String, Integer, Date, and so on.

  • You typically use numeric operators , such as = or < , for a String attribute.

  • Each text operator is case sensitive. For example, ISBLANK is a text operator and is case sensitive.

Here are the operators you can use to search a required attribute when you use findCtoItemStructure. If you use any other operator, the web service will create an error.

Attribute Operator

ConfigItemId

=

ConfigItemNumber

=

BaseModelId

=

BaseModelItemNumber

=

CreationDate

BETWEEN

You can use any operator on an attribute that isn't required when you use findCtoSalesStructure or findCtoItemStructure.

Call Web Service and Process Response

Use your preferred development tool to call the web service, then process the response.

Call Web Service

  1. Use a URL in a browser, Soap UI, or some other development tool to call the web service.

    http://hostname:port/ctoUtilitiesPublicService/ConfiguredItemService
  2. Choose findCtoItemStructure, findCtoSalesStructure, refreshConfigStructure or deleteConfigStructure from the list of operations.

  3. Enter your payload.

  4. Click Invoke.

Process the Response

Use different techniques to process the response.

Use SQL

  1. Use a proxy to call the web service.

  2. Store the response for each row of the response in a relational database table.

    You create two tables.

    • Table CTO_ITEM_STRUCTURE includes a column for each attribute in the response.

    • Table CTO_TRANSACTION_ATTR stores values for transaction attributes. It also includes foreign keys to CTO_ITEM_STRUCTURE according to the LINE_ID attribute.

    For example.

    You create two tables.
  3. Use SQL to query the table to get details about the response.

    SELECT * FROM CTO_ITEM_STRUCTURE WHERE <CONDITION>

Use Java and SQL

  1. Use a proxy to call the service.

  2. Convert each row of the response to XML.

    Here's an example of the Java code you use to convert.

    JAXBContext contextObj = JAXBContext.newInstance(new Class[] {
      CtoItemStructure.class
    });
    Marshaller marshallerObj = contextObj.createMarshaller();
    marshallerObj.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    JAXBElement < CtoItemStructure > rootElement = new JAXBElement < CtoItemStructure > (new QName("CtoItemStructureRow"), CtoItemStructure.class, opTempList.get(Index));
    marshallerObj.marshal(rootElement, baos);
    String xmlContent = new String(baos.toByteArray());
    ClobDomain objClobDomain = new ClobDomain(xmlContent);
    
  3. Store data in the CTO_ITEM_STRUCTURE table. Use this structure.

    Attribute Name Type Description

    CONFIG_ITEM_ID

    Long

    Value that identifies the configured item.

    ITEM_STRUCTURE

    Clob

    XML data of the row. This is the output of your Java code.

  4. Use SQL to query the table.

    For example.

    select CONFIG_ITEM_ID,
    extractvalue(ITEM_STRUCTURE,'/ CtoItemStructureRow /ConfigItemId ')CONFIG_ITEM_ID,
    extractvalue(ITEM_STRUCTURE,'/ CtoItemStructureRow /ConfigItemNumber ')CONFIG_ITEM_NUMBER, extractvalue(ITEM_STRUCTURE,'/ CtoItemStructureRow /BaseModelId ')BASE_MODEL_ID, extractvalue(ITEM_STRUCTURE,'/ CtoItemStructureRow /BaseModelItemNumber ')BASE_MODEL_ITEM_NUMBER, extractvalue(ITEM_STRUCTURE,'/ CtoItemStructureRow /InventoryItemId ') INVENTORY_ITEM_ID, extractvalue(ITEM_STRUCTURE,'/ CtoItemStructureRow /InventoryItemNumber ')INVENTORY_ITEM_NUMBER, extractvalue(ITEM_STRUCTURE,'/ CtoItemStructureRow /LineId ')LINE_ID,
    extractvalue(ITEM_STRUCTURE,'/ CtoItemStructureRow /ParentLineId ')PARENT_LINE_ID, extractvalue(ITEM_STRUCTURE,'/ CtoItemStructureRow /SubItemType ') SUB_ITEM_TYPE, extractvalue(ITEM_STRUCTURE,'/ CtoItemStructureRow /OptionalComponent') OPTIONAL_COMPONENT, extractvalue(ITEM_STRUCTURE,'/ CtoItemStructureRow /ComponentHierarchy ')COMPONENT_HEIRARCHY from CTO_ITEM_STRUCTURE where CONFIG_ITEM_ID =<CONFIGURED ITEM ID>

Format the Response

The XML output of the web service isn't indented or organized hierarchically according to parent-child relationships. Use an XSLT (Extensible Stylesheet Language Transformations) style sheet to format the web service response so you can visualize the hierarchy.

Here's some XSLT code you can use to format the response. Use this code with your favorite XML tool.

< xsl: stylesheet version = "1.0"
 xmlns: xsl = "http://www.w3.org/1999/XSL/Transform"
 xmlns: ns0 = "http://xmlns.oracle.com/apps/scm/cto/matchRepository/utilities/configItemStructureSer
 vice / types / "
 xmlns: ns2 = "http://xmlns.oracle.com/apps/scm/cto/matchRepository/utilities/configItemStructureSer vice/types/"
 xmlns: ns1 = "http://xmlns.oracle.com/apps/scm/cto/matchRepository/utilities/configItemStructureSer
 vice / "
 xmlns: env = "http://schemas.xmlsoap.org/soap/envelope/"
 xmlns: wsa = "http://www.w3.org/2005/08/addressing"
 xmlns: typ = "http://xmlns.oracle.com/apps/scm/cto/matchRepository/utilities/configItemStructureService/types/ " >
   <
   xsl: output method = "xml"
 indent = "yes"
 version = "1.0"
 encoding = "UTF-8" / >
   <
   xsl: template match = "*" >
   <
   xsl: element name = "{local-name()}" >
   <
   xsl: if test = "not(not(text()) and not(node()))" >
   <
   xsl: apply - templates select = " node()" / >
   <
   / xsl : if > <
   / xsl : element > <
   / xsl : template > <
   xsl: template match = "env:Envelope" >
   <
   xsl: apply - templates select = "env:Body" / >
   <
   / xsl : template > <
   xsl: template match = "env:Body" >
   <
   xsl: apply - templates select = " ns0:findCtoItemStructureResponse | ns0:findCtoItemStructureAsyncResponse " / >
   <
   / xsl : template > <
   xsl: template match = "ns0 ns0:findCtoItemStructureResponse | ns0:findCtoItemStructureAsyncResponse" >
   <
   xsl: copy >
   <
   xsl: apply - templates select = ".//ns2:result[not(ns1:ParentLineId/node())]" / >
   <
   / xsl : copy > <
   / xsl : template > <
   xsl: template match = "ns2:result" >
   <
   xsl: variable name = "LineId"
 select = "./ns1:LineId" / >
   <
   xsl: variable name = "OrganizationId"
 select = "./ns1:OrganizationId" / >
   <
   xsl: variable name = "InventoryItemId"
 select = "./ns1:InventoryItemId" / >
   <
   xsl: variable name = "ComponentItemHierarchy"
 select = "./ns1:ComponentItemHierarchy" /
   >
   <
   xsl: element name = "ns2:result" >

   <
   xsl: apply - templates select = "node()" / >
   <
   xsl: if test = "../ns2:result[(./ns1:ParentLineId = $LineId and ./ns1:OrganizationId =
 $OrganizationId and concat($ComponentItemHierarchy, '-', . / ns1: InventoryItemId) =
   . / ns1: ComponentItemHierarchy)]
 ">

 <
 xsl: apply - templates select = "../ns2:result[(./ns1:ParentLineId = $LineId and
   . / ns1: OrganizationId = $OrganizationId)]
 " /> <
 / xsl : if > <
 / xsl : element > <
 xsl: variable name = "nl"
 select = "'
'" / >
   <
   xsl: value - of select = "$nl"
 disable - output - escaping = "no" / >
   <
   / xsl : template > <
   / xsl : stylesheet >

Use this XSLT code only to format the output of the findCtoItemStructure operation.

As an alternative, here's some example code you can use to programmatically format the response.

String xml = "input.xml ; // input XML file location 
String xslt = "transformations.xsl"; // XSLT file location
String output = "formatted.xml"; //output XML file location 
  TransformerFactory tf = TransformerFactory.newInstance(); 
  Transformer tr = tf.newTransformer(new StreamSource(new File(xslt))); 
  tr.transform(new StreamSource(new File(xml)),

Call the Web Service Through Proxy

Create the proxy for the web service, then use the Java programming language to call the service through your proxy. You send filter criteria as the input.

Get the Item Structure According to a Simple Condition

Here's part of a payload that gets the item structure for configured items you create between 09-Dec-2018 and 09-Dec-2019. You call the service in a loop, where each iteration calls the service with a fetch size of 500. If the number of records you fetch is less than 500, then the code exits the loop.

ObjectFactory obj = new ObjectFactory();
ViewCriteriaRow vcr = obj.createViewCriteriaRow();
ViewCriteria vc = obj.createViewCriteria();
ViewCriteriaItem vci = obj.createViewCriteriaItem();
vci.setAttribute("CreationDate");
vci.getValue().add("2018-12-09");
vci.getValue().add("2019-12-09");
vci.setOperator("BETWEEN");
vci.setConjunction(Conjunction.AND);
vcr.getItem().add(vci);
vc.setConjunction(Conjunction.AND);
vc.getGroup().add(vcr);
FindCriteria fc = obj.createFindCriteria();

fc.setFilter(vc);
int fetchCounter = 0;
List < CtoItemStructure > opList = new ArrayList < CtoItemStructure > ;
List
for storing all the output records List < CtoItemStructure > opTempList = null;
List
for storing the result of one service call
while (opTempList == null || opTempList.size() == 500) {
  fc.setFetchStart(fetchCounter);
  fc.setFetchSize(500);
  opTempList = ctoConfigItemService.findCtoItemStructure(fc, null);
  opList.addAll(opTempList);
  items of result list from the service call be will be added to the final list fetchCounter = fetchCounter + 500;
}

Get the Item Structure According to Transaction Attribute

Here's part of a payload that gets the item structure for configured items you create between 09-Dec-2017 and 09-Dec-2019, and where the SCO_color transaction attribute contains the value Black.

//Get the list of configured items according to transaction attribute 
ObjectFactory obj = new ObjectFactory();
ViewCriteriaRow vcr = obj.createViewCriteriaRow();
ViewCriteria vc = obj.createViewCriteria();
ViewCriteriaItem vci = obj.createViewCriteriaItem();
vci.setAttribute("CreationDate");
vci.getValue().add("2017-12-09");
vci.getValue().add("2019-12-09");
vci.setOperator("BETWEEN");
vci.setConjunction(Conjunction.AND);
vcr.getItem().add(vci);

//Set the filter criteria for the transaction attribute
ViewCriteriaItem childExistsItem = obj.createViewCriteriaItem(); childExistsItem.setAttribute("CtoTransactionAttr"); childExistsItem.setOperator("EXISTS"); childExistsItem.setConjunction(Conjunction.AND); vcr.getItem().add(childExistsItem); vc.setConjunction(Conjunction.AND);
ViewCriteriaRow childCriteriaRow = obj.createViewCriteriaRow();
ViewCriteria childCriteria = obj.createViewCriteria();
ViewCriteriaItem childCriteriaItem = obj.createViewCriteriaItem();
childCriteriaItem.setAttribute("AttributeName");
childCriteriaItem.getValue().add("SCO_Color");
childCriteriaItem.setOperator("=");
childCriteriaItem.setConjunction(Conjunction.AND);
childCriteriaRow.getItem().add(childCriteriaItem);
childCriteriaItem = obj.createViewCriteriaItem();
childCriteriaItem.setAttribute("CharacterAttributeValue");
childCriteriaItem.getValue().add("Black");
childCriteriaItem.setOperator("=");
childCriteriaItem.setConjunction(Conjunction.AND);
childCriteriaRow.getItem().add(childCriteriaItem);
childCriteria.getGroup().add(childCriteriaRow);
childExistsItem.setNested(childCriteria);
vc.getGroup().add(vcr);

//Make the first call
FindCriteria fc = obj.createFindCriteria(); fc.setFilter(vc);
int counter = 0;
List < CtoItemStructure > configItemList = new ArrayList < CtoItemStructure > (); //List that holds the output from the first call
List < CtoItemStructure > opTempList = null;
while (opTempList == null || opTempList.size() == 500) {
  fc.setFetchStart(counter);
  fc.setFetchSize(500);
  opTempList = ctoConfigItemService.findCtoItemStructure(fc, null);
  counter = counter + 500;
  configItemList.addAll(opTempList);

}
//End of making the first call

//End of get the list of configured items according to transaction attribute

//Get the item structure for configured items that the first call returned
ViewCriteriaRow configVcr = obj.createViewCriteriaRow();
ViewCriteria configVc = obj.createViewCriteria();
ViewCriteriaItem configVci = null;
for (CtoItemStructure itemStructRow: configItemList) //For loop to iterate through the list of configured items
{
  if (itemStructRow.getSubItemType().getValue().intValue() == 1) // if it is a config item create condition based on config item id
  {
    configVci = obj.createViewCriteriaItem();
    configVci.setAttribute("ConfigItemId");
    configVci.getValue().add(itemStructRow.getConfigItemId().getValue());

    configVci.setOperator("=");
    configVci.setConjunction(Conjunction.OR);
    configVcr.getItem().add(configVci);

  }
}
configVc.getGroup().add(configVcr);
//Make the second call 
FindCriteria configFc = obj.createFindCriteria(); configFc.setFilter(configVc);
counter = 0;
List < CtoItemStructure > opList = new ArrayList < CtoItemStructure > (); //List for storing the final output opTempList=null;
while (opTempList == null || opTempList.size() == 500) {
  configFc.setFetchStart(counter);
  configFc.setFetchSize(500);
  opTempList = ctoConfigItemService.findCtoItemStructure(configFc, null);
  counter = counter + 500;
  opList.addAll(opTempList);
}
//End of making the second call
//End of get the item structure for configured items that the first call returned

Here's an example of the response you receive for the entire structure.

< ns0: findCtoItemStructureResponse xmlns: ns0 = "http://xmlns.oracle.com/apps/scm/cto/matchRepository/utilities/configItemStructureService/ty
pes / "> <
  ns2: result
xmlns: ns2 = "http://xmlns.oracle.com/apps/scm/cto/matchRepository/utilities/configItemStructureService/ty pes/"
xmlns: ns1 = "http://xmlns.oracle.com/apps/scm/cto/matchRepository/utilities/configItemStructureService/"
xmlns: ns0 = "http://xmlns.oracle.com/adf/svc/types/"
xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi: type = "ns1:CtoItemStructure" >
    <
  ns1: ConfigItemId > 300100071637243 < /ns1:ConfigItemId> <
  ns1: ConfigItemNumber > DOS - BAT - CTO * 101 * < /ns1:ConfigItemNumber> <
  ns1: BaseModelId > 100100035462338 < /ns1:BaseModelId> <
  ns1: BaseModelItemNumber > DOS - BAT - CTO < /ns1:BaseModelItemNumber> <
  ns1: InventoryItemId > 300100071637243 < /ns1:InventoryItemId> <
  ns1: InventoryItemNumber > DOS - BAT - CTO * 101 * < /ns1:InventoryItemNumber> <
  ns1: ParentInventoryItemId > 300100071637243 < /ns1:ParentInventoryItemId> <
  ns1: ParentInventoryItemNumber > DOS - BAT - CTO * 101 * < /ns1:ParentInventoryItemNumber> <
  ns1: HeaderId > 300100071637281 < /ns1:HeaderId> <
  ns1: LineId > 300100071637284 < /ns1:LineId> <
  ns1: ParentLineId xsi: nil = "true" / >
  <
  ns1: SubItemType > 1 < /ns1:SubItemType> <
  ns1: UnitQuantity xmlns: tns = "http://xmlns.oracle.com/adf/svc/errors/"
unitCode = "Ea" > 1 < /ns1:UnitQuantity> <
  ns1: UnitUOM > Ea < /ns1:UnitUOM> <
  ns1: CreationDate > 2018 - 12 - 02 T10: 59: 08.119 + 05: 30 < /ns1:CreationDate> <
  ns1: RevisionId xsi: nil = "true" / >
  <
  ns1: EffectivityDate > 2018 - 12 - 02 T10: 59: 08.119 + 05: 30 < /ns1:EffectivityDate> <
  ns1: DisableDate xsi: nil = "true" / >
  <
  ns1: OrganizationId > 204 < /ns1:OrganizationId> <
  ns1: OrganizationCode > V1 < /ns1:OrganizationCode> <
  ns1: BillSequenceId > 300100046112964 < /ns1:BillSequenceId> <
  ns1: ComponentSequenceId xsi: nil = "true" / >
  <
  ns1: ComponentType > 1 < /ns1:ComponentType> <
  ns1: WIPSupplyType xsi: nil = "true" / >
  <
  ns1: OptionalComponent > Y < /ns1:OptionalComponent> <
  ns1: SubstituteComponent > N < /ns1:SubstituteComponent> <
  ns1: ComponentYieldFactor xsi: nil = "true" / >
  <
  ns1: PlanningFactor xsi: nil = "true" / >
  <
  ns1: RoundingDirection xsi: nil = "true" / >
  <
  ns1: BasisType xsi: nil = "true" / >
  <
  ns1: CheckATP xsi: nil = "true" / >
  <
  ns1: ComponentHierarchy > 300100046112964 < /ns1:ComponentHierarchy> <
  ns1: ComponentItemHierarchy > 300100071637243 < /ns1:ComponentItemHierarchy> <
  ns1: ItemClassId > 100000011369001 < /ns1:ItemClassId> <
  ns1: RootPhantomItemId > < /ns1:RootPhantomItemId> <
  /ns2:result> <
  ns2: result >. . .< /ns2:result> <
  ns2: result >. . .< /ns2:result>. . .<
  /ns0:findCtoItemStructureResponse>

Here's an example of the response you receive for the structure according to configure options your user sets in the sales order.

< ns2: result xsi: type = "ns1:CtoSalesStructure"
xmlns: ns2 = "http://xmlns.oracle.com/apps/scm/cto/matchRepository/utilities/configItemStructureService/types /
  " xmlns:ns1="
http: //xmlns.oracle.com/apps/scm/cto/matchRepository/utilities/configItemStructureService/" xmlns:ns0="http://xmlns.oracle.com/adf/svc/types/" xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance">
  <
  ns1: ConfigItemId > 300100090366280 < /ns1:ConfigItemId> <
  ns1: ConfigItemNumber > BSOC * 220 * < /ns1:ConfigItemNumber> <
  ns1: BaseModelId > 300100032201662 < /ns1:BaseModelId> <
  ns1: BaseModelItemNumber > BSOC < /ns1:BaseModelItemNumber> <
  ns1: InventoryItemId > 300100032201442 < /ns1:InventoryItemId> <
  ns1: InventoryItemNumber > STD - Burner < /ns1:InventoryItemNumber> <
  ns1: ParentInventoryItemId > 300100090366280 < /ns1:ParentInventoryItemId> <
  ns1: ParentInventoryItemNumber > BSOC * 220 * < /ns1:ParentInventoryItemNumber> <
  ns1: HeaderId > 300100090366310 < /ns1:HeaderId> <
  ns1: LineId > 300100090366315 < /ns1:LineId> <
  ns1: ParentLineId > 300100090366312 < /ns1:ParentLineId> <
  ns1: SubItemType > 2 < /ns1:SubItemType> <
  ns1: UnitQuantity unitCode = "Ea"
xmlns: tns = "http://xmlns.oracle.com/adf/svc/errors/" > 1 < /ns1:UnitQuantity> <
  ns1: UnitUOM > Ea < /ns1:UnitUOM> <
  ns1: ItemHierarchy > /300100090366280/
300100032201442 < /ns1:ItemHierarchy> <
  ns1: CreationDate > 2018 - 10 - 05 T06: 49: 45.836 - 07: 00 < /ns1:CreationDate> <
  ns1: RootHeaderId > 300100090366310 < /ns1:RootHeaderId> <
  ns1: CtoTransactionAttr >
  <
  ns1: LineId > 300100090366315 < /ns1:LineId> <
  ns1: TimestampAttributeValue xsi: nil = "true" / >
  <
  ns1: NumberAttributeValue > 0 < /ns1:NumberAttributeValue> <
  ns1: DateAttributeValue xsi: nil = "true" / >
  <
  ns1: CharacterAttributeValue xsi: nil = "true" / >
  <
  ns1: AttributeName > Number < /ns1:AttributeName> <
  /ns1:CtoTransactionAttr> <
  /ns2:result>

Examples of Using Web Services with Configure-to-Order

Use these example payloads to get some ideas on how you can use web services with configure-to-order.

Basic Queries

Query on Simple Condition

Use findCtoItemStructure to get the entire structure of configured item VIK12-100.

<?xml version="1.0" encoding="UTF-8"?>
<ns1:findCtoItemStructure xmlns:ns1="http://xmlns.oracle.com/apps/scm/cto/matchRepository/utilities/configItemStructureService/types/">
  <ns1:findCriteria xmlns:ns2="http://xmlns.oracle.com/adf/svc/types/">
    <ns2:fetchStart>0</ns2:fetchStart>
    -- start at index 0
    <ns2:fetchSize>-1</ns2:fetchSize>
    -- Get all rows
    <ns2:filter>
      <ns2:conjunction>And</ns2:conjunction>
      <ns2:group>
        <ns2:conjunction>And</ns2:conjunction>
        <ns2:upperCaseCompare />
        <ns2:item>
          <ns2:conjunction>And</ns2:conjunction>
          <ns2:upperCaseCompare />
          <ns2:attribute>ConfigItemNumber</ns2:attribute>
          -- Condition on ConfigItemNumber
          <ns2:operator>=</ns2:operator>
          <ns2:value>VIK12-100</ns2:value>
          --value for Configured Item Number
        </ns2:item>
      </ns2:group>
      <ns2:nested />
    </ns2:filter>
    <ns2:excludeAttribute />
  </ns1:findCriteria>
  <ns1:findControl xmlns:ns2="http://xmlns.oracle.com/adf/svc/types/">
    <ns2:retrieveAllTranslations />
  </ns1:findControl>
</ns1:findCtoItemStructure>

Query on More Than One Condition and Filter Results

Use findCtoItemStructure to get the entire structure for each configured item created between 09-Dec-2018 and 09-Dec-2019 where the configuration model is VIK12. Don't include the InventoryItemId attribute or the ParentInventoryItemId attribute in the response.

<ns1: findCtoItemStructurexmlns:ns1="http://xmlns.oracle.com/apps/scm/cto/matchRepository/utilities/configItemStr uctureService/types/">
<ns1:findCriteria xmlns:ns2="http://xmlns.oracle.com/adf/svc/types/">
   <ns2:fetchStart>0</ns2:fetchStart>
   <ns2:fetchSize>-1</ns2:fetchSize>
   <ns2:filter>
      <ns2:conjunction>And</ns2:conjunction>
      <ns2:group>
         <ns2:conjunction>And</ns2:conjunction>
         <ns2:upperCaseCompare></ns2:upperCaseCompare>
         <ns2:item>
            <ns2:conjunction>And</ns2:conjunction>
            <ns2:upperCaseCompare></ns2:upperCaseCompare>
            <ns2:attribute>CreationDate</ns2:attribute>
            <ns2:operator>between</ns2:operator>
            <ns2:value>2018-10-9</ns2:value> -- Use format YYYY-MM-DD.
            <ns2:value>2019-12-09</ns2:value>
         </ns2:item>
         <ns2:item>
            <ns2:conjunction>And</ns2:conjunction>
            <ns2:upperCaseCompare></ns2:upperCaseCompare>
            <ns2:attribute> BaseModelItemNumber </ns2:attribute>
            <ns2:operator>CONTAINS</ns2:operator>
            <ns2:value>VIK12</ns2:value>
         </ns2:item>
      </ns2:group>
   </ns2:filter>
   <ns2:findAttribute>InventoryItemId</ns2:findAttribute> --List of attributes to include or not include in response.
   <ns2:findAttribute>ParentInventoryItemId</ns2:findAttribute>
   <ns2:excludeAttribute>true</ns2:excludeAttribute> --true means don't include in response.
</ns1:findCriteria>
</ns1: findCtoItemStructure>

Refresh, Then Query on More Than One Condition

Use findCtoItemStructure to get the entire structure for each configured item created between 09-Dec-2018 and 09-Dec-2019 where the configuration model is VIK12. Use RefreshStructure to refresh the explosion repository.

<ns1: findCtoItemStructurexmlns:ns1="http://xmlns.oracle.com/apps/scm/cto/matchRepository/utilities/configItemStructureService/types/">
<ns1:findCriteria xmlns:ns2="http://xmlns.oracle.com/adf/svc/types/">
   <ns2:fetchStart>0</ns2:fetchStart>
   <ns2:fetchSize>-1</ns2:fetchSize>
   <ns2:filter>
      <ns2:conjunction>And</ns2:conjunction>
      <ns2:group>
         <ns2:conjunction>And</ns2:conjunction>
         <ns2:upperCaseCompare></ns2:upperCaseCompare>
         <ns2:item>
            <ns2:conjunction>And</ns2:conjunction>
            <ns2:upperCaseCompare></ns2:upperCaseCompare>
            <ns2:attribute>CreationDate</ns2:attribute>
            <ns2:operator>between</ns2:operator>
            <ns2:value>2018-10-09</ns2:value> -- Use format YYYY-MM-DD.
            <ns2:value>2019-12-09</ns2:value>
         </ns2:item>
         <ns2:item>
            <ns2:conjunction>And</ns2:conjunction>
            <ns2:upperCaseCompare></ns2:upperCaseCompare>
            <ns2:attribute> BaseModelItemNumber </ns2:attribute>
            <ns2:operator>CONTAINS</ns2:operator>
            <ns2:value>VIK12</ns2:value>
         </ns2:item>
         <ns2:item>
            <ns2:conjunction>And</ns2:conjunction>
            <ns2:upperCaseCompare></ns2:upperCaseCompare>
            <ns2:attribute> RefreshStructure </ns2:attribute>
            <ns2:operator>=</ns2:operator>
            <ns2:value>true</ns2:value> -- Use true or false with RefreshStructure.
         </ns2:item>
      </ns2:group>
   </ns2:filter>
</ns1:findCriteria>
</ns1: findCtoItemStructure>

Get Large Structures

Get Large Structures

If the web service response for a configured item structure includes more than 500 rows, then you must call the service one time for each set of 500 rows. For example, if the structure contains 1550 rows, then you make four calls.

  • First call gets rows 0 through 499

  • Second call gets rows 500 through 999

  • Third call gets rows 1,000 through 1,499

  • Fourth call gets rows 1,500 through 1,550

You must not set the start value to a value greater than 0 in the first call. The start value for the second call is greater than zero, so the web service doesn't refresh the repository. Setting the start value to 0 in the first call makes sure the web service refreshes the entire structure.

In this example, assume your response contains 690 rows.

  • The first call sets the start to 0 and size to 500 to get rows 0 through 499.

  • The second call sets the start to 500 to get rows 500 to 690.

Here's the first call.

<?xml version="1.0" encoding="UTF-8"?>
<ns1:findCtoItemStructure xmlns:ns1="http://xmlns.oracle.com/apps/scm/cto/matchRepository/utilities/configItemStructureService/types/">
  <ns1:findCriteria xmlns:ns2="http://xmlns.oracle.com/adf/svc/types/">
    <ns2:fetchStart>0</ns2:fetchStart>
    <ns2:fetchSize>500</ns2:fetchSize>
    <ns2:filter>
      <ns2:conjunction>And</ns2:conjunction>
      <ns2:group>
        <ns2:conjunction>And</ns2:conjunction>
        <ns2:upperCaseCompare />
        <ns2:item>
          <ns2:conjunction>And</ns2:conjunction>
          <ns2:upperCaseCompare />
          <ns2:attribute>CreationDate</ns2:attribute>
          <ns2:operator>BETWEEN</ns2:operator>
          <ns2:value>2018-12-09</ns2:value>
          <ns2:value>2019-12-09</ns2:value>
        </ns2:item>
      </ns2:group>
    </ns2:filter>
    <ns2:excludeAttribute />
  </ns1:findCriteria>
  <ns1:findControl xmlns:ns2="http://xmlns.oracle.com/adf/svc/types/">
    <ns2:retrieveAllTranslations />
  </ns1:findControl>
</ns1:findCtoItemStructure>

Here's the second call.

<?xml version="1.0" encoding="UTF-8"?>
<ns1:findCtoItemStructure xmlns:ns1="http://xmlns.oracle.com/apps/scm/cto/matchRepository/utilities/configItemStructureService/types/">
  <ns1:findCriteria xmlns:ns2="http://xmlns.oracle.com/adf/svc/types/">
    <ns2:fetchStart>500</ns2:fetchStart>
    <ns2:fetchSize>500</ns2:fetchSize>
    <ns2:filter>
      <ns2:conjunction>And</ns2:conjunction>
      <ns2:group>
        <ns2:conjunction>And</ns2:conjunction>
        <ns2:upperCaseCompare />
        <ns2:item>
          <ns2:conjunction>And</ns2:conjunction>
          <ns2:upperCaseCompare />
          <ns2:attribute>CreationDate</ns2:attribute>
          <ns2:operator>BETWEEN</ns2:operator>
          <ns2:value>2018-12-09</ns2:value>
          <ns2:value>2019-12-09</ns2:value>
        </ns2:item>
      </ns2:group>
    </ns2:filter>
    <ns2:excludeAttribute />
  </ns1:findCriteria>
  <ns1:findControl xmlns:ns2="http://xmlns.oracle.com/adf/svc/types/">
    <ns2:retrieveAllTranslations />
  </ns1:findControl>
</ns1:findCtoItemStructure>

Refresh, Then Get Large Structures

Using findCtoItemStructure to get a large structure might take a lot of time because it must first refresh the explosion repository to get structure details, and then query the data. To avoid this problem, make two calls.

  • Refresh the repository.

  • Get the structure.

Use the same parameter values in each call.

Here's the first call.

<?xml version="1.0" encoding="UTF-8"?>
<ns1:refreshConfigStructure xmlns:ns1="http://xmlns.oracle.com/apps/scm/cto/matchRepository/utilities/configItemStructureService/types/">
  <ns1:configList xmlns:ns2="http://xmlns.oracle.com/apps/scm/cto/matchRepository/utilities/configItemStructureService/">
    <ns2:CreationDateFrom>2018-12-09</ns2:CreationDateFrom>
    <ns2:CreationDateTo>2019-12-09</ns2:CreationDateTo>
  </ns1:configList>
</ns1:refreshConfigStructure>

Add subsequent calls to get the structure. See the Get Large Structures section, above.

Other Queries

Group Your Conditions

In this example, use findCtoItemStructure to get the entire structure of each configured item created between 09- Dec-2018 and 09-Dec-2019 for configuration model VIK12. Use the OR conjunction to group your conditions.

<?xml version="1.0" encoding="UTF-8"?>
<ns1:findCtoItemStructure xmlns:ns1="http://xmlns.oracle.com/apps/scm/cto/matchRepository/utilities/configItemStructureService/types/">
  <ns1:findCriteria xmlns:ns2="http://xmlns.oracle.com/adf/svc/types/">
    <ns2:fetchStart>0</ns2:fetchStart>
    <ns2:fetchSize>500</ns2:fetchSize>
    <ns2:filter>
      <ns2:conjunction>And</ns2:conjunction>
      <ns2:group>
        <ns2:conjunction>And</ns2:conjunction>
        <ns2:upperCaseCompare />
        <ns2:item>
          <ns2:conjunction>And</ns2:conjunction>
          <ns2:upperCaseCompare />
          <ns2:attribute>CreationDate</ns2:attribute>
          <ns2:operator>BETWEEN</ns2:operator>
          <ns2:value>2018-12-09</ns2:value>
          <ns2:value>2019-12-09</ns2:value>
        </ns2:item>
      </ns2:group>
      <ns2:group>
        <ns2:conjunction>Or</ns2:conjunction>
        --Group with the OR condition.
        <ns2:upperCaseCompare />
        <ns2:item>
          <ns2:conjunction>And</ns2:conjunction>
          <ns2:upperCaseCompare />
          <ns2:attribute>BaseModelItemNumber</ns2:attribute>
          <ns2:operator>=</ns2:operator>
          <ns2:value>VIK12</ns2:value>
        </ns2:item>
      </ns2:group>
    </ns2:filter>
    <ns2:excludeAttribute />
  </ns1:findCriteria>
  <ns1:findControl xmlns:ns2="http://xmlns.oracle.com/adf/svc/types/">
    <ns2:retrieveAllTranslations />
  </ns1:findControl>
</ns1:findCtoItemStructure>

Get Transaction Attributes

Use findCtoItemStructure to get the entire structure of the VIK12-100 configured item. Filter the result so it only includes details for transactional attribute names that start with MFG_Transactional_Attributes, and that contain the value Black.

<ns1:findCtoItemStructure xmlns:ns1="http://xmlns.oracle.com/apps/scm/cto/matchRepository/utilities/configItemStructureService/types/"
   >
<ns1:findCtoItemStructure>
<ns1:findCriteria>
<ns2:fetchStart>0</ns2:fetchStart>
<ns2:fetchSize>-1</ns2:fetchSize>
<ns2:filter>
<ns2:conjunction>And</ns2:conjunction>
<ns2:group>
<ns2:conjunction>And</ns2:conjunction>
<ns2:upperCaseCompare>false</ns2:upperCaseCompare>
<ns2:item>
<ns2:conjunction>And</ns2:conjunction>
<ns2:upperCaseCompare>false</ns2:upperCaseCompare>
<ns2:attribute>ConfigItemNumber</ns2:attribute>
<ns2:operator>=</ns2:operator>
<ns2:value>VIK12*100</ns2:value>
</ns2:item>
</ns2:group>
</ns2:filter>
<ns2:childFindCriteria> -- This is the structure for adding conditions based on TIA
<ns2:fetchStart>0</ns2:fetchStart>
<ns2:fetchSize>-1</ns2:fetchSize>
<ns2:filter>
<ns2:conjunction>And</ns2:conjunction>
<ns2:group>
<ns2:conjunction>And</ns2:conjunction>
<ns2:upperCaseCompare>false</ns2:upperCaseCompare>
<ns2:item>
<ns2:conjunction>And</ns2:conjunction>
<ns2:upperCaseCompare>false</ns2:upperCaseCompare>
<ns2:attribute>AttributeName</ns2:attribute>
<ns2:operator>STARTSWITH</ns2:operator>
<ns2:value>MFG_Transactional_Attributes</ns2:value>
</ns2:item>
<ns2:item>
<ns2:conjunction>And</ns2:conjunction>
<ns2:upperCaseCompare>false</ns2:upperCaseCompare>
<ns2:attribute>CharacterAttributeValue</ns2:attribute>
<ns2:operator>=</ns2:operator>
<ns2:value>Black</ns2:value>
</ns2:item>
</ns2:group>
</ns2:filter>
<ns2:childFindCriteria/>
<ns2:childAttrName>CtoTransactionAttr</ns2:childAttrName> -- This value is fixed and needs to be passed if we want filter based on the TIA
</ns2:childFindCriteria>
</ns1:findCriteria>
<ns1:findControl>
<ns2:retrieveAllTranslations>false</ns2:retrieveAllTranslations>
</ns1:findControl>
</ns1:findCtoItemStructure>

Get Entire Item Structure According to Transaction Attribute

Get the entire item structure for configured items created between 09-DEC-2018 and 09-DEC-2019, and where the value of transaction attribute SCO_color is Black.

You call the service two times.

  • Get configured items that match the filter.

  • Use values that the first call returns as the parameters, such as ConfigItemNumber.

Here's the first call.

<?xml version="1.0" encoding="UTF-8"?>
<ns1:findCtoItemStructure xmlns:ns1="http://xmlns.oracle.com/apps/scm/cto/matchRepository/utilities/configItemStructureService/types/">
  <ns1:findCriteria xmlns:ns2="http://xmlns.oracle.com/adf/svc/types/">
    <ns2:fetchStart>0</ns2:fetchStart>
    <ns2:fetchSize>500</ns2:fetchSize>
    <ns2:filter>
      <ns2:conjunction>And</ns2:conjunction>
      <ns2:group>
        <ns2:conjunction>And</ns2:conjunction>
        <ns2:upperCaseCompare>false</ns2:upperCaseCompare>
        <ns2:item>
          <ns2:conjunction>And</ns2:conjunction>
          <ns2:upperCaseCompare>false</ns2:upperCaseCompare>
          <ns2:attribute>CreationDate</ns2:attribute>
          <ns2:operator>BETWEEN</ns2:operator>
          <ns2:value>2018-12-09</ns2:value>
          <ns2:value>2019-12-09</ns2:value>
        </ns2:item>
        <ns2:item>
          --This block contains logic for filtering configured items according to TIA
          <ns2:conjunction>And</ns2:conjunction>
          <ns2:upperCaseCompare>false</ns2:upperCaseCompare>
          <ns2:attribute>CtoTransactionAttr</ns2:attribute>
          <ns2:operator>Exists</ns2:operator>
          <ns2:nested>
            <ns2:group>
              <ns2:conjunction>And</ns2:conjunction>
              <ns2:upperCaseCompare>false</ns2:upperCaseCompare>
              <ns2:item>
                <ns2:conjunction>And</ns2:conjunction>
                <ns2:upperCaseCompare>false</ns2:upperCaseCompare>
                <ns2:attribute>AttributeName</ns2:attribute>
                <ns2:operator>=</ns2:operator>
                <ns2:value>SCO_Color</ns2:value>
              </ns2:item>
              <ns2:item>
                <ns2:conjunction>And</ns2:conjunction>
                <ns2:upperCaseCompare>false</ns2:upperCaseCompare>
                <ns2:attribute>CharacterAttributeValue</ns2:attribute>
                <ns2:operator>=</ns2:operator>
                <ns2:value>Black</ns2:value>
              </ns2:item>
            </ns2:group>
          </ns2:nested>
        </ns2:item>
      </ns2:group>
    </ns2:filter>
    <ns2:excludeAttribute />
  </ns1:findCriteria>
</ns1:findCtoItemStructure>

Here's the second call.

<?xml version="1.0" encoding="UTF-8"?>
<ns1:findCtoItemStructure xmlns:ns1="http://xmlns.oracle.com/apps/scm/cto/matchRepository/utilities/configItemStructureService/types/">
  <ns1:findCriteria xmlns:ns2="http://xmlns.oracle.com/adf/svc/types/">
    <ns2:fetchStart>0</ns2:fetchStart>
    -- start at index 0
    <ns2:fetchSize>-1</ns2:fetchSize>
    -- Indicates all the rows should be returned
    <ns2:filter>
      <ns2:conjunction>And</ns2:conjunction>
      <ns2:group>
        <ns2:conjunction>And</ns2:conjunction>
        <ns2:upperCaseCompare />
        <ns2:item>
          -- This block has to be repeated for all the configured items returned from the previous call
          <ns2:conjunction>And</ns2:conjunction>
          <ns2:upperCaseCompare />
          <ns2:attribute>ConfigItemNumber</ns2:attribute>
          -- Condition is Based on ConfigItemNumber
          <ns2:operator>=</ns2:operator>
          <ns2:value>VIK12*100</ns2:value>
          -- Configured Item Number returned from the previous call
        </ns2:item>
      </ns2:group>
      <ns2:nested />
    </ns2:filter>
    <ns2:excludeAttribute />
  </ns1:findCriteria>
</ns1:findCtoItemStructure>

Remove the Item Structure

Remove the structure of a configured item from the repository.

Here's a payload that removes the structure of all configured items that include VIK12 as the item number.

<?xml version="1.0" encoding="UTF-8"?>
<ns1:deleteConfigStructure xmlns:ns1="http://xmlns.oracle.com/apps/scm/cto/matchRepository/utilities/configItemStructureService/types/">
  <ns1:configList xmlns:ns2="http://xmlns.oracle.com/apps/scm/cto/matchRepository/utilities/configItemStructureService/">
    <ns2:BaseModelItemNumber>VIK12</ns2:BaseModelItemNumber>
  </ns1:configList>
</ns1:deleteConfigStructure>

Attributes in the Response Payload

Get details about attributes that the ConfiguredItemService web service returns in the response payload.

Structure of the Sales Order

Here are the attributes that the response payload includes when you get the structure of the sales order.

Attribute Type Description

ConfigItemId

Long

Value that identifies the configuration item that the flow creates.

ConfigItemNumber

String

Number that identifies the configured item.

BaseModelId

Long

Value that identifies the inventory item for the assemble-to-order model that your user uses to choose the configure options.

BaseModelItemNumber

String

Number that identifies the name of the assemble-to-order model.

InventoryItemId

Long

Value that identifies the inventory item for the line item.

InventoryItemNumber

String

Number that identifies Item name of the line item.

ParentInventoryItemId

Long

Value that identifies the parent of the inventory item.

ParentInventoryItemNumber

String

Number that identifies the name of the parent of the inventory item.

HeaderId

Long

Value that identifies the match header record.

LineId

Long

Value that uniquely identifies the line assigned to the match detail record.

ParentLineId

Long

Value that identifies the line that represents the immediate parent item of the component.

SubItemType

Long

Value that identifies the type of sub item. The attribute value is 1, 2, or 4.

1. Assemble-to-order item.

2. Option class.

4. Configure option.

UnitQuantity

BigDecimal

Quantity needed to make one unit of the top level assembly.

UnitUOM

String

Unit of measure for the quantity.

ItemHierarchy

String

Hierarchy of inventory item identifiers, separated by a forward slash ( / ).

CreationDate

Timestamp

Date when the user created the configured item.

RootHeaderId

Long

Value that identifies the header of the top level assemble-to-order item.

Structure of the Entire Instance

Here are the attributes that the response includes when you get the structure of the entire instance. The response also includes the same attributes for the structure of the sales order except for ItemHierarchy and RootHeaderId.

Attribute Type Description

RevisionId

Long

Value that identifies the item revision.

EffectivityDate

Timestamp

Date when the item or component goes into effect.

DisableDate

Timestamp

Date when the flow disables the item or component.

OrganizationId

Long

Value that identifies the organization of the inventory item.

OrganizationCode

String

Abbreviation that identifies the organization of the inventory item.

BillSequenceId

Long

Value that identifies the bill sequence for the assemble-to-order model. The structure of the configuration model defines the sequence.

ComponentSequenceId

Long

Value that identifies the sequence for the selected component. The structure of the configuration model defines the sequence.

ComponentType

String

The type of component. Contains 1 or -1 (negative value of 1).

1. Assembled component.

-1. Component that isn't assembled. Its typically part of an assembled component.

WIPSupplyType

BigDecimal

Type of supply that's work-in-process. The structure of the configuration model defines the type.

OptionalComponent

String

Contains Y or N.

Y. The component is optional.

N. The component is required.

SubstituteComponent

String

Contains Y or N.

Y. The component is a substitute.

N. The component isn't a substitute.

ComponentYieldFactor

BigDecimal

Multiplication factor the flow uses to determine the quantity needed to fulfill the component. The structure of the configuration model defines the factor.

PlanningFactor

BigDecimal

Multiplication factor the flow uses to determine the quantity needed to plan the component. The structure of the configuration model defines the factor.

RoundingDirection

BigDecimal

Specifies the rounding direction as up or down. The structure of the configuration model defines the direction.

BasisType

BigDecimal

Specifies whether the value is an item. The value 1 specifies its an item.

CheckATP

BigDecimal

Specify whether to run available-to-promise rule. Contains 1 or 2.

1. Run rule.

2. Don't run rule.

The structure of the configuration model determines whether to run the rule.

ComponentHierarchy

String

Hierarchy of the components in the configuration model. It's a hierarchical list of identifiers, where a dash ( - ) separates each identifier.

ComponentItemHierarchy

String

Hierarchy of the inventory items in the configuration model. It's a hierarchical list of identifiers, where a dash ( - ) separates each identifier.

ItemClassId

Long

Value that identifies the item class of the configured item.

RootPhantomItemId

Long

Value that uniquely identifies the phantom of a subassembly item.

Transaction Attribute

Here are the attributes that the response contains when your payload includes a transaction attribute.

Attribute Type Description

LineId

Long

Value that uniquely identifies the order line.

AttributeName

String

Name of the transaction attribute.

CharacterAttributeValue

String

Contains the character value of the transaction attribute.

NumberAttributeValue

Long

Contains the number value of the transaction attribute.

DateAttributeValue

Date

Contains the date value of the transaction attribute.

TimestampAttributeValue

Timestamp

Contains the time stamp value of the transaction attribute.