Go to primary content
Oracle® Retail Merchandising Foundation Cloud Service Operations Guide Volume 2 - Message Publication and Subscription Designs
Release 16.0.028
E97817-01
  Go To Table Of Contents
Contents

Previous
Previous
 
Next
Next
 

4 SOAP Web Service Provider Implementation

This chapter gives an overview about the SOAP Web service provider implementation API designs used in the RMS environment and various functional attributes used in the APIs.


Note:

The following service provider implementation API designs are intended only to give a high level overview of the APIs available.

The implementation of these services, along with the associated Web Service Definition Language (WSDL), may be used to get a full understanding of the data requirements, validation rules, persistence rules, and return values associated with the service.


Supplier Service API

This section describes the supplier service.

Functional Area

Foundation Data

Business Overview

RMS subscribes supplier information from external financial applications via this Web service. The Supplier Service Provider is used by external financial systems to send RMS the supplier information that includes supplier addresses, CFAS data and the operating unit. The header record contains information about the supplier as a whole. The address records identify the addresses associated with the supplier and the operating unit records specify the operating units associated with the supplier.

Package Impact

This public package is called by the supplier Web service to send supplier information to RMS.

Filename: rmsaiasub_suppwebss/b.pls

Public API Procedures

SupplierServiceProviderImpl.createSupplierDesc
(I_serviceoperationcontext  IN   "RIB_ServiceOpContext_REC",
 I_businessobject           IN   "RIB_SupplierDesc_REC",
 O_serviceoperationstatus   OUT  "RIB_ServiceOpStatus_REC",
 O_businessobject           OUT  "RIB_SupplierRef_REC") 

This procedure populates the first record of "RIB_SupplierColDesc_REC" and passes the record to the function RMSAIASUB_SUPPLIER.CONSUME() with a message type of 'suppadd'. The procedure RMSAIA_LIB.BUILD_SERVICE_OP_STATUS() is used to return status to the calling Web service. If there is any error then the O_error_message from consume will be assigned to the RIB_OBJECT O_serviceOperationStatus as per the signature of the new RIB_OBJECT.

SupplierServiceProviderImpl.updateSupplierDesc
(I_serviceoperationcontext  IN   "RIB_ServiceOpContext_REC",
 I_businessobject           IN   "RIB_SupplierDesc_REC",
 O_serviceoperationstatus   OUT  "RIB_ServiceOpStatus_REC",
 O_businessobject           OUT  "RIB_SupplierDesc_REC")

This procedure populates the first record of "RIB_SupplierColDesc_REC" and passes the record to the function RMSAIASUB_SUPPLIER.CONSUME() with a message type of 'suppmod'. The procedure RMSAIA_LIB.BUILD_SERVICE_OP_STATUS() is used to return status to the calling Web service. If there is any error then the O_error_message from consume will be assigned to the RIB_OBJECT O_serviceOperationStatus as per the signature of the new RIB_OBJECT.

The following procedures are part of the package, but are not supported by RMS. When called by the Web service, these procedures will return without further processing with an error message "This webservice is not supported now". These procedures are:

  • "SupplierServiceProviderImpl.createSupSiteUsingSupplierDesc()

  • "SupplierServiceProviderImpl.updateSupSiteUsingSupplierDesc()

  • "updateSupSiteAddrUsingSupplier()

  • "updateSupSiteOrgUnitUsingSuppl()

  • "updateSupSiteUsingSupplierDesc()

  • "createSupSiteAddrUsingSupplier()

  • "createSupSiteUsingSupplierDesc()

  • "findSupplierDesc()

  • "deleteSupplierDesc()

  • "findSupplierColDesc()

  • "deleteSupplierColDesc()

SupplierServiceProviderImpl.updateSupplierColDesc
(I_serviceOperationContext IN      "RIB_ServiceOpContext_REC",
 I_businessObject          IN      "RIB_SupplierColDesc_REC",
 O_serviceOperationStatus     OUT  "RIB_ServiceOpStatus_REC",
 O_businessObject             OUT  "RIB_SupplierColDesc_REC")

This procedure passes the record to the function RMSAIASUB_SUPPLIER.CONSUME() with message type as "suppmod". The procedure RMSAIA_LIB.BUILD_SERVICE_OP_STATUS() is used to return status to the calling Web service.

SupplierServiceProviderImpl.createSupplierColDesc
(I_serviceoperationcontext    IN   "RIB_ServiceOpContext_REC",
 I_businessobject             IN   "RIB_SupplierColDesc_REC",
 O_serviceoperationstatus     OUT  "RIB_ServiceOpStatus_REC",
 O_businessobject             OUT  "RIB_SupplierColRef_REC")

This procedure passes the record to the function RMSAIASUB_SUPPLIER.CONSUME() with message type as "suppadd". The procedure RMSAIA_LIB.BUILD_SERVICE_OP_STATUS() is used to return status to the calling Web service.

Private Internal Functions and Procedures (rmsaiasub_supplierb/s.pls)

This is the main consume function:

RMSAIASUB_SUPPLIER.CONSUME
                                  (O_status_code        IN OUT   VARCHAR2,
                  O_error_message      IN OUT   RTK_ERRORS.RTK_TEXT%TYPE,
                  O_outputobject       IN OUT   "RIB_SupplierColRef_REC",
                  I_inputobject        IN       "RIB_SupplierColDesc_REC",
                  I_inputobject_type   IN       VARCHAR2)

This procedure is called by the package SupplierServiceProviderImpl to consume supplier information coming from the Financial System via the Web service. It then validates the data and persists it to the RMS Supplier tables. It does most of the validation through the RMSAIASUB_SUPPLIER_VALIDATE.PROCESS_SUPPLIER_RECORD() function, which utilizes the internal functions VALIDATE_RECORD() and POPULATE_RECORD. After the validation checks the data, the RMSAIASUB_SUPPLIER_SQL.PERSIST() is called to update the RMS supplier maintenance tables.

The function RMSAIASUB_SUPPLIER_CFA.CONSUME is called to subscribe the CFAS information.

Private Internal Functions and Procedures (rmsaiasub_supplier_valb/s.pls)

RMSSUB_SUPPLIER_VAL.PROCESS_SUPPLIER_RECORD
(O_error_message     IN OUT  RTK_ERRORS.RTK_TEXT%TYPE,
 O_supplier_object   IN OUT  SUPP_REC,
 O_ref_outputobject  IN OUT  "RIB_SupplierColRef_REC",
 I_inputobject       IN      "RIB_SupplierColDesc_REC",
 I_inputobject_type  IN      VARCHAR2)

This function is the main validation function for the supplier Web service interface. It calls various internal functions to verify NULLs, validate codes in the CODE_DETAIL table, or confirm values have the necessary foreign keys in the RMS system. If the validation processes do not fail, the next step is to populate the local record groups to be used later for populating RMS tables.

Private Internal Functions and Procedures (rmsaiasub_supplier_sqlb/s.pls)

RMSAIASUB_SUPPLIER_SQL.PERSIST
(O_error_message      IN OUT   RTK_ERRORS.RTK_TEXT%TYPE,
 I_supplier_record    IN OUT   SUPP_REC)

This function is called from RMSAIASUB_SUPPLIER.CONSUME() to insert into the RMS tables. The following internal functions are utilized:

INSERT_SUPPLIER

This function will insert to the SUPS table is it does not exist yet, and will update the records if it already exists in RMS.

INSERT_SUPPLIER_SITES

This function will insert to the SUPS table is it does not exist yet, and will update the records if it already exists in RMS.

INSERT_ADDRESS

This function will insert to the ADDR table is it does not exist yet, and will update the records if it already exists in RMS.

INSERT_ORG_UNIT

This function will insert to the PARTNER_ORG_UNIT table is it does not exist yet, and will update the records if it already exists in RMS.

Private Internal Functions and Procedures (rmsaiasub_supplier_cfab/s.pls)

RMSAIASUB_SUPPLIER_CFA.CONSUME
                                                   (O_error_message IN OUT RTK_ERRORS.RTK_TEXT%TYPE,
                                        I_inputobject   IN     "RIB_SupplierColDesc_REC",
                                        I_supp_rec      IN     SUPP_REC)

This function is called from RMSAIASUB_SUPPLIER.CONSUME() to insert the CFAS data into CFAS tables. It has the following internal functions:

BUILD_SUPS_CFA_PK

This function will build the key value pairs for supplier.

BUILD_ADDR_CFA_PK

This function will build the key value pairs for supplier address.

CONSUME_ADDR_CFAS

This function will insert CFAS attributes of supplier address into CFAS table.

Design Assumptions

The Web service initially calls the package SupplierServiceProviderImpl that serves as a wrapper for the main consume function RMSAIASUB_SUPPLIER.CONSUME(). The consume function utilizes the packages RMSSUB_SUPPLIER_VAL and RMSAIASUB_SUPPLIER_SQL to process the supplier data consumption.

Table Impact

TABLE SELECT INSERT UPDATE DELETE
SUPS Yes Yes Yes No
ADDR Yes Yes Yes No
SYSTEM_OPTIONS Yes No No No
UNIT_OPTIONS Yes No No No
CODE_DETAIL Yes No No No
PARTNER_ORG_UNIT Yes Yes Yes No
ORG_UNIT Yes No No No
CFA_EXT_ENTITY Yes No No No
CFA_ATTRIB_GROUP_SET Yes No No No
SUPS_CFA_EXT No Yes No No
ADDR_CFA_EXT No Yes No No

Pay Term Service

This section describes the pay term service.

Functional Area

Financial Integration

Business Overview

The Pay Term Service Provider is used by external financial systems to send RMS new and updated payment term information. Header and detail level payment term information is written to the TERMS_HEAD and TERMS_DETAIL tables.

This document describes the Pay Term Web service integration between RMS and an external financial application. In this integration context, RMS acts as the service provider that exposes a Web service to be invoked by an external financial application.

Package Impact

The process flow diagram for Pay Term Service API.

Figure 4-1 Process Flow for Pay Term Service API

process flow for pay term service

Public API Procedures

Filename: rmsaiasub_ptrmwebss/b.pls

Package name: PayTermServiceProviderImpl

createPayTermDesc
(I_serviceOperationContext  IN      "RIB_ServiceOpContext_REC",
        I_businessObject           IN      "RIB_PayTermDesc_REC",
        O_serviceOperationStatus      OUT  "RIB_ServiceOpStatus_REC",
        O_businessObject              OUT  "RIB_PayTermRef_REC")

This procedure corresponds to the 'create' operation of the Pay Term Web service. It calls RMSAIASUB_PAYTERM.CONSUME with a message type of RMSAIASUB_PAYTERM.HDR_ADD to create payment terms in RMS. It returns RMS's pay term ID through output O_businessObject and success or failure status through O_serviceOperationStatus.

