Go to primary content
Oracle® Retail Enterprise Inventory Cloud Service Administration Guide
Release 19.5
F55424-02
  Go To Table Of Contents
Contents

Previous
Previous
 
Next
Next
 

L Appendix: Open Transaction Seeding via BDI

Overview

Merchandising Solution usually goes live prior to the SIOCS system. The integration layer supports the flow of foundation data via BDI (bulk data import) process or via RIB Messages. As the customer is currently in the transition phase that is, cutover from old system to Oracle Cloud Solution, the complete transaction freeze for the stores may not be achievable. There would be a few transactions which would be currently in In-Progress states which means they are either not fully received, closed or cancelled. This data needs to be imported into SIOCS as these are open transactions.

Third Party Open TX data imports open transaction data for three main areas.

  1. Purchase Order

  2. Direct Store Deliveries from Supplier

  3. Transfer / Allocations

Third party transaction import is considered to be a one-time activity before go live and not a practice for transactional data flow. The system would allow creating new transactions and updating existing transactions only if the sanity of the transaction that is, the current state in SIOCS database is the same.

As the transaction import is from an external system, the identifier generated for the transactions on the external system will also be mapped to the external identifier of SIOCS transactional data.

The complete integration of data imports direct from Merchandising similar to foundation data import is currently not supported.

The implementation team would be responsible for sourcing this data via BDI External Interfaces.

The following Transaction Import batches are independent of each other and would be responsible for processing the transactions to SIOCS database.

BDI Implementation Considerations

To load third party data into EICS via BDI, external system needs to provide data sourcing implementations.

This section lists two approaches for data sourcing implementation.

Option A: BDI External Process Flow (via External Edge App)

With this approach, the BDI Ext Process Flow will move the data from sourcing system to destination system's application table. BDI process flow provides BDI job scheduling, end to end data transportation from sourcing system's database table into destination application's tables.

For additional details, see RICS documentations:

Oracle® Retail Bulk Data Integration Cloud Service Implementation Guide

Oracle® Retail Enterprise Integration Overview Guide

Option B: BDI CLI Transmitter

BDI CLI File Transmitter is a client command line tool, is applicable for smaller data file size which does not require concurrent processing.

BDI CLI file transmitter only transports data files from sourcing systems to destination system's interface tables. It does not provide end to end data transportation. If you choose BDI CLI File transmitter for loading third party data into EICS application tables, it will require three steps:

  1. Download BDI CLI File Transmitter from RICS' and install on customer's system.

  2. Run BDI CLI Transmitter batch to load data file from sourcing system into receiver system's interface table (*_IN tables).

  3. Once the data is loaded into the receiver app's inbound interface tables, the user would need to provide the data set id and start EICS's importer job to move the data from the inbound interface table into the EICS app tables.

Open Transaction Data Processing

The following section details a few key points for the technical design of transaction data import:

  1. Flattening the database tables

    Flattened database architecture makes the query execution much faster than the normalized form. Each row on the table would denote a line item with complete information of the transaction it belongs to and what line item attribute values are.

    This reduces the overhead cost of join and querying multiple tables to get the complete transaction detail identified by a particular identifier.

  2. Data Validation

    The first and foremost step of the transaction import is validating the data against the values available. The transaction import batch processes would validate the complete data as the data would then be processed to the SIOCS transaction tables. The basic validations which would be performed are as follows:

    1. Is the transaction for a valid store?

    2. Is the transaction from a valid source? (store, warehouse, finisher or supplier)

    3. Is the item identifier existing on the item master table of SIOCS database?

    4. Is the status / type specified on data denoting valid information as per the SIOCS technical design?

    Please refer to Data Import Exception Handling section for more details.

  3. Parallel Processing

    The batch process will split the data into partitions by the transaction external identifiers to support the parallel processing of the transaction import. Each partition will contain the list of transaction identifiers which are to be processed. The number of partitions in which the data would be divided is defined by an existing system admin configuration parameter (Batch Maximum Threads). The default value for this parameter is set to 5. Each thread would be assigned a partition to be processed.

    So, if there are 10000 transactions to be imported, 5 separate thread processes would be instantiated to process a workload of 2000 transactions per thread.

    The partition feature used here is as per JSR 352 specification defined for Java EE 7 and Java SE 6 platforms.

  4. Data Import

    The partitioned transaction external identifier will be validated against the existing transactions on the SIOCS database (if any exists). If the no matching transactions are found, a new transaction would be added to the respective transaction table. If the transaction identifier matches to an existing record, then that transaction would be updated with the latest data from the flattened staging table. The data import process does not update the state of transaction.

    The data import processes the data into chunks and a failover mechanism is added to process the correct data and mark the invalid data as failed. This also helps improving the server performance as not all transactions on a partition are imported at one go. The chunk process will further break the partition in sub-lists and process the data in group of records reducing the server overhead and memory consumption.

  5. Inventory Correction

    The inventory correction logic is not applicable for purchase order processing as there is no inventory bucket to be updated.

    For the transfer transactions that are currently approved, the transfer reserved bucket of the item's inventory at source store needs to be corrected once the transaction is successfully imported into the system.

    For the Direct Store Delivery transactions (if associated with customer order), the picking quantity would need to be updated when the received delivery is created depending on a system parameter.

    Below is the configuration parameter to be considered while processing the direct store delivery which has a container in Received status.

Direct Delivery - Import Details

This batch imports the direct delivery transaction imported from Merchandising / Third Party System posted on SIOCS BDI table for example, EXT_DSD_IN. The job supports only creation of the deliveries of ASN types. Data validation is also part of processing and proper error mechanism will log the error against each batch execution. This job does not support the importing of UINs and Custom Attributes.

For the interface definition, please refer to the DSD Interface Specification section.

Table L-1 EXT_DSD_IN and SIOCS Transaction Table Mappings

BDI Interface Table SIOCS Transactional Tables

EXT_DSD_IN

DSD


DSD_CARTON


DSD_LINE_ITEM


DSD_ADJUSTMENT


For the detail column level mapping please refer to Data Mapping section.

Table L-2 Configuration Parameters for DSD Received Status

Parameter Name Description

Reserve Customer Order Inventory Upon Receiving

Update the customer order reserved bucket while creating a new transaction.

Auto Pick On Receive - Direct Delivery

Will update the picked quantity on customer order (if exists).

