1 of 41

EBS Warehouse Management Cartonization APIs

  • Some experiments

2 of 41

Background

3 of 41

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.

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.

What is in this document?

Cartonization – what it means for this document

4 of 41

Type

Dims (m)

Vol capacity (cu. M)

Wt capacity

(kg)

a. Euro Pallet

b. US Pallet

  1. L = 1.2m, W = 0.8m
  2. L = 1.219m, W = 1.016m
  1. 2.112 m3
  2. 2.615 m3

a.660 kg

b. 1134 kg

a. Small Rollcage

b. Large Rollcage

  1. L = 1.35m, W = 0.815m, H = 0.98m
  2. L = 1.6m, W = 0.8m , H = 1.2 m

  1. .8058 m3
  2. 1.54 m3

  1. 500 kg
  2. 1000 kg

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.

Cartonization Entities

5 of 41

Item

Dims (m)

Vol (cu. M)

Weight (kg)

SOFT DRINKS TYPE A 2LT 6PK

L = 0.203m, W = 0.309m, H = 0.336 m

0.02107 m3

13.2 kg

HEALTH DRINKS TYPE A 1kg BOX PK of 16

L = 0.4 m, W=0.24 m, H = 0.2m

0.0192 m3

16.5 kg

COOKIE TYPE A PK OF 8

L = 0.42m, W = 0.20m , H = 0.20m

0.0208 m3

1.2 kg

Following are some examples of Contained Items

Cartonization Entities .. contd

6 of 41

  • 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

Packaging constraints that normally exists..

7 of 41

The Problem

8 of 41

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.

9 of 41

And this is how items are present in CASE sub-inventory :

10 of 41

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

11 of 41

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

12 of 41

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)

13 of 41

Using standard Cartonization feature of WMS

14 of 41

Key Setups for this type of cartonization -

Warehouse Parameter

Subinventory Parameter

Let us consider the standard “Mixed Item” algorithm of Oracle WMS

15 of 41

Key Setups for cartonization (contd) -

Container Item Definition

16 of 41

Key Setups for cartonization (contd) -

Contained Item Definition

17 of 41

Key Setups for cartonization (contd) -

Rules Workbench

18 of 41

The execution – using “Mixed Items” rule

Order and Line

19 of 41

The execution – using “Mixed Items” rule (contd..)

Pick Released the lines

20 of 41

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

21 of 41

The execution outcome – using “Mixed Items” rule (contd..)

…and the tasks generated.

22 of 41

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.

23 of 41

Other solution options.

24 of 41

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.

25 of 41

Other options ?

  • Use Oracle Transportation Management, which has a cartonization logic that can handle a lot of packaging and shipping constraints
    • 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.

26 of 41

Cubing flow

The steps involved in the flow…

Book Order

Delivery Line Created

Delivery Created

Order Management

WMS

Pick Release

Tasks Created

Perform Cubing

OTM/Custom Cubing Program/3rd Party software

Extract Task Info

Extract Cubing Result

Update Tasks with LPN

Start

End

Use Label Pick

Print Label

27 of 41

Send the following delivery information from EBS to a third party cubing software / OTM

NAME

TRANSACTION_TEMP_ID

ITEM

QTY

SOURCE LOCATOR

DESTINATION LOCATOR

CONTAINER_ITEM_ID

CARTONIZATION_ID

6263966

29088599

IFC SOFT DRINKS TYPE A 2LT 6PK

30

CASE1.52.1

STG1.1.1

11294

6263966

29088602

IFC COOKIE TYPE A PK OF 8

20

CASE2.11.2

STG1.1.1

11295

6263966

29088605

IFC HEALTH DRINK TYPE A 1kgX16

20

CASE2.51.5

STG1.1.1

11296

Tasks created in WMS are as follows:

Used the wms_cartonization_pub to stamp an LPN id on each task for tracking. Can use some other logic as well.

A recording

28 of 41

OTM came up with following solution – based on the configs I did…

Container Type

Container #

ITEM

QTY

IFC ROLLCAGE A

20170220-0001-003

IFC COOKIE TYPE A PK OF 8

20

FC ROLLCAGE B

20170220-0001-004

IFC SOFT DRINKS TYPE A 2LT 6PK

30

IFC HEALTH DRINK TYPE A 1kgX16

20

A recording

29 of 41

Cube IQ came up with the following solution…(again – based on my configs)

Container Type

Container #

ITEM

QTY

FC ROLLCAGE B

1

IFC SOFT DRINKS TYPE A 2LT 6PK

15

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

30 of 41

BIG ROLLCAGE

SMALL ROLLCAGE

HEALTH DRINKS Qty = 20

SOFT DRINKS Qty = 30

COOKIES Qty = 20

Let me consider the solution suggested by the Cube IQ (as it will cover all the scenarios I wanted to test)

Pick 20 cases of IFC HEALTH DRINK TYPE A 1kgX16

TASK 1

Pick 30 cases of IFC SOFT DRINKS TYPE A 2LT 6PK

TASK 2

Pick 20 cases of IFC SOFT DRINKS TYPE A 2LT 6PK

TASK 3

CASE2.51.5

CASE1.52.1

CASE2.11.2

Pick 15 cases of IFC SOFT DRINKS TYPE A 2LT 6PK

TASK 2b

Pick 15 cases of IFC SOFT DRINKS TYPE A 2LT 6PK

TASK 2a

So, we have multiple tasks into 1 Rollcage as well as 1 task into multiple Rollcage

31 of 41

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 start processing each inventory_item_id - quantity combination – one by one

Use WMS_CONTAINER_PUB.GENERATE_LPN to generate the lpn_id for the new container of specific container type

Does sum of individual tasks completely match the required quantity ?

Use WMS_TASK_MGMT_PUB.modify_task to update the lpn_id for the task/s (use p_new_carton_lpn_id parameter)

Use WMS_CARTNZN_PUB.UPDATE_MMTT to update the container_item_id for the task (use p_container_item_id)

Identify all the tasks that are required to make up the quantity for the item in that container

For those task, which get completely consumed – update the lpn_id using WMS_TASK_MGMT_PUB.modify_task and container_item_id using WMS_CARTNZN_PUB.UPDATE_MMTT

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 WMS_TASK_MGMT_PUB.modify_task to update the lpn_id for the task (use p_new_carton_lpn_id parameter)

Use WMS_CARTNZN_PUB.UPDATE_MMTT to update the container_item_id for the task (use p_container_item_id)

Choose one inventory_item_id - quantity combination

Yes

No

32 of 41

Setp 1. Generate LPN for Big Rollcage…

33 of 41

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

34 of 41

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

35 of 41

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.

36 of 41

Setp 1. Generate LPN for Small Rollcage…

37 of 41

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

38 of 41

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

39 of 41

We can see the nesting in Material Inquiry screen as well

But what we actually needed were 2 different rollcages (LPN)

40 of 41

So we changed the Operation Plan to Direct consolidation in staging lane within delivery

41 of 41

Now we see the LPNs getting created as desired…

END