createDetailPayTermDesc
(I_serviceOperationContext  IN      "RIB_ServiceOpContext_REC",
        I_businessObject           IN      "RIB_PayTermDesc_REC",
        O_serviceOperationStatus         OUT  "RIB_ServiceOpStatus_REC",
        O_businessObject                 OUT  "RIB_PayTermRef_REC")

This procedure corresponds to the 'createDetail' operation of the Pay Term Web service. It calls RMSAIASUB_PAYTERM.CONSUME with a message type of RMSAIASUB_PAYTERM.DTL_ADD to create payment term details in RMS. It returns RMS's pay term ID through output O_businessObject and success or failure status through O_serviceOperationStatus.

updatePayTermDesc
(I_serviceOperationContext  IN      "RIB_ServiceOpContext_REC",
        I_businessObject           IN      "RIB_PayTermDesc_REC",
        O_serviceOperationStatus      OUT  "RIB_ServiceOpStatus_REC",
        O_businessObject              OUT  "RIB_PayTermDesc_REC")

This procedure corresponds to the 'update' operation of the Pay Term Web service. It calls RMSAIASUB_PAYTERM.CONSUME with a message type of RMSAIASUB_PAYTERM.DTL_UPD to update payment terms in RMS. It returns a "RIB_PayTermDesc_REC' object through output O_businessObject and success or failure status through O_serviceOperationStatus.

updateHeaderPayTermDesc
(I_serviceOperationContext  IN      "RIB_ServiceOpContext_REC",
        I_businessObject           IN      "RIB_PayTermDesc_REC",
        O_serviceOperationStatus      OUT  "RIB_ServiceOpStatus_REC",
        O_businessObject              OUT  "RIB_PayTermDesc_REC")

This procedure corresponds to the 'updateHeader' operation of the Pay Term Web service. It calls RMSAIASUB_PAYTERM.CONSUME with a message type of RMSAIASUB_PAYTERM.HDR_UPD to update header level payment term information in RMS. It returns a "RIB_PayTermDesc_REC' object through output O_businessObject and success or failure status through O_serviceOperationStatus.

updateDetailPayTermDesc
(I_serviceOperationContext  IN      "RIB_ServiceOpContext_REC",
        I_businessObject           IN      "RIB_PayTermDesc_REC",
        O_serviceOperationStatus      OUT  "RIB_ServiceOpStatus_REC",
        O_businessObject              OUT  "RIB_PayTermDesc_REC")

This procedure corresponds to the 'updateDetail' operation of the Pay Term Web service. It calls RMSAIASUB_PAYTERM.CONSUME with a message type of RMSAIASUB_PAYTERM.DTL_UPD to update detail level payment term information in RMS. It returns a "RIB_PayTermDesc_REC' object through output O_businessObject and success or failure status through O_serviceOperationStatus.

Filename: rmsaiasub_ptrms/b.pls

Package name: RMSAIASUB_PAYTERM

CONSUME(O_status_code            OUT  VARCHAR2,
        O_error_message          OUT  VARCHAR2,
        O_rib_paytermref_rec     OUT  "RIB_PayTermRef_REC",
        I_message             IN      "RIB_PayTermDesc_REC",
         I_message_type           IN       VARCHAR2)

This procedure validates the message content in I_message with respect to the message type (I_message_type) and persists payment terms information in RMS's TERMS_HEAD and TERMS_DETAIL tables. It returns RMS's term ID through output O_rib_paytermref_rec.

Filename: rmsaiasub_ptrmvals/b.pls

Package name: RMSAIASUB_PAYTERM_VALIDATE

FUNCTION CHECK_MESSAGE(O_error_message  IN OUT  RTK_ERRORS.RTK_TEXT%TYPE,
                       O_paytermref_rec IN OUT  "RIB_PayTermRef_REC",
                       O_payterm_rec    IN OUT  TERMS_SQL.PAYTERM_REC,
                       I_message        IN      "RIB_PayTermDesc_REC",
                       I_message_type   IN      VARCHAR2)
RETURN BOOLEAN;

This function performs validation on the message content in I_message with respect to the message type (I_message_type). It returns RMS's term ID through output O_rib_paytermref_rec.

Filename: rmsaiasub_ptrmsqls/b.pls

Package name: RMSAIASUB_PAYTERM_SQL

FUNCTION PERSIST(O_error_message     OUT  RTK_ERRORS.RTK_TEXT%TYPE,
                 I_message        IN      TERMS_SQL.PAYTERM_REC,
                 I_message_type   IN      VARCHAR2)
RETURN BOOLEAN;

This function calls TERMS_SQL.MERGE_HEADER and TERMS_SQL.MERGE_DETAIL functions to persist payment terms information to RMS's TERMS_HEAD and TERMS_DETAIL tables.

Filename: termsqls/b.pls

Package name: TERMS_SQL

FUNCTION MERGE_HEADER(O_error_message IN OUT RTK_ERRORS.RTK_TEXT%TYPE,
                      I_paytermrec    IN     PAYTERM_REC)
RETURN BOOLEAN;

This function persists payment terms header level information to RMS's TERMS_HEAD table.

FUNCTION MERGE_DETAIL(O_error_message IN OUT RTK_ERRORS.RTK_TEXT%TYPE,
                      I_paytermrec    IN     PAYTERM_REC)
RETURN BOOLEAN;

This function persists payment terms detail level information to RMS's TERMS_DETAIL table.

Message XSD

Message Types Message Type Description XML Schema Definition (XSD)
paytermcre create payment terms PayTermDesc.xsd, PayTermRef.xsd
paytermmod update payment terms header PayTermDesc.xsd, PayTermRef.xsd
paytermdtlcre create payment terms detail PayTermDesc.xsd, PayTermRef.xsd
paytermdtlmod Update payment terms detail PayTermDesc.xsd, PayTermRef.xsd

Table Impact

TABLE SELECT INSERT UPDATE DELETE
SYSTEM_OPTIONS Yes No No No
TERMS_HEAD Yes Yes Yes No
TERMS_DETAIL Yes Yes Yes No

Customer Order Fulfillment Subscription API

This section describes the customer order fulfillment subscription API.

Functional Area

Customer Order Fulfillment

Business Overview

RMS provides an interface to process Customer Order Fulfillment requests from an external order management system (OMS). If the system option OMS_IND = 'Y', then RMS expects to receive customer orders via this API. If the system option PERSIST_CUSTOMER_DATA_IND = ’N', personal information will not be stored in the customer order table in RMS.

RMS supports two integration methods for processing Customer Order Fulfillment messages from OMS - either through RIB or Web service. At implementation time, clients should decide on either one or the other integration method, but not both. The same core logic is used to validate and persist customer orders to RMS tables.

  • In a RIB implementation, RMS subscribes to Customer Order Fulfillment messages. When a customer order is created, or partially or fully cancelled, the customer order information is sent from the Order Management System (OMS) to the RIB. RMS subscribes to the customer order information as published from the RIB and places the information onto RMS tables.

  • In a Web service implementation, RMS exposes a FulfillOrder Web service to create or cancel a customer order in RMS. OMS will invoke the service with customer order details to place the information on RMS tables.

The Customer Order Fulfillment message staged in the RMS tables will go through a process of validation. Records that pass validation will create new customer order records. If any validation error occurs, transaction will be rolled back and no customer orders will be created.

There are two scenarios where a customer order fulfillment request cannot be created in RMS:

  1. Due to data validation errors (for example, invalid item).

  2. Due to 'No Inventory' - There is not enough inventory available at the source location or item is not ranged or inactive at the source location, or item is not supplied by the supplier (in a PO scenario).

Web Service Deployment

  • Accepts a collection of fulfillment orders as input. If one order fails, the entire service call fails and no order will be created in RMS.

  • RMS returns Failure status as part of the response object in the Web service call if customer orders are not created due to validation errors.

  • RMS returns Success status and a confirmation message of type 'X' as part of the response object if customer orders are not created due to 'No Inventory' or a confirmation message of type 'P' if customer orders are partially created due to insufficient inventory.

RIB Deployment

  • Accepts a single fulfillment order as input to allow RIB's sequencing mechanism to work as designed.

  • RMS returns Failure to the RIB and the message will land in the RIB hospital if a customer order is not created due to validation errors. No confirmation message will be sent.

  • RMS returns Success. In a separate transaction, a confirmation message of type 'X' will be sent to the RIB if a customer order is not created due to 'No Inventory', or a confirmation message of type 'P' will be sent to the RIB if a customer order is partially created due to insufficient inventory. Based on the confirmation message, OMS will take action to source the order from a different location. See Customer Order Fulfillment Confirmation Publication API.

The Customer Order Fulfillment messages contain information such as delivery type, source type and destination type. Based on these, the system should proceed to create a Purchase Order, Transfer or Inventory Reservation. The table below shows the customer order scenarios for the combination of delivery type, source type and destination type.

Scenario # Source Location Fulfillment Location Delivery Type Transaction created
1 Warehouse Store Pickup in Store Virtual WH to Physical Store Transfer + Reservation.

FulfilOrdDesc will contain:

1st leg: source_loc_type = 'WH', fulfill_loc_type = 'S'

2nd leg: source_loc_type = NULL, fulfill_loc_type = 'S'.

2 Warehouse Store Ship to Customer Virtual WH to Physical Store Transfer + Reservation.

FulfilOrdDesc will contain:

1st leg: source_loc_type = 'WH', fulfill_loc_type = 'S'

2nd leg: source_loc_type = NULL, fulfill_loc_type = 'S'.

3 Store A Store B Pickup in Store Physical Store to Physical Store Transfer + Reservation.

FulfilOrdDesc will contain:

1st leg: source_loc_type = 'ST', fulfill_loc_type = 'S'

2nd leg: source_loc_type = NULL, fulfill_loc_type = 'S'.

4 Store A Store B Ship to Customer Physical Store to Physical Store Transfer + Reservation.

FulfilOrdDesc will contain:

1st leg: source_loc_type = 'ST', fulfill_loc_type = 'S'

2nd leg: source_loc_type = NULL, fulfill_loc_type = 'S'.

5 NULL Store Pickup in Store Reservation.

FulfilOrdDesc will contain:

Single-leg: source_loc_type = NULL, fulfill_loc_type = 'S'.

6 NULL Store Ship to Customer Reservation.

FulfilOrdDesc will contain:

Single-leg: source_loc_type = NULL, fulfill_loc_type = 'S'.

7 NULL Warehouse Ship to Customer Virtual WH to Virtual Store Transfer.

FulfilOrdDesc will contain:

Single-leg: source_loc_type = 'WH', fulfill_loc_type = 'V'.

8 Vendor Store Pickup in Store Purchase Order to Physical Store + Reservation.

FulfilOrdDesc will contain:

1st leg: source_loc_type = 'SU', fulfill_loc_type = 'S'

2nd leg: source_loc_type = NULL, fulfill_loc_type = 'S'.

9 Vendor Store Ship to Customer Purchase Order to Physical Store+ Reservation.

FulfilOrdDesc will contain:

1st leg: source_loc_type = 'SU', fulfill_loc_type = 'S'

2nd leg: source_loc_type = NULL, fulfill_loc_type = 'S'.

10 NULL Vendor Ship to Customer Purchase Order to Virtual Store

FulfilOrdDesc will contain:

Single-leg: source_loc_type = 'SU', fulfill_loc_type = 'V'.


The customer order subscription API supports create and cancel operations using the following message types belonging to the 'fulfilord' message family:

  • fulfilordapprdel - used by RMS to cancel customer orders.

  • fulfilordreqdel - used by SIM to request a customer order cancellation. This message type is used only by SIM and is ignored by RMS.

  • fulfilordpocre - used to create purchase orders as a result of customer order fulfillment requests.

  • fulfilordtsfcre - used to create transfers as a result of customer order fulfillment requests.

  • fulfilordstdlvcre - used to perform inventory reservation as a result of customer order fulfillment requests.

In a RIB implementation, once fulfillment create messages are processed in RMS, RMS will publish to the RIB a customer order fulfillment confirmation message with a message type of 'fulfilordcfmcre' via the customer order fulfillment confirmation publishing API, rmsmfm_ordcust. Confirmation messages will only be sent for customer order fulfillment creates requests that result in creating purchase orders and transfers in RMS. It will not be sent for cancel requests, or for customer order fulfillment requests that result in inventory reservation.

  • If a customer order is partially fulfilled, a confirmation message with status 'P' will be sent with details of fulfilled order quantity.

  • If a customer order is not fulfilled at all due to unavailable inventory, a confirmation message with status 'X' will be sent without any details.

In a Web service implementation, confirmation messages will be sent in a collection as part of the response object. In a RIB implementation, separate confirmation messages will be published from RMS in independent transactions.

Package Impact

This section describes the package impact.

Public Interface

Filename: stgsvc_fulfilords/b.pls

This package provides public interfaces (pop_create_tables and pop_cancel_tables) to stage customer order fulfillment create and cancel requests in the collection to interface tables. It also provides a public interface (cleanup_tables) to clear out data in the interface staging tables after processing.

Business Validation Module

Filename: coresvc_fulfilordvals/b.pls

This package contains logic that performs generic validation of customer order fulfillment create and cancel requests in the following interface staging tables:

  • SVC_FULFILORD

  • SVC_FULFILORDDTL

  • SVC_FULFILORDCUST

  • SVC_FULFILORDREF

  • SVC_FULFILORDDTLREF

  • SVC_BRFULFILORDCUST

Subscription Package

Filename: rmssub_fulfilords/b.pls

RMS will subscribe to the customer order fulfillment create or cancel message from the RIB. The RIB message will be parsed and staged into staging tables for initial validation via stgsvc_fulfilord.pop_tables. The coresvc_fulfilordval package will be called to perform generic validation. If no error is encountered during initial validation, transfer, PO, inventory reservation specific validation functions will be invoked to perform further validation and to create customer order transfers, purchase orders, or reserve inventory in RMS. The staging table will be purged at the end of the processing.

The diagram RIB JMS Deployment for Customer Order Fulfillment Requests illustrates this process:

Figure 4-2 RIB JMS Deployment for Customer Order Fulfillment Requests

RIB JMS Deployment for Customer Order Fulfillment Requests

Filename: FulfillOrderServiceProviderImplSpec.pls FulfillOrderServiceProviderImplBody.pls

For a Web service deployment, a new Web service 'FulfillOrder' with two supported operations of 'create' and 'cancel' is available for OMS to send customer order fulfillment create and cancel requests to RMS. The Web services will invoke public interfaces for the Customer Order Fulfillment Create Request (FulfillOrderServiceProviderImp.createFulfilOrdColDesc) and the Customer Order Fulfillment Cancel Request (FulfillOrderServiceProviderImp.cancelFulfilOrdColRef).

These public interfaces calls create and cancel procedures in svcprov_fulfilord to do major processing logic. Similar to a RIB JMS deployment, the messages will be staged, validated, and persisted to RMS using the same core functions. At the end of the processing, the staging tables are purged and a confirmation status is returned.

The diagram Web Service Deployment for Customer Order Fulfillment Requests illustrates this process.

Figure 4-3 Web Service Deployment for Customer Order Fulfillment Requests

Web Service Deployment for Customer Order Fu

Message XSD

Here are the filenames that correspond with each message type. Please consult the RIB documentation for each message type in order to get a detailed picture of the composition of each message.

Message Types Message Type Description XML Schema Definition (XSD)
Fulfilordapprdel Fulfilment Cancel Message FulfilOrdRef.xsd
Fulfilordreqdel Fulfilment Cancel Request Message FulfilOrdRef.xsd
Fulfilordpocre Fulfilment PO Create Message FulfilOrdDesc.xsd
Fulfilordtsfcre Fulfilment Transfer Create Message FulfilOrdDesc.xsd
Fulfilordstdlvcre Fulfilment Store Delivery Create Message FulfilOrdDesc.xsd

Design Assumptions

  1. Customer order fulfillment request cannot be created in RMS for the following scenarios:

    • Customer orders are not created due to any validation error.

    • Customer orders are created in 'X' status due to 'no inventory' (for example, not enough available at the source location, or item not ranged to or active at the source location, or in a PO scenario, item not supplied by the supplier).

  2. Non-stockholding franchise stores cannot part of a customer order, either as a sourcing location or as a fulfillment location.

  3. Only approved, inventoried and sellable items will be published to OMS. Therefore, item types like catch weight, concession, consignment, and transformable sellable items will NOT be published to OMS, and will NOT be supported by this interface. To sell items that can vary by weight, like bananas, through online channels, setup should be done as a regular (non-catch weight) item with a unit cost and standard UOM defined in items of eaches.

  4. It is assumed that customer orders will be captured in the selling UOM in OMS, but that all transactions will be communicated to RMS in standard UOM.

Table Impact

TABLE SELECT INSERT UPDATE DELETE
SVC_FULFILORDREF Yes Yes Yes Yes
SVC_FULFILORDREFDTL Yes Yes Yes Yes
SVC_FULFILORD Yes Yes Yes Yes
SVC_FULFILORDCUST Yes Yes Yes Yes
SVC_FULFILORDDTL Yes Yes Yes Yes
SVC_BRFULFILORDCUST Yes Yes Yes Yes
TSFHEAD Yes Yes Yes No
TSFDETAIL Yes Yes Yes No
ORDCUST Yes Yes No No
ORDCUST_DETAIL Yes Yes Yes No
ORDHEAD Yes Yes Yes Yes
ORDLOC Yes Yes Yes No
ORDSKU Yes Yes No No
ORDSKU_HTS No Yes No No
ORDSKU_HTS_ASSESS No Yes No No
ORDLOC_EXP No Yes Yes No
TSFHEAD Yes Yes Yes No
TSFDETAIL Yes Yes Yes No
TSFHEAD_L10N_EXT No Yes Yes No
ORDCUST_L10N_EXT No Yes Yes No
ORDCUST_PUB_TEMP No Yes No No
ITEM_MASTER Yes No No No
ITEM_LOC_SOH Yes Yes Yes No
ITEM_LOC Yes No No No

Customer Order Item Substitution Service

This section describes the customer order item subscription service.

Functional Area

Customer Orders

Business Overview

When a store is allowed to pick inventory to fulfill a Customer Order, when the inventory of the item ordered does not meet quality standards or is unavailable, then the order indicates that substitutions are allowed for that item. In that case, the store may choose to fulfill the order with a substitute item. If that occurs, SIM has the ability to substitute items on the Customer Order with another predefined Substitute Item.

In such cases, SIM notifies OMS through the SO Status message that an alternative item has been pushed into the order.

Based on the notification from SIM, OMS updates the customer order. OMS notifies RMS with the same details received from SIM so that RMS updates the inventory and customer order details. Based on OMS notification RMS updates the cancelled quantity for the original item and also creates the customer order reservation for the substitute item by updating the customer reserve inventory.

Package Impact

This section describes the package impact.

Package: CustOrdSubstituteServiceProvid

This layer is the entry point for calling the Customer Order Item Substitution webservice. The following operation is available:

createCustOrdSubColDesc (
                      I_serviceOperationContext IN OUT "RIB_ServiceOpContext_REC",
                      I_businessObject          IN  "RIB_CustOrdSubColDesc_REC",
                      O_serviceOperationStatus  OUT "RIB_ServiceOpStatus_REC",
                      O_businessObject          OUT "RIB_InvocationSuccess_REC"
                       )
  • This procedure validates the input service operation context and initializes the output service operation status.

  • Calls CREATE_CO_SUBSTITUTE to process the Customer Order Item Substitution message.

  • Any failures (validation errors) encountered during the processing are passed back into the response object. If there are no failures, success status is returned.

Service Provider Layer

Package: SVCPROV_CUSTORDSUB

This layer, called from Web service wrapper, inserts the input business objects into the staging tables and calls the core business logic to process the request. The following operation is available.

CREATE_CO_SUBSTITUTE (O_serviceOperationStatus IN OUT "RIB_ServiceOpStatus_REC",
                      I_businessObject         IN     "RIB_CustOrdSubColDesc_REC")
  • The count of detail message in the input business object is validated against the collection_size to make sure entire message has been received.

  • The input business object is staged into the staging tables - SVC_CUSTORDSUB and SVC_CUSTORDSUBDTL.

  • Calls the core business layer CREATE_CO_SUBSTITUTE to process the input item substitution request.

  • In case of errors received from the core business logic, the error message from the staging table is retrieved and written to the failure table of the output business object.

  • On successful processing, the processed data from the staging table is deleted.

  • Core Logic Layer

Package: CORESVC_CUSTORDSUB

The layer implements the core business logic for customer order subscription. The following operation is available.

CREATE_CO_SUBSTITUTE (O_error_message IN OUT  RTK_ERRORS.RTK_TEXT%TYPE,
                      I_process_id    IN      SVC_CUSTORDSUB.PROCESS_ID%TYPE,
                      I_chunk_id      IN      SVC_CUSTORDSUB.CHUNK_ID%TYPE)
  • The data in the staging table is validated. The header table svc_custordsub is validated first and if there are no errors in the header data then the detail table svc_custordsubdtl gets validated. In case of errors, all the validation errors are written back to the staging table and the function returns back with error.

  • Post successful validation, the customer order details are updated in ordcust_detail table. The cancelled quantity for the original ordered item is updated. New customer order detail record is created for the substituted item.

  • The customer reserve bucket in item_loc_soh table is updated by making a call to CUSTOMER_RESERVE_SQL to release the reserved quantity for original item and increase the reserve quantity for the substituted item.

  • The status in the staging table is updated to 'C'ompleted to indicate successful processing of the data.

Message XSD

Here are the filenames that correspond with each message type. Please consult the RIB documentation for each message type in order to get detailed information of the composition of each message.