Auto Pick Mixed Containers

Will update the picked quantity on customer order (if exist) for a container which contains both customer order related items and normal items.


Transfer - Import Details

This batch imports the transfer and allocation records from Merchandising / Third Party System posted on SIOCS BDI table that is, EXT_TSF_IN. The job support creates the transfer / allocation records in SIOCS database and makes them accessible on UI for users. The inventory in-transit calculation posts the importing of the transaction and will be taken care of by this batch job. Data validation is also part of processing and proper error mechanism will log the error against each batch execution.

For the interface definition, please refer to the Transfer Interface Specification section.

Table L-3 EXT_TSF_IN and SIOCS Transaction Table Mappings

BDI Interface Table SIOCS Transactional Tables

EXT_TSF_IN

TSF


TSF_LINE_ITEM


TSF_ALLOCATION


Purchase Order - Import Details

This batch imports the purchase order records from Merchandising / Third Party System posted on SIOCS BDI table that is, EXT_PURCH_ORDER. This job creates the purchase order records in SIOCS database and makes them accessible on UI for users. Data validation is also part of processing and proper error mechanism will log the error against each batch execution.

For the interface definition, please refer to the Purchase Order Interface Specification section.

Table L-4 EXT_PURCH_ORDER_IN BDI And App Table Mappings

BDI Interface Table SIOCS Transactional Tables

EXT_PURCH_ORDER_IN

PURCHASE_ORDER


PURCHASE_ORDER_LINE_ITEM


For the detail column level mapping please refer to the Data Mapping section.

Data Mapping

