Fulfillment
Spec V8.1 | August 2025

Allocation &Cartonization

Backend execution engine that allocates inventory from optimal locations, handles ship-complete and partial orders, and cartonizes orders into the fewest shipments possible—all while respecting FEFO/FIFO, holds, and container constraints.

Allocation Engine
Processing
Work ControlShip Partial
WC-89421
5 Lines • 47 Units
ALLOCATION STATUS
SKU-A1001
10/10ALLOCATED
SKU-B2045
15/15ALLOCATED
SKU-C3078
8/12SPLIT
SKU-D4012
0/5PENDING
SKU-E5099
0/5PENDING
CARTONIZATION2 Cartons
BOX-MED
33 units
BOX-SM
14 units
Assigned Work Type:DISCRETE

What is Allocation & Cartonization?

Allocation and Cartonization is a backend SmartTask execution engine that processes orders from creation to pick-ready status. It finds the optimal inventory locations for each order line, handles ship-complete requirements, and fits orders into the fewest containers possible.

The process is triggered from Order Download, Order Creation, and Trouble Order processing. It queries multiple inventory areas in sequence, respects hold flags and expiration dates, splits lines when necessary, and assigns the appropriate work type for efficient picking.

V8.1: Container Cube & Weight Filtering

Version 8.1 introduces filterContainersByCubeAndWeight. When enabled, the system first filters containers to only those whose cube and weight capacity can accommodate the order's total cube and weight—before applying carrier, zone, and sales channel matching.

The engine handles complex scenarios including partial shipments, value-added services (Sets explosion), push inventory for unallocated demand (V7.0), and pallet pick optimization (V8.0). Work types are assigned dynamically based on order characteristics, carrier requirements, and warehouse zones.

Allocation Search Sequence

Inventory is searched across multiple areas in configurable priority order

1

Pick Clean Prime

Locations flagged as pick clean with highest priority

2

Mixed Area

Multi-product locations for efficient picking

3

Prime Area

Primary pick locations for each product

4

Carton Area

Case-level storage for bulk allocation

5

Bulk Area

Pallet storage for large quantity orders

Available Inventory Formula

Available = In Location + Inbound − Outbound − Expired

Only locations where Allocation_Allowable="Y", Hold_Code is blank, and System_Code is blank are considered.

Order Hold Processing

Multiple hold types prevent allocation until conditions are met

Order Hold

ORDER_HOLD

Customer-set hold flag. Order remains on hold until released by separate program.

Hold Until Date

HOLD_UNTIL_DATE

Time-based hold. Auto-releases when date ≤ current date. Marked trouble if future date.

Credit Hold

CREDIT_HOLD_CODE

Financial hold. Order marked as trouble until credit is resolved.

Product Hold

PRODUCTS.HOLD

If any product in order is on hold, entire order inherits hold code and date.

Cartonization Workflow

Fitting orders into optimal containers for shipping

01

Get Order Cube & Weight

Calculate liquid cube (L×W×H×Qty) and total weight for all allocated lines. Track largest item dimensions.

02

Get Valid Containers

Query CONTAINERS table for Container_Type="BOX". V8.1 filters by order cube/weight capacity. Sort by Storage Net Cube.

03

Can Order Fit in Box?

Compare liquid cube to container capacity. Verify largest item dimensions fit. If yes, assign and release.

04

Split & Cartonize

If order exceeds one container, loop through lines. Fill current container, split when full, start new container.

05

Reanalyze Container Size

After splitting, check if a smaller container can be used for the last carton. Optimize box selection.

06

Assign & Release

Update Work_Type_Headers with Container_ID, ASN, status="OPEN". Create Work_Histories record with job="CARTONIZED".

Key Capabilities

Intelligent allocation with full control over inventory, holds, and containers

Multi-Area Allocation

Searches Pick Clean Prime, Mixed, Prime, Carton, and Bulk areas in configurable sequence. Only allocates from locations where Allocation_Allowable="Y" and inventory has no hold codes.

Ship Complete Logic

When Ship Complete flag is set, allocation ensures all items are available. If any item cannot be fully allocated, the entire order is unallocated and flagged as trouble.