Message Types Message Type Description XML Schema Definition (XSD)
CustOrdSubDesc Customer Order Substitute Message CustOrdSubDesc.xsd
CustOrdSubColDesc Collection of Customer Order Substitute Message CustOrdSubColDesc.xsd

Design Assumptions

  • Substitution logic holds good only for the customer orders fulfilled from stores.

  • Catchweight, Transformable, Consignment, Concession and Deposit container items are not supported for customer order item substitution.

  • The quantities are always in Standard UOM.

Table Impact

TABLE SELECT INSERT UPDATE DELETE
SVC_CUSTORDSUB Yes Yes Yes Yes
SVC_CUSTORDSUBDTL Yes Yes Yes Yes
ORDCUST Yes No No No
ORDCUST_DETAIL Yes Yes Yes No
ITEM_MASTER Yes No No No
DEPS Yes No No No
ITEM_LOC Yes Yes No No
ITEM_LOC_SOH No Yes Yes No
INV_RESV_UPDATE_TEMP No Yes No No

Inventory Detail Lookup Service

This section describes the inventory detail lookup service.

Functional Area

Inventory

Business Overview

This real-time inventory availability lookup facility provided by RMS can be used by external systems, such as an on-line order capture system (OOC) and order management system (OMS), to retrieve item/location inventory based on RMS's view of inventory at a point in time. RMS will provide this information for any warehouse or store which is valid for customer order sourcing/fulfillment via a Web service.

This Web service requires code to abstract the interface logic (service provider layer) from the business processing logic (core layer) and RMS packages will be used by the core layer to perform the actual validations and processing for inventory detail.

Package Impact

This section describes the package impact.

PL/SQL Web Service Wrapper

Package: InventoryDetailServiceProvider

This layer is the entry point for the inventory detail lookup Web service. The following operation is available:

lookupInvAvailCriVo(
              I_serviceOperationContext IN OUT "RIB_ServiceOpContext_REC",
              I_businessObject          IN     "RIB_InvAvailCriVo_REC",
              O_serviceOperationStatus  OUT    "RIB_ServiceOpStatus_REC",
              O_businessObject          OUT    "RIB_InvAvailColDesc_REC")
  • This procedure validates the input service operation context and initializes the output service operation status.

  • Calls GET_INV_DETAIL to get the inventory details for the input message.

  • Any failures (validation errors) encountered during the processing are passed back into the response object. If there are no failures, success status is returned.

Service Provider Layer

Package: SVCPROV_INVAVAIL

This layer calls the core business layer to process the inventory lookup request. The following operation is available.

GET_INV_DETAIL(O_ServiceOperationStatus    IN OUT "RIB_ServiceOpStatus_REC",
               O_business_object           OUT    "RIB_InvAvailColDesc_REC",
               I_business_object           IN     "RIB_InvAvailCriVo_REC")
  • Calls the core business layer CORESVC_INVAVAIL to process the inventory detail lookup request.

  • In case of errors received from the core business logic, the error message is written to the failure table of the output business object.

Core Logic Layer

Package: CORESVC_INVAVAIL

This layer implements the core business logic for inventory detail lookup. The following operation is available.

GET_INV_DETAIL(O_error_message     OUT RTK_ERRORS.RTK_TEXT%TYPE,
                 O_business_object OUT "RIB_InvAvailColDesc_REC",
                 O_error_tbl       OUT SVCPROV_UTILITY.ERROR_TBL,
                 I_business_object IN  "RIB_InvAvailCriVo_REC")
  • The data in the input business object is validated. If validation errors are encountered, this layer returns the errors in a collection.

  • The available inventory is fetched from RMS based on the following:

    • The available quantity is fetched from item_loc_soh as stock_on_hand - SUM of tsf_reserved_qty, customer_resv, rtv_qty and non_sellable_qty.

    • The warehouse inventory for physical warehouse/channel is only taken for customer orderable stockholding virtual warehouse under it.

    • If the inventory detail lookup is for a pack item at store, the pack inventory is estimated based on the maximum number of complete packs which can be created by using all the available inventory of its component. The pack_calculate_ind is set to 'Y' to indicate the pack inventory is estimated.

Message XSD

Below are the filenames that correspond with each message type. Please consult the RIB documentation for each message type in order to get a detailed picture of the composition of each message.

Message Types Message Type Description XML Schema Definition (XSD)
InvDetailCriVo Inventory Detail Lookup Criteria InvAvailCriVo.xsd
InvAvailDesc Inventory Detail response Description InvAvailDesc.xsd
InvAvailColDesc Collection of Inventory Detail Description InvAvailColDesc.xsd

  • Catchweight, Transformable, Consignment, Concession and Deposit container items are not supported for available inventory lookup.

  • This inventory detail lookup is only for customer orderable inventory.

Table Impact

TABLE SELECT INSERT UPDATE DELETE
ITEM_LOC_SOH Yes No No No
ITEM_MASTER Yes No No No
WH Yes No No No
STORE Yes No No No
CHANNELS Yes No No No
DEPS Yes No No No
PACKITEM_BREAKOUT Yes No No No

Inventory Back Order Subscription API

This section describes the inventory back order subscription API.

Functional Area

Inventory

Business Overview

Retailers selling through ecommerce channels often take customer orders even if inventory is not available with the expectation of future inventory being available to fill the order. If an order is captured against future inventory the quantity is placed in 'Backordered' status in the external system and a backorder message is sent to RMS through the backorder web service.

This web service will update the backorder quantity in RMS. An external order management system will send backorder reserve requests to RMS when a customer fulfillment is made and backorder release requests when inventory is made available at the fulfillment location.

Package Impact

This section describes the package impact.

PL/SQL Web Service Wrapper

Package: InventoryBackOrderServiceProvi

This layer is the entry point for calling the BackOrder. The following operation is available:

createInvBackOrdColDesc(
                      I_serviceOperationContext IN OUT "RIB_ServiceOpContext_REC",
                      I_businessObject          IN  "RIB_InvBackOrdColDesc_REC",
                      O_serviceOperationStatus  OUT "RIB_ServiceOpStatus_REC",
                      O_businessObject          OUT "RIB_InvocationSuccess_REC"
                       )
  • This procedure validates the input service operation context and initializes the output service operation status

  • Calls CREATE_BACKORDER to process the Backorder message.

  • Any failures (validation errors) encountered during the processing are passed back into the response object. If there are no failures, success status is returned.

Service Provider Layer

Package: SVCPROV_ INVBACKORD

This layer, called from web service wrapper, inserts the input business objects into the staging tables and calls the core business logic to process the request. The following operation is available.

CREATE_BACKORDER (O_serviceOperationStatus IN OUT "RIB_ServiceOpStatus_REC",
                  I_businessObject         IN     "RIB_InvBackOrdColDesc_REC")

The count of detail records in the input business object is validated against the collection_size to make sure entire message has been received.

  • The input business object is staged into the staging table - SVC_INVBACKORD.

  • Calls the core business layer CREATE_BACKORDER to process the input backorder request.

  • In case of errors received from the core business logic, the error message from the staging table is retrieved and written to the failure table of the output business object.

  • On successful processing, the processed data from the staging table is deleted.

Core Logic Layer

Package: CORESVC_ INVBACKORD

The layer implements the core business logic for backorder subscription. The following operation is available.

CREATE_BACKORDER (O_error_message IN OUT  RTK_ERRORS.RTK_TEXT%TYPE,
                  I_process_id    IN      SVC_CUSTORDSUB.PROCESS_ID%TYPE,
                  I_chunk_id      IN      SVC_CUSTORDSUB.CHUNK_ID%TYPE)
  • The data in the staging table svc_invbackord is validated. In case of errors, all the validation errors are written back to the staging table and the function returns back with error.

  • Post successful validation, the backorder details are updated in the item_loc_soh table. The backorder details are updated for both Stores and Warehouses. In case of warehouses, the corresponding virtual warehouses are fetched and the details are updated accordingly.

  • The customer backorder bucket or pack comp customer backorder bucket in the item_loc_soh table are updated based on the input request item being a regular item or pack item.

  • In the case of a negative quantity (which indicates backorder release) in the input message, the quantity is subtracted from the customer backorder column in item_loc_soh indicating the release of backorder when the quantity is available in the fulfillment location. In this case also, for warehouses, the corresponding virtual warehouses will be identified from which the quantity has to be released.

  • An insert is made into inv_resv_update_temp table for a location which has been backordered for the current day. This table is used by inventory extract to AIP to identify the location for which the inventory feed to AIP should be extracted signifying a change in inventory or back order position.

  • The status in the staging table is updated to 'C'ompleted to indicate successful processing of the data.

Message XSD

Below are the filenames that correspond with each message type. Please consult the RIB documentation for each message type in order to get a detailed picture of the composition of each message.

Message Types Message Type Description XML Schema Definition (XSD)
InvBackOrdColDesc Collection of Inventory Backorder Message InvBackOrdColDesc.xsd

Design Assumptions

Catchweight, Transformable, Consignment, Concession and Deposit container items are not supported for backorder requests.

Tables

TABLE SELECT INSERT UPDATE DELETE
SVC_INVBACKORD Yes Yes Yes Yes
INV_RESV_UPDATE_TEMP Yes Yes No No
STORE Yes No No No
WH Yes No No No
CHANNELS Yes No No No
DEPS Yes No No No
UOM_CLASS Yes No No No
ITEM_MASTER Yes No No No
ITEM_LOC Yes No No No
ITEM_LOC_SOH Yes No Yes No
V_PACKSKU_QTY Yes No No No

Customer Credit Check Web Service

This section describes the customer credit check web service.

Functional Area

Franchise

Business Overview

RMS provides an interface to update the credit_ind for a franchise customer in RMS. A credit check for the franchisee will be performed before a franchisee order can be approved. Credit_ind is a column in WF_CUSTOMER table. It determines whether customer has a good credit. Valid values are 'Y' and 'N'. For each customer_id/customer_group_id combination, the credit_ind should be updated in the WF_CUSTOMER table. RMS supports Web service for processing Customer Credit Check message from external financial application. RMS exposes a 'CustCreditcheckservice' Web service to update the credit_ind. An external financial application will invoke the service with input collection to update the credit_ind in RMS table.

Web Service Deployment

  • Accepts a collection of input parameters. The input is a collection of customer_id, customer_group_id and credit_ind. For each customer_id/customer_group_id combination, the credit_ind should be updated in the WF_CUSTOMER table.

  • RMS returns failure status as part of the response object in the Web service call if credit_ind is not updated due to validation errors.

Package Impact

Filename: CustCreditCheckServiceProviderImplSpec and

CustCreditCheckServiceproviderImplBody

The Web service 'CustomerCreditCheckService' with an operation of 'updateCustCredit' is available for external financial application to send update request for credit_ind to RMS. The Web service invokes the public interface 'CreateCustCreditChkColDesc' (CustCreditCheckServiceProviderImpl.CreateCustCreditChkColDesc).