The table below specifies the database column mapping for each functional area.

  1. Direct Store Delivery from Supplier (DSD Receiving)

    BDI Transaction Import Table: EXT_DSD_IN

    BDI Column Transaction Mapped Column Transaction Mapped Table
    DSD_ASN ASN_ID DSD
    DSD_STORE STORE_ID DSD
    DSD_SUPPLIER SUPPLIER_ID DSD
    DSD_STATUS STATUS DSD
    DSD_EXPECTED_DATE EXPECTED_DATE DSD
    DSD_CREATE_DATE CREATE_DATE DSD
    DSD_UPDATE_DATE UPDATE_DATE DSD
    DSD_RECEIVED_DATE RECEIVED_DATE DSD
    DSD_INVOICE INVOICE_ID DSD
    DSD_INVOICE_DATE INVOICE_DATE DSD
    DSD_CREATE_USER CREATE_USER DSD
    DSD_CUST_ORD_ID CUST_ORDER_ID DSD
    DSD_FUL_ORD_EXT_ID FUL_ORD_EXTERNAL_ID DSD
    DSD_CARRIER_ENTITY CARRIER_ENTITY DSD
    DSD_CARRIER_TYPE CARRIER_TYPE DSD
    DSD_CARRIER_CODE CARRIER_CODE DSD
    DSD_COUNTRY_CODE COUNTRY_CODE DSD
    DSD_SOURCE_ADDRESS SOURCE_ADDRESS DSD
    DSD_LICENSE_PLATE LICENSE_PLATE DSD
    DSD_FREIGHT_ID FREIGHT_ID DSD
    DSD_CURRENCY_CODE CURRENCY_CODE DSD
    DSD_INVOICE_COST INVOICE_COST_VALUE DSD
    DSD_RECEIVED_USER RECEIVED_USER DSD
    DSD_UPDATE_USER UPDATE_USER DSD
    DSD_BOL_EXT_ID BOL_EXTERNAL_ID DSD
    DSD_ADJ_PO_EXT_ID PURCHASE_ORDER_EXT_ID DSD_ADJUSTMENT
    DSD_ADJ_ITEM ITEM_ID DSD_ADJUSTMENT
    DSD_ADJ_DATE ADJUSTMENT_DATE DSD_ADJUSTMENT
    DSD_ADJ_QUANTITY ADJUSTMENT_QUANTITY DSD_ADJUSTMENT
    DSD_CARTON_EXT_ID EXTERNAL_ID DSD_CARTON
    DSD_CARTON_STATUS STATUS DSD_CARTON
    DSD_CARTON_STORE STORE_ID DSD_CARTON
    DSD_CARTON_REFERENCE_ID REFERENCE_ID DSD_CARTON
    DSD_CARTON_DAMAGED_REASON DAMAGED_REASON DSD_CARTON
    DSD_CARTON_SERIAL_CODE SERIAL_CODE DSD_CARTON
    DSD_CARTON_TRACKING_NUMBER TRACKING_NUMBER DSD_CARTON
    DSD_CARTON_DAMAGE_REMAINING DAMAGE_REMAINING DSD_CARTON
    DSD_CARTON_CREATE_USER CREATE_USER DSD_CARTON
    DSD_CARTON_UPDATE_USER UPDATE_USER DSD_CARTON
    DSD_CARTON_RECEIVE_USER RECEIVE_USER DSD_CARTON
    DSD_CARTON_CREATE_DATE CREATE_DATE DSD_CARTON
    DSD_CARTON_UPDATE_DATE UPDATE_DATE DSD_CARTON
    DSD_CARTON_RECEIVE_DATE RECEIVE_DATE DSD_CARTON
    DSD_CARTON_UIN_REQUIRED UIN_REQUIRED DSD_CARTON
    DSD_CARTON_RCV_AT_SHOP_FLOOR RECEIVE_AT_SHOP_FLOOR DSD_CARTON
    DSD_CARTON_QUALITY_CONTROL QUALITY_CONTROL DSD_CARTON
    DSD_CARTON_EXTERNAL_CREATE EXTERNAL_CREATE DSD_CARTON
    DSD_CARTON_ADJUSTED ADJUSTED DSD_CARTON
    DSD_CARTON_CUST_ORD_RELATED CUSTOMER_ORDER_RELATED DSD_CARTON
    DSD_LINE_ITEM ITEM_ID DSD_LINE_ITEM
    DSD_LINE_CASE_SIZE CASE_SIZE DSD_LINE_ITEM
    DSD_LINE_EXPECTED QUANTITY_EXPECTED DSD_LINE_ITEM
    DSD_LINE_RECEIVED QUANTITY_RECEIVED DSD_LINE_ITEM
    DSD_LINE_DAMAGED QUANTITY_DAMAGED DSD_LINE_ITEM
    DSD_LINE_UNIT_COST_CURR UNIT_COST_CURRENCY DSD_LINE_ITEM
    DSD_LINE_UNIT_COST_VAL UNIT_COST_VALUE DSD_LINE_ITEM
    DSD_LINE_OVRD_UNIT_COST_CURR OVERRIDE_UNIT_COST_CURRENCY DSD_LINE_ITEM
    DSD_LINE_OVRD_UNIT_COST_VAL OVERRIDE_UNIT_COST_VALUE DSD_LINE_ITEM
    DSD_LINE_STORE STORE_ID DSD_LINE_ITEM
    DSD_LINE_PO_EXT_ID PURCHASE_ORDER_EXT_ID DSD_LINE_ITEM
    DSD_LINE_CUST_ORD_ID CUST_ORDER_ID DSD_LINE_ITEM
    DSD_LINE_FUL_ORD_EXT_ID FUL_ORD_EXTERNAL_ID DSD_LINE_ITEM
    DSD_LINE_VPN VENDOR_PRODUCT_NUMBER DSD_LINE_ITEM
    DSD_LINE_RECEIVED_OVER QUANTITY_RECEIVED_OVER DSD_LINE_ITEM
    DSD_LINE_DAMAGED_OVER QUANTITY_DAMAGED_OVER DSD_LINE_ITEM
    DSD_LINE_PREV_RECEIVED PREVIOUS_RECEIVED DSD_LINE_ITEM
    DSD_LINE_PREV_DAMAGED PREVIOUS_DAMAGED DSD_LINE_ITEM

  2. Transfers

    BDI Transaction Import Table: EXT_TSF_IN

    Column TSF_DOC_TYPE = T denotes the transaction is transfer.

    BDI Column Mapped Column Mapped Column Table
    TSF_EXT_ID EXTERNAL_ID TSF
    TSF_SRC_TYPE SOURCE_TYPE TSF
    TSF_SRC SOURCE_ID TSF
    TSF_DEST_TYPE DESTINATION_TYPE TSF
    TSF_DEST DESTINATION_ID TSF
    TSF_STATUS STATUS TSF
    TSF_CREATE_USER CREATE_USER TSF
    TSF_UPDATE_USER UPDATE_USER TSF
    TSF_APPROVAL_USER APPROVAL_USER TSF
    TSF_CREATE_DATE CREATE_DATE TSF
    TSF_UPDATE_DATE UPDATE_DATE TSF
    TSF_APPROVAL_DATE APPROVAL_DATE TSF
    TSF_CONTEXT_ID CONTEXT_ID TSF
    TSF_CONTEXT_VALUE CONTEXT_VALUE TSF
    TSF_CUST_ORD_ID CUST_ORD_EXTERNAL_ID TSF
    TSF_FUL_ORD_EXT_ID FUL_ORD_EXTERNAL_ID TSF
    TSF_PARTIAL_DELIVERY_IND ALLOW_PARTIAL_DELIVERY TSF
    TSF_AUTH_CODE AUTHORIZATION_CODE TSF
    TSF_NOT_AFTER_DATE NOT_AFTER_DATE TSF
    TSF_REQUEST_DATE REQUEST_DATE TSF
    TSF_REQUEST_USER REQUEST_USER TSF
    TSF_USE_AVAILABLE USE_AVAILABLE TSF
    TSF_LINE_ITEM ITEM_ID TSF_LINE_ITEM
    TSF_LINE_CASE_SIZE CASE_SIZE TSF_LINE_ITEM
    TSF_LINE_REQUESTED QUANTITY_REQUESTED TSF_LINE_ITEM
    TSF_LINE_APPROVED QUANTITY_APPROVED TSF_LINE_ITEM
    TSF_LINE_SHIPPING QUANTITY_SHIPPING TSF_LINE_ITEM
    TSF_LINE_SHIPPED QUANTITY_SHIPPED TSF_LINE_ITEM
    TSF_LINE_RECEIVED QUANTITY_RECEIVED TSF_LINE_ITEM
    TSF_LINE_DAMAGED QUANTITY_DAMAGED TSF_LINE_ITEM
    TSF_LINE_PREFERRED_UOM PREFERRED_UOM TSF_LINE_ITEM

  3. Transfer Allocations

    BDI Transaction Import Table: EXT_TSF_IN

    Column TSF_DOC_TYPE = A denotes the transaction is transfer allocation.

    BDI Column Mapped Column Mapped Column Table
    TSF_EXT_ID EXTERNAL_ID TSF_ALLOCATION
    TSF_DELIVERY_DATE DELIVERY_DATE TSF_ALLOCATION
    TSF_LINE_ITEM ITEM_ID TSF_ALLOCATION
    TSF_DEST STORE_ID TSF_ALLOCATION
    TSF_DELV_SLOT_ID DELIVERY_SLOT_ID TSF_ALLOCATION
    TSF_SRC SOURCE_ID TSF_ALLOCATION
    TSF_SRC_TYPE SOURCE_TYPE TSF_ALLOCATION
    TSF_CONTEXT_VALUE CONTEXT_VALUE TSF_ALLOCATION
    TSF_LINE_DIST_PARENT_ID DISTRIBUTION_PARENT_ID TSF_ALLOCATION
    TSF_STATUS STATUS TSF_ALLOCATION
    TSF_LINE_EXPECTED QUANTITY_EXPECTED TSF_ALLOCATION
    TSF_LINE_RECEIVED QUANTITY_RECEIVED TSF_ALLOCATION
    TSF_LINE_DAMAGED QUANTITY_DAMAGED TSF_ALLOCATION
    TSF_CONTEXT_ID CONTEXT_ID TSF_ALLOCATION

  4. Purchase Order

    BDI Transaction Import Table: EXT_PURCH_ORDER_IN

    BDI Column Mapped Column Mapped Column Table
    PO_EXT_ID EXTERNAL_ID PURCHASE_ORDER
    PO_STORE STORE_ID PURCHASE_ORDER
    PO_SUPPLIER SUPPLIER_ID PURCHASE_ORDER
    PO_STATUS STATUS PURCHASE_ORDER
    PO_NOT_BEFORE_DATE NOT_BEFORE_DATE PURCHASE_ORDER
    PO_NOT_AFTER_DATE NOT_AFTER_DATE PURCHASE_ORDER
    PO_CREATE_DATE CREATE_DATE PURCHASE_ORDER
    PO_UPDATE_DATE UPDATE_DATE PURCHASE_ORDER
    PO_COMPLETE_DATE COMPLETE_DATE PURCHASE_ORDER
    PO_USER USER_ID PURCHASE_ORDER
    PO_COMMENTS COMMENTS PURCHASE_ORDER
    PO_CUST_ORD_ID CUST_ORDER_ID PURCHASE_ORDER
    PO_FUL_ORD_EXT_ID FUL_ORD_EXTERNAL_ID PURCHASE_ORDER
    PO_EXT_STATUS EXTERNAL_STATUS PURCHASE_ORDER
    PO_LINE_ITEM ITEM_ID PURCHASE_ORDER_LINE_ITEM
    PO_LINE_SUPP_COUNTRY SUPPLIER_COUNTRY_ID PURCHASE_ORDER_LINE_ITEM
    PO_LINE_CASE_SIZE CASE_SIZE PURCHASE_ORDER_LINE_ITEM
    PO_LINE_EXPECTED QUANTITY_EXPECTED PURCHASE_ORDER_LINE_ITEM
    PO_LINE_RECEIVED QUANTITY_RECEIVED PURCHASE_ORDER_LINE_ITEM
    PO_LINE_UNIT_COST_CURRENCY UNIT_COST_CURRENCY PURCHASE_ORDER_LINE_ITEM
    PO_LINE_UNIT_COST_VALUE UNIT_COST_VALUE PURCHASE_ORDER_LINE_ITEM
    PO_LINE_PREFERRED_UOM PREFERRED_UOM PURCHASE_ORDER_LINE_ITEM
    PO_LINE_PUBLISHED PUBLISHED PURCHASE_ORDER_LINE_ITEM

