Import Different Kinds of Data

Apply guidelines when you import different kinds of data.

New Customers

If you use file-based data import (FBDI) to import a customer, contact, or address that doesn't already exist in Trading Community Architecture, then you must manually assign privileges to the role for the person who runs the Load Interface File for Import scheduled process.

Privilege

Description

HZ_ENTER_TRADING_COMMUNITY_PERSON_PRIV

Enter Trading Community Person

HZ_UPDATE_TRADING_COMMUNITY_PERSON_PRIV

Update Trading Community Person

HZ_ENTER_TRADING_COMMUNITY_ORGANIZATION_INFORMATION_PRIV

Enter Trading Community Organization Information

HZ_UPDATE_TRADING_COMMUNITY_ORGANIZATION_PRIV

Update Trading Community Organization

Learn how to add a privilege. For details, see Data Security.

Draft Sales Orders

In some instances its important to import your sales order in draft status to avoid a problem in downstream fulfillment. For example, assume you import a sales order and need to modify the quantity to avoid having the order get stuck in awaiting shipping status because your inventory levels are fluctuating. You can import it as a draft, modify the quantity in the Order Management work area so it meets your downstream fulfillment requirements, then submit it.

If you don't want to submit your imported order to fulfillment, but instead want to import it as a draft sales order:

Import Technology

Description

FBDI

Set the Submit Flag attribute to N on the DOO_ORDER_HEADERS_ALL_INT worksheet of the order import template.

REST API

Set the SubmittedFlag attribute to false in the Sales Orders For Order Hub REST API resource. False is the default value in REST API. For details and examples, go to REST API for Oracle Supply Chain Management Cloud, expand Order Management, then click Sales Orders for Order Hub.

Web Service

Set the SubmittedFlag attribute to N in your web service payload.

Import a Revision on a Draft

If you use FBDI, REST API, or a web service to import a draft sales order, then do another import that changes the draft, then Order Management assigns a new order number to the draft.

You must use the new order number in any subsequent updates or processing. For example, assume you use FBDI to import source order 57486, and Order Management saves 57486 as a draft. You then use FBDI to import a change to a date attribute on order 57486. Order Management will create a new order number, such as 57490, then save your change in 57490. Order Management deletes all data on order 57486, including any holds that you applied to it. You can't use order 57486 anymore. You must use order 57490.

Revisions

If you import a draft order, modify it in the Order Management work area, submit it, then import a revision of the order in a subsequent import, then the imported revision must include the current attribute values. If you want to change attribute values, then the imported revision must include the new values.

For example, assume you set up an order management extension that sets the default value for the Shipping Method attribute. You import a value of Air for Shipping Method, you change the Shipping Method to Rail in the Order Management work area, submit the order, then import an order revision in a subsequent import. If you want to keep Rail, then your subsequent import must include a value of Rail for Shipping Method. If the subsequent import doesn't include any value for Shipping Method, then Order Management will set Shipping Method to some other value, depending on your pretransformation rule.

RevisionSourceOrderSystem Attribute

You can use the RevisionSourceOrderSystem attribute to identify the source system that sends a revision of the sales order. You can use RevisionSourceOrderSystem in a processing constraint to control the changes that you allow when you import a revision from the source system.

RevisionSourceOrderSystem doesn't affect any other processing that Order Management does when you create a draft of the revision or submit it. For example, Order Management doesn't create a new revision according to how you set RevisionSourceOrderSystem.

Assume you.

  1. Import revision 1 for order 45768, with a quantity of 10 on line 1, and RevisionSourceOrderSystem in the import payload for this order contains EastSystem.

  2. Import revision 2 for order 45768 from source system EastSystem, RevisionSourceOrderSystem in the import payload contains EastSystem, the import adds line 2 with a quantity of 5, and you keep it in draft status.

  3. Import an update for revision 1 from another system, WestSystem, RevisionSourceOrderSystem in the import payload contains WestSystem, the import updates the quantity on line 1 to 7, the quantity on line 2 to 5, and you submit the order. Order Management will submit this update and overwrite the revision 2 that it received from EastSystem. The submitted order will contain a quantity of 7 on line 1 and a quantity of 5 on line 2. Order Management won't create a third revision.

Closed Order Lines

You can import an order line that's already closed, but you need to modify the orchestration process so it doesn't attempt to process the closed line.