The input is a collection of customer_id, customer_group_id and credit_ind. For each customer_id/customer_group_id combination, the credit_ind should be updated in the WF_CUSTOMER table. This public interface will call svcprov_context.set_svcprov_context and svcprov_custcreditchk.create_credit_ind to update the credit_ind in WF_CUSTOMER table. The messages are staged, validated and persisted to RMS using the core functions. At the end of the processing, the staging tables are purged and a confirmation status is returned.

The flowchart below illustrates the complete process:

Figure 4-4 Process Flow for Customer Credit Check Web Service

Process Flow for Customer Credit Check Web Service

Design Assumptions

  • Record should be present in WF_CUSTOMER table for the given wf_customer_id and wf_customer_group_id.

  • Credit_ind will not be updated if there is any validation error. Only Approved and transaction level items are valid.

Table Impact

TABLE SELECT INSERT UPDATE DELETE
SVC_CUSTCREDITCHK Yes Yes No No
WF_CUSTOMER Yes No Yes No
WF_CUSTOMER_GROUP Yes No No No

Store Order Subscription API

This section describes the store order subscription API.

Functional Area

Procurement

Business Overview

The Web service provided by RMS is used by external systems, such as SIM to perform the following:

  • Create, Modify, and Delete a Store Order (PO or Transfer) details in RMS.

  • Retrieve Item Sales information for Store and Item.

  • Retrieve Deals information for Store and Item.

  • Retrieve Store Orders (PO or Transfers) for the Store.

  • Retrieve details of Store Order (PO or Transfer).

The Store Order Web service replaces the service interface based on RSL .This Web service requires code to abstract the interface logic (service provider layer) from the business processing logic (core layer), which uses RMS packages to perform the processing for a requested operations.

Package Impact

This section describes the package impact.

PL/SQL Web Service Wrapper

Package: StoreOrderServiceProviderImpl

This layer is the entry point for the Store Order Web service. The following available operations are:

  1. createLocPOTsfDesc( 
                      I_serviceOperationContext IN OUT "RIB_ServiceOpContext_REC",
                      I_businessObject          IN  "RIB_LocPOTsfDesc_REC",
                      O_serviceOperationStatus  OUT "RIB_ServiceOpStatus_REC",
                      O_businessObject          OUT "RIB_LocPOTsfRef_REC")
    
    • This procedure validates the input service operation context and initializes the output service operation status.

    • Calls SVCPROV_STOREORDER.CREATE_LOC_PO_TSF for creating the Store Order (PO or Transfer) details.

    • The generated order number is returned in the O_businessObject.

    • Any failures (validation errors) encountered during the processing are passed back into the ServiceOpStatus response object. If there are no failures, success status is returned through ServiceOpStatus.

  2. deleteLocPOTsfDesc(
                   I_serviceOperationContext  IN OUT  "RIB_ServiceOpContext_REC",
                   I_businessObject           IN     "RIB_LocPOTsfDesc_REC",
                   O_serviceOperationStatus   OUT    "RIB_ServiceOpStatus_REC",
                   O_businessObject           OUT "RIB_InvocationSuccess_REC")
    
    • This procedure validates the input service operation context and initializes the output service operation status.

    • Calls SVCPROV_STOREORDER.DELETE_LOC_PO_TSF for deleting the Store Order (PO or Transfer) details.

    • Any failures (validation errors) encountered during the processing are passed back to the ServiceOpStatus response object. If there are no failures, success status is returned through ServiceOpStatus.

  3. modifyLocPOTsfDesc(
                 I_serviceOperationContext  IN OUT "RIB_ServiceOpContext_REC",
                 I_businessObject           IN     "RIB_LocPOTsfDesc_REC",
                 O_serviceOperationStatus   OUT    "RIB_ServiceOpStatus_REC",
                 O_businessObject           OUT    "RIB_InvocationSuccess_REC")
    
    • This procedure validates the input service operation context and initializes the output service operation status.

    • Calls SVCPROV_STOREORDER.MOD_LOC_PO_TSF for modifying of the Store Order (PO or Transfer) details.

    • Any failures (validation errors) encountered during the processing are passed back into the ServiceOpStatus response object. If there are no failures, success status is returned through ServiceOpStatus.

  4. createDetailLocPOTsfDesc(
                 I_serviceOperationContext  IN OUT "RIB_ServiceOpContext_REC",
                 I_businessObject           IN  "RIB_LocPOTsfDesc_REC",
                 O_serviceOperationStatus   OUT "RIB_ServiceOpStatus_REC",
                 O_businessObject           OUT "RIB_InvocationSuccess_REC")
    
    • This procedure validates the input service operation context and initializes the output service operation status.

    • Calls SVCPROV_STOREORDER.CREATE_LOC_PO_TSF_DETAIL for creating the Store Order (PO or Transfer) details.

    • Any failures (validation errors) encountered during the processing are passed back into the ServiceOpStatus response object. If there are no failures, success status is returned through ServiceOpStatus.

  5. deleteDetailLocPOTsfDesc(
                 I_serviceOperationContext  IN OUT  "RIB_ServiceOpContext_REC",
                 I_businessObject           IN      "RIB_LocPOTsfDesc_REC", 
                 O_serviceOperationStatus   OUT     "RIB_ServiceOpStatus_REC", 
                 O_businessObject           OUT     "RIB_InvocationSuccess_REC")
    
    • This procedure validates the input service operation context and initializes the output service operation status.

    • Calls SVCPROV_STOREORDER. DELETE_LOC_PO_TSF_DETAIL for deleting of Store Order (PO or Transfer) details.

    • Any failures (validation errors) encountered during the processing are passed back into the ServiceOpStatus response object. If there are no failures, success status is returned through ServiceOpStatus.

  6. modifyDetailLocPOTsfDesc(
                 I_serviceOperationContext  IN OUT "RIB_ServiceOpContext_REC",
                 I_businessObject           IN     "RIB_LocPOTsfDesc_REC",
                 O_serviceOperationStatus   OUT    "RIB_ServiceOpStatus_REC",
                 O_businessObject           OUT    "RIB_InvocationSuccess_REC")
    
    • This procedure validates the input service operation context and initializes the output service operation status.

    • Calls SVCPROV_STOREORDER.MOD_LOC_PO_TSF_DETAIL for modification of Store Order (PO or Transfer) details.

    • Any failures (validation errors) encountered during the processing are passed back into the ServiceOpStatus response object. If there are no failures, success status is returned through ServiceOpStatus.

  7. queryDeal(
                I_serviceOperationContext  IN OUT  "RIB_ServiceOpContext_REC",
                I_businessObject           IN      "RIB_LocPOTsfDealsCriVo_REC",
                O_serviceOperationStatus   OUT     "RIB_ServiceOpStatus_REC",
                O_businessObject           OUT     "RIB_LocPOTsfDealsColDesc_REC")
    
    • This procedure validates the input service operation context and initializes the output service operation status

    • Calls SVCPROV_STOREORDER.QUERY_LOC_PO_TSF_DEALS for retrieving the deals information which is returned to the O_businessObject.

    • Any failures (validation errors) encountered during the processing are passed back into the ServiceOpStatus response object. If there are no failures, success status is returned through ServiceOpStatus.

  8. queryItemSales(
                  I_serviceOperationContext  IN OUT  "RIB_ServiceOpContext_REC",
                  I_businessObject           IN      "RIB_LocPOTsfItmSlsCriVo_REC",
                  O_serviceOperationStatus   OUT     "RIB_ServiceOpStatus_REC",
                  O_businessObject           OUT     "RIB_LocPOTsfItmSlsColDesc_REC")
    
    • This procedure validates the input service operation context and initializes the output service operation status.

    • Calls SVCPROV_STOREORDER.QUERY_LOC_PO_TSF_ITEMSALES for retrieving the item sales information which is returned to the O_businessObject.

    • Any failures (validation errors) encountered during the processing are passed back into the ServiceOpStatus response object. If there are no failures, success status is returned through ServiceOpStatus.

  9. queryStoreOrder (
                 I_serviceOperationContext  IN OUT "RIB_ServiceOpContext_REC",
                 I_businessObject           IN     "RIB_LocPOTsfHdrCriVo_REC",
                 O_serviceOperationStatus   OUT    "RIB_ServiceOpStatus_REC",
                 O_businessObject           OUT    "RIB_LocPOTsfHdrColDesc_REC")
    
    • This procedure validates the input service operation context and initializes the output service operation status.

    • Calls SVCPROV_STOREORDER.QUERY_LOC_PO_TSF_HEADER for retrieving the store orders (PO, Transfer) .This will be returned in the O_businessObject.

    • Any failures (validation errors) encountered during the processing are passed back into the ServiceOpStatus response object. If there are no failures, success status is returned through ServiceOpStatus.

  10. queryStoreOrderDetail (
                 I_serviceOperationContext  IN OUT  "RIB_ServiceOpContext_REC",
                 I_businessObject           IN      "RIB_LocPOTsfDtlsCriVo_REC",
                 O_serviceOperationStatus   OUT     "RIB_ServiceOpStatus_REC",
                 O_businessObject           OUT     "RIB_LocPOTsfDesc_REC")
    
    • This procedure validates the input service operation context and initializes the output service operation status.

    • Calls SVCPROV_STOREORDER.QUERY_LOC_PO_TSF_DETAIL for retrieving the details of the store orders (PO, Transfer) .This will be returned in the O_businessObject.

    • Any failures (validation errors) encountered during the processing are passed back into the ServiceOpStatus response object. If there are no failures, success status is returned through ServiceOpStatus.

Service Provider Layer

Package: SVCPROV_STOREORDER