Data Import Exception Handling

This section describes the error message with which batch would be marked as failed due to the invalid data on transaction import file.

Each error message will be prefixed with following text to denote the error recorded is for which row value in respective BDI transaction import table.

Prefix Text: Validation failed for Row Sequence: <BDI_SEQ_ID>

Table L-5 1. Purchase Order

Error Cause Data Column with Error

Purchase Order:<PO_EXT_ID> has invalid store information.

Store identifier is not a valid store for a new purchase order.

PO_STORE

Purchase Order:<PO_EXT_ID> has invalid supplier information.

Supplier identifier is not a valid supplier for a new purchase order.

PO_SUPPLIER

Purchase Order:<PO_EXT_ID> has no status information.

Status is either null or not valid value for purchase order status for a new purchase order.

PO_STATUS

Purchase Order:<PO_EXT_ID> has no external status information.

External status is either null or not valid value for purchase order external status for a new purchase order.

PO_EXT_STATUS

Purchase Order:<PO_EXT_ID> has invalid store information that does not match to existing transaction.

Store identifier doesn't match to the existing purchase order.

PO_STORE

Purchase Order:<PO_EXT_ID> has invalid supplier information that does not match to existing transaction.

Supplier identifier doesn't match to the existing purchase order.

PO_SUPPLIER

Purchase Order:<PO_EXT_ID> has invalid status code.

Status is either null or not valid value for purchase order status for an existing purchase order.

PO_STATUS

Purchase Order:<PO_EXT_ID> has status which does not match the existing data.

Status is not same as that for the existing purchase order.

PO_STATUS

Purchase Order:<PO_EXT_ID> has external status information which is not valid for existing transaction.

External status is either null or not a valid value for an existing transaction.

PO_EXT_STATUS

Purchase Order:<PO_EXT_ID> Item:<ITEM_ID> is not ranged for store.

Item is not range to the store.

PO_LINE_ITEM

PO_STORE

Purchase Order:<PO_EXT_ID> Item:<ITEM_ID> is not ranged for supplier.

Item is not ranged to the supplier.

PO_LINE_ITEM

PO_SUPPLIER

Purchase Order:<PO_EXT_ID> Item:<ITEM_ID> has no supplier country information.

Item Supplier country information is not available on the SIOCS.

PO_LINE_ITEM

PO_SUPPLIER

PO_LINE_SUPP_COUNTRY


Table L-6 2. Transfer

Error Cause Data Column with Error

Transfer:<TSF_EXT_ID> has invalid source information.

Transfer source is not valid.

TSF_SRC

Transfer:<TSF_EXT_ID> has invalid destination information.

Transfer destination is not valid.

TSF_DEST

Transfer:<TSF_EXT_ID> is not a valid store transfer.

Transfer is not valid store transfer that is, both source and destination is not a store.

TSF_SRC_TYPE

TSF_DEST_TYPE

Transfer:<TSF_EXT_ID> has invalid status information.

Transfer Status is null or not valid value.

TSF_STATUS

Transfer:<TSF_EXT_ID> has source identifier which does not match the existing data.

Transfer source identifier does not match to the existing transfer transaction on SIOCS.

TSF_SRC

Transfer:<TSF_EXT_ID> has destination identifier which does not match the existing data.

Transfer destination identifier does not match to the existing transfer transaction on SIOCS.

TSF_DEST

Transfer:<TSF_EXT_ID> has status which does not match the existing data.

Transfer status does not match to the existing transaction state on SIOCS.

TSF_STATUS

Transfer:<TSF_EXT_ID> is already approved and use available flag value doesn't match existing data.

Use available flag is changed for the existing approved transfer transaction.

TSF_USE_AVAILABLE

Transfer:<TSF_EXT_ID> has no source type information.

Transfer source type is either null or an invalid value.

TSF_SRC_TYPE

Transfer:<TSF_EXT_ID> has no destination type information.

Transfer destination type is either null or an invalid value.

TSF_DEST_TYPE

Transfer:<TSF_EXT_ID> Item:<ITEM_ID> is not ranged for source.

Item is not ranged for the source.

TSF_LINE_ITEM

TSF_SRC

Transfer:<TSF_EXT_ID> Item:<ITEM_ID> is not ranged for destination.

Item is not ranged for the destination.

TSF_LINE_ITEM

TSF_DEST


Table L-7 3. Allocation

Error Cause Data Column with Error

Allocation:<TSF_ALLOCATION_ID> has source information which does not match existing data.

Allocation source is not valid for the existing transaction.

TSF_SRC

Allocation:<TSF_ALLOCATION_ID> has invalid source information.

Allocation source is either null or not a valid value.

