Warehouse Control System (wcs) - Material Handling Equipment (mhe)

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Warehouse Control System (wcs) - Material Handling Equipment (mhe) as PDF for free.

More details

  • Words: 14,369
  • Pages: 76
Contents

1.

2.

Introduction............................................................................................................1 1.1

Overview................................................................................................................................. 1

1.2

Advantages.............................................................................................................................. 1

1.3

Software Updates .................................................................................................................... 2

Glossary ..................................................................................................................3 2.1

Device ..................................................................................................................................... 3

2.2

AS/RS ..................................................................................................................................... 3

2.3

Business Event ........................................................................................................................ 3

2.4

Device Directive ..................................................................................................................... 3

2.5

PLC ......................................................................................................................................... 3

2.6

DS ........................................................................................................................................... 3

2.7

Device Request Message ........................................................................................................ 3

2.8

Device Response Message ...................................................................................................... 4

2.9

Device Response Time............................................................................................................ 4

2.10 CarBri / Carousel Bridge........................................................................................................ 4

3.

4.

Schematic Details ...................................................................................................5 3.1

Schematic Diagrams ............................................................................................................... 5

3.2

Brief Description..................................................................................................................... 7

3.3

Recommended Implementation Strategy ................................................................................ 8

Setup........................................................................................................................9 4.1

Defining a Device in Oracle WMS ......................................................................................... 9

4.2

Assigning the Device to a WMS Business Event.................................................................. 10

4.3

Details from Device Vendor ................................................................................................. 10

4.4

Setting up the WCS Layer: ................................................................................................... 11 4.4.1 4.4.2 4.4.3

4.5

Setting up the Middle Tier .................................................................................................... 13 4.5.1 4.5.2 4.5.3 4.5.4

5.

WCS Enable the Organization .................................................................................... 11 Update the Organization Access Form ....................................................................... 11 Setup with Warehouse Control System Responsibility............................................... 12

Directory Structure to be created on the Middle Tier ................................................. 13 Create carbri.xml - configuration file for Carousel Bridge ......................................... 14 Create startup script for the Device Simulator – startDS.sh........................................ 16 Create startup script for the CarBri – startCarBri.sh ................................................... 16

Runtime.................................................................................................................17 5.1

Starting the listener jobs on the WCS layer .......................................................................... 17

5.2

Starting the real PLC/DS....................................................................................................... 17

Page ii of 76

5.3

Starting the CarBri ................................................................................................................ 18

5.4 Initiating a request from the Mobile UI – Example with Miscellaneous Receipt Business Event 20

6.

7.

8.

5.5

Simulating a Device Request from CarBri to PLC/DS ......................................................... 22

5.6

Simulating a Device Response from CarBri to Oracle WMS ............................................... 23

5.7

Simulating a Device Response from DS to Oracle WMS via CarBri ................................... 24

Application Monitoring .......................................................................................26 6.1

WCS Administrator Home.................................................................................................... 26

6.2

WCS Directive Queue........................................................................................................... 26

6.3

WCS Log .............................................................................................................................. 27

Trouble Shooting..................................................................................................29 7.1

I get an exception when I try to run startCarBri.sh ............................................................... 29

7.2

I hit a Control-P from the telnet UI but I do not see a device request on the CarBri ............ 29

7.3

The Carousel Log does not get written ................................................................................. 29

7.4

Get the message NULL Query and hence doing nothing...................................................... 30

7.5

Unable to start more than 2 WCS device listeners................................................................ 30

Document Reference............................................................................................35 8.1

Current Document References .............................................................................................. 35 8.1.1

Historical Document References ................................................................................ 35

9.

Appendix 1 – List of WMS Business Events......................................................36

10.

Appendix 2 – WCS Configuration settings – explained ...................................37

11.

Appendix 3 – Sample carbri.xml ........................................................................41

12.

Appendix 4 – Case Study.....................................................................................42 12.1 Schematic Process Flow configured for Pick Load Business Event .................................... 42 12.1.1 Identify the WMS Business events ........................................................................... 42 12.1.2 Setup Devices in Oracle WMS and assign them to appropriate Business Event/s.... 43 12.1.3 Procure information Device Request/Response message structure........................... 44 12.1.4 Map the WMS business event with the Device Request Message............................ 44 12.1.5 Use the WCS Administrator responsibility to detail the request structure for each device-level directive............................................................................................................... 56 12.1.6 Test between DB tier and the CarBri ........................................................................ 13 12.1.7 Test between DB tier, CarBri and the Device Simulator .......................................... 13 12.1.8 Test between DB tier, CarBri and the actual device ................................................. 13

13.

Appendix 5 – WMS_DEVICE_REQUESTS_WCSV View details ...................1

Page iii of 76

Table of Figures Figure 1 - Typical Schematic Diagram............................................................................................. 5 Figure 2 - WCS running with Device Simulator - Without PLC Tier .............................................. 6 Figure 3 - PLC running with Actual Device - With PLC Tier.......................................................... 7 Figure 4 - Define Device Form – New Device Type ‘Work Station’ ............................................... 9 Figure 5 - Output Type - API............................................................................................................ 9 Figure 6 - Multi Sign On Flag ........................................................................................................ 10 Figure 7 - Assign Device to Business Event................................................................................... 10 Figure 8 - Organization Access form.............................................................................................. 12 Figure 9 - WCS Configuration Settings.......................................................................................... 12 Figure 10 - Directory Structure to be created for CarBri on the Middle Tier ................................. 14 Figure 11 - Directory Structure for CarBri on the Middle Tier - View 2........................................ 14 Figure 12 - WCS Administrator Home ........................................................................................... 17 Figure 13 - Response Listener status .............................................................................................. 17 Figure 14 - Start Device Simulator ................................................................................................. 18 Figure 15 - Start CarBri .................................................................................................................. 18 Figure 16 - CarBri Login Screen .................................................................................................... 19 Figure 17 - Carousel Bridge Initialized .......................................................................................... 19 Figure 18 – Sign on to a Work Station before logging on to an ASRS .......................................... 20 Figure 19 - Sign on to ASRS .......................................................................................................... 20 Figure 20 - Initiate Device Request from Miscellaneous Receipt mobile UI ................................. 21 Figure 21 - The device request string sent to the DS via the CarBri............................................... 21 Figure 22 - DONE message in Carousel Log ................................................................................. 22 Figure 23 - Simulate from CarBri................................................................................................... 22 Figure 24 - Simulate Device Request from CarBri......................................................................... 23 Figure 25 - Simulate Device Response from CarBri ...................................................................... 23 Figure 26 - Simulated Device response on the WCS Log............................................................... 24 Figure 27 - Simulated Response from DS to CarBri....................................................................... 25 Figure 28 - Simulated Device Response from DS to WCS Log ..................................................... 25 Figure 29 - WCS Administrator Home ........................................................................................... 26 Figure 30 - WCS Directive Queue.................................................................................................. 27 Figure 31 - WCS Log ..................................................................................................................... 28 Figure 32 - NULL Query Issue on the Carousel Log...................................................................... 30 Figure 33 - Real life MHE Integration Scenario............................................................................. 42 Figure 34 - Subinventory setup....................................................................................................... 43 Figure 35 - Use Case 1 - Define Devices........................................................................................ 43 Figure 36 - Assign Device 'ASRS Crane 1' to Pick Load Business Event...................................... 43 Figure 37 - Sample directive settings based on tech specs for an ASRS and Sortation Conveyor . 44 Figure 38 - Note that there are 2 CarBri directories (1 for ASRS and 1 for Sortation Conveyor).. 10 Figure 39 - CarBri Settings for ASRS_C1...................................................................................... 11 Figure 40 - CarBri Settings for Sortation Conveyor SORT_1 ........................................................ 12

Introduction

Page iv of 76

1. Introduction

1.1 Overview Integration of WMS host systems with material handling equipment and automation systems can create challenges for logistics. Prior to this release, these integration challenges were addressed through a combination of Open API’s in Oracle WMS and a joint development with Oracle Consulting of a warehouse control system layer (WCS), that was external to the Oracle WMS product. With this release, the existing Open API integration capability is expanded and a new execution framework (WCS) has been incorporated into the Oracle WMS product. Together, these provide a more flexible definition and execution framework for managing existing and more complex integration requirements such as Pick to Light, A-frame, Conveyors and ASRS systems. During device setup, business events may be mapped to either the improved execution framework or to the Open API for the device integration. Through this flexible support, the management of a large variety of material handling equipment and automation systems can be managed directly from the host application environment without the need for an external WCS component.

1.2 Advantages After 11.5.10 CUI, an Oracle Customer can make use of a Warehouse Control System built into the E Business Suite, instead of relying on a third party system to communicate to devices such as •

Carousels (Horizontal and Vertical)



Scales



Conveyers



Pick to Light Systems



Pick to Audio (Pick to Voice)



Automated Storage and Retrieval Systems (ASRS)

To provide this communication to the devices requires a TCP/IP socket connect at the device level interface such as one of the following: •

A PLC configured with a NIC card.



A PC controller with a NIC card for socket communication, which brokers serial, connects to the device or PLC.



A Hardware Bridge controller with a NIC card for socket communication, which brokers serial, connects to the device or PLC.

Till 11.5.10 Oracle WMS provided a stub API. This was to be implemented by the Customer according to his needs. From 11.5.10.1CU, Oracle WMS provides an implementation of this stub API along with a framework for defining device request message structure, according to the device type being used.

Introduction

Page 1 of 76

1.3 Software Updates WCS Carousel Bridge Patch 4580210 - WMS Warehouse Control System Carousel Bridge Patch - with FND Images Prerequisite WCS Desktop Patches 4042499 - Supply Chain Management Family Pack J Rollup Patch 1 4522497 - Material Handling Integration Improvements - Post 11.5.10+ 4574068 - Material Handling Integration Improvements - Post 11.5.10+ 5200583 - WMS_CAROUSEL_INTEGRATION_PVT.RECEIVE_PIPE_LISTENER Response length too short

Introduction

Page 2 of 76

2. Glossary 2.1 Device This is equipment, typically used for material handling of large volumes in a warehouse. The devices currently supported are Carousels (Horizontal and Vertical), Scales, Conveyers, Pick to Light Systems, Pick to Audio (Pick to Voice) Automated Storage and Retrieval Systems (ASRS).

2.2 AS/RS Automatic Storage and Retrieval System. Automated, robotic system for storing and retrieving items in a warehouse.

2.3 Business Event It is a Functional event, which acts as a trigger for initiating a device request. Pick Load is an example of a business Event. Refer Appendix 1 for the list of WMS Business Events.

2.4 Device Directive It is a command string that needs to be sent from the ERP system (or any other system) to make a device perform a specific task. There are, almost always, multiple tasks (with a corresponding command string) that a device can perform. Each of these command stings is called a device directive. E.g., A light stack can turn on a Green light (task). An example of a command string it expects is BULK,B1.1.1,GREEN,ON. This message is very device and vendor specific and comprises a device directive specific to this light stack to turn on the Green Light on it.

2.5 PLC This stands for a Programmable Logic Controller. The device vendor along with all the supporting network hardware for his specific device typically provides this. The vendor will also publish the alphabet of the device i.e., the set of all directives that are understood by the device.

2.6 DS This stands for a Device Simulator. This is a software component to test the Warehouse Control System in the absence of a real device. The Device Simulator is capable of •

Running as a TCP/IP server



Listening on a specified port number



Allowing a trusted client IP address to connect from a trusted client port number



Being configured with an ASCII character to denote end of Request Message