This layer calls the core business layer to process the requests. The following operations are available.

  1. CREATE_LOC_PO_TSF(
           O_serviceOperationStatus    IN OUT "RIB_ServiceOpStatus_REC",
           O_businessObject            OUT    "RIB_LocPOTsfRef_REC",
           I_businessObject            IN     "RIB_LocPOTsfDesc_REC")
    
    • Calls the function CREATE_MOD_LOCPO in the core business layer CORESVC_STOREORDER to process the Store Order creation request.

    • In case of errors received from the core business logic, the error message is written to the failure table of the O_serviceOperationStatus object.

  2. CREATE_LOC_PO_TSF_DETAIL(
           O_serviceOperationStatus IN OUT "RIB_ServiceOpStatus_REC",
           I_businessObject          IN     "RIB_LocPOTsfDesc_REC")
    
    • Calls the function CREATE_MOD_LOCPO in the core business layer CORESVC_STOREORDER to process the Store Order Details creation request.

    • In case of errors received from the core business logic, the error message is written to the failure table of the O_serviceOperationStatus object.

  3. MOD_LOC_PO_TSF(
                    O_serviceOperationStatus IN OUT "RIB_ServiceOpStatus_REC",
                    I_businessObject         IN     "RIB_LocPOTsfDesc_REC")
    
    • Calls the function CREATE_MOD_LOCPO in the core business layer CORESVC_STOREORDER to process the Store Order Modification request.

    • In case of errors received from the core business logic, the error message is written to the failure table of the O_serviceOperationStatus object.

  4. MOD_LOC_PO_TSF_DETAIL(
                     O_serviceOperationStatus IN OUT "RIB_ServiceOpStatus_REC",
                     I_businessObject         IN     "RIB_LocPOTsfDesc_REC")
    
    • Calls the function CREATE_MOD_LOCPO in the core business layer CORESVC_STOREORDER to process the Store Order details modification request.

    • In case of errors received from the core business logic, the error message is written to the failure table of the O_serviceOperationStatus object.

  5. DELETE_LOC_PO_TSF(
                   O_serviceOperationStatus IN OUT "RIB_ServiceOpStatus_REC",
                   I_businessObject         IN     "RIB_LocPOTsfDesc_REC")
    
    • Calls the function DEL_LOCPO in the core business layer CORESVC_STOREORDER to process the Store Order deletion request.

    • In case of errors received from the core business logic, the error message is written to the failure table of the O_serviceOperationStatus object.

  6. DELETE_LOC_PO_TSF_DETAIL(
                   O_serviceOperationStatus IN OUT "RIB_ServiceOpStatus_REC",
                   I_businessObject         IN     "RIB_LocPOTsfDesc_REC")
    
    • Calls the function DEL_LOCPO in the core business layer CORESVC_STOREORDER to process the Store Order Details deletion request.

    • In case of errors received from the core business logic, the error message is written to the failure table of the O_serviceOperationStatus object.

  7. QUERY_LOC_PO_TSF_DEALS(
          O_serviceOperationStatus IN OUT "RIB_ServiceOpStatus_REC",
          O_businessObject         OUT    "RIB_LocPOTsfDealsColDesc_REC",
          I_businessObject         IN     "RIB_LocPOTsfDealsCriVo_REC")
    
    • Calls the function GET_DEALS in the core business layer CORESVC_STOREORDER to process the Deals query request.

    • In case of errors received from the core business logic, the error message is written to the failure table of the O_serviceOperationStatus object.

  8. QUERY_LOC_PO_TSF_ITEMSALES(
           O_serviceOperationStatus IN OUT "RIB_ServiceOpStatus_REC",
           O_businessObject         OUT    "RIB_LocPOTsfItmSlsColDesc_REC",
           I_businessObject         IN     "RIB_LocPOTsfItmSlsCriVo_REC")
    
    • Calls the function GET_ITEMS_SALES in the core business layer CORESVC_STOREORDER to process the Item Sales retrieval request.

    • In case of errors received from the core business logic, the error message is written to the failure table of the O_serviceOperationStatus object.

  9. QUERY_LOC_PO_TSF_HEADER (
               O_serviceOperationStatus    IN OUT "RIB_ServiceOpStatus_REC",
               O_businessObject            OUT    "RIB_LocPOTsfRef_REC",
               I_businessObject            IN     "RIB_LocPOTsfDesc_REC")
    
    • Calls the function GET_STORE_ORDERS in the core business layer CORESVC_STOREORDER to process the Store Orders retrieval request.

    • In case of errors received from the core business logic, the error message is written to the failure table of the O_serviceOperationStatus object.

  10. QUERY_LOC_PO_TSF_DETAIL(
               O_serviceOperationStatus IN OUT "RIB_ServiceOpStatus_REC",
               O_businessObject         OUT    "RIB_LocPOTsfDesc_REC",
               I_businessObject         IN     "RIB_LocPOTsfDtlsCriVo_REC")
    
    • Calls the function GET_STORE_ORDER_DETAILS in the core business layer CORESVC_STOREORDER to process the Store Order Details retrieval request.

    • In case of errors received from the core business logic, the error message is written to the failure table of the O_serviceOperationStatus object.

Core Logic Layer

Package: CORESVC_STOREORDER

This layer implements the core business logic for Store Order operations. The following operations are available:

  1. CREATE_MOD_LOCPO(
    IO_error_message  IN OUT      RTK_ERRORS.RTK_TEXT%TYPE,
    O_locpotsfref_rec OUT NOCOPY "RIB_LocPOTsfRef_REC", 
    I_locpodesc_rec   IN          "RIB_LocPOTsfDesc_REC",
    I_action          IN          VARCHAR2) 
    RETURN BOOLEAN
    
    • This function is used to Create, Modify Transfer/ PO header and details based on the input action_type. It performs input payload validation and calls RMSSUB_XORDER or RMSSUB_XTSF APIs to achieve it.

    • The encountered error will be returned on IO_error_message.

    • For a create operation, the generated order_no or tsf_no will be returned as the order_id in the LocPOTsfRef object.

  2. DEL_LOCPO(
    IO_error_message    IN OUT        RTK_ERRORS.RTK_TEXT%TYPE,
    I_locpotsfdesc_rec  IN            "RIB_LocPOTsfDesc_REC",
    I_action            IN            VARCHAR2)
    RETURN BOOLEAN 
    
    • The function is used to delete transfer/PO header and details based on the input action_type. It performs input payload validation and calls RMSSUB_XORDER or RMSSUB_XTSF APIs to achieve it.

    • The encountered error will be returned on O_error_message.

  3. GET_DEALS(
    IO_error_message            IN OUT        RTK_ERRORS.RTK_TEXT%TYPE,
    O_locpotsfdealscoldesc_rec  OUT NOCOPY  "RIB_LocPOTsfDealsColDesc_REC",
    I_locpotsfdealscrivo_rec    IN            "RIB_LocPOTsfDealsCriVo_REC")
    RETURN BOOLEAN
    
    • This function retrieves all applicable deals information for the input item/store.

    • The encountered error will be returned on O_error_message.

  4. GET_ITEMS_SALES(
    IO_error_message            IN OUT     RTK_ERRORS.RTK_TEXT%TYPE,
    O_locpotsfitmslscoldesc_rec OUT NOCOPY RIB_LocPOTsfItmSlsColDesc_REC",
    I_locpoitmslsreq_rec        IN         "RIB_LocPOTsfItmSlsCriVo_REC")
    RETURN BOOLEAN 
    
    • This function retrieves the item sales information for the input item/store.

    • The encountered error is returned on O_error_message.

  5. GET_STORE_ORDERS(
    IO_error_message          IN OUT        RTK_ERRORS.RTK_TEXT%TYPE,
    O_locpotsfhdrcoldesc_rec  OUT NOCOPY    "RIB_LocPOTsfHdrColDesc_REC", 
    I_locpotsfhdrcrivo_rec    IN            "RIB_LocPOTsfHdrCriVo_REC")
    RETURN BOOLEAN
    
    • The function retrieves all relevant store orders (POs and transfers) for the input store/item contained in the input business object.

    • The encountered error is returned on O_error_message.

  6. GET_STORE_ORDER_DETAILS(
    IO_error_message         IN OUT     RTK_ERRORS.RTK_TEXT%TYPE,
    O_locpotsfdesc_rec       OUT NOCOPY "RIB_LocPOTsfDesc_REC",
    I_locpotsfdtlscrivo_rec  IN         "RIB_LocPOTsfDtlsCriVo_REC")
    RETURN BOOLEAN
    
    • This is used to retrieve the store order details for the input store, order_no or tsf_no contained in the input business object.

    • The encountered error is returned on O_error_message.

Message XSD

Below are the filenames that correspond with each message type. Please consult the RIB documentation for each message type in order to get a detailed picture of the composition of each message.

Message Types Message Type Description XML Schema Definition (XSD)
LocPOTsfDesc Location PO Transfer Description LocPOTsfDesc.xsd
LocPOTsfRef Location PO Transfer Reference LocPOTsfRef.xsd
LocPOTsfHdrCriVo Location PO Transfer Header query Criteria LocPOTsfHdrCriVo.xsd
LocPOTsfHdrDesc Location PO Transfer Header Description LocPOTsfHdrDesc.xsd
LocPOTsfHdrColDesc Collection of Location PO Transfer Header Description LocPOTsfHdrColDesc.xsd
LocPOTsfDtlsCriVo Location PO Transfer Details query criteria LocPOTsfDtlsCriVo.xsd
LocPOTsfDealsCriVo Location PO Transfer Deals query Criteria LocPOTsfDealsCriVo.xsd
LocPOTsfDealsDesc Location PO Transfer Deals Description LocPOTsfDealsDesc.xsd
LocPOTsfDealsColDesc Collection of Location PO Transfer Deals Description LocPOTsfDealsColDesc.xsd
LocPOTsfItmSlsCriVo Location PO Transfer Item Sales query Criteria LocPOTsfItmSlsCriVo.xsd
LocPOTsfItmSlsDesc Location PO Transfer Item Sales Description LocPOTsfItmSlsDesc.xsd
LocPOTsfItmSlsColDesc Collection of Location PO Transfer Item Sales Description LocPOTsfItmSlsColDesc.xsd

Design Assumptions

  • To minimize the development and testing effort, no staging tables have been used to stage the data.

  • Instead of following the pattern of VALIDATE/ POPULATE/ PERSIST, existing package logic has been reused in the core business layer.

  • Instead of returning with all the validation errors found, package will just return back the first error encountered.

Tables

TABLE SELECT INSERT UPDATE DELETE
ORDHEAD Yes Yes Yes No
ORDLOC Yes Yes Yes Yes
ORDSKU Yes Yes Yes Yes
TSFHEAD Yes Yes Yes No
TSFDETAIL Yes Yes Yes Yes
ITEM_LOC_HIST Yes No No No
DEAL_HEAD Yes No No No
DEAL_DETAIL Yes No No No
DEAL_THRESHOLD Yes No No No
ITEM_MASTER Yes No No No
STORE Yes No No No
WH Yes No No No

Item Number Reservation Service API

This section describes the item number reservation serice API.

Functional Area

Item

Design Overview

The Item Number Reservation web service allows external systems such as Oracle Retail Assortment Planning (AP) or Oracle Retail Category Management to reserve item numbers in RMS. This web service contains the following details:

  • Item number type

  • Quantity

  • Days until expiry

The web service validates that the item number type passed is a valid number type in RMS that supports auto generation of item numbers and that the days until expiry is greater than zero.

Once validated, RMS should auto generate the requested quantity of item numbers of the specified type and store them in a reservation log table that tracks their usage and expiry. The columns in the reservation log table would include the following:

  • Item number type

  • Item number

  • Expiry date = vdate when request is received+ Days until expiry

The following are the only valid item number types:

  • ITEM

  • UPC-A

  • UPC-AS

  • EAN13

The details inserted into the reservation log for every valid web service call are also sent back as part of the web service response to inform the calling application that the reservation was successful and the numbers reserved. These pre-reserved numbers should not be considered for any auto-generated item numbers in RMS. If a user keys in a pre-reserved item number while creating a new item, the system should stop the user from proceeding by displaying an appropriate message indicating that this number is already reserved.