TSF_SRC

Allocation:<TSF_ALLOCATION_ID> has invalid destination information.

Allocation destination is either null or not a valid value.

TSF_DEST

Allocation:<TSF_ALLOCATION_ID> Item:<ITEM_ID> is not ranged for source.

Item is not ranged to the allocation source.

TSF_LINE_ITEM

TSF_SRC

Allocation:<TSF_ALLOCATION_ID> Item:<ITEM_ID> is not ranged for destination.

Item is not ranged to the allocation destination.

TSF_LINE_ITEM

TSF_DEST

Allocation:<TSF_ALLOCATION_ID> has invalid status code.

Allocation status is not valid.

TSF_STATUS

Allocation:<TSF_ALLOCATION_ID> has status which does not match the existing data.

Allocation status does not match to the existing transaction status.

TSF_STATUS

Allocation:<TSF_ALLOCATION_ID> has no expected quantity.

Allocation quantity is null.

TSF_LINE_EXPECTED


Table L-8 4. Direct Store Delivery (DSD)

Error Cause Data Column with Error

DSD ASN is null.

DSD ASN is null.

DSD_ASN

DSD:<ASN> has invalid store identifier.

Store identifier is either null or not a valid store.

DSD_STORE

DSD:<ASN> has invalid supplier identifier.

Supplier identifier is either null or not a valid supplier.

DSD_SUPPLIER

DSD:<ASN> has invalid status code.

Delivery status is either null or not a valid status value.

DSD_STATUS

DSD:<ASN> has invalid carrier type code.

Specified Carrier Type value is not valid.

DSD_CARRIER_TYPE

DSD:<ASN> has store identifier which doesn't matches to existing delivery.

Store identifier does not match to the existing delivery transaction.

DSD_STORE

DSD:<ASN> has supplier identifier which doesn't matches to existing delivery.

Supplier identifier does not match to the existing delivery transaction.

DSD_SUPPLIER

DSD:<ASN> has invalid status code for existing delivery.

Status code is either null or an invalid value for an existing delivery.

DSD_STATUS

DSD:<ASN> has status which does not match the existing data.

Status code does not match the current status of the existing delivery transaction.

DSD_STATUS

DSD:<ASN> is in <DELV_STATUS> status and has one or more container in open state.

Delivery is currently in received status however few container records are in open state on import data.

DSD_STATUS

DSD_CARTON_STATUS

DSD:<ASN> is in <DELV_STATUS> status and has one or more container in open or completed state.

Delivery is in cancel/rejected status however few of the containers on delivery are either completed or open.

DSD_STATUS

DSD_CARTON_STATUS

DSD:<ASN> Container Identifier is null or invalid.

Container identifier is either null or an invalid value.

DSD_CARTON_EXT_ID

DSD Container:<CARTON_EXT_ID> has invalid status code.

Container status is either null or invalid value for status.

DSD_CARTON_STATUS

DSD Container:<CARTON_EXT_ID> has invalid store identifier.

Container store is either null or not a valid store.

DSD_CARTON_STORE

DSD Container:<CARTON_EXT_ID> has store identifier which doesn't match to delivery information.

Container store does not match the delivery store identifier.

DSD_CARTON_STORE

DSD_STORE

DSD Container:<CARTON_EXT_ID> has store identifier which doesn't matches to existing carton.

Container store does not match to the store identifier for an existing container.

DSD_CARTON_STORE

DSD Container:<CARTON_EXT_ID> has invalid status code.

Container status value is either null or not a valid status value.

DSD_CARTON_STATUS

DSD Container:<CARTON_EXT_ID> has status which does not match the existing data.

Container status does not match the status of existing container.

DSD_CARTON_STATUS

DSD Container:<CARTON_EXT_ID> has invalid order related code.

Order Related flag has an invalid code.

DSD_CARTON_CUST_ORD_RELATED

DSD Line Item:<ITEM_ID> is not ranged for store.

Item is not ranged to the store.

DSD_LINE_ITEM

DSD_LINE_STORE

DSD Line Item:<ITEM_ID> is not ranged for supplier.

Item is not ranged to the supplier.

DSD_LINE_ITEM

DSD_SUPPLIER

DSD Line Item:<ITEM_ID> has invalid store identifier.

Store identifier for line item is either null or not a valid store.

DSD_LINE_ITEM

DSD_LINE_STORE

DSD Line Item:<ITEM_ID> has store identifier which does not match to carton information.

Store identifier for line item does not match to the container store identifier.

DSD_LINE_STORE

DSD_CARTON_STORE

DSD Line Item:<ITEM_ID> has invalid purchase order identifier.

Purchase Order external identifier for line item is not valid.

DSD_LINE_PO_EXT_ID

DSD Line Item:<ITEM_ID> has store identifier which does not match to existing line item information.

Store identifier for line item does not match the store identifier for an existing line item.

DSD_LINE_STORE

DSD Adjustment Item:<ITEM_ID> is not ranged for store.

Adjustment Item is not ranged to the store.

DSD_ADJ_ITEM

DSD_STORE

DSD Adjustment Item:<ITEM_ID> is not ranged for supplier.

Adjustment Item is not ranged to the supplier.

DSD_ADJ_ITEM

DSD_SUPPLIER

DSD Adjustment Item:<ITEM_ID> has invalid purchase order external identifier.

Adjustment Item has an invalid purchase order identifier.

DSD_ADJ_PO_EXT_ID

DSD Adjustment Item:<ITEM_ID> has invalid adjustment date.

Adjustment data is set to null.

DSD_ADJ_DATE

DSD Adjustment Item:<ITEM_ID> has invalid adjustment quantity.

Adjustment quantity is not specified.

DSD_ADJ_QUANTITY


Additional Details for BDI CLI File Imports

This section is only applicable if you choose to use BDI CLI File Transmitter to transport the data file. You may skip this section if you choose BDI External Process Flow for data transportation.

Transaction Interface Specifications

DSD Interface Specification