Sending a configured response when the end of request message is reached

In summary, the DS replicates a PLC, when there is no PLC to test the WCS.

2.7 Device Request Message A command string (directive), triggered by a business event and sent from the (E Business Suite) EBS to the device controller to make the device perform a specific device task.

Glossary

Page 3 of 76

2.8 Device Response Message A character string returned by the device controller to the EBS as a response to a Device request that was sent earlier. The device could respond with a success or failure (with appropriate error message) or may not respond at all (So the requesting system will always need to assume that the device directive succeeded). The response characteristics are to be provided by the device vendor.

2.9 Device Response Time The processors on the PLCs are usually slower compared to the processors that run the ERP servers. Typically, the PLCs have a response time of 50 to 70 milliseconds. The device vendor for better integration with the Warehouse Control System of WMS should provide this detail.

2.10 CarBri / Carousel Bridge This is a middleware solution, introduced in 11.5.10CU1, which acts as the transport layer for Device Request Messages and Device Response Messages between the Database Tier of the E Business Suite and the PLC.

Glossary

Page 4 of 76

3. Schematic Details

3.1 Schematic Diagrams

Figure 1 - Typical Schematic Diagram

Schematic Details

Page 5 of 76

Figure 2 - WCS running with Device Simulator - Without PLC Tier

Schematic Details

Page 6 of 76

Figure 3 - PLC running with Actual Device - With PLC Tier

3.2 Brief Description There are 3 layers in the system. They are the database tier, the middle tier (which might be different from the DB tier where the Carousel Bridge Middleware will run) and the Program Logic Controller (PLC) layer. Once the initial setup has been done in EBS (see the section Document Reference), at runtime, device requests will originate from the Oracle ERP system. The Carousel Bridge middleware will function as a transport layer – talking to the DB on one end and to the device on the other end (or an emulator called the DS – Device Simulator) There will be a one-one mapping between a device defined in the Oracle WMS system and an instance of the Carousel Bridge on the middle tier. The behavior of the Carousel Bridge (CarBri) will be controlled be means of a configuration file carbri.xml, which is documented in a later section.

Schematic Details

Page 7 of 76

3.3 Recommended Implementation Strategy 1. 2.

3.

4. 5. 6. 7.

8.

Schematic Details