FEFO/FIFO Sorting

Automatically sequences inventory by expiration date (FEFO) or receipt date (FIFO). V6.1 ensures inbound inventory is considered even when earlier dates exist.

Intelligent Cartonization

Fits allocated lines into containers by comparing liquid cube vs storage net cube. Splits orders across multiple cartons when needed, reanalyzing for optimal box size.

Line Splitting

When a location cannot fulfill the full quantity, automatically splits the line and continues allocation from the next available location in the hash map.

Push Inventory (V7.0)

Analyzes unallocated trouble orders and generates PUSHDEMAND restock work from PUSH_FROM locations to PUSH_TO destinations based on total demand.

Pallet Pick Logic (V8.0)

Assigns Pallet Pick when quantity is ≥50% of PALLET UOM and empties the location. Configurable percentage per fulfillment center.

Container Filtering (V8.1)

When filterContainersByCubeAndWeight is ON, only considers containers that can accommodate the order's total cube and weight capacity.

Work Type Assignment

Determines work type (Single, Kit, Retail, Discrete, Putwall) based on Work_Type_Assignments table, carrier service, zone, and product handling codes.

Work Type Assignment

Determines the optimal picking workflow based on order characteristics

Embroidery

JOB_CONTROL_ID populated in any Work Type Line

Single

Only one open line in the order

Kit

Item exists in KIT_SET_PARENTS where KIT_SET_ID="KIT"

Retail

STORE_NUMBER populated in Work_Type_Header

Discrete

All OPEN lines allocated from same zone

Putwall

Default if none of the above conditions match

Version History

Key enhancements from V6.1 to V8.1

V6.1

Inbound to restockable locations

V6.4

Skip remaining locations when inventory found

V6.5

Inbound allocation for Ship Partial orders

V6.6

Preferred zone allocation sequencing

V6.7

Container selection by carrier & service

V7.0

Push Inventory demand analysis

V7.1

Product handling code splits

V7.8

Dimensional packing calculation

V8.0

Pallet pick percentage logic

V8.1

Container cube/weight filtering

Frequently Asked Questions

Common questions about Allocation & Cartonization

QWhat triggers the Allocation and Cartonization process?

This backend job is invoked from Order Download, Order Creation (front-end), and Trouble Order processing. Parameters are passed via a Bean to create a Common Session. Initial work status is "ORDER CREATED".

QHow does Ship Complete work?

When the Ship Complete flag is set on Sales Order Headers, allocation must find all units for all items. If any item cannot be fully allocated, the entire order is unallocated (returned to prior state) and flagged as trouble in Work_Type_Headers.

QWhat is the Available Inventory Formula?

Available = Inventory in Location + Inbound to Location - Outbound from Location. Only inventory where Allocation_Allowable="Y", Hold_Code is blank, and System_Code is blank is considered.

QHow does line splitting work?

If allocatable quantity is less than required, the line is split. A new line is created with the allocatable quantity and assigned to the current location. The original line retains the remaining quantity and continues seeking allocation from the next location.

QWhat is Push Inventory (V7.0)?

For unallocated trouble orders, the system calculates total demand for each SKU, finds inventory in PUSH_FROM locations, and creates RESTOCK work with Task="PUSHDEMAND" to move inventory to PUSH_TO locations.

QHow does Pallet Pick determination work (V8.0)?

A pick becomes a Pallet Pick when: (1) Quantity required is ≥50% of the PALLET UOM quantity, AND (2) the pick empties the location. The percentage is configurable per fulfillment center via General_Codes.

QHow are containers selected (V8.1)?

When filterContainersByCubeAndWeight is ON, containers are filtered first by whether their cube and weight capacity can accommodate the order. Then containers are matched by Carrier_ID, Carrier_Service, Work_Zone, and Sales_Channel.

QWhat determines the Work Type assignment?

Work Type is determined in order: Work_Type_Assignments table → Embroidery → Single → Kit → Retail → Discrete → Carrier/Service match → Zone match → Product Handling Code → Default to Putwall.

Ready to Optimize Order Fulfillment?

See how JASCI's Allocation & Cartonization engine can streamline your order processing with intelligent inventory selection and optimal container assignment.