0% found this document useful (0 votes)
82 views71 pages

Distributed WMS Integrations Technical Brief

The document describes using Oracle Data Integrator (ODI) to integrate data between an Oracle ERP instance and a distributed warehouse management system (WMS). ODI is well-suited for this integration as it can migrate and transform data across different database technologies in real-time or incrementally. The document outlines setting up the ODI topology to define the ERP and WMS database instances and their schemas. It also describes using ODI's journalizing capability to synchronize new or changed data incrementally between the systems. The integration facilitates processes like purchase order synchronization, inventory adjustments, shipment notifications and more between the ERP and distributed WMS.

Uploaded by

Mohankumar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
82 views71 pages

Distributed WMS Integrations Technical Brief

The document describes using Oracle Data Integrator (ODI) to integrate data between an Oracle ERP instance and a distributed warehouse management system (WMS). ODI is well-suited for this integration as it can migrate and transform data across different database technologies in real-time or incrementally. The document outlines setting up the ODI topology to define the ERP and WMS database instances and their schemas. It also describes using ODI's journalizing capability to synchronize new or changed data incrementally between the systems. The integration facilitates processes like purchase order synchronization, inventory adjustments, shipment notifications and more between the ERP and distributed WMS.

Uploaded by

Mohankumar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 71

Oracle Distributed Warehouse Management

System

(Integration)
An Oracle Technical
Brief April 2009
TABLE OF CONTENTS
1 Data Integration..........................................................................................................3
1.1 SETUP ODI TOPOLOGY ...................................................................................................... 3
1.1.1 Topology .................................................................................................................... 8
1.1.2 Importing Topology ................................................................................................... 9
1.2 SETUP WORK REPOSITORIES ........................................................................................... 11
1.2.1 Importing Work Repository/Models......................................................................... 14
1.2.2 Creating ODI Interface............................................................................................ 15
1.2.3 Creating Packages and Scenarios ........................................................................... 18
1.2.4 Journalizing ............................................................................................................. 19
2 Business Models ......................................................................................................25
2.1 INBOUND – PURCHASE ORDER ........................................................................................ 26
2.1.1 Interfaces ................................................................................................................. 26
2.1.2 Packages .................................................................................................................. 32
2.2 INBOUND – RECEIPT SYNCHRONIZATION ........................................................................ 33
2.2.1 Interfaces ................................................................................................................. 33
2.2.2 Procedures............................................................................................................... 39
2.2.3 Packages .................................................................................................................. 40
2.3 ADJUSTMENT – TRANSACTIONS SYNCHRONIZATION ...................................................... 42
2.3.1 Interfaces ................................................................................................................. 42
2.3.2 Procedures............................................................................................................... 47
2.3.3 Packages .................................................................................................................. 48
2.4 OUTBOUND – SHIPMENT REQUEST .................................................................................. 49
2.4.1 Interfaces ................................................................................................................. 49
2.4.2 Packages .................................................................................................................. 57
2.5 OUTBOUND – SHIPMENT CONFIRMATION........................................................................ 57
2.5.1 Interfaces ................................................................................................................. 58
2.5.2 Procedures............................................................................................................... 60
2.5.3 Packages .................................................................................................................. 62
2.6 INBOUND – RETURN/CORRECT SYNCHRONIZATION ........................................................ 64
2.6.1 Interfaces ................................................................................................................. 64
2.6.2 Procedures............................................................................................................... 69
2.6.3 Packages .................................................................................................................. 70

Oracle Corporation Confidential Page 2 of 71


Oracle Distributed WMS Solution

1 Data Integration
In order to make the distributed instance aware of transactions to be executed and for the
same transactions to be played back on the ERP instance, an integration layer is required to
provide logic for
1. Synchronizing inbound documents like Purchase Order, RMA from ERP to the
distributed instance
2. Synchronizing inbound transactions like Receipts, Inspections, Put away, Corrections,
Returns, Transfers from the distributed instance to ERP
3. Synchronizing adjustment transactions like Miscellaneous/Account Issues/Receipts,
Subinventory Transfers, Cycle & Physical Counts from the distributed instance to
ERP
4. Synchronizing the shipment advice from ERP to the distributed instance
5. Synchronizing the outbound transactions like shipping etc. from the distributed
instance to ERP instance
Oracle Data Integrator (ODI) can be used for this purpose as:
• ODI is designed for migrating and transforming data across database instances
• ODI has the ability to migrate data across different database technologies. This
means that the distributed instance and ERP do not need to be of identical
Applications version or RDBMS release.
• ODI has the ability to directly invoke web services if the customer wants to bypass the
open interface and perform the transactions in real time.
ODI has a Journalizing capability that discovers which transaction records are new. This
needs to be used to facilitate incremental synchronization.

1.1 Setup ODI Topology


This is a one-time setup to register the database instances that make up the MES/ERP
topology.
1. Follow ODI Installation Guide to install ODI. ODI needs a database instance to keep
its master and working repositories. This instance can be shared with the ERP or
otherwise. The choice is up to the system administrator. The sizing requirement is
40 – 200MB. The ODI Installation Guide provides more details.
2. Run Topology Manager and connect to the master repository.

Oracle Corporation Confidential Page 3 of 71


Oracle Distributed WMS Solution

3. If you have any exported zip files for the topology see section 1.1.2. In Physical
Architecture add data servers. This involves providing a JDBC connection string to
the instance of interest. We will create Data Servers for ERP and the Distributed
instance.

Oracle Corporation Confidential Page 4 of 71


Oracle Distributed WMS Solution

Oracle Corporation Confidential Page 5 of 71


Oracle Distributed WMS Solution

4. Next define the physical schemas in this data server that needs to be accessed (read
from or write to). E.g., the APPS schema or a specific product schema like INV or
WSH. If you want to use the Reverse Engineering method in ODI to automatically
discover table columns then it is suggested to go down to the product schema.

Oracle Corporation Confidential Page 6 of 71


Oracle Distributed WMS Solution

5. Next define a logical schema name for each physical schema. The logical schema
needs to be used in the Designer to create data flows.

Oracle Corporation Confidential Page 7 of 71


Oracle Distributed WMS Solution

6. Repeat 3 to 5 for each data server (i.e. database instance).

1.1.1 Topology
Create 2 data servers with Topology Manager. One points to the distributed instance and
another one points to ERP instance. For each data server, add the physical schemas as
mentioned in the table below.

In ODI, CDC common infrastructure for the data server is installed in the Work Schema
for the physical schema that is flagged as Default for this data server. Therefore, if user
needs to have CDC infrastructure on different physical schemas, please create different
data server for each physical schema.

Data Server: SAL


Physical Logical Schema
Schema

Oracle Corporation Confidential Page 8 of 71


Oracle Distributed WMS Solution

APPLSYS SAL_FND
APPS SAL_APPS
PO SAL_PO
OE SAL_OE
INV SAL_INV
WSH SAL_WSH

Data Server: ERP


Physical Logical Schema
Schema
APPLSYS ERP_FND
APPS ERP_APPS
PO ERP_PO
OE ERP_OE
INV ERP_INV
WSH ERP_WSH

1.1.2 Importing Topology


If you have an exported file (a zipped file containing xmls or set of xmls files in a folder) of
the topology, you can skip the last step of manually setting up the ODI topology. Instead,
one can import this zip file into the topology manager as shown below:

1. In Topology Manager, click on File > Import > Topology


2. Select the Import Mode- Synonym Mode INSERT, import from a FOLDER (or a Zip File, if
you the zipped version of the exported topology).
3. Browse and select the folder which contains the toplogy files
4. Click OK.

5. In the left-hand panel, expand Technologies > Oracle, should see 2 data servers

Oracle Corporation Confidential Page 9 of 71


Oracle Distributed WMS Solution

6. Change the JDBC connection of the ERP, ERP_PO, SAL to coresponding ERP and SAL
instance

7. Click Test. If connection is successful, click OK

Oracle Corporation Confidential Page 10 of 71


Oracle Distributed WMS Solution

1.2 Setup Work Repositories


Once the topology is set up, we should be able to make models and underlying data
stores to eventually design a data transformation inteface. To know more about the
models, please read the ODI user guide.

1. Run Designer and give connection information to the master repository (as done
previously). Pick a meaningful repository name.

2. If you have any exported zip files for the models and/or interfaces see section 1.1.4. In
models, insert an ODI model. This involves providing a logical schema name defined in
the topology manager to make a connection to the instance of interest.

Oracle Corporation Confidential Page 11 of 71


Oracle Distributed WMS Solution

3. Click on Reverse and set the context.

Oracle Corporation Confidential Page 12 of 71


Oracle Distributed WMS Solution

4. Click on ‘Selective Reverse’ to reverse engineer the tables of interest.

Oracle Corporation Confidential Page 13 of 71


Oracle Distributed WMS Solution

5. After reverse engineering the tables, you will see the data stores being created under
Models tab.

1.2.1 Importing Work Repository/Models


If you have an exported file (a zipped file containing xmls or set of xmls files in a folder) of
the model, you can skip the last step of manually setting up the models in the designer.
Instead, one can import this zip file into the designer as shown below:

1. In Designer, click on File > Import > Work Respository


2. Select the Import Mode- Synonym Mode INSERT, import from a FOLDER (or a Zip File, if
you the zipped version of the exported work repository).
3. Browse and select the folder which contains the work repository files
4. Click OK.

Oracle Corporation Confidential Page 14 of 71


Oracle Distributed WMS Solution

5. In the left-hand panel, under Models tab, you will see something like this:

1.2.2 Creating ODI Interface


An interface project is one where we define a source table(s) and a target table(s) using drag
and drop. When Executed, ODI will extract data from source and populate target.

1. In the ODI Designer, select the Project tab. If there is no project, create a new one.
Right click Interface to select New Interface. Enter a name:

Oracle Corporation Confidential Page 15 of 71


Oracle Distributed WMS Solution

2. Click on Diagram and add source and target tables. Define mapping for the target
columns.

3. Go back to Project tab, in order to execute the above we have to associate some
knowledge modules. Right click and import the included knowledge modules: LKM SQL
to SQL and IKM SQL Incremental Update, then dragged them to the new project.

Oracle Corporation Confidential Page 16 of 71


Oracle Distributed WMS Solution

4. Then go back to the Flow tab of the Interface diagram and click the red cross for both
source and target to select these default knowledge modules:

NOTE: Seem to need to set SYNC_JRN_DELETE, UPDATE & FLOW_CONTROL to No.

5. After executing, open the session window by clicking on the operator icon above the
navigator.

Oracle Corporation Confidential Page 17 of 71


Oracle Distributed WMS Solution

6. Check the target database to confirm that new inserts/updates have been performed as
expected.

1.2.3 Creating Packages and Scenarios


A package is a set of sequenced jobs, also called steps, designed to be executed in a pre-
defined order. The package is the largest unit of execution in ODI. A package is made up of a
sequence of steps organized into an execution diagram.

Right click Packages in the project and select Insert Package. In the diagram tab, you can drag
and drop an interface to create an interface task or use the Toolbox icon to add miscellaneous
built-in commands like InvokeWebService or OSCommand.

Following shows a prototyped package for populating PO interface tables.

Oracle Corporation Confidential Page 18 of 71


Oracle Distributed WMS Solution

1.2.4 Journalizing
Journalizing is the capability to ask ODI to extract new data incrementally with minimal set up
and changes to your interfaces. Follow the basics steps for setting up a source table for
journalizing.

First check to see if you have Journalization Knowledge Module set up. By default there is none.
There are several Journalization knowledge modules to choose from. The simple KM places
simple database trigger on the source table to keep track of the keys of newly added records.
The more complex KMs use Oracle CDC (Change Data Capture) to find out which records are
new. Import ‘JKM Oracle Simple’ KM into the project.

Oracle Corporation Confidential Page 19 of 71


Oracle Distributed WMS Solution

1. In the Model move to the Journalizing tab and choose the Journalizing Mode.

• Double-click Model - Journalizing tab - Journalizing Mode, click radio button there
for Simple or Consistent Set

i. Simple Journalizing tracks changes in individual datastores in a model.

ii. Consistent Set Journalizing tracks changes to a group of the Model's


Datastores, taking into account the referential integrity between these
datastores. The group of datastores journalized in this mode is called a
Consistent Set.

Oracle Corporation Confidential Page 20 of 71


Oracle Distributed WMS Solution

2. Then select the Journalizing Knowledge Module (KM).