Identify the WMS Business events in the Business process where a device will be invoked. (Refer Appendix 1 for list of WMS Business events) Refer Oracle Warehouse Management System Material Handling Device Integration Kit for the standard Device setup (Creating Devices in Oracle WMS and assigning them to the appropriate business event). Procure information from the device Vendor about the Device Request message structure that the device understands. (E.g., a lightstack can understand 2 request directives – Turn on Green Light or Turn on Red Light. That is all the alphabet understood by the device) Map the WMS business event with the Device Request Message. (One WMS Business event may map to more than one Device-level directive) Use the new WCS Admin responsibility to detail the request structure for each devicelevel directive. Test between DB tier and the CarBri (set Simulate to Yes in carbri.xml (There is no need to plug in the Device to test at this point) Test between DB tier, CarBri and the Device Simulator (Set Simulate to No) and socketHostName to point to the IP address of the DS. Once this testing is satisfactory, the system is ready to be promoted to UAT. This step can be used to validate the device directives that are provided by the Device Vendor by testing message sending between the Device Simulator and the PLC and tweaking the WCS Directive settings if needed. Test between DB tier, CarBri and the actual device. The system will be fully functional at this point.

Page 8 of 76

4. Setup The objective of the setup illustrated in the following sections would be to perform ‘Miscellaneous Receipt’ using a device ‘ASRS_C1’ which has been setup for a Subinventory ‘ASRSC1’ in a WMS-enabled Organization ‘W1’ Setup checklist: •

Defining a Device in Oracle WMS



Assigning the Device to a WMS Business Event



Setting up the WCS Layer

4.1 Defining a Device in Oracle WMS Defining a device in Oracle WMS is documented in Oracle Warehouse Management System Material Handling Device Integration Kit. The setup for CU1 functionality is documented below. From CU1 there will be a new device type supported called ‘Work Station’ which works in tandem with devices of type ASRS. No WMS task can be dispatched to this type of device. But a user will need to sign on to a ‘Work Station’ before signing on to a device of Type ASRS to perform a task. Refer Appendix 4 to know more about usage of a device type Workstation.

Figure 4 - Define Device Form – New Device Type ‘Work Station’ Output Type is typically set to API to make use of the WCS request-processing framework.

Figure 5 - Output Type - API To accommodate the requirement where more than one user may need to sign-on to a single ASRS, there is a new check box called ‘Multi Sign On’ provided in CU1. For all device types other than ASRS, this should be unchecked.

Setup

Page 9 of 76

Figure 6 - Multi Sign On Flag

4.2 Assigning the Device to a WMS Business Event Assigning a device to a Business in Oracle WMS is documented in Oracle Warehouse Management System Material Handling Device Integration Kit. Please refer the same.

Figure 7 - Assign Device to Business Event

4.3 Details from Device Vendor Typically the following details must be procured from the device vendor before proceeding. •

Confirm from the device vendor that the device controller is capable of communicating using TCP/IP protocol and can function as a TCP/IP server socket.



The device vendor must publish the list of all directives supported by his device and the corresponding message structure for it.



For every request message to the device, the vendor must publish if there will be a response that the device is going to send back to the EBS. If yes, then the message structure for each of the response messages must be published.



Any other runtime characteristics of the device - like the device response time. (This detail can be used to set DIRECTIVE PAUSE DELAY described in Appendix 2)

For our test ASRS crane we assume that a device vendor ‘X’ has provided the following details. •

Directive Name is ‘MISC_RCPT’



Request Message structure to be sent to the device is ‘ .misc_rcpt.C.0.0.0.0.0000.ACTION..(AS1.1.1)..4.11826.AS1.1.1. ’ (This starts with ASCII 2 and ends with ASCII 3 and contains the transaction details in the request message)



Response Message from the device is a constant ‘DONE’

You will be making use of these details when setting up WCS. See the section titled WCS Configuration Settings

Setup

Page 10 of 76

4.4 Setting up the WCS Layer: Checklist for WCS Setup: •

WCS Enable the Organization



Update the Organization Access Form



Setup with Warehouse Control System Responsibility

4.4.1 WCS Enable the Organization Log in to Oracle Applications EBS with responsibility ‘Warehouse Manager’. On the ‘Organization Parameters’ form check the flag ‘WCS Enabled’ Note: Once this flag is enabled, any custom logic that a Customer had implemented by making use of the WMS Stub API (See Oracle Warehouse Management System Material Handling Device Integration Kit in the Document reference section) would not be called anymore. Instead the WMS-implementation of the stub API would be used to process device requests.

4.4.2 Update the Organization Access Form Insert 2 records in this form for the chosen Org, Application – ‘Warehouse Management’ and Name ‘Warehouse Control System User’ and ‘Warehouse Control System Administrator’

Setup

Page 11 of 76

Figure 8 - Organization Access form

4.4.3 Setup with Warehouse Control System Responsibility Log in to Oracle EBS with responsibility ‘Warehouse Control System Administrator’. Click ‘Setup’ Enter the Organization Code when prompted and click on ‘Choose’. (This step will fail even if one of the first 2 setup steps have not been done correctly) 4.4.3.1 Directive setup steps This step will be performed from the ‘Configuration’ page Directive Name, Directive Request Query and Directive Response Query are mandatory for a WMS Business Event. Directive Name will be mapped to a directive supported by the device type as provided by the vendor. Directive Request Query can be either a constant string (rarely the case) or a query on any table/view accessible to user APPS, using which, a request can be sent from the Oracle System to the device at runtime. Executing this query at runtime using bind variables p_request_id and p_task_id will populate the contents of the request string. Directive Response Query is also a query on any table/view accessible to user APPS. When WMS gets a response string from the device, it will compare the incoming string with the expected response. If they match then that directive will be marked as a ‘Success’. Note that some devices do not send a response back (this would be in the device specs provided by the vendor). In such a case the Directive Response Query need not be setup in the Configuration table and any request sent to the device will immediately be marked as a ‘Success’

Figure 9 - WCS Configuration Settings Note the following things in the sample config settings for one directive of our test ASRS crane. (Correlate these with the details provided in the section Details from Device Vendor)

Setup

Page 12 of 76



‘MISC_RCPT’ is the device directive that we are setting up here.



Directive Request Query is created based on the directive structure published by the device vendor. Here the request query is based on the view WMS_DEVICE_REQUESTS_WCSV (See Appendix 5 for column details of this view). For a Customer, the source of data for the request message could be any other table/tables.



Directive Response Query has been set to a constant ‘DONE’ (as published by the device vendor). Had it not been a constant string that the device sends as a response message, then the Directive Response Query would also have been a SQL Query to construct the message dynamically at runtime based on what the device is expected to send back as response. (When the expected device response matches the runtime device response then that directive is marked as a ‘Success’)



Sequence ID column matches all the 3 configuration records for the same device type and Business Event. What this means, is that ‘MISC_RCPT’ is a directive published by the device vendor and the request message that it expects is defined by the Directive Request Query and the expected response for that directive is defined by a Directive Response Query. The common thread to list them all is the sequence id.

The above setup process would be repeated for each device directive that we intend to make use of. 4.4.3.2 Optional setup steps Refer Appendix 2 for detailed explanation of the WCS Configuration settings.

4.5 Setting up the Middle Tier Checklist for setting up the Middle Tier •

Create Directory Structure



Create carbri.xml



Create startup script for Device Simulator



Create startup script for Carousel Bridge

4.5.1 Directory Structure to be created on the Middle Tier The recommended installation location for the CarBri middleware is on the middle tier under $APPL_TOP/carbri. Create a subdirectory under this for each instance of the CarBri. (Note that there is a one to one mapping between each device defined in WMS and a CarBri installation on the middle tier)

Setup

Page 13 of 76

Figure 10 - Directory Structure to be created for CarBri on the Middle Tier

Figure 11 - Directory Structure for CarBri on the Middle Tier - View 2

4.5.2 Create carbri.xml - configuration file for Carousel Bridge Refer Appendix 3 for a sample carbri.xml file. Each element in the configuration file is explained in the table below

Setup

Page 14 of 76

Number

Element

Sample Value

How to get the value

Device 1.

ID

Device ID defined in Oracle WMS

Y

2.

Protocol

2

3.

JDBCURL

jdbc:oracle:thin:@ap6171rt.us. oracle.com:1521:wmsdv11i

4.

Simulate

No

Responsibility: Warehouse Manager Form: Define Devices Query the device that you are currently setting up. Click on Help > Diagnostics > Examine. Enter the apps password if prompted. Block: DEVICES Field: DEVICE_ID Note the value. This will be the value to be entered in carbri.xml 2 denotes TCP/IP – which is currently supported by CarBri This is the JDBC Url where you need to specify the Database hostname, TNS Listener port and Database SID. If this element is set to Yes then there is no need to plug in the DS or the PLC to test the Device Integration Framework. If this element is set to No then either the DS or the PLC must be started up and made available on the LAN before starting the CarBri This will be the IP address of the host where the DS is running or the IP address of the PLC on the network. This setting will take effect only if Simulate is set to No. This will be the TCP/IP server listener port. If using the DS then this can be specified as a runtime parameter. If using the PLC then this can be setup-using software usually provided by the PLC vendor. This is the only trusted client port from where the TCP/IP server will accept connections. If using the DS then this can be specified as a runtime parameter. If using the PLC then this can be setup-using software usually provided by the PLC vendor.

Y

SocketInfo socketHostName 5.

140.87.204.121

6.

socketPortNumber

4444

7.

socketLocalPort

5170

SerialPortInfo portName 9. serialPortTimeOutMillis 10. baudRate 11. dataBits 12. stopBits 13. parity 14. AppsInfo dbcfile 15.

Setup

COM2 5000 9600 8 1 0 /appmgr/wmsspprjappl/fnd/11. 5.0/secure/ap6171rt_wmsspprj. dbc

Typically Modified?

N Y

Y

Y

Y

N N N N N N On the middle tier look for the DBC file under $FND_TOP/secure. Specify the full path in this element

Y

Page 15 of 76

Number

Element

Sample Value

How to get the value

16.

appsuser

MFG

17.

password applicationshortname

WELCOME WMS

Oracle Applications username (With WCS User Responsibility) Oracle Applications password

responsibilitykey

WMS_WCS_USER

18. 19.

Typically Modified?

Y Y N N

4.5.3 Create startup script for the Device Simulator – startDS.sh This sample DS is configured to listen on port number 4444. The only client that it will allow itself to be connected to is 140.87.204.121 from port number 5170 on the client. On getting ASCII 3 (which identifies end of device request) the DS will respond with a ‘DONE’ ##############################Sample startDS.sh############################## #Param 1: TCP Socket Port number on which the DS is listening #Param 2: Trusted Client IP Address #Param 3: Trusted Client IP Port Number #Param 4: ASCII value, which the DS interprets as end of message from carbri #Param 5: Message sent back by DS on receiving end of message identifier java oracle.apps.wms.wcs.device.server.DummyDeviceServer 4444 140.87.204.121 5170 3 DONE

##############################Sample startDS.sh#############################

4.5.4 Create startup script for the CarBri – startCarBri.sh ##############################Sample startCarBri.sh############################# #Enter the directory where the config file carbri.xml is stored #setenv WCS_TOP /home/simran/junk/logutr12_CarBri #In order to see the images correctly on the login screen #ensure that in the same directory as WCS_TOP, there is a sub-directory #called 'images' #with a soft link to the files mentioned below #You can create a soft link in $WCS_TOP/images by the following commands #ln -s $FND_TOP/media/appslogo.gif #ln -s $FND_TOP/media/logo.gif

CLASSPATH=/tmp/patch/wmsspprj_CarBri:$CLASSPATH java oracle.apps.wms.wcs.carbri.client.CarBriUI ##############################Sample startCarBri.sh#############################

Setup

Page 16 of 76

5. Runtime 5.1 Starting the listener jobs on the WCS layer Log in to EBS with responsibility ‘Warehouse Control System Administrator’. Click on ‘Home’. Enter Org Code when prompted and click on ‘Choose’. You will be taken to the WCS Administrator Home. Locate your device and ensure that •

‘Listener Status’ shows a Green arrow (if it is red, click on it to make it green)



Click on ‘Job Status’ once to start the listener job.

Figure 12 - WCS Administrator Home To ensure that the listener job is running ok, navigate to Setup tab > Log

Figure 13 - Response Listener status Note the last updated column. It will give an indication that the job is running on the DB tier and listening for incoming requests.

5.2 Starting the real PLC/DS On the Middle Tier start the DS as shown below. (There will be no output shown on the terminal, but the DS is listening to incoming requests)

Runtime

Page 17 of 76

Figure 14 - Start Device Simulator For starting the PLS TCP/IP listener, please refer the device vendor documentation.

5.3 Starting the CarBri On the Middle Tier, in a different terminal window, start the CarBri as shown below.

Figure 15 - Start CarBri Click Connect on the CarBri Login Screen.

Runtime

Page 18 of 76

Figure 16 - CarBri Login Screen When the Carousel Bridge has initialized successfully, it should appear as shown below.

Figure 17 - Carousel Bridge Initialized

Runtime

Page 19 of 76

5.4 Initiating a request from the Mobile UI – Example with Miscellaneous Receipt Business Event Connect via a telnet client to the MWA server (get the hostname and port number details from your System Administrator). Login with EBS username/password and responsibility as ‘Whse Mgmt’ Navigate to ‘Tasks > Change Sign-ons’ Enter ‘Organization Code’ when prompted. Enter ‘Device’ If the device type being used is ASRS, logon to a ‘Work Station’ before logging on to the ASRS Device. For all other Device Types, directly log on to the Device.

Figure 18 – Sign on to a Work Station before logging on to an ASRS

Figure 19 - Sign on to ASRS From the Main Mobile Menu, navigate to Warehousing > Inventory > Receipts > Misc Receipt Enter the transaction details and hit Ctrl+P Note: This Miscellaneous Receipt is an example of a ‘User-Initiated’ device request. All the transaction details need to be entered by the user and only then can the request be sent to the device based on the Ctrl+P hotkey. There could also be an ‘Auto-invoked’ device request. For e.g. for Business

Runtime

Page 20 of 76

event ‘Pick Load’ if the device is set to auto-invoke true in the ‘Assign Device to Business Events’ form then as soon as the user navigates to the Pick Load page, then the suggested Subinventory/locator, item, qty etc are used to fire a request to the device automatically (no hotkey needed).

Figure 20 - Initiate Device Request from Miscellaneous Receipt mobile UI

Figure 21 - The device request string sent to the DS via the CarBri

Note that in the above figure, the DS responded with a ‘DONE’ (as it was configured to) and the same appears in the WCS Log page shown below.

Runtime

Page 21 of 76

Figure 22 - DONE message in Carousel Log

5.5 Simulating a Device Request from CarBri to PLC/DS It is possible to simulate Device Request (from CarBri to DS/PLC) or Device Response (from CarBri to WMS). This step can be used to validate the device directives that are provided by the Device Vendor by testing message sending between the Device Simulator and the PLC and tweaking the WCS Directive settings if needed.

Figure 23 - Simulate from CarBri Click on Simulate > Device Request and type a message that you wish to send to the DS/PLC. Click ‘Send’

Runtime

Page 22 of 76

Figure 24 - Simulate Device Request from CarBri In the above figure, note that the message is appended with ‘$3$’. This will send and ASCII 3 to the DS/PLC. The DS is configure to respond with a ‘DONE’ on getting an ASCII 3 (which happens as expected)

5.6 Simulating a Device Response from CarBri to Oracle WMS Click on Simulate > Device Response and type a message that you wish to send to WMS. Click ‘Send’

Figure 25 - Simulate Device Response from CarBri Note that $2$ from the CarBri has been sent to the Database as a CHR(2) – which is the ASCII value of 2. The simulated response can be viewed in the WCS Log shown below.

Runtime

Page 23 of 76

If we set Simulate to Yes in carbri.xml then the CarBri will not send any auto-reply. The user will need to go to menu item 'Simulate' > 'Response' and type the response and hit the 'Send' button so that the message gets sent to the DB. Note that if you want to have an ASCII character (like an ASCII 2) in the response then you should type $2$ followed by a space (if it is in the beginning of a message) or a $2$ with a space before (if the ASCII character is at the end of a message) e.g. Message typed in CarBri Simulate > Response dialog window: $2$ PLT100 PABULK PB1.1.1 500 LOT003 LPN0158 SUCCESS $2$ Here the response message is PLT100 PABULK PB1.1.1 500 LOT003 LPN0158 SUCCESS When the user hits the send button then an ASCII 2 will get attached to the front of the message and an ASCII 3 will get attached to the end of the message. In the Carousel Log it will turn up as CHR(2) PLT100 PABULK PB1.1.1 500 LOT003 LPN0158 SUCCESS CHR(2) in a form understandable to the DB Note 1: ASCII 2 is a non-printable character and will show up as

on the CarBri

Note 2: ASCII 2 or 3 or any other character is vendor dependent. It has to be specified in the tech specs by them. The implementer will need to setup the directive_response_query in the WCS layer accordingly. In effect we can support any vendor message structure.

Figure 26 - Simulated Device response on the WCS Log

5.7 Simulating a Device Response from DS to Oracle WMS via CarBri Type a response message on the DS terminal window and hit ‘Enter’. You will see the same message on the CarBri as shown below.

Runtime

Page 24 of 76

Figure 27 - Simulated Response from DS to CarBri The same will be reflected on the WCS Log as shown below.

Figure 28 - Simulated Device Response from DS to WCS Log After this step, the DS can be replaced seamlessly by the real PLC (by changing the socketHostName in carbri.xml - to point to the IP address of the PLC instead of the DS) The system will be fully functional when all the directives supported by the Device are setup correctly in the steps described above.

Runtime

Page 25 of 76

6. Application Monitoring 6.1 WCS Administrator Home The WCS Administrator from the Home Page can monitor the Application. The Administrator can •

Monitor the directives for each individual device



Get a graphical representation of the same



Monitor the Employees and the Devices they are currently signed on to



Sign off users from any device if needed



Check standard Workflow Notifications

Figure 29 - WCS Administrator Home

6.2 WCS Directive Queue The Administrator can navigate to this screen by clicking an item in the Message Status Table for a particular device on the WCS Home Page or navigate via Setup > Directive Queue

Application Monitoring

Page 26 of 76

Figure 30 - WCS Directive Queue Note that a WCS directive record can have one of 5 statuses – Pending, Current, Success, Failure or Cancelled. Each of these statuses for a record in the Directive Queue table is explained briefly below: •

Pending: This is the initial status of a record in the Directive Queue table



Current: This is the status of the record when the request has been sent to the Device and WCS is waiting for a response



Success: This is the status of the record when the device has sent a response message, which exactly matches the expected response configured in WCS. If the device is not expected to send a response back to WCS, then the record is directly marked as ‘Success’ after sending the request message to the device.



Failure: This is the status of the record when one of the following occurs – a response message is received by the WCS from the device which does not match the expected response or the maximum request attempts (configurable in WCS as DIRECTIVE MAX ATTEMPTS) are reached or there is no response from the device for a time period more than the timeout (Configurable in WCS as DIRECTIVE RESPONSE TIMEOUT)



Cancelled: The WCS Administrator can choose to cancel any directive at any point. Such records are updated in the queue table with a status of ‘Cancelled’. They will not be processed when sending messages to the device.

6.3 WCS Log Whether or not the WCS Log will get written will be governed by the standard INV Debug profile.

Application Monitoring

Page 27 of 76

Figure 31 - WCS Log

Application Monitoring

Page 28 of 76

7. Trouble Shooting 7.1 I get an exception when I try to run startCarBri.sh Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using 'localhost.0' as the value of the DISPLAY variable. at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method) at sun.awt.X11GraphicsEnvironment.access$000(X11GraphicsEnvironment.java:53) at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:142) at java.security.AccessController.doPrivileged(Native Method) at sun.awt.X11GraphicsEnvironment.(X11GraphicsEnvironment.java:131) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:164) at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:68) at java.awt.Window.init(Window.java:270) at java.awt.Window.(Window.java:318) at java.awt.Frame.(Frame.java:419) at oracle.apps.wms.wcs.carbri.client.CarBriUI.(CarBriUI.java:39)

at oracle.apps.wms.wcs.carbri.client.CarBriUI.main(CarBriUI.java:415)

Solution: Set the value of the Environment Variable DISPLAY correctly e.g., setenv DISPLAY 144.25.77.219:240.0 startCarBri.sh

7.2 I hit a Control-P from the telnet UI but I do not see a device request on the CarBri Solution: Check the Directive Request Query for syntactic correctness Check that the device ID in carbri.xml matches the Device, which is initiating the request.