Name Type Optional (Null?) Description
BDI_DATASET_ACTION VARCHAR2(20) No The required record action type, valid values are: REPLACE
DSD_ASN VARCHAR2(128) No The advanced shipping notification identifier that is associated with the direct delivery.
DSD_STORE NUMBER(10,0) Yes The unique identifier of the store that this direct delivery is for.
DSD_SUPPLIER NUMBER(10,0) Yes The unique identifier of the supplier that shipped the items.
DSD_STATUS NUMBER(4,0) Yes The current status of the direct delivery. The valid values: 0 - New, 1 - In Progress, 2 - Received, 3 - Canceled, 4 - Rejected, 9999 - Active.
DSD_EXPECTED_DATE TIMESTAMP(6) Yes The expected date of the delivery.
DSD_CREATE_DATE TIMESTAMP(6) Yes The date the direct delivery record was created.
DSD_UPDATE_DATE TIMESTAMP(6) Yes The date the direct delivery was last updated.
DSD_RECEIVED_DATE TIMESTAMP(6) Yes The received date of the Delivery.
DSD_INVOICE VARCHAR2(128) Yes The unique identifier of the invoice that this direct delivery is associated to, as entered by the user.
DSD_INVOICE_DATE TIMESTAMP(6) Yes The date of the invoice as entered by the user.
DSD_CREATE_USER VARCHAR2(128) Yes The user who created the Delivery.
DSD_CUST_ORD_ID VARCHAR2(128) Yes The customer order identifier.
DSD_FUL_ORD_EXT_ID VARCHAR2(128) Yes The fulfillment order external identifier.
DSD_CARRIER_ENTITY VARCHAR2(128) Yes The carrier name.
DSD_CARRIER_TYPE NUMBER(2,0) Yes Indicate carrier type, 0 - Corporate, 1 - Third Party
DSD_CARRIER_CODE VARCHAR2(4) Yes Unique code identifier for a carrier.
DSD_COUNTRY_CODE VARCHAR2(3) Yes The Country code.
DSD_SOURCE_ADDRESS VARCHAR2(1000 ) Yes The address of source sending delivery.
DSD_LICENSE_PLATE VARCHAR2(128) Yes The license plate.
DSD_FREIGHT_ID VARCHAR2(128) Yes The freight identifier.
DSD_CURRENCY_CODE VARCHAR2(3) Yes The currency code.
DSD_INVOICE_COST NUMBER(12,4) Yes The invoice cost value.
DSD_RECEIVED_USER VARCHAR2(128) Yes The user who received the delivery.
DSD_UPDATE_USER VARCHAR2(128) Yes The user who last updated the delivery.
DSD_BOL_EXT_ID VARCHAR2(128) Yes The Delivery Bill Of Lading from external system or entered by SIM user.
DSD_ADJ_PO_EXT_ID VARCHAR2(128) Yes The purchase order external identifier.
DSD_ADJ_ITEM VARCHAR2(25) Yes The receiver unit adjustment item identifier.
DSD_ADJ_DATE TIMESTAMP(6) Yes The receiver unit adjustment date.
DSD_ADJ_QUANTITY NUMBER(20,4) Yes The receiver unit adjustment quantity.
DSD_CARTON_EXT_ID VARCHAR2(128) Yes The unique external identifier of the container.
DSD_CARTON_STATUS NUMBER(4,0) Yes Container status. valid values- 1 - New, 2 - In Progress, 3 - Submitted, 4 - Received, 5 - Damaged, 6 - Missing, 7 - Canceled
DSD_CARTON_STORE NUMBER(10,0) Yes The unique store identifier to which container is associated to.
DSD_CARTON_REFERENCE_ID VARCHAR2(128) Yes The reference identifier.
DSD_CARTON_DAMAGED_REASON VARCHAR2(128) Yes The reason for container damage.
DSD_CARTON_SERIAL_CODE NUMBER(18,0) Yes The serial code.
DSD_CARTON_TRACKING_NUMBER VARCHAR2(128) Yes The Tracking number for the container.
DSD_CARTON_DAMAGE_REMAINING VARCHAR2(1) Yes Indicates all remaining quantities should be damaged on final receipt.
DSD_CARTON_CREATE_USER VARCHAR2(128) Yes The user who created the direct delivery container.
DSD_CARTON_UPDATE_USER VARCHAR2(128) Yes The user who last updated the direct delivery container.
DSD_CARTON_RECEIVE_USER VARCHAR2(128) Yes The user who received the direct delivery container.
DSD_CARTON_CREATE_DATE TIMESTAMP(6) Yes The date when the direct delivery container was created.
DSD_CARTON_UPDATE_DATE TIMESTAMP(6) Yes The date when the direct delivery container was updated.
DSD_CARTON_RECEIVE_DATE TIMESTAMP(6) Yes The date when the direct delivery container was received.
DSD_CARTON_UIN_REQUIRED VARCHAR2(1) Yes Indicates whether the container has uin items. Valid values: Y or N.
DSD_CARTON_RCV_AT_SHOP_FLOOR VARCHAR2(1) Yes Indicates whether the inventory on container is to be received at shop floor. Valid values: Y or N.
DSD_CARTON_QUALITY_CONTROL VARCHAR2(1) Yes Used to flag containers that require detailed receiving.
DSD_CARTON_EXTERNAL_CREATE VARCHAR2(1) Yes Indicates whether the delivery is external created. Valid values: Y or N.
DSD_CARTON_ADJUSTED VARCHAR2(1) Yes Indicates whether the delivery is adjusted. Valid values: Y or N.
DSD_CARTON_CUST_ORD_RELATED VNUMBER(4,0) Yes Indicates if container contains customer order items. 1 - Yes, 2 - Mix, 3 - No
DSD_LINE_ITEM VARCHAR2(25) Yes The unique identifier of the item that is contained in this container.
DSD_LINE_CASE_SIZE NUMBER(10,2) Yes The number of units in the case that this item was shipped in.
DSD_LINE_EXPECTED NUMBER(20,4) Yes The total number of units expected in this direct delivery.
DSD_LINE_RECEIVED NUMBER(20,4) Yes The total number of units received in this direct delivery.
DSD_LINE_DAMAGED NUMBER(20,4) Yes The total number of units that were damaged when the direct delivery was received.
DSD_LINE_UNIT_COST_CURR VARCHAR2(3) Yes The unit cost currency code for the line item.
DSD_LINE_UNIT_COST_VAL NUMBER(12,4) Yes The unit cost value for the line item.
DSD_LINE_OVRD_UNIT_COST_CURR VARCHAR2(3) Yes The override unit cost currency.
DSD_LINE_OVRD_UNIT_COST_VAL NUMBER(12,4) Yes The override unit cost value.
DSD_LINE_STORE NUMBER(10,0) Yes The store identifier.
DSD_LINE_PO_EXT_ID VARCHAR2(128) Yes The purchase order external identifier.
DSD_LINE_CUST_ORD_ID VARCHAR2(128) Yes The customer order identifier.
DSD_LINE_FUL_ORD_EXT_ID VARCHAR2(128) Yes The fulfillment order external identifier.
DSD_LINE_VPN VARCHAR2(256) Yes The vendor product number.
DSD_LINE_RECEIVED_OVER NUMBER(20,4) Yes Amount of received inventory over the expected quantities.
DSD_LINE_DAMAGED_OVER NUMBER(20,4) Yes Amount of damaged inventory over the expected quantities.
DSD_LINE_PREV_RECEIVED NUMBER(20,4) Yes Units previous received when container is reopened for adjustment.
DSD_LINE_PREV_DAMAGED NUMBER(20,4) Yes Units previous received as damaged when container is reopened for adjustment.