• Double-click Model - Journalizing tab - Journalizing KM - Choose from the drop


down list.
This Knowledge module must be imported into the Project's Journalization JKM
branch to be available for selection.
3. The Options window should appear below, which will give options to choose for chosen
JKM.
• Click in the Value section of the Options window to get a drop down menu of
values, which can be chosen or left as default.
4. Next, go to the Models tab and select the entity you want to set up journalization.
Journalizing requires a primary key to be setup. Right click the Constraints item and add
a key. It's self-explanatory.

Oracle Corporation Confidential Page 21 of 71


Oracle Distributed WMS Solution

5. After journalization and key is set, drill down in the Models panel to the Datastores of the
journalized Model.
6. Add the Datastore(s) to CDC.
• Right click on the Model, click on Changed Data Capture and then on the Add to
CDC.
7. For Consistent Set Journalization, the order of those Datastores must be set in the Model
on the Journalized Tables tab.
8. Add the subscriber(s) to CDC.
• Right click on the Model - Changed Data Capture - Subscriber - Subscribe...

• Add subscriber to the text box on upper right and click on arrow button to add to
list click OK.

• The Execution pop up window shows and click OK button to execute subscriber
addition.

• Check Operator for success in addition of subscriber.

• Subscribers: CDC uses a publish/subscribe model. Subscribers are the


consumers of the data or entities that use the changes tracked on a datastore or
on a consistent set. They subscribe to a model's CDC to have the changes
tracked for them. Changes are captured only if there is at least one subscriber to
the changes. When all subscribers have consumed the captured changes, these
changes are discarded from the journals.

Oracle Corporation Confidential Page 22 of 71


Oracle Distributed WMS Solution

9. Then from the Model start the Journal.


• Right click on the Model - Changed Data Capture - Start Journal

• The Execution pop up window shows and click OK button to execute the journal
startup.

• Check Operator for success of journal startup.


10. From the Datastore icons, look for the tiny green clock that represents a journalized
Datastore; click the refresh button if necessary.
11. If the clock persists as yellow,
• Right click on the Model - Changed Data Capture - Stop Journal

• Determine the issue with the journal and restart journal.


12. To view changes made, right click on the journalized Datastore - Changed Data Capture -
Journal Data
13. In your interface, the source table needs a filter (where clause) to indicate it should select
the new data as captured in the journal. Go back to the Interface Diagram. Check the
journalized table option. The datastore will now have a few additional pseudo columns.

Oracle Corporation Confidential Page 23 of 71


Oracle Distributed WMS Solution

Oracle Corporation Confidential Page 24 of 71


Oracle Distributed WMS Solution

2 Business Models
There are various key business objects that need to be mapped using the ODI technology and
synchronized between the Host system and the Distributed system or vice-versa.

They can be broadly grouped into the following 4 categories:

Flow Business Object


Common Categories
Category sets
Customer
CustomerSites
Items
Subinventories
Locators
LPNs
UOMs
UOM Conversions
Reservations
Inbound Supplier
Supplier Sites
ASN
Purchase Order
RMA
Internal Order
Manufacturing Job
Receipts
Inspections
Put aways
Transfers
Corrections
Inventory Lot Number
Serial Number
Substitute items
Cross references
Lot Number
Cycle Count
Physical Count
Adjustment Transaction
Onhand Balance
Cycle Count
Outbound Price Lists
Shipment Request
Shipment Advice/ Shipment Confirmation
Deliveries
Trips
Release Sequence Rules
Delivery Grouping Rules
Shipment Request
Shipment Advice/ Shipment Confirmation

Oracle Corporation Confidential Page 25 of 71


Oracle Distributed WMS Solution

Detailed Map information:

• Source Entities
• Target Entities
• Joins
• Filters
• Mappings
• Additional Information

2.1 Inbound – Purchase Order


Typically, a user will use ODI to incrementally extract PO transactions in the ERP instance,
transform and migrate them to interface tables in the distributed instance(s).

The involved tables from the ERP instance are PO_HEADERS_ALL and PO_LINES_ALL that
stores information about the purchase order and lines. The objective is to use ODI to migrate this
information to the distributed instance. The way to do is to populate the corresponding interface
tables on the distributed instance and subsequently run the concurrent program to import the
purchase orders in the SAL. The following section talks about the ODI interfaces and mappings
created to load the PO_HEADERS_INTERFACE, PO_LINES_INTERFACE and
PO_DISTRIBUTIONS_INTERFACE on the SAL instance.

2.1.1 Interfaces
Set up the following interfaces:
• Load PO Headers Interface
• Load PO Lines Interface
• Load PO distribuitions Interface

2.1.1.1 Load PO Headers Interface


• Source Tables

PO_HEADERS_ALL as PO_HEADERS_ALL
PO_VENDOR_SITES_ALL as PO_VENDOR_SITES_ALL
PO_VENDORS as PO_VENDORS
HR_ALL_LOCATIONS as HR_SHIP_TO_LOCATIONS_ERP
HR_ALL_LOCATIONS as HR_BILL_TO_LOCATIONS_ERP
PO_BUYERS_VAL_V as PO_BUYERS_VAL_V
MTL_PARAMETERS on ERP as MTL_PARAMETERS_ERP
HR_ALL_LOCATIONS on SAL as HR_SHIP_TO_LOCATIONS_SAL
HR_ALL_LOCATIONS on SAL as HR_BILL_TO_LOCATIONS_SAL
MTL_PARAMETERS_SAL as MTL_PARAMETERS_SAL

• Target Tables
PO_HEADERS_INTERFACE

• Joins

Oracle Corporation Confidential Page 26 of 71


Oracle Distributed WMS Solution

Join between PO_HEADERS_ALL and PO_VENDOR_SITES_ALL

PO_HEADERS_ALL.VENDOR_SITE_ID=PO_VENDOR_SITES_ALL.VENDOR_SITE_I
D
Join between PO_HEADERS_ALL and PO_VENDORS

PO_HEADERS_ALL.VENDOR_ID=PO_VENDORS.VENDOR_ID
Join between PO_HEADERS_ALL and HR_SHIP_TO_LOCATIONS_ERP

PO_HEADERS_ALL.SHIP_TO_LOCATION_ID=HR_SHIP_TO_LOCATIONS_ERP.LOC
ATION_ID
Join between PO_HEADERS_ALL and HR_BILL_TO_LOCATIONS_ERP

PO_HEADERS_ALL.BILL_TO_LOCATION_ID=HR_BILL_TO_LOCATIONS_ERP.LOCA
TION_ID
Join between PO_HEADERS_ALL and MTL_PARAMETERS_ERP

PO_HEADERS_ALL.ORG_ID=MTL_PARAMETERS_ERP.ORGANIZATION_ID
Join between HR_SHIP_TO_LOCATIONS_ERP and
HR_SHIP_TO_LOCATIONS_SAL

HR_SHIP_TO_LOCATIONS_ERP.LOCATION_CODE=HR_SHIP_TO_LOCATIONS_SA
L.LOCATION_CODE
Join between HR_BILL_TO_LOCATIONS_ERP and
HR_BILL_TO_LOCATIONS_SAL

HR_BILL_TO_LOCATIONS_ERP.LOCATION_CODE=HR_BILL_TO_LOCATIONS_SAL
.LOCATION_CODE
Join between MTL_PARAMETERS_ERP and MTL_PARAMETERS_SAL

MTL_PARAMETERS_ERP.ORGANIZATION_CODE=MTL_PARAMETERS_SAL.ORGA
NIZATION_CODE

• Filters
PO_HEADERS_ALL.AUTHORIZATION_STATUS='APPROVED' AND
PO_HEADERS_ALL.APPROVED_FLAG='Y'

• Variables
p_po_number

Note: Before executing the package to import the PO from the host ERP instance to the
SAL instance, set this variable to the PO number that needs to be imported

• Mappings

INTERFACE_HEADER_ID PO_HEADERS_TEMP.INTERFACE_HEADER_ID

Oracle Corporation Confidential Page 27 of 71


Oracle Distributed WMS Solution

BATCH_ID PO_HEADERS_TEMP.INTERFACE_HEADER_ID
PROCESS_CODE 'PENDING'
ACTION 'ORIGINAL'
ORG_ID MTL_PARAMETERS_SAL.ORGANIZATION_ID
DOCUMENT_TYPE_CODE 'STANDARD'
CURRENCY_CODE PO_HEADERS_ALL.CURRENCY_CODE
VENDOR_DOC_NUM PO_HEADERS_ALL.SEGMENT1
ATTRIBUTE1 PO_HEADERS_ALL.ATTRIBUTE1
ATTRIBUTE15 PO_HEADERS_ALL.ATTRIBUTE15
CREATION_DATE SYSDATE
LAST_UPDATE_DATE SYSDATE
APPROVAL_STATUS 'APPROVED'
VENDOR_SITE_CODE PO_VENDOR_SITES_ALL.VENDOR_SITE_CODE
DOCUMENT_NUM PO_HEADERS_ALL.SEGMENT1
AGENT_NAME PO_BUYERS_VAL_V.FULL_NAME
VENDOR_NAME PO_VENDORS.VENDOR_NAME
SHIP_TO_LOCATION_ID HR_SHIP_TO_LOCATIONS_SAL.LOCATION_ID
BILL_TO_LOCATION_ID HR_BILL_TO_LOCATIONS_SAL.LOCATION_ID
APPROVED_DATE PO_HEADERS_ALL.APPROVED_DATE
NOTE_TO_RECEIVER PO_HEADERS_ALL.NOTE_TO_RECEIVER
COMMENTS PO_HEADERS_ALL.COMMENTS
ATTRIBUTE_CATEGORY PO_HEADERS_ALL.ATTRIBUTE_CATEGORY
ATTRIBUTE2 PO_HEADERS_ALL.ATTRIBUTE2
ATTRIBUTE3 PO_HEADERS_ALL.ATTRIBUTE3
ATTRIBUTE4 PO_HEADERS_ALL.ATTRIBUTE4
ATTRIBUTE5 PO_HEADERS_ALL.ATTRIBUTE5
ATTRIBUTE6 PO_HEADERS_ALL.ATTRIBUTE6
ATTRIBUTE7 PO_HEADERS_ALL.ATTRIBUTE7
ATTRIBUTE8 PO_HEADERS_ALL.ATTRIBUTE8
ATTRIBUTE9 PO_HEADERS_ALL.ATTRIBUTE9
ATTRIBUTE10 PO_HEADERS_ALL.ATTRIBUTE10
ATTRIBUTE11 PO_HEADERS_ALL.ATTRIBUTE11
ATTRIBUTE12 PO_HEADERS_ALL.ATTRIBUTE12
ATTRIBUTE13 PO_HEADERS_ALL.ATTRIBUTE13
ATTRIBUTE14 PO_HEADERS_ALL.ATTRIBUTE14
REFERENCE_NUM PO_HEADERS_ALL.SEGMENT1
RATE_TYPE PO_HEADERS_ALL.RATE_TYPE
RATE_DATE PO_HEADERS_ALL.RATE_DATE
RATE PO_HEADERS_ALL.RATE
NOTE_TO_VENDOR PO_HEADERS_ALL.NOTE_TO_VENDOR

Oracle Corporation Confidential Page 28 of 71


Oracle Distributed WMS Solution

• Additional Information
N/A

2.1.1.2 Load PO Lines Interface


• Source Tables

PO_HEADERS_ALL as PO_HEADERS_ALL
PO_LINES_ALL as PO_LINES_ALL
PO_LINE_TYPES_TL as PO_LINE_TYPES_TL
HR_ALL_LOCATIONS on ERP as HR_SHIP_TO_LOCATIONS_ERP
MTL_PARAMETERS on ERP as MTL_PARAMETERS_ERP
HR_ALL_LOCATIONS on SAL as HR_SHIP_TO_LOCATIONS_SAL
MTL_PARAMETERS on SAL as MTL_PARAMETERS_SAL
MTL_SYSTEM_ITEMS_B_KFV as MTL_SYSTEM_ITEMS_B_KFV
PO_HEADERS_ALL as PO_HEADERS_ALL
PO_LINES_ALL as PO_LINES_ALL

• Target Tables

PO_LINES_INTERFACE

• Joins

Join between PO_HEADERS_ALL and PO_VENDOR_SITES_ALL

PO_HEADERS_ALL.VENDOR_SITE_ID=PO_VENDOR_SITES_ALL.VENDOR_SITE_I
D
Join between PO_HEADERS_ALL and PO_VENDORS