7.3 The Carousel Log does not get written Solution: Enable the INV Debug profile before using WCS.

Trouble Shooting

Page 29 of 76

7.4 Get the message NULL Query and hence doing nothing

Figure 32 - NULL Query Issue on the Carousel Log Solution: Ensure that the Directive Name is not too long (it has a limit of 16 characters). e.g. Directive name setup as SEND_DELETE_WAVE_014 will result in an error shown above. Directive name setup as PAN_014 will work fine.

7.5 Unable to start more than 2 WCS device listeners Run the following query. Notice that the default value for parameter job_queue_processes is 2.

Trouble Shooting

Page 30 of 76

At the SQL* Prompt SET JOB_QUEUE_PROCESSES to at least the number of devices (Check with the DBA on the number of processes permitted for the current user)

On the WCS Admin Home Page, click on Stop all Jobs

Trouble Shooting

Page 31 of 76

Click on Recreate All Jobs

Click on Start All Jobs

Trouble Shooting

Page 32 of 76

Query the Carousel Log on the Setup tab without any query criteria

Trouble Shooting

Page 33 of 76

Here you would be able to see all the listeners (corresponding to each device) up and running.

Trouble Shooting

Page 34 of 76

8. Document Reference 8.1 Current Document References

Document Name

Comments

Release 11i10 Consolidated Update 1 (CU1) Oracle Supply Chain Management

Version: 1.0 Section 3.2.2.4 Built-in Material Handling Control System (WCS) Explaining Material Handling Devices Pages 6-26 to 6-41

Oracle® Warehouse Management User’s Guide Release 11i

8.1.1 Historical Document References

Author

Document Name

URL

Paul Taylor

Oracle Warehouse Management System Material Handling Device Integration Kit

https://metalink.oracle.com/cgibin/cr/getfile.cgi?p_attid=151811.1:283345

Document Reference

Page 35 of 76

9. Appendix 1 – List of WMS Business Events •

Cycle Count



Direct Receipt



Inspection



Misc/Acct Receipt



Misc/Acct Issue



Move Order Task Allocation



Organization Transfer



Pick Load



Pick Drop



Pick Release



Putaway Drop



Ship Confirm



Standard/Inspection Receipt



Subinventory Transfer



Task Cancel



Task Complete



Task Confirm



Task Skip



Truck Load



Truck Load and Ship



WIP Pick Release

Note 1: Till 11.5.10CU1 there is no capability for WCS to provide a response to complete the functional WMS transaction. We do have the task confirmation API but is it limited in the business events that it can be used to confirm. For the workaround refer Appendix 2 under Configuration Parameter DIRECTIVE EXECUTE ACTION. That is an example of how to complete a WMS functional flow (Org transfer in this case) at the end of processing a set of device directives for moving the material. Note 2: There are a number of autonomous systems provided by various device vendors which function as Autonomous Cycle Counting systems (No request needs to be sent from the ERP system before the MHE comes back with the results of the Cycle Count). Such systems can be supported once there is an open API provided by Oracle WMS for Cycle Counting. This is not currently supported and is planned for a future release.

Appendix 1 – List of WMS Business Events

Page 36 of 76

10. Appendix 2 – WCS Configuration settings – explained These are the details of the settings that the WCS Administrator needs to perform before using WCS functionality of Oracle WMS. The mandatory setups have been marked with a ‘Y’

Configuration Parameter

Functional Description

Mandatory

Default Value

DEVICE ACCESS TIMEOUT

N Placeholder for future enhancement

DEVICE ACCESS TYPE

Placeholder for future enhancement

DIRECTIVE NAME

There should be at least one Directive defined for a device type, business event, and sequence combination. This Directive will have a corresponding Request/Response query.

Y

DIRECTIVE CASCADE FAILURE

If set to 'Y' and if the current directive fails due to max attempts reached, then the rest of the directives in sequence too get marked as failed.

N

N

--

DIRECTIVE DEPENDENCY SEG ID

This config parameter is to configure a certain block of directives fire only when an earlier block of directives has completed. This config parameter is used to define the segment locator to start the comparison in determining the sequence id dependency. This is not used unless the DIRECTIVE DEPENDENCY SEQ ID is set and active.

DIRECTIVE DEPENDENCY SEQ ID

This config parameter is to setup a list of dependent directives to execute in a particular order.

N

--

N

DIRECTIVE DEVICE ID

If the value of this parameter is set then the device id stamped in the directive queue record will be sourced from this configuration setting for the business event, sequence, and device type combination. If this value is NULL then the value of the task device id will be utilized.

N

DIRECTIVE ERROR 1

A device directive will succeed in 1 way; but may fail in many different ways. This is a configuration setting, which will allow the user to configure the directive error message that can be coming back from the device. Note: Directive Error Name is configurable, but the action that is supposed to happen when the directive errors is not configurable. This could be reserved for later with the Edge Server and BRM (Business Rules Manager) coming into the picture.

DIRECTIVE ERROR 2

-Do-

DIRECTIVE ERROR 3

-Do-

DIRECTIVE

-Do-

Appendix 2 – WCS Configuration settings – explained

N --

N N N

Page 37 of 76

ERROR 4 DIRECTIVE ERROR 5

-DoIf a particular directive has this configuration value set to 'Y', when we fire the device request, then instead of sending a directive to the DBMS PIPE, we will do an execute immediate for that directive.

DIRECTIVE EXECUTE ACTION

N N

N

A good example for this is when the user wishes to perform an Organization transfer as the last step in a sequence of 5 device directives. He can set up the last directive with the Directive Execute Action set to 'Y' and for that Directive Request Query, he will make an API call for the Organization Transfer. With this approach, we do not need any code changes to support different APIs that may need to get called at the directive level for each different Customer-Device Vendor configurations (the directives are Device Vendor dependent)

DIRECTIVE MAX ATTEMPTS

This configuration is to set the maximum number of times that WMS will try to send a directive to the device (without getting a response) before marking the directive as a Failure in the queue table. By default, we will try to send the directive 3 times.

N

3

N

0

DIRECTIVE PAUSE DELAY

Configurable parameter to slow down the application at directive request level if the hardware is unable to keep pace. The delay specified for this configuration value will be in seconds. There are some devices, which have a response times varying between 50 milliseconds and a few seconds. By making this a configurable parameter, WMS can support very fast and relatively slow devices. By default, the value for this configuration is set to 0.

If the value of this parameter is set then the pipe name stamped in the directive queue record will be sourced from this configuration DIRECTIVE PIPE setting for the business event, sequence, device type combination. NAME If this value is NULL then the value of the pipe name will be taken from the PIPE_NAME configuration value.

N

A good example is the locator full scenario, where we are using the ASRS to Putaway material to a locator, which is Full. The device returns an error condition and we want an alternate directive to fire. These are called fallback directives. These are set to be initially in Cancelled state ('X') and will become Current DIRECTIVE ('C') only when the previous directive has failed with a 'FULL' QUEUE STATUS condition. This fallback directive will fire and route the material from the ASRS to an Exceptions station where the Supervisor can take corrective action.

N

P

If this is not set, then the default will be 'P' Pending. For fallback directives, this should be set to 'X' Cancelled. DIRECTIVE When we try to update the directive queue table to any status QUEUE UPDATE (Current/Failure/Pending/Success/Cancelled), we will take the Appendix 2 – WCS Configuration settings – explained

N

Page 38 of 76

device type, business event, sequence combination and query this configuration setting. This will yield the Directive that we are trying to narrow down and update in the queue table. (The 3rd directive should not be marked as a Success when we get a response for the 1st directive) This is applicable only when we need to make use of dependent directives. This can be a query or an API call (provided Directive Execute Action is set to 'Y'). At runtime, WMS will perform an execute immediate on this configuration value, populate the directive queue table and fire the request to the DBMS PIPE on which the Carousel Bridge is listening.

Y

DIRECTIVE REQUEST QUERY DIRECTIVE RESPONSE QUERY

This will be the response that we are expecting back from the device. If the actual response matches the one that we are expecting then the directive queue record will be marked as a success.

Y

DIRECTIVE RESPONSE TIMEOUT

This configuration setting is to control the number of seconds that the 'Current' directives in the queue table should remain in that state before timing out. By default, the timeout delay is 20 seconds.

N

20

N

ON

N

Device Id

Inside the listener process, when we call the DBMS PIPE.receive_message API then we need to specify a pipe PIPE TIME OUT timeout period. If there is no record in the config table then the default value is taken as 5 seconds.

N

5

QUEUE PURGE

N

3600

This configuration serves as the 'ON/OFF' switch for the DBMS job which is listening to the responses coming back from the device (there will be one job per device). At runtime, when the WCS Administrator tries to create a new job from the OAF Home then this configuration setting will be created in the configuration PIPE LISTENER table and the value is defaulted to 'ON'. SWITCH

--

From the UI, if the Administrator wishes to suspend the job then, he can click a UI control, which set this configuration to 'OFF'. The UI control serves as a toggle and can be used to turn the listener ON or OFF any number of times. There will be 2 pipes associated with each device. They will be OUT_ and IN_ See Section 6.3 schematic diagram. The value for this configuration parameter should be set to the Device Id (in the Define Devices form) and the sequence should also be set to the device id. PIPE NAME If this configuration does not exist when the WCS Administrator tries to start a listener job on the DB then there will be a PIPE_NAME configuration created in the config table with the default value as the device id for which he is trying to start the DBMS JOB.

The directive queue table can grow very quickly. Every time we

Appendix 2 – WCS Configuration settings – explained

Page 39 of 76

INTERVAL

process the directive queue, we also purge the queue. All records with status Success, Failure, Pending are candidates for purging. How often we need to purge can be configured using this parameter. By default, we will purge the records once every hour. Note: If there are dependent directives and at least one of them is a fallback directive then the queue_purge_interval should be set to a high value. Otherwise, the fallback directives, which have the status ‘Cancelled’ to start with will get purged before the earlier directive, can fail.

TASK ADDR

This configuration parameter is set at device type and business event level. This will be utilized be the Carousel Bridge component when it writes to the IN Pipe. It will write to things to the pipe, the TASK_ADDR and the actual response string.

N

--

This is for backward compatibility, where some devices need to identify the hardware needs to identify itself to WMS as the source of the response. TASK ALTERNATIVE SEGMENT

N Unused N

F

TASK GROUP

This parameter is used to control task grouping at the time of processing the request. If this parameter is set to 'T' then skip the whole group of tasks. This ensures that it is an all or nothing condition. Using this parameter it is possible to control the load on a device (requests / hour)

N

--

TASK ZONE

For a device type and business event, this can be configured. This will get stamped on the Directive queue record. But later in the code it is unused.

Appendix 2 – WCS Configuration settings – explained

Page 40 of 76

11. Appendix 3 – Sample carbri.xml Given below is a sample carbri.xml file. This controls the runtime behavior of the CarBri Middleware. Typically modified element values are highlighted in bold red.

12 2 <JDBCURL>jdbc:oracle:thin:@ap6171rt.us.oracle.com:1521:wmsdv11i <Simulate>No <SocketInfo> <socketHostName>140.87.204.121 <socketPortNumber>4444 <socketLocalPort>5170 <SerialPortInfo> <portName>COM2 <serialPortTimeOutMillis>5000 9600 8 <stopBits>1 <parity>0 <AppsInfo> /appmgr/wmsspprjappl/fnd/11.5.0/secure/ap6171rt_wmsspprj.dbc MFG <password>WELCOME WMS WMS_WCS_USER


Appendix 3 – Sample carbri.xml

Page 41 of 76

