EBS Warehouse Management Cartonization APIs
- Some experiments
Background
What is in this document?
This document primarily focuses on Oracle R12 Warehouse Management System’s cartonization APIs.
These APIs can be utilized to implement business-specific cartonization rules and manipulate
cartonization tasks. For most of its part, this document refers to cartonization processes involved in a
FMCG retail warehouse.
Cartonization – what it means for this document
Cartonization is the process of evaluating the items included in an order to determine the number
and type of each shipping carton needed.
It generally has been used in two contexts: 1) the ability to predict number of cartons based on an
order for the purposes of quoting shipping charges, and 2) controlling how an order is packed during
the fulfillment process.
Many factors that influence the cartonization process are weight,
height, length and width of each item along with the packaging and
shipping constraints and economical efficiency.
Cartonization Entities
Cartonization involves two types of entities :
• Container Items – These are containers which can hold other items within them
• Contained Items – These are items which are needed to be packed
Following are some examples of Container Items – which we will consider.
Vol capacity Wt capacity
Type Dims (m)
(cu. M) (kg)
a. L = 1.2m, W a. 2.112
a. Euro Pallet = 0.8m m3 a.660 kg
b. US Pallet b. L = 1.219m, b. 2.615 b. 1134 kg
W = 1.016m m3
a. L = 1.35m,
W=
0.815m, H = a. .8058
a. Small Rollcage 0.98m m3 a. 500 kg
b. Large Rollcage b. L = 1.6m, W b. 1.54 m3 b. 1000 kg
= 0.8m , H =
1.2 m
Cartonization Entities .. contd
Following are some examples of Contained Items
Vol (cu. M) Weight (kg)
Item Dims (m)
L = 0.203m, W = 0.309m, H =
SOFT DRINKS TYPE A 2LT 6PK 0.336 m
0.02107 m3 13.2 kg
HEALTH DRINKS TYPE A 1kg
L = 0.4 m, W=0.24 m, H = 0.2m 0.0192 m3 16.5 kg
BOX PK of 16
L = 0.42m, W = 0.20m , H =
COOKIE TYPE A PK OF 8 0.20m
0.0208 m3 1.2 kg
Packaging constraints that normally exists..
• For domestic customers, cases can be packed in RollCages, whereas for international shipments to
Europe, need to pack on EURO Pallet.
• All the cases need to be packed with face up.
• There are constraints on stacking, for example – some items such as TISSUES and COOKIES cannot
support weights more than 5 Kg. Another example can be – COOKIES can be stacked on same footprint
or can support same footprint.
• These are a few of the packaging constraints. There can be many such constraints – which may lead to
a specific way of packaging an order. Businesses can adopt a combination of packaging constraints
The Problem
Let us consider one scenario :
A domestic customer orders the following items
Since the ordered quantities are less than
full-pallet, cases will be picked from CASE
subinventory. And it is a domestic order.
Hence, as per our warehouse business rules,
the order needs to be packed in RollCages.
Moreover, it is desirable to ensure that no
heavy cases should be stacked over COOKIE
cases.
And this is how items are present in CASE sub-inventory :
Cartonization feature in Oracle WMS :
(what the User Guide says)
With container management features, Oracle Warehouse Management can automatically suggest packing configurations for groups
of items. Optionally, cartonization may be based on the following packing requirements, Oracle Warehouse Management
cartonization routines suggest the best carton selection for a grouping of items:
• Container weight capacity
• Volume
• Item and container dimensions
• Item's packaging restrictions
The system can determine the best carton size in which to pack the material being picked for shipment.
Oracle Warehouse Management uses cartonization for the following tasks:
• Sales order and manufacturing picking (pick release)
• Cartonization prior to WIP completion
• Mobile bulk packing
• Cartonization at task release
Cartonization feature in Oracle WMS (contd) :
(what the User Guide says)
Setting Cartonization Rules on the Rules Workbench
Use the Rules Workbench to define default cartonization rules across pick release batches for the selected organization. Select from
the following cartonization options:
• Single item: 1-1 relationship of the same item in a container.
An Item is always matched to the same container based on the static relationship setup in the item/container relationship
window.
Handled through Item – Container relationship
• Mixed item: Multiple items in a carton based on item category relationships.
Uses the Contained-Container Item capacity and dimension restrictions defined on the Master Item window and checks it
against the category and category set setup as well.
Handled through Category-Category Set relationship
• Pick slip grouping rule: One carton per pick slip.
Generate an LPN for all items that belong to the same pick slip.
Handled through pick slip grouping rule
• Custom algorithim: Customers can develop custom APIs to determine their own cartonization requirements.
Uses a stub API to interface with customer-defined cartonization rules.
Handled through custom logic implemented in Custom API
Cartonization feature in Oracle WMS (contd..):
(additional references) –
•EBS WMS: Cartonization Setup and Diagnostics (Doc ID 1496099.1)
•INV Webinar Series: WMS Cartonization [Video] (Doc ID 1375161.1)
•While Suggesting Cartonization Is Not Comparing Dimension Of The Item With Container (Doc ID 1642157.1)
•Metalink Notes 367363.1 - Multi-Level Cartonization
• How to Call WMS_CARTONIZATION_USER_PUB.CARTONIZE API during Pick Release Process ? (Doc ID 1950448.1)
Using standard Cartonization feature of WMS
Let us consider the standard “Mixed Item” algorithm of Oracle WMS
Key Setups for this type of cartonization -
Warehouse Parameter Subinventory Parameter
Key Setups for cartonization (contd) -
Container Item Definition
Key Setups for cartonization (contd) -
Contained Item Definition
Key Setups for cartonization (contd) -
Rules Workbench
The execution – using “Mixed Items” rule
Order and Line
The execution – using “Mixed Items” rule (contd..)
Pick Released the lines
The execution outcome – using “Mixed Items” rule
This is how WMS did the cartonization
Using this algorithm -
The container item
chosen for this order
is EURO Pallet
The execution outcome – using “Mixed Items” rule (contd..)
…and the tasks generated.
The problem in using “Mixed Items” rule in this case
• System suggests that the order be packed on EURO Pallets, as it is also defined
as a Container Item in the system and assigned the same Container Item
category as that of Roll Cages. So, standard WMS cartonization algorithm
determines this as the most efficient way of packing.
• But the business rule dictates that this delivery be packed in Rollcages and not
Pallets
• But there is no way to force the algorithm to use Roll Cages.
• Additionally, there is no way to indicate the packaging constraints in this
algorithm, such as – COOKIE cartons cannot support a weight of more than 5
kgs and they can support only similar footprints.
Other solution options.
So, it might be necessary to use a different cartonization algorithm.
Now, what are the options?
• WMS provides an API – WMS_CARTONIZATION_USER_PUB.CARTONIZE where
business-specific user rules can be implemented. It is invoked as a part of the Pick
Release process. It accepts the picking tasks as input, and custom logic can be
implemented to cartonize those tasks and send back as output with container item
type and LPN ID stamped on the tasks.
• But the limitation is – it expects the same number of tasks that is inputted to the
program as the output. In other words, if the custom cartonization process results in
splitting of tasks, then it will not handle the scenario.
• So, it may be useful in cases where there is no splitting of tasks, but not in our case.
Other options ?
• Use Oracle Transportation Management, which has a cartonization logic that can
handle a lot of packaging and shipping constraints
o However, OTM will not update the tasks based on cartonization details while
updating the Planned Shipment Release to EBS (my understanding!!). So, get the
Order Releases planned in OTM and use the cartonization APIs to update the
tasks accordingly.
• Build a stand-alone cartonization program or use a third party software to do the
math. Once the results are available, use cartonization APIs to update the tasks
So, in either case, we need the WMS cartonization APIs to modify the tasks based on
cartonization results.
But there is no detailed documentation about how to use the APIs. Hence this document.
The steps involved in the flow…
Management Cubing flow
Delivery
Book Delivery
Start Line
Order
Order Created
Created
Update Use
Pick Tasks Extract Print
Tasks Label End
Release Created Task Info Label
with LPN Pick
WMS
Extract
OTM/Custom
Perform
Program/3rd
Cubing
software
Cubing
Cubing
Result
Party
Send the following delivery information from EBS to a third party cubing
software / OTM
TRANSACTION SOURCE DESTINATION CONTAINER
NAME _TEMP_ID ITEM QTY LOCATOR LOCATOR _ITEM_ID CARTONIZATION_ID
6263966 29088599IFC SOFT DRINKS TYPE A 2LT 6PK 30CASE1.52.1 STG1.1.1 11294
6263966 29088602IFC COOKIE TYPE A PK OF 8 20CASE2.11.2 STG1.1.1 11295
6263966 29088605IFC HEALTH DRINK TYPE A 1kgX16 20CASE2.51.5 STG1.1.1 11296
Used the wms_cartonization_pub to stamp an LPN id on each task for tracking. Can use some other logic as well.
Tasks created in WMS are as follows:
A recording
OTM came up with following solution – based on the configs I did…
Container Type Container # ITEM QTY A recording
IFC ROLLCAGE A 20170220-0001-003 IFC COOKIE TYPE A PK OF 8 20
IFC SOFT DRINKS TYPE A 2LT 6PK 30
FC ROLLCAGE B 20170220-0001-004
IFC HEALTH DRINK TYPE A 1kgX16 20
Cube IQ came up with the following solution…(again – based on my configs)
Container Type Container # ITEM QTY
IFC SOFT DRINKS TYPE A 2LT 6PK 15
FC ROLLCAGE B 1 IFC HEALTH DRINK TYPE A 1kgX16 20
IFC COOKIE TYPE A PK OF 8 20
IFC ROLLCAGE A 2 IFC SOFT DRINKS TYPE A 2LT 6PK 15
Let me consider the solution suggested by the Cube IQ (as it will cover all
the scenarios I wanted to test)
HEALTH DRINKS Qty = 20
TASK 1 BIG ROLLCAGE
Pick 20 cases of IFC HEALTH
DRINK TYPE A 1kgX16 TASK 2a
CASE2.51.5 Pick 15 cases of IFC SOFT
DRINKS TYPE A 2LT 6PK
SOFT DRINKS Qty = 30
TASK 2
Pick 30 cases of IFC SOFT
DRINKS TYPE A 2LT 6PK
CASE1.52.1
TASK 2b
SMALL
Pick 15 cases of IFC SOFT ROLLCAGE
COOKIES Qty = 20 DRINKS TYPE A 2LT 6PK
TASK 3
Pick 20 cases of IFC SOFT
CASE2.11.2 DRINKS TYPE A 2LT 6PK
So, we have multiple tasks into 1 Rollcage as well as 1 task into multiple Rollcage
The following flowchart provides a sample logic to update the WMS tasks based
on what the cubing algorithm suggested (along with API references.)
Consider each rollcage and
Identify all the tasks that are required to
start processing each
make up the quantity for the item in
inventory_item_id - quantity
that container
combination – one by one
Use
Use Yes
WMS_CONTAINER_PUB.GENERATE_LPN Does sum of individual tasks
WMS_TASK_MGMT_PUB.modify_task to
to generate the lpn_id for the new completely match the
update the lpn_id for the task/s (use
container of specific container type required quantity ?
p_new_carton_lpn_id parameter)
No
Use
WMS_CARTNZN_PUB.UPDATE_MMTT to For those task, which get completely consumed – update the
Choose one update the container_item_id for the lpn_id using WMS_TASK_MGMT_PUB.modify_task and
inventory_item_id - quantity task (use p_container_item_id) container_item_id using WMS_CARTNZN_PUB.UPDATE_MMTT
combination
For the remaining task, split the task such
that another task gets created for the
balance quantity required using
WMS_TASK_MGMT_PUB.split_task.
Use Use
WMS_CARTNZN_PUB.UPDATE_MMTT to WMS_TASK_MGMT_PUB.modify_task to
update the container_item_id for the update the lpn_id for the task (use
task (use p_container_item_id) p_new_carton_lpn_id parameter)
Setp 1. Generate LPN for Big Rollcage…
Setp 2. Consider 1st item in this Rollcage – 20 cases of Health Drink. Find the
tasks for this item.
Since the entire task quantity gets consumed in this container, go ahead
and update the task with lpn_id and container_item_id
Setp 3. Consider 2st item in this Rollcage – 15 cases of Soft Drink. Find the tasks
for this item.
Here, only 15 cases need to go to Big Rollcage. So need to split the task so
that one task is created with 15 qty, and the original task has the remaining
qty – 15 in this case
Finally, update the new task with lpn_id and container_item_id
Setp 4. Consider 3rd item in this Rollcage – 20 cases of Cookies. Find the tasks for
this item.
The entire task qty will be allocated to this LPN. So, update the task with
lpn_id and container_item_id
This completes the big rollcage. Next, consider the Small rollcage.
Setp 1. Generate LPN for Small Rollcage…
Setp 2. Consider 1st item in the Small Rollcage – 15 cases of Soft Drinks. This is
the only item in the LPN. Search the task.
The entire task qty will be allocated to this LPN. So, update the task with
lpn_id and container_item_id
So, this completes the task-level processing.
Next, to execute tasks using MSCA. Will use Label Picking.
A Recording
If you have noticed, the system consolidated the LPN for Small Rollcage into
that of the Big Rollcage!
It is because the Operation Plan for the organization was the Default – LPN
based consolidation in staging lane within delivery
We can see the nesting in Material Inquiry screen as well
But what we actually needed were 2 different rollcages (LPN)
So we changed the Operation Plan to Direct consolidation in staging lane within
delivery
Now we see the LPNs getting created as desired…
END