PO_HEADERS_ALL.VENDOR_ID=PO_VENDORS.VENDOR_ID
Join between PO_HEADERS_ALL and HR_SHIP_TO_LOCATIONS_ERP

PO_HEADERS_ALL.SHIP_TO_LOCATION_ID=HR_SHIP_TO_LOCATIONS_ERP.LOC
ATION_ID
Join between PO_HEADERS_ALL and HR_BILL_TO_LOCATIONS_ERP

PO_HEADERS_ALL.BILL_TO_LOCATION_ID=HR_BILL_TO_LOCATIONS_ERP.LOCA
TION_ID
Join between PO_HEADERS_ALL and MTL_PARAMETERS_ERP

PO_HEADERS_ALL.ORG_ID=MTL_PARAMETERS_ERP.ORGANIZATION_ID
Join between HR_SHIP_TO_LOCATIONS_ERP and

Oracle Corporation Confidential Page 29 of 71


Oracle Distributed WMS Solution

HR_SHIP_TO_LOCATIONS_SAL

HR_SHIP_TO_LOCATIONS_ERP.LOCATION_CODE=HR_SHIP_TO_LOCATIONS_SA
L.LOCATION_CODE
Join between HR_BILL_TO_LOCATIONS_ERP and
HR_BILL_TO_LOCATIONS_SAL

HR_BILL_TO_LOCATIONS_ERP.LOCATION_CODE=HR_BILL_TO_LOCATIONS_SAL
.LOCATION_CODE
Join between MTL_PARAMETERS_ERP and MTL_PARAMETERS_SAL

MTL_PARAMETERS_ERP.ORGANIZATION_CODE=MTL_PARAMETERS_SAL.ORGA
NIZATION_CODE

• Filters
PO_LINE_TYPES_TL.LANGUAGE='US'

• Variables
p_po_number

Note: Before executing the package to import the PO from the host ERP instance to the
SAL instance, set this variable to the PO number that needs to be imported

• Mappings