12. Appendix 4 – Case Study 12.1 Schematic Process Flow configured for Pick Load Business Event Here is a scenario, which is more complex and is closer to what you would typically expect at a Customer site.

Figure 33 - Real life MHE Integration Scenario In the scenario illustrated above, a user signs-on to a workstation (there are typically 3-4 workstations) and an ASRS Crane. The user initiates a device request to perform a ‘Pick Load’ Business event. This sets off a chain of directives to be sent to two devices (ASRS Crane and Sortation Conveyor), in a controlled fashion so that they work in tandem to complete the ‘Pick Load’ operation without the user having to move from his workstation. In this Business use case we will make use of the Recommended Implementation Strategy elucidated in Section 3.3

12.1.1 Identify the WMS Business events Identify the WMS Business events in the Business process where a device will be invoked. (Refer Appendix 1 for list of WMS Business events). In the present use case the WMS Business event being implemented is ‘Pick Load’

Appendix 4 – Case Study

Page 42 of 76

12.1.2 Setup Devices in Oracle WMS and assign them to appropriate Business Event/s Refer Oracle Warehouse Management System Material Handling Device Integration Kit for the standard Device setup (Creating Devices in Oracle WMS and assigning them to the appropriate business event). In the present use case,

Figure 34 - Subinventory setup

Figure 35 - Use Case 1 - Define Devices

Figure 36 - Assign Device 'ASRS Crane 1' to Pick Load Business Event

Appendix 4 – Case Study

Page 43 of 76

12.1.3 Procure information Device Request/Response message structure Procure information from the device Vendor about the Device Request message structure that the device understands. After perusing the technical specifications supplied by the device vendor, we are in a position to fill the following table. This would be helpful in creating the WCS Configuration settings.

12.1.4 Map the WMS business event with the Device Request Message Map the WMS business event with the Device Request Message. (One WMS Business event may map to more than one Device-level directive) Note: For a device type-business event-sequence id combination, if DIRECTIVE_EXECUTE_ACTION is set to ‘Y’ then the contents of ‘DIRECTIVE_REQUEST_QUERY’ will be executed at the time of firing a request. This feature can be made use of to call a PL/SQL API or execute an anonymous PL/SQL block. Else if DIRECTIVE_EXECUTE_ACTION is not set or set to ‘N’ then there is no API call made. Instead the Request Message is sent to the Device via the CarBri. This is detailed in Column 3 of the table below. Also note that the directives in red italics are initially set to ‘Cancelled’ using the directive queue status. They are activated at runtime if some directive upstream fails (and that upstream directive has Directive Cascade failure set to ‘N’) Figure 37 - Sample directive settings based on tech specs for an ASRS and Sortation Conveyor Seq. No.

1

Directive

For request: Send Message or Execute code

RESET_ATTEMP TS

Execute Code

What does it do and why?

What: Resets attempts and last update on the Directive queue table for 3 business events. Also inserts a record in the Carousel Log table Why: For a trial run during testing, the PLC needs to be reset so that the consultant can create a fresh environment for the PLC to function. This optional directive

Appendix 4 – Case Study

Sample Request Message

Sample Response Message

Comments on WCS settings

DIRECTIVE_QUEUE_STATUS is X (cancelled) to start with. This can be reset to P (pending) and then when the Device request is fired, this directive will take effect and update the queue table and insert into the log table. If DIRECTIVE_QUEUE_STATUS is not set then the default value is taken as P

If Directive RESET_ATTEMPTS fails then the rest of the directives must not fail. So DIRECTIVE_CASCADE_FAILURE must be set to N

At runtime no messages are to be sent. Rather an anonymous PL/SQL program unit is to be called. DIRECTIVE_EXECUTE_ACTION is set to Y

This directive is to be attempted only once. If it fails after the first attempt it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 1.

Page 44 of 76

Seq. No.

Directive

For request: Send Message or Execute code

What does it do and why?

Sample Request Message

Sample Response Message

invokes any PL/SQL code that may need to be invoked at the time of initialization. 2

RESET_ROUTE

Execute Code

Comments on WCS settings

We are to wait for 1 second for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 1.

What: Calls an API

If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y

reset_directive _execution Why: When there is an alternative route needed by a tote due to an unexpected full slot, there can be an API setup with this directive to suggest an alternative destination for the tote (usually the Exceptions Station)

Since this is a call to an API set DIRECTIVE_EXECUTE_ACTION to Y

This directive is to be attempted only once. If it fails after the first attempt it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 1.

This directive is always supposed to fire. It should not be in cancelled state to start with. Set DIRECTIVE_QUEUE_STATUS to P

We are to wait for 1 second for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 1.

10

PickASRS_61_71

Send Message

What: Fires the request message to the ASRS_C1 to PICK from Rack and Load shuttle Why: This is a step in the series of messages to be sent to the device for making the various parts of the device to perform in tandem. This will be in

Appendix 4 – Case Study

_61,1,__,00 00,DONE00 ,,AS1.1.1._

If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y

This directive is to be tied to the next 2 directives. This will comprise a set of dependent directives. i.e., The request for the second directive should fire only when the first directive is marked as a success. Since there are 3 directives in the dependent set the DIRECTIVE_DEPENDENCY_SEG_I D to 1,2,3 This directive is the first in the set of 3 dependent directives. Set the DIRECTIVE_DEPENDENCY_SEQ_I D to 10

Page 45 of 76

Seq. No.

Directive

For request: Send Message or Execute code

What does it do and why?

Sample Request Message

Sample Response Message

accordance with the message structure published by the device vendor.

Comments on WCS settings

This directive is to be attempted 20 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 20.

This directive is always supposed to fire. It should not be in cancelled state to start with. Set DIRECTIVE_QUEUE_STATUS to P

We are to wait for 60 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 60.

20

Divert4SHT_63_7 2

Send Message

What: Fires a request to DIVERT to Exit the Crane / Unload the Shuttle

63,1,13,0000, DIVERT,,AS1. 1.1.

_63,1,__,00 00,DONE00 ,,AS1.1.1._

This directive is to be attempted 20 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 20.

Why: This is a step in the series of messages to be sent to the device for making the various parts of the device to perform in tandem. This will be in accordance with the message structure published by the device vendor. 30

RESETSCAN_00_ 75

Send Message

What: This is the reset scan for the tote. Why: This is a reset

Appendix 4 – Case Study

If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y

This directive is always supposed to fire. It should not be in cancelled state to start with. Set DIRECTIVE_QUEUE_STATUS to P

We are to wait for 60 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 60.

_75,6,16,00 00,DONE00 ,,0000.00.0. 0000_

If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y

Page 46 of 76

Seq. No.

Directive

For request: Send Message or Execute code

What does it do and why?

Sample Request Message

Sample Response Message

message specific to a scanner (as specified by the vendor)

Comments on WCS settings

The request message should be routed to the CarBri corresponding the CarBri for the Conveyor. (There is one CarBri for every device defined in WMS) Set the DIRECTIVE_DEVICE_ID to 41 This is the Device ID from the Define Devices form for the Sortation conveyor SORT_1. (If DIRECTIVE_DEVICE_ID is not set then the request will be sent by default to the ASRS_C1 device.)

This directive is to be attempted 240 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 240.

DIRECTIVE_PIPE_NAME must be set to the same value as DIRECTIVE_DEVICE_ID – 41 in this case.

DIRECTIVE_QUEUE_STATUS is X (cancelled) to start with. This can be reset to P (pending) at runtime and then when the Device request is fired, this directive will take effect. If DIRECTIVE_QUEUE_STATUS is not set then the default value is taken as P

We are to wait for 30 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 30.

40

Divert2WS_63_6 4

Send Message

What: Fires a request to DIVERT to Sortation conveyor Why: This is one of the messages that needs to be sent in the message sequence to route the tote from the

Appendix 4 – Case Study

63,6,06,0000, DIVERT,,AS1. 1.1.

_63,6,__,00 00,DONE00 ,,AS1.1.1._

When a ‘Cancel Task’ is performed, there should be a way to isolate all the records, which are candidates to be marked with X (Cancelled). The way to accomplish this is to set the DIRECTIVE_CANCEL_TASK to Divert2WS_63_64 (same as the Directive).

If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y

Page 47 of 76

Seq. No.

Directive

For request: Send Message or Execute code

What does it do and why?

ASRS to the Pick Station.

Sample Request Message

Sample Response Message

Comments on WCS settings

When a ‘Complete Task’ is performed, there should be a way to isolate all the records, which are candidates to be marked with S (Success). The way to accomplish this is to set the DIRECTIVE_COMPLETE_TASK to Divert2WS_63_64 (same as the Directive).

The request message should be routed to the CarBri corresponding the CarBri for the Conveyor. (There is one CarBri for every device defined in WMS) Set the DIRECTIVE_DEVICE_ID to 41 This is the Device ID from the Define Devices form for the Sortation conveyor SORT_1. (If DIRECTIVE_DEVICE_ID is not set then the request will be sent by default to the ASRS_C1 device.)

This directive is to be attempted 15 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 15.

DIRECTIVE_PIPE_NAME must be set to the same value as DIRECTIVE_DEVICE_ID – 41 in this case.

This directive is always supposed to fire. It should not be in cancelled state to start with. Set DIRECTIVE_QUEUE_STATUS to P

We are to wait for 120 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 120.

When a ‘Skip Task’ is performed, there should be a way to isolate all the records, which are candidates to be marked with X (Cancelled). The way to accomplish this is to set the DIRECTIVE_SKIP_TASK to Divert2WS_63_64 (same as the Directive).

Appendix 4 – Case Study

Page 48 of 76

Seq. No.

44

Directive

For request: Send Message or Execute code

TaskComplete44

Send Message

What does it do and why?

What: This fires the last directive to get the LPN to the Workstation where the operator is stationed Why: To indicate the the ERP system that the task is done.

Sample Request Message

Sample Response Message _99,6,16,00 00,TC0000, LPN26A,00 00.00.0.000 0_

Comments on WCS settings

When a ‘Cancel Task’ is performed, there should be a way to isolate all the records, which are candidates to be marked with X (Cancelled). The way to accomplish this is to set the DIRECTIVE_CANCEL_TASK to TaskComplete44 (same as the Directive).

If Directive TaskComplete44 fails then the rest of the directives must not fail. So DIRECTIVE_CASCADE_FAILURE must be set to N

When a ‘Complete Task’ is performed, there should be a way to isolate all the records, which are candidates to be marked with S (Success). The way to accomplish this is to set the DIRECTIVE_COMPLETE_TASK to TaskComplete44 (same as the Directive).

The request message should be routed to the CarBri corresponding the CarBri for the Conveyor. (There is one CarBri for every device defined in WMS) Set the DIRECTIVE_DEVICE_ID to 41 This is the Device ID from the Define Devices form for the Sortation conveyor SORT_1. (If DIRECTIVE_DEVICE_ID is not set then the request will be sent by default to the ASRS_C1 device.)

This directive is to be attempted 9 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 9.

DIRECTIVE_PIPE_NAME must be set to the same value as DIRECTIVE_DEVICE_ID – 41 in this case.

Appendix 4 – Case Study

Page 49 of 76

Seq. No.

Directive

For request: Send Message or Execute code

What does it do and why?

Sample Request Message

Sample Response Message

Comments on WCS settings

This directive is always supposed to fire. It should not be in cancelled state to start with. Set DIRECTIVE_QUEUE_STATUS to P

We are to wait for 400 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 400.