Assume you need to import all of your closed order lines.

  1. Make a duplicate of the predefined DOO_BillOnlyGenericProcess orchestration process.

    For details, see Set Up Orchestration Processes.

  2. Change the name of your duplicate to Immediately Close Imported Sales Orders.

  3. Revise the line-selection criteria on the Create Invoice step.

    • Click Click for Rule In the Line Selection Criteria column on the Create Invoice step.

    • In the Line-Selection Criteria Set dialog, in the If area, change the first condition to.

      If 1 is 2

      1 will never equal 2, so this condition instructs the orchestration process to skip invoicing for the order line and immediately close the order line.

    • Delete all the other conditions in the If area.

  4. Release and deploy your new orchestration process.

  5. Use the Manage Process Assignment Rules for Sales Orders task to create an assignment rule that assigns your new orchestration process according to your requirement. Assume you use the status value Closed in your import payload to indicate a closed line. Here's your rule.

    If Status Code (Order Fulfill Line) is equal to Closed, then Process Name is set to Immediately Close Imported Sales Orders

    For details, see Overview of Using Business Rules With Order Management.

  6. Import your sales orders.

    Your custom orchestration process will immediately close the sales orders that meet your criteria.

Configured Items

Note

  • Your import must maintain a relationship between the parent configuration model and its child configure options.
  • A configuration model can have one or more child configure options. A child configure option can also have one or more children.

Assume you have a model that contains four lines. Line 1 is the root parent and line 2 is a child of line 1. Line 2 is also a model and lines 3 and 4 are children of line 2. Here's what the hierarchy looks like.

Line 1
 Line 2
  Line 3
  Line4

where

  • SourceTransactionLineId is the parent

  • ParentSourceTransactionLineId identifies the parent in a child entity.

Here's a payload that correctly maintains the hierarchy.

    "lines": [{
            "SourceTransactionLineId": "1",
            "SourceTransactionLineNumber": "1",
            "SourceScheduleNumber": "1",
            "SourceTransactionScheduleId": "1",
            "OrderedUOMCode": "Ea",
            "OrderedQuantity": 1,
            "ProductNumber": "PTO54222",
            "RequestedFulfillmentOrganizationId": 204
        },
        {
            "SourceTransactionLineId": "2",
            "SourceTransactionLineNumber": "2",
            "SourceScheduleNumber": "1",
            "SourceTransactionScheduleId": "1",
            "OrderedUOMCode": "Ea",
            "OrderedQuantity": 1,
            "ProductNumber": "OP44136",
            "RequestedFulfillmentOrganizationId": 204,
            "ParentSourceTransactionLineId": "1"
        },
        {
            "SourceTransactionLineId": "3",
            "SourceTransactionLineNumber": "3",
            "SourceScheduleNumber": "1",
            "SourceTransactionScheduleId": "1",
            "OrderedUOMCode": "Ea",
            "OrderedQuantity": 1,
            "ProductNumber": "KB18761",
            "RequestedFulfillmentOrganizationId": 204,
            "ParentSourceTransactionLineId": "2"
        },
        {
            "SourceTransactionLineId": "4",
            "SourceTransactionLineNumber": "4",
            "SourceScheduleNumber": "1",
            "SourceTransactionScheduleId": "1",
            "OrderedUOMCode": "Ea",
            "OrderedQuantity": 1,
            "ProductNumber": "KB18759",
            "RequestedFulfillmentOrganizationId": 204,
            "ParentSourceTransactionLineId": "2"
        }    
    ]

where

  • "SourceTransactionLineId": "1" specifies that line 1 is the root parent.

  • "ParentSourceTransactionLineId": "1" in the SourceTransactionLineId 2 entity specifies that line 1 is the parent of line 2.

  • "ParentSourceTransactionLineId": "2" in the SourceTransactionLineId 3 entity specifies that line 2 is the parent of line 3.

  • "ParentSourceTransactionLineId": "2" in the SourceTransactionLineId 4 entity specifies that line 2 is the parent of line 4.

Now let's say you wanted to add a fifth line, and you use this code.

      "SourceTransactionLineId": "5",
            "SourceTransactionLineNumber": "5",
            "SourceScheduleNumber": "1",
            "SourceTransactionScheduleId": "1",
            "OrderedUOMCode": "Ea",
            "OrderedQuantity": 1,
            "ProductNumber": "KB18760",
            "RequestedFulfillmentOrganizationId": 204,
            "ParentSourceTransactionLineId": "9"
        }    
    ]

This import would fail because ParentSourceTransactionLineId has a value of 9, but there's no SourceTransactionLineId in the payload that contains 9.

Shipment Sets or Kits

You must set the PartialShipAllowedFlag attribute to N on the line that contains the set or kit.

Coverages and Subscriptions