The structure of the Item Number Reservation message family is the following:

 "RIB_ItemNumCriVo_REC" (input)
       -- item_number_type
       -- quantity
       -- expiry_days
 
"RIB_ItemNumColDesc_REC" (output)
       -- collection size
      -- ItemNumDesc_TBL
 
"RIB_ItemNumDesc_REC" 
     -- item
     -- item_number_type

Package Impact

This section describes the package impact.

API Modules

Filename: ItemManagementServiceProviderImplSpec/Body.sql

PROCEDURE reserveItemNumber(I_serviceOperationContext IN OUT "RIB_ServiceOpContext_REC",
                    I_businessObject          IN  "RIB_ItemNumCriVo_REC",
                    O_serviceOperationStatus  OUT "RIB_ServiceOpStatus_REC",
                    O_businessObject          OUT "RIB_ItemNumColDesc_REC")

This will call the Item Reservation Package - CORESVC_ITEM_RESERVE_SQL.RESERVE_ITEM_NUMBER().

Filename: Coresvc_itemreserveb/s.pls

RESERVE_ITEM_NUMBER(O_error_message  IN OUT     RTK_ERRORS.RTK_TEXT%TYPE,
                    O_businessObject IN OUT     "RIB_ItemNumColDesc_REC",
                    I_serviceOperationContext IN "RIB_ServiceOpContext_REC",
                    I_businessObject          IN "RIB_ItemNumCriVo_REC")

This package will be called by the webservice to accept reservation requests that contain the following details:

  • Item number type

  • Quantity

  • Days until expiry

The VALIDATE_FIELDS() checks if all the required fields are entered, calls the CHECK_ITEM_NUMBER_TYPE() and validate if the days until expiry is greater than zero. This function will validate whether the item number passed is a valid number type that supports auto generation of item numbers. Any invalid records will be errored-out.

If the record is valid, item numbers will be generated depending on the item number type passed by calling the ITEM_NUMBER_TYPE_SQL.GET_NEXT() function. This call will be looped depending on the quantity given.

The POPULATE_ITEM_RESERVE function will insert any valid records into the reservation log table (SVC_ITEM_RESERVATION).

Message XSD

Below are the filenames that correspond with each message type. Please consult the RIB documentation for each message type in order to get a detailed picture of the composition of each message.

Message Types Message Type Description XML Schema Definition (XSD)
reserveItemNumber Item Number Reservation ItemNumCriVo.xsd

Design Assumptions

None

Tables

TABLE SELECT INSERT UPDATE DELETE
SVC_ITEM_RESERVATION Yes Yes No Yes

Order Management Service API

This section describes the order management service API.

Functional Area

Purchase Order

Design Overview

The Order Management web service allows the external systems to accept requests to generate pre-issued order numbers in RMS. This web service will contain the following details:

  • Supplier ID (if the requesting entity is a vendor)

  • Quantity (number of pre-issued order numbers requested)

  • Days until expiry

The web service validates that the supplier number passed is valid and active in RMS and that the days until expiry and quantity are both greater than zero.

Once validated, RMS generates the requested quantity of pre-issued order numbers and stores them in an existing RMS table that tracks their usage and expiry. The columns in the base table include:

  • Order number

  • Supplier number

  • Expiry date = vdate when request is received + Days until expiry

The details inserted into the base table for every valid web service call would also be sent back as part of the web service response to inform the calling application that the request was successful. The numbers generated will also be sent back to the calling application.

Below are the structures of the objects used in the new Purchase Order Number web service:

 "RIB_OrdNumCriVo_REC" (input)
       -- supplier number(10)
       -- quantity number(4)
       -- expiry_days number(4)
 
"RIB_OrdNumColDesc_REC" (output)
       -- collection size
      -- OrdNumDesc_TBL RIB_OrdNumDesc_TBL
 
"RIB_OrdNumDesc_REC" 
     -- supplier number(10)
     -- order_no number(8)
     -- expiry_date date

Package Impact

This section describes the package impact.

API Modules

Filename: OrderManagementServiceProviderImplSpec/Body.sql

PROCEDURE preIssueOrderNumber(I_serviceOperationContext IN OUT "RIB_ServiceOpContext_REC",
                    I_businessObject          IN  "RIB_OrdNumCriVo_REC",
                    O_serviceOperationStatus  OUT "RIB_ServiceOpStatus_REC",
                    O_businessObject          OUT "RIB_OrdNumColDesc_REC")

This will call the Order PreIssue Request Package - CORESVC_ORD_PREISSUE_SQL.GENERATE_ORDER_NOS().

Filename: Coresvc_ordpreisb/s.pls

GENERATE_ORDER_NOS(O_error_message            IN OUT   RTK_ERRORS.RTK_TEXT%TYPE,
                   O_businessObject           IN OUT   "RIB_OrdNumColDesc_REC",
                   I_serviceOperationContext  IN       "RIB_ServiceOpContext_REC",
                   I_businessObject           IN       "RIB_OrdNumCriVo_REC")

This package is called by the webservice to accept requests that contain the following details:

  • Supplier ID

  • Quantity

  • Days until expiry

The function checks if all the required fields are present and validates if the days until expiry and quantity are greater than zero. This function also validates whether the supplier ID passed is valid and is an active supplier. Any invalid records will be errored-out.

If the record is valid, pre-issued order numbers are generated - by calling the ORDER_NUMBER_SQL.PREISSUE() function. The PREISSUE function is responsible for inserting the specified number of order numbers into the ORD_PREISSUE table.

Filename: Ordnumb/s.pls

PREISSUE(O_error_message IN OUT   RTK_ERRORS.RTK_TEXT%TYPE,
         O_ordnum_rec    IN OUT   "RIB_OrdNumColDesc_REC",
         I_qty           IN       NUMBER,
         I_expiry_date   IN       ORD_PREISSUE.EXPIRY_DATE%TYPE,
         I_supplier      IN       ORD_PREISSUE.SUPPLIER%TYPE,
         I_create_id     IN       ORD_PREISSUE.CREATE_ID %TYPE)

This function is called within the new package CORESVC_ORD_PREISSUE_SQLto accept requests that contain the following details:

  • Quantity

  • Days until expiry

  • Supplier ID

  • Create ID

The new overloaded function PREISSUE has an additional OUT parameter "RIB_OrdNumColDesc_REC". It is responsible for generating new order numbers via a call to ORDER_NUMBER_SQL.NEXT_ORDER_NUMBER. The generated order numbers are then inserted into the base RMS table (ORD_PREISSUE). It also populates the "RIB_OrdNumColDesc_REC" record that holds a collection of order numbers generated for the given supplier number. This collection will be returned to the calling application.

Message XSD

Here are the filenames that correspond to each message type. Please consult the RIB documentation for each message type in order to get a detailed picture of the composition of each message.

Message Types Message Type Description XML Schema Definition (XSD)
preIssueOrderNumber Pre-issued Order Number Generation OrdNumCriVo.xsd

Design Assumptions

None

Tables

TABLE SELECT INSERT UPDATE DELETE
ORD_PREISSUE Yes Yes No No

Average Cost Subscription API

This section described the Average Cost Subscription API.

Functional Area

Finance

Design Overview

RMS provides a SOAP web service to support the update of weighted average cost from an external system to Merchandising for one or more item/location combinations. It also creates a tran data record posting with tran code 70.The web service will be called with the following details:

The web service will contain the following details.

  • Item

  • Location

  • Location Type

  • New Avg Cost (must be greater than 0)

Package Impact

This section describes the package impact.

API Modules

Filename: AverageCostServiceProviderImplSpec/Body.sql

modifyAvgCost(I_serviceOperationContext IN OUT "RIB_ServiceOpContext_REC",

I_businessObject IN "RIB_ItLocAgCstColDesc_REC",

O_serviceOperationStatus OUT "RIB_ServiceOpStatus_REC",

O_businessObject OUT "RIB_InvocationSuccess_REC");