When a ‘Skip Task’ is performed, there should be a way to isolate all the records, which are candidates to be marked with S (Success). The way to accomplish this is to set the DIRECTIVE_SKIP_TASK to TaskComplete44 (same as the Directive).

50

NULL4SCAN_00 _75

Send Message

What: Fires a null request and expects a response containing the LPN information to come back from the device for the LPN scan event from the Sortation Conveyor Why: This message is needed to initiate a scan event from the sortation conveyor.

_75,6,16,00 00,DONE00 ,LPN30B,00 00.00.0.000 0_

If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y

The request message should be routed to the CarBri corresponding the CarBri for the Conveyor. (There is one CarBri for every device defined in WMS) Set the DIRECTIVE_DEVICE_ID to 41 This is the Device ID from the Define Devices form for the Sortation conveyor SORT_1. (If DIRECTIVE_DEVICE_ID is not set then the request will be sent by default to the ASRS_C1 device.)

DIRECTIVE_PIPE_NAME must be set to the same value as DIRECTIVE_DEVICE_ID – 41 in this case.

This directive is always supposed to fire. It should not be in cancelled state to start with. Set DIRECTIVE_QUEUE_STATUS to P

Appendix 4 – Case Study

Page 50 of 76

Seq. No.

Directive

For request: Send Message or Execute code

What does it do and why?

Sample Request Message

Sample Response Message

Comments on WCS settings

We are to wait for 30 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 30.

60

Divert2ASRS63_ 64

Send Message

What: Sends the directive to DIVERT the LPN to the ASRS

63,6,05,0000, DIVERT,,AS1. 1.1.

_63,6,05,00 00,DONE00 ,,AS1.1.1._

Why: This is one of the steps in the series of operations to be performed in the entire ASRS pick cycle. This is in accordance with the message structure specified by the Device Vendor.

If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y

The request message should be routed to the CarBri corresponding the CarBri for the Conveyor. (There is one CarBri for every device defined in WMS) Set the DIRECTIVE_DEVICE_ID to 41 This is the Device ID from the Define Devices form for the Sortation conveyor SORT_1. (If DIRECTIVE_DEVICE_ID is not set then the request will be sent by default to the ASRS_C1 device.)

This directive is to be attempted 15 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 15.

DIRECTIVE_PIPE_NAME must be set to the same value as DIRECTIVE_DEVICE_ID – 41 in this case.

We are to wait for 120 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 120.

70

PICK2CS_61_71

Send Message

What: Sends the second part of the directive to route the LPN to the Crane Why: This is one of the steps in the series of operations to

Appendix 4 – Case Study

_61,1,__,00 00,DONE00 ,,AS1.1.1._

If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y

This directive is to be attempted 20 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 20.

Page 51 of 76

Seq. No.

80

90

Directive

PUT4SHT_62_72

TOTE4SHT_63_7 2

Appendix 4 – Case Study

For request: Send Message or Execute code

Send Message

Send Message

What does it do and why?

be performed in the entire ASRS pick cycle. This is in accordance with the message structure specified by the Device Vendor. What: Sends the directive to PUTAWAY the LPN to the Load Shuttle Why: This is one of the steps in the series of operations to be performed in the entire ASRS pick cycle. This is in accordance with the message structure specified by the Device Vendor. What: If the directives that are ahead in the queue fail and they are set to Directive Cascade Failure N then these directives can be fired.

Sample Request Message

Sample Response Message

Comments on WCS settings

We are to wait for 60 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 60.

62,1,09,0000, PUTAWY,,AS 1.1.1.

_62,1,__,00 00,DONE00 ,,AS1.1.1._

If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y

This directive is to be attempted 20 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 20.

We are to wait for 60 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 60.

63,1,1,13,,D IVERT,LPN1 03A,AS1.1.1.

_63,1,__,0 000,DONE 00,LPN34 A,AS1.1.1. _

If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y

This directive is to be attempted 20 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 20.

Page 52 of 76

Seq. No.

Directive

For request: Send Message or Execute code

What does it do and why?

Sample Request Message

Sample Response Message

These are termed as the fallback directives or Plan B directives.

DIRECTIVE_QUEUE_STATUS is X (cancelled) to start with. This can be reset to P (pending) at runtime and then when the Device request is fired, this directive will take effect. If DIRECTIVE_QUEUE_STATUS is not set then the default value is taken as P

Why: This is a provision for a fallback plan.

100

Send Message

What: Sends the second part of the directive to the Sortation Conveyor for step 2 of Plan B Why: This is part of the fallback plan.

Comments on WCS settings

We are to wait for 60 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 60.

63,6,06,000 1,DIVERT,LP N34A,AS1.10 23.21.

_63,6,__,0 000,DONE 00,LPN34 A,AS1.21.3 45._

If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y

The request message should be routed to the CarBri corresponding the CarBri for the Conveyor. (There is one CarBri for every device defined in WMS) Set the DIRECTIVE_DEVICE_ID to 41 This is the Device ID from the Define Devices form for the Sortation conveyor SORT_1. (If DIRECTIVE_DEVICE_ID is not set then the request will be sent by default to the ASRS_C1 device.)

This directive is to be attempted 20 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 20.

We are to wait for 60 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 60.

DIRECTIVE_QUEUE_STATUS is X (cancelled) to start with. This can be reset to P (pending) at runtime and then when the Device request is fired, this directive will take effect. If DIRECTIVE_QUEUE_STATUS is not set then the default value is taken as P

Appendix 4 – Case Study

Page 53 of 76

Seq. No.

Directive

For request: Send Message or Execute code

What does it do and why?

Sample Request Message

Sample Response Message

Comments on WCS settings

DIRECTIVE_PIPE_NAME must be set to the same value as DIRECTIVE_DEVICE_ID – 41 in this case.

110

FullASRS_61_71

Send Message

_61,0,__,0 000,DONE 00,0F0000 ,AS1.1090. 21._

What: This kicks off the chain of events when the ASRS is FULL Why: If the storage location is full then the system must be setup to handle such an eventuality. This is the means of achieving it.

If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y

This directive is to be attempted 20 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 20.

DIRECTIVE_QUEUE_STATUS is X (cancelled) to start with. This can be reset to P (pending) at runtime and then when the Device request is fired, this directive will take effect. If DIRECTIVE_QUEUE_STATUS is not set then the default value is taken as P

We are to wait for 60 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 60.

120

Full4SHT_63_72

Send Message

What: This directive will be fired when the shuttle is full and the remaining directives need to wait for sometime so that they can make use of the shuttle Why: This is to handle the queue when many totes are vying to be put onto the shuttle

Appendix 4 – Case Study

63,8,13,000 0,DIVERT,8F 0000,AS1.109 8.23.

_63,4,__,0 000,DONE 00,4F0000 ,AS1.1034. 23._

If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y

This directive is to be attempted 15 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 15.

DIRECTIVE_QUEUE_STATUS is X (cancelled) to start with. This can be reset to P (pending) at runtime and then when the Device request is fired, this directive will take effect. If DIRECTIVE_QUEUE_STATUS is not set then the default value is taken as P

Page 54 of 76

Seq. No.

Directive

For request: Send Message or Execute code

What does it do and why?

Sample Request Message

Sample Response Message

before moving on to the ASRS locator. 130

Send Message

What: This will send the second part of the directive to the device for the Shuttle Full message Why: This is needed to indicate to any incoming requests for occupation of the shuttle by totes [via scans]. This will indicate to the totes whether they can occupy the shuttle or not.

Comments on WCS settings

We are to wait for 60 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 60.

63,6,06,000 0,DIVERT,5F 0000,AS1.102 5.25.

_63,6,__,0 000,DONE 00,4F0000 ,AS1.1304. 20._

If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y

The request message should be routed to the CarBri corresponding the CarBri for the Conveyor. (There is one CarBri for every device defined in WMS) Set the DIRECTIVE_DEVICE_ID to 41 This is the Device ID from the Define Devices form for the Sortation conveyor SORT_1. (If DIRECTIVE_DEVICE_ID is not set then the request will be sent by default to the ASRS_C1 device.)

DIRECTIVE_PIPE_NAME must be set to the same value as DIRECTIVE_DEVICE_ID – 41 in this case. DIRECTIVE_QUEUE_STATUS is X (cancelled) to start with. This can be reset to P (pending) at runtime and then when the Device request is fired, this directive will take effect. If DIRECTIVE_QUEUE_STATUS is not set then the default value is taken as P

Appendix 4 – Case Study

Page 55 of 76

12.1.5 Use the WCS Administrator responsibility to detail the request structure for each device-level directive These changes are to be done on the screen shown in “Figure 9 - WCS Configuration Settings”. The values that are to be filled up in this configuration table will be as discussed in the previous section (based on the technical specifications of the device messages provided by the device vendor and after mapping the appropriate directives to the WMS Business Events)

Appendix 4 – Case Study

Page 56 of 76

Device Seq Biz Type Id Event Pick ASRS 1 Load Pick ASRS 1 Load Pick ASRS 1 Load Pick ASRS 1 Load Pick ASRS 1 Load

Name

Value

DIRECTIVE

RESET_ATTEMPTS

DIRECTIVE_CASCADE_FAILURE

N

DIRECTIVE_EXECUTE_ACTION

Y

DIRECTIVE_MAX_ATTEMPTS

1

DIRECTIVE_QUEUE_STATUS

X

DIRECTIVE_REQUEST_QUERY

select 'declare ' ||chr(10)||'l_dummy number;' ||chr(10)||'pragma autonomous_transaction; ' ||chr(10)||'begin ' ||chr(10)||'UPDATE WMS_CAROUSEL_DIRECTIVE_QUEUE SET ATTEMPTS = 0, LAST_UPDATE_DATE = SYSDATE, LAST_ATTEMPT = SYSDATE WHERE BUSINESS_EVENT_ID IN (3,5,10) AND SEQUENCE_ID > 1 AND REQUEST_ID = '|| request_id||' AND -99 != :P_REQUEST_ID AND -99 != :P_TASK_ID; ' ||chr(10)||'insert into wms_carousel_log (carousel_log_id,text,device_id,last_update_date,last_updated_by, creation_date,created_by,last_update_login) values (wms_carousel_log_s.nextval,'||'''RESET ATTEMPTS at request: '|| request_id||''''||',12,sysdate,-1,sysdate,-1,-1); ' ||chr(10)||'COMMIT; ' ||chr(10)||'end; ' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id

ASRS

1

DIRECTIVE_RESPONSE_TIMEOUT 1

ASRS

1

DIRECTIVE

RESET_ROUTE

ASRS

2

DIRECTIVE_CASCADE_FAILURE

Y

ASRS

2

DIRECTIVE_EXECUTE_ACTION

Y

ASRS

2

DIRECTIVE_MAX_ATTEMPTS

1

ASRS

2

DIRECTIVE_QUEUE_STATUS

P

ASRS

2

DIRECTIVE_REQUEST_QUERY

select 'declare ' ||chr(10)||'l_dummy varchar2(32);' ||chr(10)||'begin '

ASRS

2

Appendix 4 – Case Study

Page 1 of 76

Pick Load

Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load

Active Ind Y Y Y Y Y

Y

Y Y Y Y Y Y Y

||chr(10)||'select * INTO l_dummy from dual where -99 != :p_request_id and -99 != :p_task_id; ' ||chr(10)||'reset_directive_execution('||request_id||','||''''||lpn||''''||'); ' ||chr(10)||'end; ' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id DIRECTIVE_RESPONSE_TIMEOUT 1

ASRS

2

DIRECTIVE

PickASRS_61_71

ASRS

10

DIRECTIVE_CASCADE_FAILURE