DSD Sample Data File

Comma Delimited File with fields defined (see Interface Definitions)

"REPLACE","ASN-EXT_PO_0",4241,770,1,,2022-04-15 11:00:00.000000000,2022-04-15 11:00:00.000000000,,"",,"SIM","","","",,"","US","","","","USD",,"","SIM","","EXT_PO_0","100050005",2022-04-15 11:00:00.000000000,20,"",,,"","",,"","","","","",,,,"","","","","",,"",,,,,"",,"",,,"","","","",,,,

Purchase Order Interface Specification

Purchase Order Sample File

Comma Delimited File with fields defined (see Interface Definitions)

"REPLACE","EXT_PO_1",4241,"55",1,2022-04-07 11:00:00.000000000,2022-04-07 11:00:00.000000000,2022-04-07 11:00:00.000000000, ,"TEST_USER","test1","CO0","FOE0",3,"100750010","US",1,10,0,"USD",10,"EA","N"

Transfer Interface Specification

Name Type Optional (Nullable) Description
BDI_DATASET_ACTION VARCHAR2(20) No The required record action type, valid values are: REPLACE.
TSF_DOC_TYPE VARCHAR2(2 BYTE) No The type of the document type. valid values: T - Transfer, A - Transfer Allocation.
TSF_EXT_ID VARCHAR2(128 BYTE) No The external identifier of transfer/transfer allocation.
TSF_SRC_TYPE NUMBER(2,0) Yes Source location type for transfer/transfer allocation. 1- Store, 3 Warehouse, 4 - Finisher
TSF_SRC NUMBER(10,0) Yes The identifier of the source that will send the items on the transfer / Transfer Allocation.
TSF_DEST_TYPE NUMBER(2,0) Yes Destination location type for the transfer. 1- Store, 3 Warehouse, 4 - Finisher
TSF_DEST NUMBER(10,0) Yes The identifier of the destination that will receive the items on the transfer.
TSF_STATUS NUMBER(2,0) Yes The status of transfer/transfer_allocation. Valid Transfer Allocation Status: 1 - Approved,2 - Completed, 3 - Canceled. Transfer Status: 1 - New Request, 2 - Requested, 3 - Request In-Progress, 4 - Rejected Request, 5 - Canceled Request, 6-Transfer In-Progress, 7 - Approved, 8 - In-Shipping, 9 - Completed Transfer, 10 - Canceled Transfer.
TSF_CREATE_USER VARCHAR2(128 BYTE) Yes A person who created a transfer.
TSF_UPDATE_USER VARCHAR2(128 BYTE) Yes The last user to update the transfer.
TSF_APPROVAL_USER VARCHAR2(128 BYTE) Yes The user that approved the transfer.
TSF_CREATE_DATE TIMESTAMP(6) Yes The original or create date of a transfer.
TSF_UPDATE_DATE TIMESTAMP(6) Yes The date the transfer was last updated.
TSF_APPROVAL_DATE TIMESTAMP(6) Yes The date the transfer was approved.
TSF_CONTEXT_ID NUMBER(18,0) Yes The context identifier for Transfer / Transfer Allocation.
TSF_CONTEXT_VALUE VARCHAR2(25 BYTE) Yes This field holds value for Transfer / Transfer Allocation relating to the context type, for example promotion number.
TSF_CUST_ORD_ID VARCHAR2(128 BYTE) Yes Customer order external identifier for transfer.
TSF_FUL_ORD_EXT_ID VARCHAR2(128 BYTE) Yes Fulfillment order external identifier for transfer.
TSF_PARTIAL_DELIVERY_IND VARCHAR2(1 BYTE) Yes Indicate if partial delivery is allowed in transfer.
TSF_AUTH_CODE VARCHAR2(12 BYTE) Yes Authorization code for the transfer.
TSF_NOT_AFTER_DATE TIMESTAMP(6) Yes Date after which the transfer is not valid.
TSF_REQUEST_DATE TIMESTAMP(6) Yes Request date of the transfer.
TSF_REQUEST_USER VARCHAR2(128 BYTE) Yes The user that requested the transfer.
TSF_USE_AVAILABLE VARCHAR2(1 BYTE) Yes Indicates if the transfer is for unavailable stock.
TSF_DELV_SLOT_ID VARCHAR2(15 BYTE) Yes Delivery time slot id for allocation.
TSF_DELIVERY_DATE TIMESTAMP(6) Yes The date that the allocation is expected to be delivered from the warehouse.
TSF_LINE_ITEM VARCHAR2(25 BYTE) Yes The identifier of the item that this allocation/transfer is for.
TSF_LINE_DIST_PARENT_ID VARCHAR2(25 BYTE) Yes A unique identifier of the parent transfer document that is associated to this allocation.
TSF_LINE_CASE_SIZE NUMBER(10,2) Yes The size of the transfer item pack.
TSF_LINE_EXPECTED NUMBER(20,4) Yes The total number of units expected for this allocation.
TSF_LINE_RECEIVED NUMBER(20,4) Yes The total number of units received for this allocation/transfer.
TSF_LINE_DAMAGED NUMBER(20,4) Yes The total number of units that were damaged for this allocation/transfer.
TSF_LINE_REQUESTED NUMBER(20,4) Yes Requested quantity for the transfer.
TSF_LINE_APPROVED NUMBER(20,4) Yes Approved quantity for the transfer.
TSF_LINE_SHIPPING NUMBER(20,4) Yes Shipping quantity for the transfer.
TSF_LINE_SHIPPED NUMBER(20,4) Yes Shipped quantity for the transfer.
TSF_LINE_PREFERRED_UOM VARCHAR2(4 BYTE) Yes Preferred unit of measure of the transfer line item.