INTERFACE_LINE_ID <%=snpRef.getObjectName("L","PO_LINES_INTE
RFACE_S","SAL_PO","W")%>.nextval
INTERFACE_HEADER_ID PO_HEADERS_TEMP.INTERFACE_HEADER_ID
QUANTITY PO_LINES_ALL.QUANTITY
UNIT_PRICE PO_LINES_ALL.UNIT_PRICE
SHIP_TO_ORGANIZATION_ID MTL_PARAMETERS_SAL.ORGANIZATION_ID
SHIP_TO_LOCATION_ID HR_SHIP_TO_LOCATIONS_SAL.LOCATION_ID
NEED_BY_DATE SYSDATE
LINE_ATTRIBUTE1 PO_LINES_ALL.ATTRIBUTE1
ORGANIZATION_ID MTL_PARAMETERS_SAL.ORGANIZATION_ID
CREATION_DATE SYSDATE
LINE_NUM PO_LINES_ALL.LINE_NUM
DOCUMENT_NUM PO_HEADERS_ALL.SEGMENT1
RECEIVING_ROUTING_ID 1
LINE_ATTRIBUTE_CATEGOR PO_LINES_ALL.ATTRIBUTE_CATEGORY
Y_LINES
LINE_ATTRIBUTE2 PO_LINES_ALL.ATTRIBUTE2
LINE_ATTRIBUTE3 PO_LINES_ALL.ATTRIBUTE3
LINE_ATTRIBUTE4 PO_LINES_ALL.ATTRIBUTE4
LINE_ATTRIBUTE5 PO_LINES_ALL.ATTRIBUTE5

Oracle Corporation Confidential Page 30 of 71


Oracle Distributed WMS Solution

LINE_ATTRIBUTE6 PO_LINES_ALL.ATTRIBUTE6
LINE_ATTRIBUTE7 PO_LINES_ALL.ATTRIBUTE7
LINE_ATTRIBUTE8 PO_LINES_ALL.ATTRIBUTE8
LINE_ATTRIBUTE9 PO_LINES_ALL.ATTRIBUTE9
LINE_ATTRIBUTE10 PO_LINES_ALL.ATTRIBUTE10
LINE_ATTRIBUTE11 PO_LINES_ALL.ATTRIBUTE11
LINE_ATTRIBUTE12 PO_LINES_ALL.ATTRIBUTE12
LINE_ATTRIBUTE13 PO_LINES_ALL.ATTRIBUTE13
LINE_ATTRIBUTE14 PO_LINES_ALL.ATTRIBUTE14
LINE_ATTRIBUTE15 PO_LINES_ALL.ATTRIBUTE15
LINE_REFERENCE_NUM PO_LINES_ALL.LINE_REFERENCE_NUM
LINE_TYPE PO_LINE_TYPES_TL.LINE_TYPE
ITEM MTL_SYSTEM_ITEMS_B_KFV.CONCATENATED
_SEGMENTS
ITEM_DESCRIPTION MTL_SYSTEM_ITEMS_B_KFV.DESCRIPTION
UNIT_OF_MEASURE PO_LINES_ALL.UNIT_MEAS_LOOKUP_CODE
LIST_PRICE_PER_UNIT PO_LINES_ALL.LIST_PRICE_PER_UNIT
MARKET_PRICE PO_LINES_ALL.MARKET_PRICE
NOT_TO_EXCEED_PRICE PO_LINES_ALL.NOT_TO_EXCEED_PRICE
NEGOTIATED_BY_PREPARE PO_LINES_ALL.NEGOTIATED_BY_PREPARER_
R_FLAG FLAG
NOTE_TO_VENDOR PO_LINES_ALL.NOTE_TO_VENDOR

• Additional Information
N/A

2.1.1.3 Load PO Distributions Interface


• Source Tables

PO_LINES_INTERFACE on SAL as PO_LINES_INTERFACE

• Target Tables

PO_DISTRIBUTIONS_INTERFACE

• Joins
N/A

• Filters
N/A

• Variables

Oracle Corporation Confidential Page 31 of 71


Oracle Distributed WMS Solution

N/A

• Mappings

INTERFACE_HEADER_ID PO_LINES_INTERFACE.INTERFACE_HEADER_ID
INTERFACE_LINE_ID PO_LINES_INTERFACE.INTERFACE_LINE_ID
INTERFACE_DISTRIBUTION <%=snpRef.getObjectName("L","PO_DISTRIBUTIO
_ID NS_INTERFACE_S","SAL_PO","W")%>.nextval
ORG_ID PO_LINES_INTERFACE.ORGANIZATION_ID
QUANTITY_ORDERED PO_LINES_INTERFACE.QUANTITY
CHARGE_ACCOUNT '01.1000'
CREATION_DATE SYSDATE

• Additional Information
N/A

2.1.2 Packages
Create a package with the following flow:
1. Load PO Headers Interface
2. Load PO Lines Interface
3. Load PO Distributions Interface

Following screen shot shows this flow:

Oracle Corporation Confidential Page 32 of 71


Oracle Distributed WMS Solution

2.2 Inbound – Receipt Synchronization


ODI can be used to incrementally extract receipt/deliver transactions on a PO in the distributed
instance(s), transform and migrate them to the interface tables in the ERP instance.

The view that fetches all the receipt/deliver transactions from the distributed instance(s) is
RCV_RECEIPT_CONFIRMATION_V, which acts as the main source for this data migration. The
rows from this view, which are not yet migrated, will be used to populate the receiving interface
tables (ROI) on the ERP instance. Once these interface tables are loaded, Receiving
Transaction Processor (RTP) can be run to complete the receipt/deliver transactions on the ERP
instance. The following section talks about the ODI interfaces and mappings created to load the
RCV_HEADERS_INTERFACE (RHI), RCV_TRANSACTIONS_INTERFACE (RTI),
MTL_TRANSACTION_LOTS_INTERFACE (MTLI), MTL_SERIAL_NUMBERS_INTERFACE
(MSNI) on the ERP instance.

2.2.1 Interfaces
Set up the following interfaces:
• Load Receiving Headers Interface (RHI)
• Load Receiving Lines Interface (RTI)
• Load Lots Interface (MTLI)
• Load Serials Interface (MSNI)

2.2.1.1 Load Receiving Headers Interface


• Source Tables

RCV_RECEIPT_CONFIRMATION_V (RRCV) on SAL instance


FND_USER (FNU) on ERP instance

• Target Tables
RCV_HEADERS_INTERFACE (RHI)

• Joins
N/A

• Filters
RRCV.receipt = p_receipt_num

Note: This condition can be changed to fetch the records as desired by the user.
For ex, if the user wants to synchronize the receipt/deliver transactions between a
given date-range then this filter can be changed to:

RRCV.creation_date between p_from_date and p_to_date

However, please note that the synchronization should happen per receipt_num;
hence if a different extraction condition is used then the retrieved records need to
be looped through for all the distinct receipt_num and data should be transferred
for one receipt_num at a time.

FNU.user_name = p_user_name

Oracle Corporation Confidential Page 33 of 71


Oracle Distributed WMS Solution

This is the user with which you want to perform the transactions on the ERP
instance.

• Variables
p_receipt_num
p_user_name

Note: Before executing the package to import the transactions from the SAL instance to
the host ERP instance, set these variables to the receipt number (that needs to be
imported) and the user name (with which you want to perform the transactions).

• Mappings

HEADER_INTERFACE_ID RCV_HEADERS_INTERFACE_S.NEXTVAL
GROUP_ID RCV_INTERFACE_GROUPS_S.NEXTVAL
PROCESSING_STATUS_CODE 'PENDING'
RECEIPT_SOURCE_CODE 'VENDOR'
ASN_TYPE RRCV.SHIPMENT_TYPE
TRANSACTION_TYPE 'NEW'
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY FNU.USER_ID
LAST_UPDATE_LOGIN FNU.USER_ID
CREATION_DATE SYSDATE
CREATED_BY FNU.USER_ID
SHIPMENT_NUM RRCV.SHIPMENT
RECEIPT_NUM RRCV.RECEIPT
VENDOR_NAME RRCV.VENDOR_NAME
SHIP_TO_ORGANIZATION_CODE RRCV.WAREHOUSE
SHIPPED_DATE RRCV.SHIPPED_DATE
EXPECTED_RECEIPT_DATE RRCV.TRANSACTION_DATE

Note: It is assumed that the following entities are same in both the distributed and the
ERP instance:

Organization Name
User Name

• Additional Information
N/A

Oracle Corporation Confidential Page 34 of 71


Oracle Distributed WMS Solution

2.2.1.2 Load Receiving Lines Interface (RTI)


• Source Tables

RCV_RECEIPT_CONFIRMATION_V (RRCV) on SAL instance


FND_USER (FNU) on ERP instance
RCV_HEADERS_INTERFACE (RHI) on ERP instance
MTL_PARAMETERS (MP) on ERP instance
MTL_SYSTEM_ITEMS_B_KFV (MSI) on ERP instance
MTL_ITEM_LOCATIONS_KFV (MIL) on ERP instance

• Target Tables

RCV_TRANSACTIONS_INTERFACE (RTI)

• Joins

Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and


RCV_HEADERS_INTERFACE (RHI)

RRCV.RECEIPT = RHI.RECEIPT_NUM
Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and MTL_PARAMETERS
(MP)

RRCV.WAREHOUSE = MP.ORGANIZATION_CODE
Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and
MTL_SYSTEM_ITEMS_B_KFV (MSI)

RRCV.ITEM = MSI.CONCATENATED_SEGMENTS
Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and
MTL_ITEM_LOCATIONS_KFV (MIL)

RRCV.LOCATOR = MIL.CONCATENATED_SEGMENTS
Join between MTL_ITEM_LOCATIONS_KFV (MIL) and MTL_PARAMETERS (MP)

MIL.ORGANIZATION_ID = MP.ORGANIZATION_ID
Join between MTL_SYSTEM_ITEMS_B_KFV (MSI) and MTL_PARAMETERS (MP)

MSI.ORGANIZATION_ID = MP.ORGANIZATION_ID

• Filters
RRCV.receipt = p_receipt_num
FNU.user_name = p_user_name
RHI.processing_status_code = 'PENDING'

Oracle Corporation Confidential Page 35 of 71


Oracle Distributed WMS Solution

• Variables
p_receipt_num
p_user_name

• Mappings

INTERFACE_TRANSACTION_ID RCV_TRANSACTIONS_INTERFACE_S.NEXTVAL
GROUP_ID RHI.GROUP_ID
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY FNU.USER_ID
CREATION_DATE SYSDATE
CREATED_BY FNU.USER_ID
LAST_UPDATE_LOGIN FNU.USER_ID
TRANSACTION_TYPE 'RECEIVE'
TRANSACTION_DATE RRCV.TRANSACTION_DATE
PROCESSING_STATUS_CODE 'PENDING'
PROCESSING_MODE_CODE 'BATCH'
TRANSACTION_STATUS_CODE 'PENDING'
QUANTITY RRCV.TRANSACTION_QUANTITY
UNIT_OF_MEASURE RRCV.TRANSACTION_UOM
INTERFACE_SOURCE_CODE 'RCV'
ITEM_ID MSI.INVENTORY_ITEM_ID
ITEM_DESCRIPTION MSI.DESCRIPTION
ITEM_REVISION RRCV.REVISION
AUTO_TRANSACT_CODE 'DELIVER'
PRIMARY_QUANTITY RRCV.PRIMARY_QUANTITY
PRIMARY_UNIT_OF_MEASURE RRCV.PRIMARY_UOM
RECEIPT_SOURCE_CODE 'VENDOR'
VENDOR_NAME RRCV.VENDOR_NAME
VENDOR_SITE_CODE RRCV.VENDOR_SITE_CODE
SOURCE_DOCUMENT_CODE 'PO'
SUBINVENTORY RRCV.SUBINVENTORY
LOCATOR_ID MIL.INVENTORY_LOCATION_ID
SHIPMENT_NUM RRCV.SHIPMENT
ATTRIBUTE10 RRCV.TRANSACTION_ID
HEADER_INTERFACE_ID RHI. HEADER_INTERFACE_ID
DOCUMENT_NUM RRCV.DOCUMENT_NUMBER
DOCUMENT_LINE_NUM RRCV.DOCUMENT_LINE_NUMBER
TO_ORGANIZATION_CODE RRCV.TRANSFER_WAREHOUSE

Oracle Corporation Confidential Page 36 of 71


Oracle Distributed WMS Solution

DELIVER_TO_LOCATION_CODE RRCV. DELIVER_TO_LOCATION_CODE


Note: It is assumed that the following entities are same in both the distributed and the
ERP instance:

Organization Name
User Name
Item Name
Subinventory Name
Locator Name

• Additional Information
N/A

2.2.1.3 Load Lots Interface


• Source Tables

RCV_RECEIPT_CONFIRMATION_V (RRCV) on SAL instance


FND_USER (FNU) on ERP instance
RCV_HEADERS_INTERFACE (RHI) on ERP instance
RCV_TRANSACTIONS_INTERFACE (RTI) on ERP instance

• Target Tables

MTL_TRANSACTION_LOTS_INTERFACE (MTLI)

• Joins
Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and
RCV_HEADERS_INTERFACE (RHI)

RRCV.RECEIPT = RHI.RECEIPT_NUM
Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and
RCV_TRANSACTIONS_INTERFACE (RTI)

(RRCV.DOCUMENT_NUMBER=RTI.DOCUMENT_NUM) AND
RRCV.DOCUMENT_LINE_NUMBER=RTI.DOCUMENT_LINE_NUM
Join between RCV_HEADERS_INTERFACE (RHI) and
RCV_TRANSACTIONS_INTERFACE (RTI)

(RTI.GROUP_ID=RHI.GROUP_ID) AND
RTI.HEADER_INTERFACE_ID=RHI.HEADER_INTERFACE_ID

• Filters
RRCV.LOT IS NOT NULL
RRCV.RECEIPT = p_receipt_num
FNU.USER_NAME = p_user_name

Oracle Corporation Confidential Page 37 of 71


Oracle Distributed WMS Solution

• Variables
p_receipt_num
p_user_name

• Mappings

TRANSACTION_INTERFACE_ID RTI.INTERFACE_TRANSACTION_ID
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY FNU.USER_ID
CREATION_DATE SYSDATE
CREATED_BY FNU.USER_ID
LAST_UPDATE_LOGIN FNU.USER_ID
LOT_NUMBER RRCV.LOT
TRANSACTION_QUANTITY RRCV.LOT_QUANTITY
PRIMARY_QUANTITY RRCV.LOT_QUANTITY
PRODUCT_CODE ‘RCV’
PRODUCT_TRANSACTION_ID RTI.INTERFACE_TRANSACTION_ID

• Additional Information
N/A

2.2.1.4 Load Serials Interface


• Source Tables

RCV_RECEIPT_CONFIRMATION_V (RRCV) on SAL instance


FND_USER (FNU) on ERP instance
RCV_TRANSACTIONS_INTERFACE (RTI) on ERP instance

• Target Tables

MTL_SERIAL_NUMBERS_INTERFACE (MSNI)

• Joins

Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and


RCV_TRANSACTIONS_INTERFACE (RTI)

RRCV.DOCUMENT_NUMBER=RTI.DOCUMENT_NUM AND
RRCV.DOCUMENT_LINE_NUMBER=RTI.DOCUMENT_LINE_NUM AND
RRCV.TRANSACTION_TYPE = RTI.TRANSACTION_TYPE

Oracle Corporation Confidential Page 38 of 71


Oracle Distributed WMS Solution

• Filters
RRCV.SERIAL IS NOT NULL
RRCV.RECEIPT = p_receipt_num
FNU.USER_NAME = p_user_name

• Variables
p_receipt_num
p_user_name

• Mappings

TRANSACTION_INTERFACE_ID RTI.INTERFACE_TRANSACTION_ID
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY FNU.USER_ID
CREATION_DATE SYSDATE
CREATED_BY FNU.USER_ID
LAST_UPDATE_LOGIN FNU.USER_ID
FM_SERIAL_NUMBER RRCV.SERIAL
TO_SERIAL_NUMBER RRCV.SERIAL
PRODUCT_CODE ‘RCV’
PRODUCT_TRANSACTION_ID RTI.INTERFACE_TRANSACTION_ID

• Additional Information
N/A

2.2.2 Procedures
Create the following procedure in ODI to update the receipt_extracted flag for the particular
receipt number, which has been successfully migrated from the Distributed Instance to the Host
Instance:

Update_RC

2.2.2.1 Create Procedure Update_RC

• Command on Source
Add the following pl/sql block:

x_return_status VARCHAR2(100);
x_msg_data VARCHAR2(500);
x_msg_count NUMBER;

l_ret_stauts VARCHAR2(100);

Begin

L_ret_status := INV_STANDALONE_SYNC_PUB.Update_RC_Extracted

Oracle Corporation Confidential Page 39 of 71


Oracle Distributed WMS Solution

(1.0,
, FND_API.G_FALSE
, FND_API.G_FALSE
, x_return_status
, x_msg_count
, x_msg_data
, to_char(trunc(sysdate), ‘DD-MON-YYYY’)
, to_char(trunc(sysdate+1), ‘DD-MON-YYYY’)
, NULL
, RRCV.warehouse
, NULL
, p_receipt_num
, NULL
, p_rc_extracted
, NULL
);

End;

• Variables
p_rc_extracted

2.2.3 Packages
Create a package with the following flow:
1. Load RCV Headers Interface
2. Load RCV Lines Interface
3. Load Lots Interface
4. Load Serials Interface
5. Update RC-Extracted Flag

Following screen shot shows this flow:

Oracle Corporation Confidential Page 40 of 71


Oracle Distributed WMS Solution

Oracle Corporation Confidential Page 41 of 71


Oracle Distributed WMS Solution

2.3 Adjustment – Transactions Synchronization


ODI can be used to incrementally extract adjustment transactions in the distributed instance(s),
transform and migrate them to the interface tables in the ERP instance.

The view that fetches all the adjustment transactions from the distributed instance(s) is
MTL_ADJUSTMENT_TXN_SYNC_V, which acts as the main source for this data migration. The
rows from this view, which are not yet migrated, will be used to populate the inventory interface
tables (TOI) on the ERP instance. Once these interface tables are loaded, Inventory Transaction
Worker can be run to complete the corresponding transactions on the ERP instance. The
following section talks about the ODI interfaces and mappings created to load the
MTL_TRANSACTIONS_INTERFACE (MTI), MTL_TRANSACTION_LOTS_INTERFACE (MTLI),
and MTL_SERIAL_NUMBERS_INTERFACE (MSNI) on the ERP instance.

2.3.1 Interfaces
Set up the following interfaces:
• Load Inventory Transactions Interface (MTI)
• Load Lots Interface (MTLI)
• Load Serials Interface (MSNI)

2.3.1.1 Load Inventory Transactions Interface


• Source Tables

MTL_ADJUSTMENT_TXN_SYNC _V (MATSV) on SAL instance


FND_USER (FNU) on ERP instance
MTL_ITEM_LOCATIONS_KFV (MIL) on ERP instance
MTL_PARAMETERS (MP) on ERP instance
MTL_SYSTEM_ITEMS_B_KFV (MSI) on ERP instance
SINV (a text file, SUB.txt)

Please note that SUB.txt is a text file, which stores the transformation between the subinv
names in the source instance (the distributed instance) to the corresponding subinv
names in the target instance (host instance).

The file, SUB.txt, has following structure:

Oracle Corporation Confidential Page 42 of 71


Oracle Distributed WMS Solution

• Target Tables
MTL_TRANSACTIONS_INTERFACE (MTI)

• Joins
Join between MTL_ADJUSTMENT_TXN_SYNC _V (MATSV) and
MTL_PARAMETERS (MP)

MATSV.WAREHOUSE = MP.ORGANIZATION_CODE
Join between MTL_ADJUSTMENT_TXN_SYNC _V (MATSV) and
MTL_SYSTEM_ITEMS_B_KFV (MSI)

MATSV.ITEM = MSI.CONCATENATED_SEGMENTS
Join between MTL_ADJUSTMENT_TXN_SYNC _V (MATSV) and
MTL_ITEM_LOCATIONS_KFV (MIL)

MATSV.LOCATOR = MIL.CONCATENATED_SEGMENTS
Join between MTL_ITEM_LOCATIONS_KFV (MIL) and MTL_PARAMETERS (MP)

MIL.ORGANIZATION_ID = MP.ORGANIZATION_ID
Join between MTL_SYSTEM_ITEMS_B_KFV (MSI) and MTL_PARAMETERS (MP)

MSI.ORGANIZATION_ID = MP.ORGANIZATION_ID
Join between MTL_ADJUSTMENT_TXN_SYNC _V (MATSV) and SINV (SUB.txt)

MATSV.SUBINVENTORY = SUB.SOURCE_SUB

• Filters
MATSV.TRANSACTION_NUMBER = p_txn_num

Note: This condition can be changed to fetch the records as desired by the user.
For ex, if the user wants to synchronize the adjustment transactions between a
given date-range then this filter can be changed to:

MATSV.CREATION_DATE between p_from_date and p_to_date

FNU.USER_NAME = p_user_name

This is the user with which you want to perform the transactions on the ERP
instance.

• Variables
p_txn_num
p_user_name
p_dist_id

Note: Before executing the package to import the transactions from the SAL instance to
the host ERP instance, set these variables to the transaction number (that needs to be

Oracle Corporation Confidential Page 43 of 71


Oracle Distributed WMS Solution

imported), the user name (with which you want to perform the transactions) and the
distribution id (against which the transaction will be posted in the ERP instance).

• Mappings

TRANSACTION_HEADER_ID MTL_MATERIAL_TRANSACTIONS_S.NEXTVAL
TRANSACTION_INTERFACE_ID MTL_MATERIAL_TRANSACTIONS_S.NEXTVAL
SOURCE_CODE 'AdjTxnSync'
SOURCE_LINE_ID 1
SOURCE_HEADER_ID 1
PROCESS_FLAG 1
TRANSACTION_MODE 3
CREATED_BY FNU.USER_ID
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY FNU.USER_ID
ORGANIZATION_ID MP.ORGANIZATION_ID
INVENTORY_ITEM_ID MSI.INVENTORY_ITEM_ID
REVISION MATSV.REVISION
SUBINVENTORY_CODE SINV.TARGET_SUB
LOCATOR_ID MIL.INVENTORY_LOCATION_ID
TRANSACTION_QUANTITY MATSV.TRANSACTION_QUANTITY
TRANSACTION_UOM MSI. PRIMARY_UOM_CODE
TRANSACTION_DATE MATSV.TRANSACTION_DATE
TRANSACTION_TYPE_ID decode (sign (MATSV.
TRANSACTION_QUANTITY, -1, 32, 1, 42)

TRANSACTION_SOURCE_TYPE_ID 13
DISTRIBUTION_ACCOUNT_ID p_dist_id
TRANSACTION_SOURCE_NAME MATSV.TRANSACTION_SOURCE
TRANSACTION_REFERENCE MATSV.TRANSACTION_NUMBER
TRANSACTION_ACTION_ID decode (sign (MATSV.
TRANSACTION_QUANTITY, -1, 1, 1, 27)
CREATION_DATE SYSDATE

Note: It is assumed that the following entities are same in both the distributed and the
ERP instance:

Organization Name
User Name
Item Name
Subinventory Name
Locator Name

• Additional Information
N/A

Oracle Corporation Confidential Page 44 of 71


Oracle Distributed WMS Solution

2.3.1.2 Load Lots Interface


• Source Tables

MTL_ADJUSTMENT_TXN_SYNC _V (MATSV) on SAL instance


FND_USER (FNU) on ERP instance
MTL_TRANSACTION_ INTERFACE (RHI) on ERP instance

• Target Tables

MTL_TRANSACTION_LOTS_INTERFACE (MTLI)

• Joins
Join between MTL_ADJUSTMENT_TXN_SYNC _V (MATSV) and
MTL_TRANSACTIONS_INTERFACE (MTI)

MATSV.TRANSACTION_NUMBER = MTI.TRANSACTION_REFERENCE AND


MATSV.TRANSACTION_SOURCE = MTI.TRANSACTION_SOURCE_NAME

• Filters
MATSV.LOT IS NOT NULL
MATSV.TRANSACTION_NUMBER = p_txn_num
FNU.USER_NAME = p_user_name

• Variables
p_txn_num
p_user_name

• Mappings
TRANSACTION_INTERFACE_ID MTI.TRANSACTION_INTERFACE_ID
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY FNU.USER_ID
CREATION_DATE SYSDATE
CREATED_BY FNU.USER_ID
LOT_NUMBER RRCV.LOT
TRANSACTION_QUANTITY RRCV.LOT_QUANTITY
PROCESS_FLAG 1
SOURCE_CODE MTI.SOURCE_CODE
SOURCE_LINE_ID MTI.SOURCE_LINE_ID
SERIAL_TRANSACTION_TEMP_ID
Decode (MATSV.SERIAL_NUMBER, NULL,
MTI.TRANSACTION_INTERFACE_ID,
MTL_MATERIAL_TRANSACTIONS_S.NEXTVAL)

Oracle Corporation Confidential Page 45 of 71


Oracle Distributed WMS Solution

• Additional Information
N/A

2.3.1.3 Load Serials Interface


• Source Tables

MTL_ADJUSTMENT_TXN_SYNC _V (MATSV) on SAL instance


FND_USER (FNU) on ERP instance
MTL_TRANSACTION_ INTERFACE (RHI) on ERP instance
MTL_TRANSACTION_LOTS_INTERFACE (RHI) on ERP instance

• Target Tables

MTL_SERIAL_NUMBERS_INTERFACE (MSNI)

• Joins
Join between MTL_ADJUSTMENT_TXN_SYNC _V (MATSV) and
MTL_TRANSACTIONS_INTERFACE (MTI)

MATSV.TRANSACTION_NUMBER = MTI.TRANSACTION_REFERENCE AND


MATSV.TRANSACTION_SOURCE = MTI.TRANSACTION_SOURCE_NAME
Join between MTL_TRANSACTIONS_INTERFACE (MTI) and
MTL_TRANSACTION_LOTS_INTERFACE (MTLI)

MTI.TRANSACTION_INTERFACE_ID = MTLI. TRANSACTION_INTERFACE_ID


Join between MTL_ADJUSTMENT_TXN_SYNC _V (MATSV) and
MTL_TRANSACTION_LOTS_INTERFACE (MTLI)

MATSV.LOT = MTLI.LOT_NUMBER (+)

• Filters
MATSV.SERIAL IS NOT NULL
MATSV.TRANSACTION_NUMBER = p_txn_num
FNU.USER_NAME = p_user_name

• Variables
p_receipt_num
p_user_name

• Mappings

Oracle Corporation Confidential Page 46 of 71


Oracle Distributed WMS Solution

TRANSACTION_INTERFACE_ID decode (MATSV.LOT, NULL,


MTI.TRANSACTION_INTERFACE_ID,
MTLI.SERIAL_TRANSACTION_TEMP_ID)
SOURCE_CODE MTI.SOURCE_CODE
SOURCE_LINE_ID MTI.SOURCE_LINE_ID
CREATION_DATE SYSDATE
CREATED_BY FNU.USER_ID
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY FNU.USER_ID
FM_SERIAL_NUMBER MATSV.SERIAL
TO_SERIAL_NUMBER MATSV.SERIAL
PROCESS_FLAG 1

• Additional Information
N/A

2.3.2 Procedures
Create the following procedure in ODI to update the transaction_extracted flag for the particular
transaction number, which has been successfully migrated from the Distributed Instance to the
Host Instance:

Update_Txn_Extracted

2.3.2.1 Create Procedure Update_Txn_Extracted

• Command on Source

Add the following pl/sql block:

Declare

x_return_status VARCHAR2(100);
x_msg_data VARCHAR2(500);
x_msg_count NUMBER;

l_ret_stauts VARCHAR2(100);

Begin

L_ret_status := INV_STANDALONE_SYNC_PUB.sync_adjustment_transactions
(1.0,
, FND_API.G_FALSE
, FND_API.G_FALSE
, x_return_status
, x_msg_count
, x_msg_data
, to_char(trunc(sysdate), ‘DD-MON-YYYY’)
, to_char(trunc(sysdate+1), ‘DD-MON-YYYY’)

Oracle Corporation Confidential Page 47 of 71


Oracle Distributed WMS Solution

, MATSV.warehouse
, MATSV.category
, NULL
, NULL
, NULL
, p_txn_num
, p_rc_extracted
);

End;

• Variables
p_txn_extracted

2.3.3 Packages
Create a package with the following flow:
1. Load Inventory Transactions Interface
2. Load Lots Interface
3. Load Serials Interface
6. Update Txn-Extracted Flag

Following screen shot shows this flow:

Oracle Corporation Confidential Page 48 of 71


Oracle Distributed WMS Solution

2.4 Outbound – Shipment Request


The sales order that has been created in the ERP instance needs to be imported into the SAL
instance. Following interfaces loads the relevant interface tables. Once the interface tables are
populated, one need to run the concurrent program ‘Process Shipment Request’ on the
distributed instance to finish the ‘shipment request’ process.

2.4.1 Interfaces
Set up the following interfaces:
• Load WSH new delivery Interface
• Load WSH delivery details Interface
• Load WSH delivery assignment Interface
• Load WSH transactions history

2.4.1.1 Load WSH new delivery Interface


• Source Tables

OE_ORDER_HEADERS_ALL as OE_ORDER_HEADERS_ALL
OE_ORDER_LINES_ALL as OE_ORDER_LINES_ALL
WSH_DELIVERY_DETAILS as WSH_DELIVERY_DETAILS
MTL_PARAMETERS on ERP as MTL_PARAMETERS_ERP
WSH_CUSTOMER_LOCATIONS_V on ERP as WSH_SHIP_TO_CUSTOMER_LOC
WSH_CUSTOMER_LOCATIONS_V on ERP as WSH_DELIVER_TO_CUSTOMER_LOC
FND_USER on ERP as FND_CREATED_BY_ERP
FND_USER on SAL as FND_CREATED_BY_SAL
FND_USER on ERP as FND_LAST_UPDATED_BY_ERP
FND_USER on SAL as FND_LAST_UPDATED_BY_SAL

• Target Tables

WSH_NEW_DEL_INTERFACE

• Joins

Join between OE_ORDER_HEADERS_ALL and OE_ORDER_LINES_ALL

(OE_ORDER_HEADERS_ALL.ORG_ID=OE_ORDER_LINES_ALL.ORG_ID) AND
OE_ORDER_HEADERS_ALL.HEADER_ID=OE_ORDER_LINES_ALL.HEADER_ID and
rownum=1
Join between WSH_DELIVERY_DETAILS and OE_ORDER_LINES_ALL

(WSH_DELIVERY_DETAILS.SOURCE_LINE_ID=OE_ORDER_LINES_ALL.LINE_ID)
AND
WSH_DELIVERY_DETAILS.INVENTORY_ITEM_ID=OE_ORDER_LINES_ALL.INVENTO
RY_ITEM_ID and rownum=1
Join between WSH_DELIVERY_DETAILS and OE_ORDER_HEADERS_ALL

Oracle Corporation Confidential Page 49 of 71


Oracle Distributed WMS Solution

(WSH_DELIVERY_DETAILS.SOURCE_HEADER_ID=OE_ORDER_HEADERS_ALL.HEA
DER_ID) AND
WSH_DELIVERY_DETAILS.SOURCE_HEADER_TYPE_ID=OE_ORDER_HEADERS_AL
L.ORDER_TYPE_ID
Join between WSH_DELIVERY_DETAILS and WSH_DELIVER_TO_CUSTOMER_LOC

(WSH_DELIVERY_DETAILS.DELIVER_TO_LOCATION_ID=WSH_DELIVER_TO_CUST
OMER_LOC.WSH_LOCATION_ID) AND
WSH_DELIVERY_DETAILS.ORG_ID=WSH_DELIVER_TO_CUSTOMER_LOC.ORG_ID
Join between WSH_DELIVERY_DETAILS and WSH_SHIP_TO_CUSTOMER_LOC

(WSH_DELIVERY_DETAILS.SHIP_TO_LOCATION_ID=WSH_SHIP_TO_CUSTOMER_L
OC.WSH_LOCATION_ID) AND
WSH_DELIVERY_DETAILS.ORG_ID=WSH_SHIP_TO_CUSTOMER_LOC.ORG_ID
Join between MTL_PARAMETERS_ERP and WSH_DELIVERY_DETAILS

WSH_DELIVERY_DETAILS.ORGANIZATION_ID=MTL_PARAMETERS_ERP.ORGANIZ
ATION_ID
Join between FND_CREATED_BY_ERP and FND_CREATED_BY_SAL

FND_CREATED_BY_ERP.USER_NAME=FND_CREATED_BY_SAL.USER_NAME
Join between FND_LAST_UPDATED_BY_SAL and FND_LAST_UPDATED_BY_ERP

FND_LAST_UPDATED_BY_ERP.USER_NAME=FND_LAST_UPDATED_BY_SAL.USER
_NAME
Join between FND_CREATED_BY_ERP and OE_ORDER_HEADERS_ALL

OE_ORDER_HEADERS_ALL.CREATED_BY=FND_CREATED_BY_ERP.USER_ID
Join between FND_LAST_UPDATED_BY_BY_ERP and OE_ORDER_HEADERS_ALL

OE_ORDER_HEADERS_ALL.CREATED_BY=FND_LAST_UPDATED_BY_ERP.USER_I
D

• Filters

OE_ORDER_HEADERS_ALL.ORDER_NUMBER=#order_number

Note: #order_number is an ODI variable. We set this to the sales order number that we
want to import from the ERP instance to the distributed instance(s).

• Variables
#order_number
order_number is an ODI variable. Set this to the sales order number that we want to
import from the ERP instance to the distributed instance(s).

#p_delivery_interface_id
Generate delivery interface id upfront and store it in this ODI variable.
E.g. select wsh_new_del_interface_s.nextval from dual

Oracle Corporation Confidential Page 50 of 71


Oracle Distributed WMS Solution

• Mappings

DELIVERY_INTERFACE_ID #p_delivery_interface_id
CREATION_DATE SYSDATE
CREATED_BY FND_CREATED_BY_SAL.USER_ID
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY FND_LAST_UPDATED_BY_SAL.USER_ID
CURRENCY_CODE WSH_DELIVERY_DETAILS.CURRENCY_CODE
ORGANIZATION_CODE MTL_PARAMETERS_ERP.ORGANIZATION_CODE
EARLIEST_PICKUP_DATE WSH_DELIVERY_DETAILS.EARLIEST_PICKUP_D
ATE
LATEST_PICKUP_DATE WSH_DELIVERY_DETAILS.LATEST_PICKUP_DA
TE
EARLIEST_DROPOFF_DATE WSH_DELIVERY_DETAILS.EARLIEST_DROPOFF
_DATE
LATEST_DROPOFF_DATE WSH_DELIVERY_DETAILS.LATEST_DROPOFF_D
ATE
PLANNED_FLAG 'N'
STATUS_CODE 'OP'
INTERFACE_ACTION_CODE '94X_STANDALONE'
DELIVERY_TYPE 'I'
SHIP_TO_ADDRESS1 WSH_SHIP_TO_CUSTOMER_LOC.ADDRESS1
SHIP_TO_ADDRESS2 WSH_SHIP_TO_CUSTOMER_LOC.ADDRESS2
SHIP_TO_ADDRESS3 WSH_SHIP_TO_CUSTOMER_LOC.ADDRESS3
SHIP_TO_ADDRESS4 WSH_SHIP_TO_CUSTOMER_LOC.ADDRESS4
SHIP_TO_CITY WSH_SHIP_TO_CUSTOMER_LOC.CITY
SHIP_TO_STATE WSH_SHIP_TO_CUSTOMER_LOC.STATE
SHIP_TO_COUNTRY WSH_SHIP_TO_CUSTOMER_LOC.COUNTRY
INVOICE_TO_ADDRESS1 WSH_DELIVER_TO_CUSTOMER_LOC.ADDRESS
1
INVOICE_TO_ADDRESS2 WSH_DELIVER_TO_CUSTOMER_LOC.ADDRESS
2
INVOICE_TO_ADDRESS3 WSH_DELIVER_TO_CUSTOMER_LOC.ADDRESS
3
INVOICE_TO_ADDRESS4 WSH_DELIVER_TO_CUSTOMER_LOC.ADDRESS
4
INVOICE_TO_CITY WSH_DELIVER_TO_CUSTOMER_LOC.CITY
INVOICE_TO_STATE WSH_DELIVER_TO_CUSTOMER_LOC.STATE
INVOICE_TO_COUNTRY WSH_DELIVER_TO_CUSTOMER_LOC.COUNTRY
SHIP_TO_POSTAL_CODE WSH_SHIP_TO_CUSTOMER_LOC.POSTAL_COD
E
INVOICE_TO_POSTAL_COD WSH_DELIVER_TO_CUSTOMER_LOC.POSTAL_

Oracle Corporation Confidential Page 51 of 71


Oracle Distributed WMS Solution

E CODE
SHIP_TO_CUSTOMER_NAM WSH_SHIP_TO_CUSTOMER_LOC.CUSTOMER_N
E AME
INVOICE_TO_CUSTOMER_ WSH_DELIVER_TO_CUSTOMER_LOC.CUSTOME
NAME R_NAME

• Additional Information
N/A

2.4.1.2 Load WSH delivery details Interface


• Source Tables

MTL_SYSTEM_ITEMS_B_KFV as MTL_SYSTEM_ITEMS_B_KFV
OE_ORDER_HEADERS_ALL as OE_ORDER_HEADERS_ALL
OE_ORDER_LINES_ALL as OE_ORDER_LINES_ALL
WSH_DELIVERY_DETAILS as WSH_DELIVERY_DETAILS
MTL_PARAMETERS as MTL_PARAMETERS
FND_USER on ERP as FND_CREATED_BY_ERP
FND_USER on SAL as FND_CREATED_BY_SAL
FND_USER on ERP as FND_LAST_UPDATED_BY_ERP
FND_USER on SAL as FND_LAST_UPDATED_BY_SAL

• Target Tables

WSH_DEL_DETAILS_INTERFACE

• Joins

Join between OE_ORDER_HEADERS_ALL and OE_ORDER_LINES_ALL

(OE_ORDER_HEADERS_ALL.ORG_ID=OE_ORDER_LINES_ALL.ORG_ID) AND
OE_ORDER_HEADERS_ALL.HEADER_ID=OE_ORDER_LINES_ALL.HEADER_ID
Join between WSH_DELIVERY_DETAILS and OE_ORDER_LINES_ALL

(WSH_DELIVERY_DETAILS.SOURCE_LINE_ID=OE_ORDER_LINES_ALL.LINE_ID)
AND
WSH_DELIVERY_DETAILS.SOURCE_HEADER_ID=OE_ORDER_LINES_ALL.HEADER
_ID
Join between MTL_SYSTEM_ITEMS_B_KFV and WSH_DELIVERY_DETAILS

(WSH_DELIVERY_DETAILS.INVENTORY_ITEM_ID=MTL_SYSTEM_ITEMS_B_KFV.INV
ENTORY_ITEM_ID) AND
WSH_DELIVERY_DETAILS.ORG_ID=MTL_SYSTEM_ITEMS_B_KFV.ORGANIZATION_I

Oracle Corporation Confidential Page 52 of 71


Oracle Distributed WMS Solution

D
Join between MTL_PARAMETERS and WSH_DELIVERY_DETAILS

WSH_DELIVERY_DETAILS.ORGANIZATION_ID=MTL_PARAMETERS.ORGANIZATION
_ID
Join between FND_CREATED_BY_ERP and FND_CREATED_BY_SAL

FND_CREATED_BY_ERP.USER_NAME=FND_CREATED_BY_SAL.USER_NAME
Join between FND_LAST_UPDATED_BY_SAL and FND_LAST_UPDATED_BY_ERP

FND_LAST_UPDATED_BY_ERP.USER_NAME=FND_LAST_UPDATED_BY_SAL.USER
_NAME
Join between FND_CREATED_BY_ERP and OE_ORDER_HEADERS_ALL

OE_ORDER_HEADERS_ALL.CREATED_BY=FND_CREATED_BY_ERP.USER_ID
Join between FND_LAST_UPDATED_BY_BY_ERP and OE_ORDER_HEADERS_ALL

OE_ORDER_HEADERS_ALL.CREATED_BY=FND_LAST_UPDATED_BY_ERP.USER_I
D

• Filters

OE_ORDER_HEADERS_ALL.ORDER_NUMBER=#order_number
WSH_DELIVERY_DETAILS.SOURCE_CODE = 'OE'

Note: #order_number is an ODI variable. We set this to the sales order number that we
want to import from the ERP instance to the distributed instance(s).

• Variables
#order_number
order_number is an ODI variable. Set this to the sales order number that we want to
import from the ERP instance to the distributed instance(s).

• Mappings

DELIVERY_DETAIL_INTERF <%=snpRef.getObjectName("L","WSH_DEL_DETAI
ACE_ID LS_INTERFACE_S","SAL_WSH","W")%>.nextval
SOURCE_CODE 'OE'
SOURCE_LINE_ID -1
ITEM_DESCRIPTION MTL_SYSTEM_ITEMS_B_KFV.DESCRIPTION
SHIP_TOLERANCE_ABOVE WSH_DELIVERY_DETAILS.SHIP_TOLERANCE_A
BOVE
SHIP_TOLERANCE_BELOW WSH_DELIVERY_DETAILS.SHIP_TOLERANCE_B
ELOW
REQUESTED_QUANTITY WSH_DELIVERY_DETAILS.REQUESTED_QUANTI
TY

Oracle Corporation Confidential Page 53 of 71


Oracle Distributed WMS Solution

REQUESTED_QUANTITY_U Upper(WSH_DELIVERY_DETAILS.REQUESTED_
OM QUANTITY_UOM)
DATE_REQUESTED WSH_DELIVERY_DETAILS.DATE_REQUESTED
DATE_SCHEDULED WSH_DELIVERY_DETAILS.DATE_SCHEDULED
CREATION_DATE SYSDATE
CREATED_BY FND_CREATED_BY_SAL.USER_ID
LAST_UPDATE_DATE SYSDATE
INTERFACE_ACTION_CODE '94X_STANDALONE'
SOURCE_HEADER_NUMBE WSH_DELIVERY_DETAILS.SOURCE_HEADER_N
R UMBER
SRC_REQUESTED_QUANTI WSH_DELIVERY_DETAILS.SRC_REQUESTED_Q
TY UANTITY
SRC_REQUESTED_QUANTI Upper(WSH_DELIVERY_DETAILS.SRC_REQUEST
TY_UOM ED_QUANTITY_UOM)
LAST_UPDATED_BY FND_LAST_UPDATED_BY_SAL.USER_ID
CONTAINER_FLAG 'N'
CURRENCY_CODE WSH_DELIVERY_DETAILS.CURRENCY_CODE
PACKING_INSTRUCTIONS WSH_DELIVERY_DETAILS.PACKING_INSTRUCTI
ONS
SHIPPING_INSTRUCTIONS WSH_DELIVERY_DETAILS.SHIPPING_INSTRUCT
IONS
SOURCE_LINE_NUMBER WSH_DELIVERY_DETAILS.SOURCE_LINE_NUMB
ER
ITEM_NUMBER MTL_SYSTEM_ITEMS_B_KFV.CONCATENATED_
SEGMENTS
EARLIEST_PICKUP_DATE WSH_DELIVERY_DETAILS.EARLIEST_PICKUP_D
ATE
LATEST_PICKUP_DATE WSH_DELIVERY_DETAILS.LATEST_PICKUP_DA
TE
EARLIEST_DROPOFF_DATE WSH_DELIVERY_DETAILS.EARLIEST_DROPOFF
_DATE
LATEST_DROPOFF_DATE WSH_DELIVERY_DETAILS.LATEST_DROPOFF_D
ATE
LINE_DIRECTION '0'
LINE_NUMBER OE_ORDER_LINES_ALL.LINE_NUMBER
ORGANIZATION_CODE MTL_PARAMETERS.ORGANIZATION_CODE
UNIT_PRICE WSH_DELIVERY_DETAILS.UNIT_PRICE
UNIT_SELLING_PRICE WSH_DELIVERY_DETAILS.UNIT_PRICE

• Additional Information
N/A

Oracle Corporation Confidential Page 54 of 71


Oracle Distributed WMS Solution

2.4.1.3 Load WSH delivery assignment Interface


• Source Tables

WSH_DEL_DETAILS_INTERFACE as WSH_DEL_DETAILS_INTERFACE

• Target Tables

WSH_DEL_ASSGN_INTERFACE

• Joins
N/A

• Filters

WSH_DEL_DETAILS_INTERFACE.SOURCE_HEADER_NUMBER=#order_number and
WSH_DEL_DETAILS_INTERFACE.SOURCE_CODE='OE'

Note: #order_number is an ODI variable. We set this to the sales order number that we
want to import from the ERP instance to the distributed instance(s).

• Variables
#order_number
order_number is an ODI variable. Set this to the sales order number that we want to
import from the ERP instance to the distributed instance(s).

• Mappings

DEL_ASSGN_INTERFACE_I <%=snpRef.getObjectName("L","WSH_DEL_ASSG
D N_INTERFACE_S","SAL_WSH","W")%>.nextval
CREATION_DATE SYSDATE
CREATED_BY WSH_DEL_DETAILS_INTERFACE.CREATED_BY
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY WSH_DEL_DETAILS_INTERFACE.LAST_UPDATE
D_BY
LAST_UPDATE_LOGIN WSH_DEL_DETAILS_INTERFACE.LAST_UPDATE
_LOGIN
PROGRAM_APPLICATION_I WSH_DEL_DETAILS_INTERFACE.PROGRAM_AP
D PLICATION_ID
PROGRAM_ID WSH_DEL_DETAILS_INTERFACE.PROGRAM_ID
REQUEST_ID WSH_DEL_DETAILS_INTERFACE.REQUEST_ID
INTERFACE_ACTION_CODE WSH_DEL_DETAILS_INTERFACE.INTERFACE_A
CTION_CODE
PROGRAM_UPDATE_DATE SYSDATE
DELIVERY_DETAIL_INTERF WSH_DEL_DETAILS_INTERFACE.DELIVERY_DE
ACE_ID TAIL_INTERFACE_ID
DELIVERY_INTERFACE_ID #p_delivery_interface_id

Oracle Corporation Confidential Page 55 of 71


Oracle Distributed WMS Solution

• Additional Information
N/A

2.4.1.4 Load WSH transactions history


• Source Tables

WSH_NEW_DEL_INTERFACE as WSH_NEW_DEL_INTERFACE

• Target Tables
WSH_TRANSACTIONS_HISTORY

• Joins
N/A

• Filters

WSH_NEW_DEL_INTERFACE.DELIVERY_INTERFACE_ID=#p_delivery_interface_id

Note: #p_delivery_interface_id is an ODI variable. We set this to the sales order number
that we want to import from the ERP instance to the distributed instance(s).

• Variables
#p_delivery_interface_id
Generate delivery interface id upfront and store it in this ODI variable.
E.g. select wsh_new_del_interface_s.nextval from dual

#order_number is an ODI variable. Set this to the sales order number that we want to
import from the ERP instance to the distributed instance(s).

• Mappings

TRANSACTION_ID #p_wsh_txn_hist_txn_id
DOCUMENT_TYPE 'SR'
DOCUMENT_NUMBER '99'||#order_number
DOCUMENT_DIRECTION 'I'
TRANSACTION_STATUS 'AP'
ACTION_TYPE 'A'
ENTITY_NUMBER WSH_NEW_DEL_INTERFACE.DELIVERY_INTERF
ACE_ID
ENTITY_TYPE 'DLVY_INT'
TRADING_PARTNER_ID -1
CREATION_DATE SYSDATE
CREATED_BY WSH_NEW_DEL_INTERFACE.CREATED_BY

Oracle Corporation Confidential Page 56 of 71


Oracle Distributed WMS Solution

LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY WSH_NEW_DEL_INTERFACE.LAST_UPDATED_B
Y
DOCUMENT_REVISION 1

• Additional Information
N/A

2.4.2 Packages
Create a package with the following flow:
1. Load WSH new delivery Interface
2. Load WSH delivery details Interface
3. Load WSH delivery assignment Interface
4. Load WSH transactions history

Following screen shot shows this flow:

Note the variables being refreshed at appropriate places.

2.5 Outbound – Shipment Confirmation


Once the delivery is staged and shipped on the distributed instance, the delivery details on
the ERP instance needs to be updated with the shipped quantity and other miscelleneous
information. Following interface will update the shipment delivery details table on the ERP

Oracle Corporation Confidential Page 57 of 71


Oracle Distributed WMS Solution

instance. Further, the ODI procedure createDeliveryShipDelivery will run on the host
intance to create and ship the delivery.

2.5.1 Interfaces
Set up the following interfaces:
• Update WSH delivery details

2.5.1.1 Update WSH delivery details


• Source Tables

WSH_DELIVERY_ASSIGNMENTS as WSH_DELIVERY_ASSIGNMENTS
WSH_NEW_DELIVERIES as WSH_NEW_DELIVERIES
WSH_DELIVERY_DETAILS as WSH_DELIVERY_DETAILS
MTL_PARAMETERS on ERP as MTL_PARAMETERS_ERP
WSH_DELIVERY_DETAILS on ERP as WSH_DELIVERY_DETAILS_ERP
MTL_PARAMETERS on SAL as MTL_PARAMETERS
FND_USER on ERP as FND_ERP_CREATED
FND_USER on SAL as FND_SAL_CREATED
FND_USER on ERP as FND_ERP_CREATED
FND_USER on SAL as FND_SAL_CREATED
MTL_SYSTEM_ITEMS_B_KFV on SAL as MTL_SYSTEM_ITEMS_B_KFV_SAL
MTL_SYSTEM_ITEMS_B_KFV on ERP as MTL_SYSTEM_ITEMS_B_KFV_ERP

• Target Tables

WSH_NEW_DEL_INTERFACE

• Joins

Join between WSH_DELIVERY_ASSIGNMENTS and WSH_NEW_DELIVERIES

WSH_DELIVERY_ASSIGNMENTS.DELIVERY_ID=WSH_NEW_DELIVERIES.DELIVERY
_ID
Join between WSH_DELIVERY_DETAILS and WSH_DELIVERY_DETAILS_ERP

(WSH_DELIVERY_DETAILS.REFERENCE_NUMBER=WSH_DELIVERY_DETAILS_ERP
.SOURCE_HEADER_NUMBER) AND WSH_DELIVERY_DETAILS.SHIPPED_QUANTITY
<= WSH_DELIVERY_DETAILS_ERP.REQUESTED_QUANTITY
Join between WSH_DELIVERY_ASSIGNMENTS and WSH_DELIVERY_DETAILS

WSH_DELIVERY_ASSIGNMENTS.DELIVERY_DETAIL_ID=WSH_DELIVERY_DETAILS.
DELIVERY_DETAIL_ID
Join between WSH_DELIVERY_DETAILS and WSH_DELIVER_TO_CUSTOMER_LOC

Oracle Corporation Confidential Page 58 of 71


Oracle Distributed WMS Solution

(WSH_DELIVERY_DETAILS.DELIVER_TO_LOCATION_ID=WSH_DELIVER_TO_CUST
OMER_LOC.WSH_LOCATION_ID) AND
WSH_DELIVERY_DETAILS.ORG_ID=WSH_DELIVER_TO_CUSTOMER_LOC.ORG_ID
Join between WSH_DELIVERY_DETAILS and FND_SAL_CREATED

WSH_DELIVERY_DETAILS.CREATED_BY=FND_SAL_CREATED.USER_ID
Join between FND_SAL_UPDATED and WSH_DELIVERY_DETAILS

WSH_DELIVERY_DETAILS.LAST_UPDATED_BY=FND_SAL_UPDATED.USER_ID
Join between MTL_SYSTEM_ITEMS_B_KFV_ERP and
WSH_DELIVERY_DETAILS_ERP

((MTL_SYSTEM_ITEMS_B_KFV_ERP.INVENTORY_ITEM_ID=WSH_DELIVERY_DETAI
LS_ERP.INVENTORY_ITEM_ID)) AND
MTL_SYSTEM_ITEMS_B_KFV_ERP.ORGANIZATION_ID=WSH_DELIVERY_DETAILS_
ERP.ORGANIZATION_ID
Join between WSH_DELIVERY_DETAILS and MTL_SYSTEM_ITEMS_B_KFV_SAL

(WSH_DELIVERY_DETAILS.ORGANIZATION_ID=MTL_SYSTEM_ITEMS_B_KFV_SAL.
ORGANIZATION_ID) AND
WSH_DELIVERY_DETAILS.INVENTORY_ITEM_ID=MTL_SYSTEM_ITEMS_B_KFV_SA
L.INVENTORY_ITEM_ID
Join between MTL_SYSTEM_ITEMS_B_KFV_SAL and MTL_PARAMETERS

MTL_SYSTEM_ITEMS_B_KFV_SAL.ORGANIZATION_ID=MTL_PARAMETERS.ORGAN
IZATION_ID
Join between MTL_SYSTEM_ITEMS_B_KFV_SAL and
MTL_SYSTEM_ITEMS_B_KFV_ERP

MTL_SYSTEM_ITEMS_B_KFV_SAL.CONCATENATED_SEGMENTS=MTL_SYSTEM_IT
EMS_B_KFV_ERP.CONCATENATED_SEGMENTS
Join between MTL_SYSTEM_ITEMS_B_KFV_ERP and MTL_PARAMETERS_ERP

MTL_SYSTEM_ITEMS_B_KFV_ERP.ORGANIZATION_ID=MTL_PARAMETERS_ERP.O
RGANIZATION_ID
Join between FND_SAL_UPDATED and FND_ERP_UPDATED

FND_SAL_UPDATED.USER_NAME=FND_ERP_UPDATED.USER_NAME
Join between FND_ERP_CREATED and FND_SAL_CREATED

FND_SAL_CREATED.USER_NAME=FND_ERP_CREATED.USER_NAME
Join between MTL_PARAMETERS and MTL_PARAMETERS_ERP

MTL_PARAMETERS.ORGANIZATION_CODE=MTL_PARAMETERS_ERP.ORGANIZATI
ON_CODE

• Filters

Oracle Corporation Confidential Page 59 of 71


Oracle Distributed WMS Solution

WSH_NEW_DELIVERIES.NAME=#p_delivery_name and
WSH_NEW_DELIVERIES.STATUS_CODE in ('OP','IT','CL')
WSH_DELIVERY_DETAILS.SOURCE_CODE='OE'
WSH_DELIVERY_DETAILS_ERP.SOURCE_CODE='OE' and
WSH_DELIVERY_DETAILS_ERP.RELEASED_STATUS in ('R','B')

Note: #p_delivery_name is an ODI variable. We set this to the devlivery name with which
the delivery gets created in the distributed instance.

• Variables
#p_delivery_name
p_delivery_name is an ODI variable. We set this to the devlivery name with which the
delivery gets created in the distributed instance.

• Mappings

DELIVERY_DETAIL_ID WSH_DELIVERY_DETAILS_ERP.DELIVERY_DET
AIL_ID
LAST_UPDATE_DATE SYSDATE
LOT_NUMBER WSH_DELIVERY_DETAILS.LOT_NUMBER
RELEASED_STATUS 'Y'
REVISION WSH_DELIVERY_DETAILS.REVISION
SHIPPED_QUANTITY WSH_DELIVERY_DETAILS.SHIPPED_QUANTITY
SHIPPED_QUANTITY2 WSH_DELIVERY_DETAILS.SHIPPED_QUANTITY2
SUBINVENTORY 'EACH'

• Additional Information
N/A

2.5.2 Procedures
Create the following procedure in ODI to create the delivery and then ship the delivery. This
needs to be executed on the host instance.

2.5.2.1 Create ODI Procedure createDeliveryShipDelivery

• Command on Source

Add the following pl/sql block:

declare
cursor c1 is
select wdd.delivery_detail_id, wdd.requested_quantity, wdd.shipped_quantity from
wsh_delivery_details wdd, wsh_delivery_assignments wda
where wdd.source_header_number = '#order_number'

Oracle Corporation Confidential Page 60 of 71


Oracle Distributed WMS Solution

and wdd.released_status = 'Y'


and wdd.last_update_date like sysdate
and nvl(wdd.shipped_quantity, 0) <> 0
and wdd.source_code = 'OE'
and wdd.delivery_detail_id = wda.delivery_detail_id
and wda.delivery_id is null;

line_rows WSH_UTIL_CORE.id_tab_type;
del_rows WSH_UTIL_CORE.id_tab_type;
ret_status varchar2(1);
msg_count number;
msg_data varchar2(4000);
l_msg_details varchar2(4000);
l_msg_summary varchar2(4000);

l_trip_id number;
l_trip_name varchar2(30);
i number;
l_split_dd_id number;
l_split_qty number;
l_split_qty2 number;
begin

FND_GLOBAL.Apps_Initialize(1008293, 21623, 660);

for rec in c1 loop


if (rec.shipped_quantity = rec.requested_quantity) then
l_split_dd_id := rec.delivery_detail_id;
elsif (rec.shipped_quantity < rec.requested_quantity) then
l_split_qty := rec.shipped_quantity;
WSH_DELIVERY_DETAILS_PUB.split_line(
p_api_version => 1.0,
p_init_msg_list => FND_API.G_TRUE,
x_return_status => ret_status,
x_msg_count => msg_count,
x_msg_data => msg_data,
p_from_detail_id => rec.delivery_detail_id,
x_new_detail_id => l_split_dd_id,
x_split_quantity => l_split_qty,
x_split_quantity2 => l_split_qty2
);
else
null;
end if;
line_rows(line_rows.count+1) := l_split_dd_id;
end loop;

wsh_delivery_details_pub.Autocreate_Deliveries(
p_api_version_number => 1.0
, p_init_msg_list => FND_API.G_TRUE
, p_commit => FND_API.G_FALSE
, x_return_status => ret_status
, x_msg_count => msg_count
, x_msg_data => msg_data

Oracle Corporation Confidential Page 61 of 71


Oracle Distributed WMS Solution

, p_line_rows => line_rows


, x_del_rows => del_rows
);

if del_rows.count > 0 then


for i in 1..del_rows.count loop
update wsh_new_deliveries
set status_code = 'SA'
where delivery_id = del_rows(i);

WSH_DELIVERIES_PUB.Delivery_Action
( p_api_version_number => 1.0,
p_init_msg_list => FND_API.G_TRUE,
x_return_status => ret_status,
x_msg_count => msg_count,
x_msg_data => msg_data,
p_action_code => 'CONFIRM',
p_delivery_id => del_rows(i),
p_sc_close_trip_flag => 'Y',
p_sc_create_bol_flag => 'N',
p_sc_trip_ship_method => NULL,
p_sc_actual_dep_date => sysdate,
p_sc_report_set_id => NULL,
p_sc_defer_interface_flag => 'N',
x_trip_id => l_trip_id,
x_trip_name => l_trip_name);
end loop;
end if;
end;

• Variables
#order_number

2.5.3 Packages
Create a package with the following flow:
1. Update WSH delivery details (ODI Interface)
2. createDeliveryShipDelivery (ODI Procedure)

Following screen shot shows this flow:

Oracle Corporation Confidential Page 62 of 71


Oracle Distributed WMS Solution

Oracle Corporation Confidential Page 63 of 71


Oracle Distributed WMS Solution

2.6 Inbound – Return/Correct Synchronization


ODI can be used to incrementally extract return/correct transactions on a PO in the distributed
instance(s), transform and migrate them to the interface tables in the ERP instance.

The view that fetches all the return/correct transactions from the distributed instance(s) is
RCV_RECEIPT_CONFIRMATION_V, which acts as the main source for this data migration. The
rows from this view, which are not yet migrated, will be used to populate the receiving interface
tables (ROI) on the ERP instance. Once these interface tables are loaded, Receiving
Transaction Processor (RTP) can be run to complete the receipt/deliver transactions on the ERP
instance. The following section talks about the ODI interfaces and mappings created to load the
RCV_TRANSACTIONS_INTERFACE (RTI), MTL_TRANSACTION_LOTS_INTERFACE (MTLI),
and MTL_SERIAL_NUMBERS_INTERFACE (MSNI) on the ERP instance.

2.6.1 Interfaces
Set up the following interfaces:
• Load Receiving Lines Interface (RTI)
• Load Lots Interface (MTLI)
• Load Serials Interface (MSNI)

2.6.1.1 Load Receiving Lines Interface (RTI)


• Source Tables

RCV_RECEIPT_CONFIRMATION_V (RRCV) on SAL instance


FND_USER (FNU) on ERP instance
MTL_PARAMETERS (MP) on ERP instance
MTL_SYSTEM_ITEMS_B_KFV (MSI) on ERP instance
MTL_ITEM_LOCATIONS_KFV (MIL) on ERP instance
RCV_TRANSACTIONS (RT) on ERP instance
RCV_SHIPMENT_HEADERS on ERP instance
RCV_SHIPMENT_LINES on ERP instance

• Target Tables

RCV_TRANSACTIONS_INTERFACE (RTI)

• Joins

Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and


RCV_SHIPMENT_HEADERS (RSH)

RRCV.RECEIPT = RSH.RECEIPT_NUM
Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and MTL_PARAMETERS
(MP)

Oracle Corporation Confidential Page 64 of 71


Oracle Distributed WMS Solution

RRCV.WAREHOUSE = MP.ORGANIZATION_CODE
Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and
MTL_SYSTEM_ITEMS_B_KFV (MSI)

RRCV.ITEM = MSI.CONCATENATED_SEGMENTS
Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and
MTL_ITEM_LOCATIONS_KFV (MIL)

RRCV.LOCATOR = MIL.CONCATENATED_SEGMENTS
Join between MTL_ITEM_LOCATIONS_KFV (MIL) and MTL_PARAMETERS (MP)

MIL.ORGANIZATION_ID = MP.ORGANIZATION_ID
Join between MTL_SYSTEM_ITEMS_B_KFV (MSI) and MTL_PARAMETERS (MP)

MSI.ORGANIZATION_ID = MP.ORGANIZATION_ID
Join between RCV_SHIPMENT_HEADERS (RSH) and RCV_SHIPMENT_LINES
(RSL)

RSL.SHIPMENT_HEADER_ID = RSH.SHIPMENT_HEADER_ID
Join between RCV_TRANSACTIONS (RT) and RCV_SHIPMENT_LINES (RSL)

RT.SHIPMENT_LINE_ID = RSH.SHIPMENT_LINE_ID
Join between RCV_TRANSACTIONS (RT) and MTL_SYSTEM_ITEMS_B_KFV (MSI)

RT.ITEM_ID = MSI.INVENTORY_ITEM_ID

• Filters
RRCV.receipt = p_receipt_num

Note: This condition can be changed to fetch the records as desired by the user.
For ex, if the user wants to synchronize the receipt/deliver transactions between a
given date-range then this filter can be changed to:

RRCV.creation_date between p_from_date and p_to_date

However, please note that the synchronization should happen per receipt_num;
hence if a different extraction condition is used then the retrieved records need to
be looped through for all the distinct receipt_num and data should be transferred
for one receipt_num at a time.

FNU.user_name = p_user_name

This is the user with which you want to perform the transactions on the ERP
instance.

• Variables
p_receipt_num
p_user_name

Oracle Corporation Confidential Page 65 of 71


Oracle Distributed WMS Solution

Note: Before executing the package to import the transactions from the SAL instance to
the host ERP instance, set these variables to the receipt number (that needs to be
imported) and the user name (with which you want to perform the transactions).

• Mappings

INTERFACE_TRANSACTION_ID RCV_TRANSACTIONS_INTERFACE_S.NEXTVAL
GROUP_ID RCV_INTERFACE_GROUPS_S.NEXTVAL
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY FNU.USER_ID
CREATION_DATE SYSDATE
CREATED_BY FNU.USER_ID
LAST_UPDATE_LOGIN FNU.USER_ID
TRANSACTION_TYPE RRCV.TRANSACTION_TYPE
TRANSACTION_DATE RRCV.TRANSACTION_DATE
PROCESSING_STATUS_CODE 'PENDING'
PROCESSING_MODE_CODE 'BATCH'
TRANSACTION_STATUS_CODE 'PENDING'
QUANTITY RRCV.TRANSACTION_QUANTITY
UNIT_OF_MEASURE RRCV.TRANSACTION_UOM
ITEM_ID MSI.INVENTORY_ITEM_ID
SHIPMENT_HEADER_ID RT.SHIPMENT_HEADER_ID
SHIPMENT_LINE_ID RT.SHIPMENT_LINE_ID
RECEIPT_SOURCE_CODE ‘VENDOR’
VENDOR_ID RT.VENDOR_ID
FROM_ORGANIZATION_ID RSH.SHIP_TO_ORG_ID
FROM_SUBINVENTORY RT.SUBINVENTORY
FROM_LOCATOR_ID RT.LOCATOR_ID
SOURCE_DOCUMENT_CODE 'PO'
PARENT_TRANSACTION_ID RT.TRANSACTION_ID
PO_HEADER_ID RT.PO_HEADER_ID
PO_LINE_ID RT.PO_LINE_ID
PO_LINE_LOCATION_ID RT.PO_LINE_LOCATION_ID
PO_DISTRIBUTION_ID RT.PO_DISTRIBUTION_ID
DESTINATION_TYPE_CODE 'INVENTORY’
DELIVER_TO_PERSON_ID RT.DELIVER_TO_PERSON_ID
LOCATION_ID RT.LOCATION_ID
DELIVER_TO_LOCATION_ID RT.DELIVER_TO_LOCATION_ID
VALIDATION_FLAG ‘Y’

Oracle Corporation Confidential Page 66 of 71


Oracle Distributed WMS Solution

Note: It is assumed that the following entities are same in both the distributed and the
ERP instance:

Organization Name
User Name
Item Name
Subinventory Name
Locator Name

• Additional Information
N/A

2.6.1.2 Load Lots Interface


• Source Tables

RCV_RECEIPT_CONFIRMATION_V (RRCV) on SAL instance


FND_USER (FNU) on ERP instance
RCV_TRANSACTIONS_INTERFACE (RTI) on ERP instance

• Target Tables

MTL_TRANSACTION_LOTS_INTERFACE (MTLI)

• Joins
Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and
RCV_TRANSACTIONS_INTERFACE (RTI)

RRCV.DOCUMENT_NUMBER=RTI.DOCUMENT_NUM AND
RRCV.DOCUMENT_LINE_NUMBER=RTI.DOCUMENT_LINE_NUM AND
RRCV.TRANSACTION_TYPE = RTI.TRANSACTION_TYPE

• Filters
RRCV.LOT IS NOT NULL
RRCV.RECEIPT = p_receipt_num
FNU.USER_NAME = p_user_name

• Variables
p_receipt_num
p_user_name

• Mappings

TRANSACTION_INTERFACE_ID RTI.INTERFACE_TRANSACTION_ID
LAST_UPDATE_DATE SYSDATE

Oracle Corporation Confidential Page 67 of 71


Oracle Distributed WMS Solution

LAST_UPDATED_BY FNU.USER_ID
CREATION_DATE SYSDATE
CREATED_BY FNU.USER_ID
LAST_UPDATE_LOGIN FNU.USER_ID
LOT_NUMBER RRCV.LOT
TRANSACTION_QUANTITY RRCV.LOT_QUANTITY
PRIMARY_QUANTITY RRCV.LOT_QUANTITY
PRODUCT_CODE ‘RCV’
PRODUCT_TRANSACTION_ID RTI.INTERFACE_TRANSACTION_ID

• Additional Information
N/A

2.6.1.3 Load Serials Interface


• Source Tables

RCV_RECEIPT_CONFIRMATION_V (RRCV) on SAL instance


FND_USER (FNU) on ERP instance
RCV_TRANSACTIONS_INTERFACE (RTI) on ERP instance

• Target Tables

MTL_SERIAL_NUMBERS_INTERFACE (MTLI)

• Joins
Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and
RCV_TRANSACTIONS_INTERFACE (RTI)

RRCV.DOCUMENT_NUMBER=RTI.DOCUMENT_NUM AND
RRCV.DOCUMENT_LINE_NUMBER=RTI.DOCUMENT_LINE_NUM AND
RRCV.TRANSACTION_TYPE = RTI.TRANSACTION_TYPE

• Filters
RRCV.SERIAL IS NOT NULL
RRCV.RECEIPT = p_receipt_num
FNU.USER_NAME = p_user_name

• Variables
p_receipt_num
p_user_name

Oracle Corporation Confidential Page 68 of 71


Oracle Distributed WMS Solution

• Mappings

TRANSACTION_INTERFACE_ID RTI.INTERFACE_TRANSACTION_ID
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY FNU.USER_ID
CREATION_DATE SYSDATE
CREATED_BY FNU.USER_ID
LAST_UPDATE_LOGIN FNU.USER_ID
FM_SERIAL_NUMBER RRCV.SERIAL
TO_SERIAL_NUMBER RRCV.SERIAL
PRODUCT_CODE ‘RCV’
PRODUCT_TRANSACTION_ID RTI.INTERFACE_TRANSACTION_ID

• Additional Information
N/A

2.6.2 Procedures
Create the following procedure in ODI to update the receipt_extracted flag for the particular
receipt number, which has been successfully migrated from Distributed Instance to the Host
Instance:

Update_RC

2.6.2.1 Create Procedure Update_RC

• Command on Source
Add the following pl/sql block:

x_return_status VARCHAR2(100);
x_msg_data VARCHAR2(500);
x_msg_count NUMBER;

l_ret_stauts VARCHAR2(100);

Begin

L_ret_status := INV_STANDALONE_SYNC_PUB.Update_RC_Extracted
(1.0,
, FND_API.G_FALSE
, FND_API.G_FALSE
, x_return_status
, x_msg_count
, x_msg_data
, to_char(trunc(sysdate), ‘DD-MON-YYYY’)
, to_char(trunc(sysdate+1), ‘DD-MON-YYYY’)
, NULL
, RRCV.warehouse
, NULL
, p_receipt_num

Oracle Corporation Confidential Page 69 of 71


Oracle Distributed WMS Solution

, NULL
, p_rc_extracted
, NULL
);

End;

• Variables
p_rc_extracted

2.6.3 Packages
Create a package with the following flow:
1. Load RCV Lines Interface
2. Load Lots Interface
3. Load Serials Interface
4. Update RC-Extracted Flag

Following screen shot shows this flow:

Oracle Corporation Confidential Page 70 of 71


Oracle Distributed WMS Solution

Oracle Distributed WMS


April 2009
Author: Snehal Fulzele, Karun Jain, Dinesh Ramamoorthy, Murari Sinha

Oracle Corporation
World Headquarters
500 Oracle Parkway
Redwood Shores, CA 94065
U.S.A.

Worldwide Inquiries:
Phone: +1.650.506.7000
Fax: +1.650.506.7200
www.oracle.com

Oracle Corporation provides the software that powers the Internet.

Oracle is a registered trademark of Oracle Corporation. Various


product and service names referenced herein may be trademarks
of Oracle Corporation. All other product and service names
mentioned may be trademarks of their respective owners.

Copyright © 2009 Oracle Corporation


All rights reserved.

Oracle Corporation Confidential Page 71 of 71

You might also like