Y

ASRS

10

DIRECTIVE_DEPENDENCY_SEG_ID 1,2,3

ASRS

10

DIRECTIVE_DEPENDENCY_SEQ_ID 10

ASRS

10

DIRECTIVE_MAX_ATTEMPTS

20

ASRS

10

DIRECTIVE_QUEUE_STATUS

P

ASRS

10

DIRECTIVE_RESPONSE_QUERY

select '_61,' || substr(nvl(SEGMENT2,'C0'),length(nvl(SEGMENT2,'C0')),1) ||',__,'|| lpad(nvl(SEGMENT4,'0'),4,'0') || ',DONE00,'||LPN||','||SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'|| SEGMENT4||'_' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id

ASRS

10

DIRECTIVE_RESPONSE_TIMEOUT 60

ASRS

10

DIRECTIVE

Divert4SHT_63_72

ASRS

20

DIRECTIVE_CASCADE_FAILURE

Y

ASRS

20

DIRECTIVE_MAX_ATTEMPTS

20

ASRS

20

DIRECTIVE_QUEUE_STATUS

P

ASRS

20

DIRECTIVE_REQUEST_QUERY

select chr(2)||'63,'|| substr(nvl(SEGMENT2,'C0'),length(nvl(SEGMENT2,'C0')),1) ||','|| lpad(decode(substr(nvl(SEGMENT1,'0Q'),2,1),'Q', decode(nvl(SEGMENT3,'0'),1,14,2,15,0),13),2,'0') ||','|| lpad(nvl(SEGMENT4,'0'),4,'0') || ',DIVERT,'||LPN||','||SEGMENT1||'.'||SEGMENT2||'.'|| SEGMENT3||'.'||SEGMENT4||chr(3) from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id

ASRS

20

Appendix 4 – Case Study

Page 2 of 76

Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load

Pick Load

Pick Load Pick Load Pick Load Pick Load Pick Load

Pick Load

Y Y Y Y Y Y Y

Y

Y Y Y Y Y

Y

DIRECTIVE_RESPONSE_QUERY

select '_63,'|| substr(nvl(SEGMENT2,'C0'),length(nvl(SEGMENT2,'C0')),1) || ',__,'|| lpad(nvl(SEGMENT4,'0'),4,'0') || ',DONE00,'||LPN||','||SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'|| SEGMENT4||'_' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id

ASRS

20

DIRECTIVE_RESPONSE_TIMEOUT 60

ASRS

20

DIRECTIVE

RESETSCAN_00_75

ASRS

30

DIRECTIVE_CASCADE_FAILURE

Y

ASRS

30

DIRECTIVE_DEVICE_ID

41

ASRS

30

DIRECTIVE_MAX_ATTEMPTS

240

ASRS

30

DIRECTIVE_PIPE_NAME

41

ASRS

30

DIRECTIVE_QUEUE_STATUS

X

ASRS

30

ASRS

30

ASRS

30

DIRECTIVE_RESPONSE_TIMEOUT 30

ASRS

30

DIRECTIVE

Divert2WS_63_64

ASRS

40

DIRECTIVE_CANCEL_TASK

Divert2WS_63_64

ASRS

40

DIRECTIVE_CASCADE_FAILURE

Y

ASRS

40

DIRECTIVE_COMPLETE_TASK

Divert2WS_63_64

ASRS

40

DIRECTIVE_DEVICE_ID

41

ASRS

40

DIRECTIVE_MAX_ATTEMPTS

15

ASRS

40

DIRECTIVE_PIPE_NAME

41

ASRS

40

DIRECTIVE_QUEUE_STATUS

P

ASRS

40

DIRECTIVE_REQUEST_QUERY

select chr(2)||'63,6,'||

ASRS

40

DIRECTIVE_REQUEST_QUERY DIRECTIVE_RESPONSE_QUERY

Appendix 4 – Case Study

select '' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id select '_75,6,16,0000,DONE00,'||LPN||',0000.00.0.0000_' from wms_device_requests_wcsv where request_id = :p_request_id and task_id = :p_task_id

Page 3 of 76

Pick Load

Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick

Y

Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y

DIRECTIVE_RESPONSE_QUERY

lpad(decode(nvl(wdat.DEVICE_ID,'19'),0,0,19,6,7),2,'0') ||','|| lpad(nvl(wdrw.SEGMENT4,'0'),4,'0') ||',DIVERT,'|| wdrw.LPN||','||wdrw.SEGMENT1||'.'||wdrw.SEGMENT2||'.'|| wdrw.SEGMENT3||'.'|| wdrw.SEGMENT4||chr(3) from wms_device_requests_wcsv WDRW, wms_device_assignment_temp wdat where wdat.device_id IN (19,20) and wdat.LAST_UPDATED_BY = fnd_global.user_id and wdrw.request_id = :p_request_id and wdrw.task_id = :p_task_id select '_63,6,__,' || lpad(nvl(SEGMENT4,'0'),4,'0')||',DONE00,'|| LPN||','||SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'|| SEGMENT4||'_' from wms_device_requests_wcsv where request_id = :p_request_id and task_id = :p_task_id

Load

ASRS

40

DIRECTIVE_RESPONSE_TIMEOUT 120

ASRS

40

DIRECTIVE_SKIP_TASK

Divert2WS_63_64

ASRS

40

DIRECTIVE

TaskComplete44

ASRS

44

DIRECTIVE_CANCEL_TASK

TaskComplete44

ASRS

44

DIRECTIVE_CASCADE_FAILURE

N

ASRS

44

DIRECTIVE_COMPLETE_TASK

TaskComplete44

ASRS

44

DIRECTIVE_DEVICE_ID

41

ASRS

44

DIRECTIVE_MAX_ATTEMPTS

9

ASRS

44

DIRECTIVE_PIPE_NAME

41

ASRS

44

DIRECTIVE_QUEUE_STATUS

P

ASRS

44

ASRS

44

ASRS

44

DIRECTIVE_RESPONSE_TIMEOUT 400

ASRS

44

DIRECTIVE_SKIP_TASK

ASRS

44

DIRECTIVE_REQUEST_QUERY DIRECTIVE_RESPONSE_QUERY

Appendix 4 – Case Study

select '' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id select '_99,6,16,0000,TC0000,'||LPN||',0000.00.0.0000_' from wms_device_requests_wcsv where request_id = :p_request_id and task_id = :p_task_id

TaskComplete44 Page 4 of 76

Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load

Y

Y Y Y

Y Y Y Y Y Y Y Y Y Y Y

Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load

DIRECTIVE

NULL4SCAN_00_75

ASRS

50

DIRECTIVE_CASCADE_FAILURE

Y

ASRS

50

DIRECTIVE_DEVICE_ID

41

ASRS

50

DIRECTIVE_MAX_ATTEMPTS

240

ASRS

50

DIRECTIVE_PIPE_NAME

41

ASRS

50

DIRECTIVE_QUEUE_STATUS

P

ASRS

50

ASRS

50

ASRS

50

DIRECTIVE_RESPONSE_TIMEOUT 30

ASRS

50

DIRECTIVE

Divert2ASRS63_64

ASRS

60

DIRECTIVE_CASCADE_FAILURE

Y

ASRS

60

DIRECTIVE_DEVICE_ID

41

ASRS

60

DIRECTIVE_MAX_ATTEMPTS

15

ASRS

60

DIRECTIVE_PIPE_NAME

41

ASRS

60

DIRECTIVE_QUEUE_STATUS

P

ASRS

60

ASRS

60

Pick Load

Y

ASRS

60

Pick Load

Y

DIRECTIVE_REQUEST_QUERY DIRECTIVE_RESPONSE_QUERY

DIRECTIVE_REQUEST_QUERY

DIRECTIVE_RESPONSE_QUERY

Appendix 4 – Case Study

select '' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id select '_75,6,16,0000,DONE00,'||LPN||',0000.00.0.0000_' from wms_device_requests_wcsv where request_id = :p_request_id and task_id = :p_task_id

select chr(2)||'63,6,'|| lpad(decode(substr(nvl(SEGMENT2,'C0'), length(nvl(SEGMENT2,'C0')),1),1,5,2,4,3,3,4,2,5,1,0),2,'0') ||','|| lpad(nvl(SEGMENT4,'0'),4,'0') ||','|| 'DIVERT,'||LPN||','||SEGMENT1||'.'||SEGMENT2||'.'|| SEGMENT3||'.'||SEGMENT4||chr(3) from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id select chr(2)||'63,6,'|| lpad(decode(substr(nvl(SEGMENT2,'C0'), length(nvl(SEGMENT2,'C0')),1),1,5,2,4,3,3,4,2,5,1,0),2,'0') ||','|| lpad(nvl(SEGMENT4,'0'),4,'0') ||','|| 'DIVERT,'||LPN||','||SEGMENT1||'.'||SEGMENT2||'.'|| SEGMENT3||'.'||SEGMENT4||chr(3) from wms_device_requests_wcsv Page 5 of 76

Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load

Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y

where request_id=:p_request_id and task_id=:p_task_id Pick Load Pick Load Pick Load Pick Load

Y

DIRECTIVE_RESPONSE_TIMEOUT 120

ASRS

60

DIRECTIVE

PICK2CS_61_71

ASRS

70

DIRECTIVE_CASCADE_FAILURE

Y

ASRS

70

DIRECTIVE_MAX_ATTEMPTS

20

ASRS

70

DIRECTIVE_RESPONSE_QUERY

select '_61,' || substr(nvl(SEGMENT2,'C0'), length(nvl(SEGMENT2,'C0')),1) ||',__,0000' || ',DONE00,'||LPN||','||SEGMENT1||'.'||SEGMENT2||'.'|| SEGMENT3||'.'||SEGMENT4||'_' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id

ASRS

70

DIRECTIVE_RESPONSE_TIMEOUT 60

ASRS

70

DIRECTIVE

PUT4SHT_62_72

ASRS

80

DIRECTIVE_CASCADE_FAILURE

Y

ASRS

80

DIRECTIVE_MAX_ATTEMPTS

20

ASRS

80

ASRS

80

Pick Load

Y

ASRS

80

Pick Load

Y

DIRECTIVE_RESPONSE_TIMEOUT 60

ASRS

80

DIRECTIVE

TOTE4SHT_63_72

ASRS

90

DIRECTIVE_CASCADE_FAILURE

Y

ASRS

90

DIRECTIVE_MAX_ATTEMPTS

20

ASRS

90

DIRECTIVE_QUEUE_STATUS

X

ASRS

90

DIRECTIVE_REQUEST_QUERY

DIRECTIVE_RESPONSE_QUERY

Appendix 4 – Case Study

select chr(2)||'62,'|| substr(nvl(SEGMENT2,'C0'),length(nvl(SEGMENT2,'C0')),1) ||','|| lpad(decode(nvl(SEGMENT3,'0'),1,9,2,10,0),2,'0') ||','|| lpad(nvl(SEGMENT4,'0'),4,'0') ||',PUTAWY,'|| LPN||','||SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'||SEGMENT4||chr(3) from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id select '_62,'|| substr(nvl(SEGMENT2,'C0'),length(nvl(SEGMENT2,'C0')),1) ||',__,'|| lpad(nvl(SEGMENT4,'0'),4,'0') ||',DONE00,'|| LPN||','||SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'||SEGMENT4||'_' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id

Page 6 of 76

Pick Load

Pick Load Pick Load Pick Load Pick Load

Pick Load Pick Load Pick Load Pick Load Pick

Y Y Y

Y

Y Y Y Y

Y Y Y Y Y