Transfer Sample File

Comma Delimited File with fields defined (see Interface Definitions)

"REPLACE","T","EXT_TSF_1",1,4241,1,5251,1,"TEST_USER","TEST_USER","TEST_USER",2022-04-07 11:00:00.000000000,2022-04-07 11:00:00.000000000,2022-04-07 11:00:00.000000000,1,"PROM_TSF","CO1","FOE1","Y","AUTH_1234",2022-04-07 11:00:00.000000000,2022-04-07 11:00:00.000000000,"TEST_USER","Y","",,"100050005","",1,,0,0,100,100,0,0,"EA"

Setup BDI CLI File Transmitter Tool

This section describes steps to install the BDI Transmitter CLI for 64-bit Linux, using an archive binary file (.zip), the configurations include the Open Transaction Modules from external systems.

For additional BDI CLI Transmitter CLI overview and usages, see RICS documentation:

Oracle® Retail Bulk Data Integration Cloud Service Implementation Guide

  1. Download CLI Transmitter

    Download the BdiCliTransmitter<version>ForAll<version>Apps_eng_ga.zip.

    The archive binary can be installed in any location that you can write to.

  2. Set CLI tool installation directory

    Change directory to the location where you would like transmitter to be installed. Move the .zip archive binary to the current directory.

  3. Unpack the transmitter

    Unpack the zip and install the Transmitter.

    unzip BdiCliTransmitter<version>ForAll<version>Apps_eng_ga.zip

    You may delete the .zip file if you want to save disk space.

  4. Modify bdi-file-transmitter.properties:

    ….source.system.name=EXTsim.receiver.url=https://<ext-lb> /sim-batch-job-admin/resources/receiversim.receiver.url.useralias=simReceiverUrlUserAlias#list of interface modules#interfaceModules=ExtPurchOrder_Tx, ExtDsd_Tx,ExtTsf_TxinterfaceModules=ExtPurchOrder_Tx#list of interface namesExtPurchOrder_Tx.receiver.appname=simExtPurchOrder_Tx.dataset.type=PARTIALExtPurchOrder_Tx.interfaceShortNames=Ext_Purch_OrderExtPurchOrder_Tx.Ext_Purch_Order.input.filepath= /data-files/po#ExtDsd_Tx.receiver.appname=sim #ExtDsd_Tx.dataset.type=PARTIAL #ExtDsd_Tx.interfaceShortNames=Ext_Dsd#ExtDsd_Tx.Ext_Dsd.input.filepath=/data-files/dsd#ExtTsf_Tx.receiver.appname=sim #ExtTsf_Tx.dataset.type=PARTIAL #ExtTsf_Tx.interfaceShortNames=Ext_Tsf#ExtTsf_Tx.Ext_Tsf.input.filepath=/data-files/tsf

    (Notes: Based on your integration need, you can uncomment out the modules you want to seed into receiver app).

  5. Set JAVA_HOME environment variable

    For example,

    export JAVA_HOME=/vol.rtk/java/oracle_linux/jdk1.8.0_66.64bit

  6. Setup credential

    $ ./bdi-file-transmitter.sh -setup-credentials

    On prompt, enter receiver user

    Where the receiver is assigned BdiEdgeSimJobOperatorGroup in IDCS), for example, simbdioperator

    (Notes: if you add a new module or modify the transmitter properties, you need to run ./ bdi-file-transmitter.sh -setup-credentials)

  7. Get Interface Metadata

    $ ./bdi-file-transmitter.sh -get-interface-metadata sim

    (Notes: to verify the Module>_metadata.json generated correctly, please check the contents of the metadata json file contains the interface table definition, which is located at <bdi-cli-transmitter>/conf/meta-data/sim

    If the metadata json contains empty columns for specific interfaces, inspect the interface names in the returned <module>_metadata.json file to see if there is an empty space. If there is an empty space, then you need to remove the empty space in bdi-file-transmitter.properties, and then bounce the sim-bdi server to remove the metadata cache, and then re-execute the get metadata step)

Run BDI CLI File Transmitter

  1. Place the data file into the location listed in the bdi-file-transmitter.properties

  2. Run transmitter as below:

    $ ./bdi-file-transmitter.sh -m <interfaceModuleName>

    For example:

    $ ./bdi-file-transmitter.sh -m ExtPurchOrder_Tx

  3. Review the Receiver log

    Login to BDI sim-batch-job-admin console -> navigate to System Logs -> Find the Receiver Log (for example, <sourceSyste>_ExtPurchseOrder_Tx_ReceiverService-bdi-server-system.log)

    Note down the source data set id (you will need the data set id later in Importer Job step).

Figure L-1 Source Data Set

Source Data Set

Run Importer Job

To run the importer job, follow these steps:

Once the BDI process is completed, you can load data from EICS inbound stage tables into the application tables.

To load stage data to application tables:

From Main Menu, navigate to Admin/Technical Maintenance/Job Admin.

The job would be available for the Admin user who is authorized to access/run the Data Seeding batch processes via EICS user interface. User will need to navigate to following screen to access and run these batch processes.

  1. Login to EICS via browser

  2. On Navigation menu select Admin/ Technical Maintenance/Job Admin/Data Seed.

    User will be taken to Data Seed screen.

  3. Select the desired Importer job from drop down list:

    The supported BDI Open Transaction Imports are:

    • Third Party Purchase Order Import

    • Third Party Transfer Import

    • Third Party Vendor Delivery Import

  4. Enter the data set identifier.


    Note:

    The data set id is required if importer data is not coming from BDI Process Flow. When importer data is coming from BDI CLI tool, user would need to find the dataset id for running the importer. The receiver source data set id can be identified via BDI SIM Job admin log.

  5. Click on Start Job.

  6. View Importer Job Execution:

    Login SIOCS JET UI, navigate to Job Admin screen

    By default, the job admin screen lists the failed job execution. To view the completed importer job, you may need to filter the job status by selecting the job status.

    To view job execution details, user can click on the job execution link and navigate to the detail screen to see the exact reason of failure.