Make sure each coverage item in your import payload references a unique fulfillment line that contains the covered item you want to cover. If you split a fulfillment line, then each of these lines reference the same source line. Assume you split line 1 into lines 1-1 and 1-2. Lines 1-1 and 1-2 both reference the same source line, the source line isn't unique, so you can't use the source line to add coverage. The lines must be unique.

Here's part of an example payload that includes coverage.

<ns2:DocumentReference>
  <ns2:DocumentReferenceType>COVERAGE_COVERED_ASSOCIATION</ns2:DocumentReferenceType>
  <ns2:DocumentIdentifier>300100546398344</ns2:DocumentIdentifier>
  <ns2:DocumentSubLineIdentifier>3001005463983461</ns2:DocumentSubLineIdentifier>
  </ns2:DocumentReference>
<ns2:DocumentReference>
  <ns2:DocumentReferenceType>SOURCE_COVERAGE_COVERED_ASSOC</ns2:DocumentReferenceType>
  <ns2:DocumentIdentifier>jm_PDSC_PTO_IC_12_08_01</ns2:DocumentIdentifier>
  <ns2:DocumentAdditionalIdentifier>GPR</ns2:DocumentAdditionalIdentifier>
  <ns2:DocumentNumber>jm_PDSC_PTO_IC_12_08_01</ns2:DocumentNumber>
  <ns2:DocumentLineIdentifier>104</ns2:DocumentLineIdentifier>
  <ns2:DocumentAdditionalLineIdentifier>101</ns2:DocumentAdditionalLineIdentifier>
  <ns2:DocumentSubLineIdentifier>101</ns2:DocumentSubLineIdentifier>
</ns2:DocumentReference>

Inventories

Lots and Serials

If you use the Order Import Service web service, and if you want to import lot and serial details for an order line, then the LotSerial entity in your import payload must include a value in at least one of these attributes for the order line.

  • LotNumber

  • SerialNumberFrom

  • SerialNumberTo

  • ItemRevisionNumber

  • Locator

  • LocatorIdentifier

If you don't provide a value for any of these attributes in the LotSerial entity.

  • The import won't create a record for the lot or serial in the DOO_LOT_SERIAL_NUMBERS table.

  • And if you provide a value for the SourceTransactionLotIdentifier attribute, then the import will display an error.

Subinventories

If your import includes a value in the SubInventoryCode attribute, then you must make sure:

  • The Requested Fulfillment Organization that you specify on the order line to fulfill the item contains the subinventory that you specify on the order line.

  • The End Date for the subinventory happens in the future or is empty before you collect the subinventory.

  • You collect the subinventory.

For example, assume you need to use the Finished Goods subinventory to fulfill the order line from the Vision Manufacturing organization. The Subinventory Code for Finished Goods Subinventory is FGI. Here's how you can make sure the import will work.

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

    • Offering: Manufacturing and Supply Chain Materials Management

    • Functional Area: Inventory Management

    • Task: Manage Subinventories and Locators

  2. In the dialog that displays, select the Vision Manufacturing organization.

  3. On the Manage Subinventories page, search for the values.

    Attribute

    Value

    Subinventory

    FGI

    If the search results don't contain the Finished Goods subinventory, then you need to add it, or use a different subinventory on the order line.

    Description

    Finished Goods

  4. In the search results, verify the value.

    Attribute

    Value

    End Date

    Happens in the future or is empty.

    If the date happens in the past, then you need to change its value so its empty or happens in the future.

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

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Collect Order Reference Data

  6. On the page that displays, click Reference Data.

  7. Move Subinventories to the Selected Entities window, then click Submit.

    This will collect the Finished Goods subinventory so its available in the Order Orchestration and Planning Data Repository.

    Learn how to use this page. For details, see Collect Planning Data for Order Management.

  8. Notice the value that displays in the dialog, then click OK.

    For this example, assume the value is 107610.

  9. Go to the Scheduled Processes work area, then verify the values.

    Attribute

    Value

    Name

    Collection Job Set

    Process ID

    107610

    Status

    Succeeded

Prefix Line Numbers in Your Source Orders

The value that you import in the Source Order Line Number must be alphanumeric. You must not use a numeric value. We recommend that you prefix the value in the Source Order Line Number attribute with a text value, and that you use meaningful text. For example, use LEG to identify a legacy system, such as LEG_576849.

Display Line Numbers

Make sure your payload has all the data that Order Management needs to accurately display the fulfillment line number in the Order Management work area.

Order Management data stores the Display Line Number as a concatenation of the FulfillLineId attribute plus the FulfillLineNumber attribute, such as 300100562534985 1-1. The salesOrdersForOrderHub Rest API returns the fulfillment line in the same concatenated form that you see in the Order Management work area.