/*********

This will call the SVC provider Package - SVCPROV_AVGCOST_SQL.UPD_AVG_COST.

Filename: svcprov_avgcostb/s.pls

PROCEDURE

UPD_AVG_COST(O_ServiceOperationStatus IN OUT "RIB_ServiceOpStatus_REC",

O_businessObject IN OUT "RIB_InvocationSuccess_REC",

I_business_object IN "RIB_ItLocAgCstColDesc_REC");

This procedure calls the core package CORESVC_AVGCOST_SQL.UPD_AVG_COST.

If error happens, it calls SVCPROV_UTILITY. PARSE_ERR_MSG to build and return "RIB_ServiceOpStatus_REC"with a failure message; if no errors, it builds and returns "RIB_InvocationSuccess_REC" with a success message.

Filename: coresvc_avgcostb/s.pls

FUNCTION UPD_AVG_COST(O_error_message OUT RTK_ERRORS.RTK_TEXT%TYPE,

O_error_tbl OUT SVCPROV_UTILITY.ERROR_TBL,

I_business_object IN "RIB_ItLocAgCstColDesc_REC")

This is the main function which validates the input and updates the new Avg cost.

  • All the input fields are mandatory.

  • Checks for Valid Item/Loc combination.

  • The avg cost must be greater than zero.

If the input is/are valid, the new avg cost will be updated for the given item/loc combination and a tran data posting will be recorded with tran code 70.

Message XSD

Here are the filenames that correspond with each message type. Please consult the RIB documentation for each message type in order to get a detailed picture of the composition of each message.

Operation Types Operation Type Description XML Schema Definition (XSD)
modifyAvgCost Modify Average Cost Service Operation ItLocAgCstColDesc.xsdItLocAgCstDesc.xsd

Design Assumptions

N/A

Tables

TABLE SELECT INSERT UPDATE DELETE
ITEM_LOC_SOH Yes No Yes No
TRAN_DATA No Yes No No

Diff Management Service API

This section describes the Diff Management Service API.

Functional Area

Foundation

Design Overview

This service was created by SOAP to enable the existing Diff Subscription API to support creating, updating, or deleting Diff Ids and Diff Groups in Merchandising.

Package Impact

PL/SQL Web Service Wrapper

Package: DiffManagementServiceProviderISpec/Body.sql

This layer is the entry point for the diff management Web service. The following operation is available:

PROCEDURE createDiffId(I_serviceOperationContext IN OUT "RIB_ServiceOpContext_REC",
                   I_businessObject          IN     "RIB_XDiffIDColDesc_REC",
                   O_serviceOperationStatus  OUT    "RIB_ServiceOpStatus_REC",
                   O_businessObject          OUT    "RIB_InvocationSuccess_REC")
  • This procedure validates the input service operation context and initializes the output service operation status.

  • Calls CREATE_DIFF_ID to create the Diff id for the input message.

  • Any failures (validation errors) encountered during the processing are passed back into the response object. If there are no failures, success status is returned.

PROCEDURE modifyDiffId(
                    I_serviceOperationContext IN OUT "RIB_ServiceOpContext_REC",
                    I_businessObject          IN  "RIB_XDiffIDColDesc_REC",
                    O_serviceOperationStatus  OUT "RIB_ServiceOpStatus_REC",
                    O_businessObject          OUT "RIB_InvocationSuccess_REC")
  • This procedure validates the input service operation context and initializes the output service operation status.

  • Calls MODIFY_DIFF_ID to modify the Diff id for the input message.

  • Any failures (validation errors) encountered during the processing are passed back into the response object. If there are no failures, success status is returned.

PROCEDURE deleteDiffId(I_serviceOperationContext IN OUT "RIB_ServiceOpContext_REC",
                    I_businessObject          IN  "RIB_XDiffIDColRef_REC",
                    O_serviceOperationStatus  OUT "RIB_ServiceOpStatus_REC",
                    O_businessObject          OUT "RIB_InvocationSuccess_REC")
  • This procedure validates the input service operation context and initializes the output service operation status.

  • Calls DELETE_DIFF_ID to delete the Diff id for the input message.

  • Any failures (validation errors) encountered during the processing are passed back into the response object. If there are no failures, success status is returned.

PROCEDURE createDiffGrp(I_serviceOperationContext IN OUT "RIB_ServiceOpContext_REC",
                 I_businessObject          IN     "RIB_XDiffGrpColDesc_REC",
                 O_serviceOperationStatus  OUT    "RIB_ServiceOpStatus_REC",
                 O_businessObject          OUT    "RIB_InvocationSuccess_REC")
  • This procedure validates the input service operation context and initializes the output service operation status.

  • Calls CREATE_DIFF_GROUP to create the Diff group for the input message.

  • Any failures (validation errors) encountered during the processing are passed back into the response object. If there are no failures, success status is returned.

PROCEDURE modifyDiffGrp(I_serviceOperationContext IN OUT "RIB_ServiceOpContext_REC",
                 I_businessObject          IN     "RIB_XDiffGrpColDesc_REC",
                 O_serviceOperationStatus  OUT    "RIB_ServiceOpStatus_REC",
                 O_businessObject          OUT    "RIB_InvocationSuccess_REC")
  • This procedure validates the input service operation context and initializes the output service operation status.

  • Calls MODIFY_DIFF_GROUP to modify the Diff group for the input message.

  • Any failures (validation errors) encountered during the processing are passed back into the response object. If there are no failures, success status is returned.

PROCEDURE deleteDiffGrp(I_serviceOperationContext IN OUT "RIB_ServiceOpContext_REC",
                 I_businessObject          IN     "RIB_XDiffGrpColRef_REC",
                 O_serviceOperationStatus  OUT    "RIB_ServiceOpStatus_REC",
                 O_businessObject          OUT    "RIB_InvocationSuccess_REC")
  • This procedure validates the input service operation context and initializes the output service operation status.

  • Calls DELETE_DIFF_GROUP to delete the diff groups for the input message.

  • Any failures (validation errors) encountered during the processing are passed back into the response object. If there are no failures, success status is returned.

PROCEDURE createDiffGrpDtl(I_serviceOperationContext IN OUT "RIB_ServiceOpContext_REC",
                     I_businessObject          IN  "RIB_XDiffGrpColDesc_REC",
                     O_serviceOperationStatus  OUT "RIB_ServiceOpStatus_REC",
                     O_businessObject          OUT "RIB_InvocationSuccess_REC")
  • This procedure validates the input service operation context and initializes the output service operation status.

  • Calls CREATE_DIFF_GROUP_DTL to create the Diff group details for the input message.

  • Any failures (validation errors) encountered during the processing are passed back into the response object. If there are no failures, success status is returned.

PROCEDURE modifyDiffGrpDtl(I_serviceOperationContext IN OUT "RIB_ServiceOpContext_REC",
                 I_businessObject          IN     "RIB_XDiffGrpColDesc_REC",
                 O_serviceOperationStatus  OUT    "RIB_ServiceOpStatus_REC",
                 O_businessObject          OUT    "RIB_InvocationSuccess_REC")
  • This procedure validates the input service operation context and initializes the output service operation status.

  • Calls MODIFY_DIFF_GROUP_DTL to modify the Diff group details for the input message.

  • Any failures (validation errors) encountered during the processing are passed back into the response object. If there are no failures, success status is returned.

PROCEDURE deleteDiffGrpDtl(I_serviceOperationContext IN OUT "RIB_ServiceOpContext_REC",
                 I_businessObject          IN     "RIB_XDiffGrpColRef_REC",
                 O_serviceOperationStatus  OUT    "RIB_ServiceOpStatus_REC",
                  O_businessObject          OUT    "RIB_InvocationSuccess_REC")     
  • This procedure validates the input service operation context and initializes the output service operation status.

  • Calls DELETE_DIFF_GROUP_DTL to delete the Diff group details for the input message.

  • Any failures (validation errors) encountered during the processing are passed back into the response object. If there are no failures, success status is returned.

Service Provider Layer

Package: : Svcprov_xdiffb/s.pls

This layer calls the core business layer to process the diff id request. The following operation is available.

PROCEDURE CREATE_DIFF_ID(O_serviceOperationStatus    IN OUT   "RIB_ServiceOpStatus_REC",               O_businessObject            IN OUT   "RIB_InvocationSuccess_REC",               I_serviceOperationContext   IN       "RIB_ServiceOpContext_REC",               I_businessObject            IN       "RIB_XDiffIDColDesc_REC")PROCEDURE MODIFY_DIFF_ID(O_serviceOperationStatus    IN OUT   "RIB_ServiceOpStatus_REC",                O_businessObject            IN OUT   "RIB_InvocationSuccess_REC",                I_serviceOperationContext   IN       "RIB_ServiceOpContext_REC",                I_businessObject            IN       "RIB_XDiffIDColDesc_REC")PROCEDURE DELETE_DIFF_ID(O_serviceOperationStatus    IN OUT   "RIB_ServiceOpStatus_REC",                O_businessObject            IN OUT   "RIB_InvocationSuccess_REC",                I_serviceOperationContext   IN       "RIB_ServiceOpContext_REC",                I_businessObject            IN       "RIB_XDiffIDColRef_REC"
)

All the above package calls the core business layer RMSSUB_XDIFFID.CONSUME to process the diff ID request.

In case of errors received from the core business logic, the error message is written to the failure table of the output business object.

PROCEDURE CREATE_DIFF_GROUP(O_serviceOperationStatus    IN OUT   "RIB_ServiceOpStatus_REC",               O_businessObject            IN OUT   "RIB_InvocationSuccess_REC",               I_serviceOperationContext   IN       "RIB_ServiceOpContext_REC",               I_businessObject            IN       "RIB_XDiffGrpColDesc_REC")PROCEDURE MODIFY_DIFF_GROUP(O_serviceOperationStatus    IN OUT   "RIB_ServiceOpStatus_REC",              O_businessObject            IN OUT   "RIB_InvocationSuccess_REC",              I_serviceOperationContext   IN       "RIB_ServiceOpContext_REC",              I_businessObject            IN       "RIB_XDiffGrpColDesc_REC")PROCEDURE DELETE_DIFF_GROUP(O_serviceOperationStatus    IN OUT   "RIB_ServiceOpStatus_REC",              O_businessObject            IN OUT   "RIB_InvocationSuccess_REC",              I_serviceOperationContext   IN       "RIB_ServiceOpContext_REC",              I_businessObject            IN       "RIB_XDiffGrpColRef_REC")PROCEDURE CREATE_DIFF_GROUP_DTL(O_serviceOperationStatus    IN OUT   "RIB_ServiceOpStatus_REC",              O_businessObject            IN OUT   "RIB_InvocationSuccess_REC",              I_serviceOperationContext   IN       "RIB_ServiceOpContext_REC",              I_businessObject            IN       "RIB_XDiffGrpColDesc_REC")PROCEDURE MODIFY_DIFF_GROUP_DTL(O_serviceOperationStatus    IN OUT   "RIB_ServiceOpStatus_REC",              O_businessObject            IN OUT   "RIB_InvocationSuccess_REC",              I_serviceOperationContext   IN       "RIB_ServiceOpContext_REC",              I_businessObject            IN       "RIB_XDiffGrpColDesc_REC")PROCEDURE DELETE_DIFF_GROUP_DTL(O_serviceOperationStatus    IN OUT   "RIB_ServiceOpStatus_REC",             O_businessObject            IN OUT   "RIB_InvocationSuccess_REC",             I_serviceOperationContext   IN       "RIB_ServiceOpContext_REC",             I_businessObject            IN       "RIB_XDiffGrpColRef_REC")

All the above package calls the core business layer RMSSUB_XDIFFGRP.CONSUME to process the diff group request.

In case of errors received from the core business logic, the error message is written to the failure table of the output business object.

Core Logic Layer

Package: rmssub_xdiffidb.pls
CONSUME(O_status_code   IN OUT    VARCHAR2,
        O_error_message IN OUT    VARCHAR2,
        I_message       IN        RIB_OBJECT,
        I_message_type  IN        VARCHAR2)

This layer implements the core business logic for diff id create, delete and modify. It utilizes the same code as the Diff Subscription API.

Package: xdiffgrpb.pls

CONSUME(O_status_code   IN OUT   VARCHAR2,
         O_error_message IN OUT   VARCHAR2,
         I_message       IN       RIB_OBJECT,
         I_message_type  IN       VARCHAR2)

This layer implements the core business logic for diff id create, delete and modify. It utilizes the same code as the Diff Group Subscription API.

Message XSD

Here are the filenames that correspond to each message type. Please consult the RIB documentation for each message type to get a detailed picture of the composition of each message.

Message Types Message Type Description XML Schema Definition (XSD)
createDiffId Create Diff Ids XDiffIDColDesc.xsd
deleteDiffId Delete Diff Ids XDiffIDColRef.xsd
modifyDiffId Modify Diff Ids XDiffIDColDesc.xsd
createDiffGrpDtl Create diff group details XDiffGrpColDesc.xsd
deleteDiffGrpDtl Delete diff group details XDiffGrpColRef.xsd
modifyDiffGrpDtl Modify diff group details XDiffGrpColDesc.xsd
createDiffGrp Create diff group headers XDiffGrpColDesc.xsd
deleteDiffGrp Delete entire diff groups XDiffGrpColRef.xsd
modifyDiffGrp Modify diff group headers XDiffGrpColDesc.xsd
createDiffId Collection of external Diff IDs for create XDiffIDColDesc.xsd
deleteDiffId Collection of Diff Ids for delete XDiffIDColRef.xsd

Design Assumptions

N/A

Tables

TABLE SELECT INSERT UPDATE DELETE
DIFF_IDS Yes Yes Yes Yes
DIFF_GROUP_HEAD Yes Yes Yes Yes
DIFF_GROUP_DETAIL Yes Yes Yes Yes
ITEM_MASTER Yes No No No
PACK_TMPL_HEAD Yes No No No
DIFF_RANGE_HEAD Yes No No No