Load select chr(2)||'63,'|| substr(nvl(SEGMENT2,'C0'),length(nvl(SEGMENT2,'C0')),1) ||','|| lpad(decode(substr(nvl(SEGMENT1,'0Q'),2,1),'Q', decode(nvl(SEGMENT3,'0'),1,13,2,13,0),13),2,'0') ||','|| lpad(nvl(SEGMENT4,'0'),4,'0') || ',DIVERT,'||LPN||','||SEGMENT1||'.'||SEGMENT2||'.'|| SEGMENT3||'.'||SEGMENT4||chr(3) from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id select '_63,'|| substr(nvl(SEGMENT2,'C0'),length(nvl(SEGMENT2,'C0')),1) || ',__,'|| lpad(nvl(SEGMENT4,'0'),4,'0') || ',DONE00,'||LPN||','||SEGMENT1||'.'||SEGMENT2||'.'|| SEGMENT3||'.'||SEGMENT4||'_' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id

ASRS

90

Pick Load

Y

ASRS

90

Pick Load

Y

DIRECTIVE_RESPONSE_TIMEOUT 60

ASRS

90

DIRECTIVE_CASCADE_FAILURE

Y

ASRS

100

DIRECTIVE_DEVICE_ID

41

ASRS

100

DIRECTIVE_MAX_ATTEMPTS

20

ASRS

100

DIRECTIVE_PIPE_NAME

41

ASRS

100

DIRECTIVE_QUEUE_STATUS

X

ASRS

100

ASRS

100

Pick Load

Y

ASRS

100

Pick Load

Y

DIRECTIVE_RESPONSE_TIMEOUT 60

ASRS

100

DIRECTIVE

FullASRS_61_71

ASRS

DIRECTIVE_CASCADE_FAILURE

Y

ASRS

DIRECTIVE_MAX_ATTEMPTS

20

ASRS

DIRECTIVE_REQUEST_QUERY

DIRECTIVE_RESPONSE_QUERY

DIRECTIVE_REQUEST_QUERY

DIRECTIVE_RESPONSE_QUERY

Appendix 4 – Case Study

select chr(2)||'63,6,06,'||lpad(nvl(SEGMENT4,'0'),4,'0') ||',DIVERT,'|| LPN||','||SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'||SEGMENT4|| chr(3) from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id select '_63,6,__,'||lpad(nvl(SEGMENT4,'0'),4,'0') ||',DONE00,'|| LPN||','||SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'||SEGMENT4||'_' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id

Page 7 of 76

Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load

Pick Load Pick 110 Load Pick 110 Load Pick 110 Load

Y Y Y Y Y Y

Y Y Y Y

DIRECTIVE_QUEUE_STATUS

X

ASRS

110

Pick Load

Y

DIRECTIVE_RESPONSE_QUERY

select '_61,'|| substr(nvl(SEGMENT2,'C0'),length(nvl(SEGMENT2,'C0')),1) ||',__,'|| lpad(nvl(SEGMENT4,'0'),4,'0') ||',DONE00,'||substr(nvl(SEGMENT2,'C0'), length(nvl(SEGMENT2,'C0')),1)||'F'||lpad(nvl(SEGMENT4,'0'),4,'0')||','|| SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'||SEGMENT4||'_' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id

ASRS

110

Pick Load

Y

DIRECTIVE_RESPONSE_TIMEOUT 60

ASRS

110

DIRECTIVE

Full4SHT_63_72

ASRS

120

DIRECTIVE_CASCADE_FAILURE

Y

ASRS

120

DIRECTIVE_MAX_ATTEMPTS

15

ASRS

120

DIRECTIVE_QUEUE_STATUS

X

ASRS

120

ASRS

120

Pick Load

Y

ASRS

120

Pick Load

Y

DIRECTIVE_RESPONSE_TIMEOUT 120

ASRS

120

DIRECTIVE_CASCADE_FAILURE

Y

ASRS

130

DIRECTIVE_DEVICE_ID

41

ASRS

130

DIRECTIVE_MAX_ATTEMPTS

15

ASRS

130

DIRECTIVE_PIPE_NAME

41

ASRS

130

DIRECTIVE_REQUEST_QUERY

DIRECTIVE_RESPONSE_QUERY

Appendix 4 – Case Study

select chr(2)||'63,'|| substr(nvl(SEGMENT2,'C0'),length(nvl(SEGMENT2,'C0')),1) ||','|| lpad(decode(substr(nvl(SEGMENT1,'0Q'),2,1),'Q', decode(nvl(SEGMENT3,'0'),1,13,2,13,0),13),2,'0') ||','|| lpad(nvl(SEGMENT4,'0'),4,'0') || ',DIVERT,'||substr(nvl(SEGMENT2,'C0'), length(nvl(SEGMENT2,'C0')),1)||'F'||lpad(nvl(SEGMENT4,'0'),4,'0')||','|| SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'||SEGMENT4||chr(3) from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id select '_63,'|| substr(nvl(SEGMENT2,'C0'),length(nvl(SEGMENT2,'C0')),1) || ',__,'|| lpad(nvl(SEGMENT4,'0'),4,'0') || ',DONE00,'||substr(nvl(SEGMENT2,'C0'), length(nvl(SEGMENT2,'C0')),1)||'F'||lpad(nvl(SEGMENT4,'0'),4,'0')||','|| SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'||SEGMENT4||'_' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id

Page 8 of 76

Pick Load Pick Load Pick Load Pick Load Pick Load

Pick Load Pick Load Pick Load Pick Load Pick

Y Y Y Y Y

Y Y Y Y Y

DIRECTIVE_QUEUE_STATUS

DIRECTIVE_REQUEST_QUERY

DIRECTIVE_RESPONSE_QUERY

X

ASRS

select chr(2)||'63,6,06,'|| lpad(nvl(SEGMENT4,'0'),4,'0') ||','|| 'DIVERT,'|| substr(nvl(SEGMENT2,'C0'), length(nvl(SEGMENT2,'C0')),1)||'F'||lpad(nvl(SEGMENT4,'0'),4,'0')||','|| SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'||SEGMENT4||chr(3) from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id select '_63,6,__,'|| lpad(nvl(SEGMENT4,'0'),4,'0') ||',DONE00,'|| substr(nvl(SEGMENT2,'C0'), length(nvl(SEGMENT2,'C0')),1)||'F'||lpad(nvl(SEGMENT4,'0'),4,'0')||','|| SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'||SEGMENT4||'_' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id

DIRECTIVE_RESPONSE_TIMEOUT 120

Appendix 4 – Case Study

Page 9 of 76

Load Pick 130 Load

Y

ASRS

130

Pick Load

Y

ASRS

130

Pick Load

Y

ASRS

130

Pick Load

Y

Figure 38 - Note that there are 2 CarBri directories (1 for ASRS and 1 for Sortation Conveyor)

Appendix 4 – Case Study

Page 10 of 76

Figure 39 - CarBri Settings for ASRS_C1 Appendix 4 – Case Study

Page 11 of 76

Figure 40 - CarBri Settings for Sortation Conveyor SORT_1 Appendix 4 – Case Study

Page 12 of 76

12.1.6 Test between DB tier and the CarBri

Test between DB tier and the CarBri (set Simulate to Yes in carbri.xml (There is no need to plug in the Device to test at this point)

12.1.7 Test between DB tier, CarBri and the Device Simulator Test between DB tier, CarBri and the Device Simulator (Set Simulate to No) and socketHostName to point to the IP address of the DS. Once this testing is satisfactory, the system is ready to be promoted to UAT. This step can be used to validate the device directives that are provided by the Device Vendor by testing message sending between the Device Simulator and the PLC and tweaking the WCS Directive settings if needed.

12.1.8 Test between DB tier, CarBri and the actual device Test between DB tier, CarBri and the actual device. The system will be fully functional at this point.

Appendix 4 – Case Study

Page 13 of 76

13. Appendix 5 – WMS_DEVICE_REQUESTS_WCSV View details This is a view introduced in 11.5.10.1CU. One of the Database Entities that this view is based on is WMS_DEVICE_REQUESTS WDR. Usually most of the Directive Request Queries can be based on this view. There could a Customer requirement where #

Column Name

Data Type

== ==================== =============== 1

REQUEST_ID

NUMBER

2

TASK_ID

NUMBER

3

SEQUENCE_ID

NUMBER

4

TASK_TYPE_ID

NUMBER

5

QUANTITY

NUMBER

6

SUBINVENTORY_CODE

VARCHAR2 (30)

7

LOCATOR

VARCHAR2 (4000)

8

DEVICE_NAME

VARCHAR2 (30)

9

DEVICE_ID

NUMBER

10 DEVICE_TYPE_ID

NUMBER

11 BUSINESS_EVENT

VARCHAR2 (80)

12 BUSINESS_EVENT_ID

NUMBER

13 RELATION_ID

NUMBER

14 LPN

VARCHAR2 (30)

15 ITEM

VARCHAR2 (40)

16 SEGMENT1

VARCHAR2 (40)

17 SEGMENT2

VARCHAR2 (40)

18 SEGMENT3

VARCHAR2 (40)

19 SEGMENT4

VARCHAR2 (40)

20 SEGMENT5

VARCHAR2 (40)

21 SEGMENT6

VARCHAR2 (40)

22 SEGMENT7

VARCHAR2 (40)

23 SEGMENT8

VARCHAR2 (40)

Appendix 5 – WMS_DEVICE_REQUESTS_WCSV View details

Page 1 of 76

24 SEGMENT9

VARCHAR2 (40)

25 SEGMENT10

VARCHAR2 (40)

26 SEGMENT11

VARCHAR2 (40)

27 SEGMENT12

VARCHAR2 (40)

28 SEGMENT13

VARCHAR2 (40)

29 SEGMENT14

VARCHAR2 (40)

30 SEGMENT15

VARCHAR2 (40)

31 SEGMENT16

VARCHAR2 (40)

32 SEGMENT17

VARCHAR2 (40)

33 SEGMENT18

VARCHAR2 (40)

34 SEGMENT19

VARCHAR2 (40)

35 SEGMENT20

VARCHAR2 (40)

36 TASK_SUMMARY

VARCHAR2 (1)

37 LOCATOR_ID

NUMBER

38 TRANSFER_ORG_ID

NUMBER

39 TRANSFER_SUB_CODE

VARCHAR2 (30)

40 TRANSFER_LOC_ID

NUMBER

41 INVENTORY_ITEM_ID

NUMBER

42 REVISION

VARCHAR2 (10)

43 UOM

VARCHAR2 (3)

44 LOT_NUMBER

VARCHAR2 (30)

45 LOT_QTY

NUMBER

46 SERIAL_NUMBER

VARCHAR2 (30)

47 TRANSACTION_QUANTITY NUMBER 48 STATUS_CODE

VARCHAR2 (1)

49 STATUS_MSG

VARCHAR2 (240)

50 OUTFILE_NAME

VARCHAR2 (255)

Appendix 5 – WMS_DEVICE_REQUESTS_WCSV View details

Page 2 of 76

White Paper Title Oracle Warehouse Management System: Release 11.5.10.CU1 Warehouse Control System (WCS) / Material Handling Equipment (MHE) Implementation Guide March 2006 Author: Syed Mudassir Imran Reviewers: Karun Jain, Aditya Agarkar Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A. Worldwide Inquiries: Phone: +1.650.506.7000125 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 © 2000 Oracle Corporation All rights reserved.

Appendix 5 – WMS_DEVICE_REQUESTS_WCSV View details

Page 3 of 76

Related Documents