Next, we'll look at some examples. You must make sure your salesOrdersForOrderHub REST API payload represents the fulfillment lines just like the examples represent them.

Example of a Split Fulfillment Line

Assume you have an order line that you split into two fulfillment lines. Here's an example of how your salesOrdersForOrderHub REST API payload must represent these lines.

{
   "lines" : {
      "items" : [ 
         {
            "FulfillLineId" : 300100562534985,
            "DisplayLineNumber" : "1-1",
            "FulfillLineNumber" : "1"
         },
         {
            "FulfillLineId" : 300100562535469,
            "DisplayLineNumber" : "1-2",
            "FulfillLineNumber" : "2"
         }
      ]
   }
}

Notice that a single items entity contains one group of FulfillLineId, DisplayLineNumber, and FulfillLineNumber attributes for each split fulfillment line, and that DisplayLineNumber has the same value that you see in the Order Management work area, such as 1-1.

Notice that a single OrderLine entity contains one DisplayLineNumber entity, and the DisplayLineNumber entity contains a group of FulfillLineId and FulfillLineNumber attributes for each split fulfillment line, but DisplayLineNumber doesn’t have the 1-1 value.

Example of a Split Fulfillment Line with a Coverage

Assume you have an order line that you split into two fulfillment lines, and the line contains a coverage item. Here's an example of how your salesOrdersForOrderHub REST API payload must represent these lines.

{
   "lines": {
      "items": [
         {
            "FulfillLineId": 300100565241163,
            "DisplayLineNumber": "1:1-1",
            "FulfillLineNumber": "1"
        },
        {
           "FulfillLineId": 300100565241034,
           "DisplayLineNumber": "1:1-2",
           "FulfillLineNumber": "2"
        }
     ]
  }
}

For example, this payload sets the DisplayLineNumber attribute for fulfillment line 300100565241034 to 1:1-2. The Order Management work area also displays the 1:1-2 value.

  • The 1 before the colon represents the DisplayLineNumber of the covered line.
  • The 1 after the colon represents the sequence number of the coverage. For example, 1:1 means you have another coverage for the same covered line, where 1 is the sequence number of the coverage.
  • The dash means that Order Management split the order line into more than one fulfillment line. In this example, fulfillment line 1 and fulfillment line 2.
  • The 2 after the dash represents the second split line, fulfillment line 2.

Example of a Split Fulfillment Line with a Configured Item

You use the DisplayLineNumber to represent a configured item's hierarchy. Here's an example.
Item DisplayLineNumber
AS54888 Desktop Computer 1
Storage Option Class 1.1
1 Terabyte Hard Drive 1.1.1
2 Terabyte Hard Drive 1.1.2
Port Option Class 1.2
USB 3.0 Port 1.2.1
USB 2.0 Port 1.2.2

Note

  • The DisplayLineNumber for the AS54888 root item is 1, so all child items of AS54888 will also start with 1.
  • The DisplayLineNumber for the Storage Option Class item is 1.1, so all child items of Storage Option Class will also start with 1.1.
  • The root item might not always be 1. For example, if you manually delete a line that has the AS54888, then add a new line with the AS54888 in a draft order, then Order Management changes the DisplayLineNumber for the AS54888 from 1 to 2, and it changes all child items of AS54888 so they also start with 2.

Assume you have an order line that includes a quantity of two for the 1 Terabyte Hard Drive item. There's only enough supply to fulfill a quantity of 1, so Order Management splits that order line into two fulfillment lines. Here's an example of how your salesOrdersForOrderHub REST API payload must represent these lines.

{
   "lines": {
      "items": [            
         {
            "FulfillLineId": 300100563721562,
            "DisplayLineNumber": "1.1.1-1",
            "FulfillLineNumber": "1"
         },
         {
            "FulfillLineId": 300100563723289,
            "DisplayLineNumber": "1.1.1-2",
            "FulfillLineNumber": "2"
         }
      ]
   }
}

This payload sets the DisplayLineNumber attribute for fulfillment line 300100563721562 to 1.1.1-1. The Order Management work area also displays the 1.1.1-1 value.

  • The first 1 represents the root line for the configured item.
  • The second 1 represents the Storage option class.
  • The 1 before the dash represents the 1 Terabyte Hard Drive configure option.
  • The dash means Order Management split the fulfillment line.
  • The 1 after the dash represents the first fulfillment line for the 1 Terabyte Hard Drive configure option.

Original Order Reference

There are specific guidelines for using the originalOrderReference entity. For details, see Guidelines for Processing Return Orders.