Move Rules — Guiding Every Inventory Decision
What Are Move Rules?
A Move Rule (called a Move Type in eWAVE) is a named, ordered set of location instructions that tells the system where to look when it needs to find or assign inventory. Every significant inventory movement in eWAVE passes through at least one rule: putaway after receiving, allocation during wave building, and replenishment from reserve to forward pick zones.
Rules work by scanning a list of rule lines in sequence — from the lowest sequence number to the highest. The system evaluates each line in turn, checking whether the candidate locations have the right capacity, the right SKU type, and available space (for putaway) or available stock (for allocation and replenishment). The first line that yields a valid result is used; subsequent lines are not evaluated. This ordered cascade gives you precise, predictable control over where inventory goes and where it comes from.
The Three Rule Categories
eWAVE move rules are divided into three categories, each governing a distinct type of inventory movement:
Putaway Rules
- Fire after an LPN is received at the dock
- Direct the receiver to the correct storage location
- Four-pass cascade (single-SKU, mixed-SKU, with/without hint)
- Consider capacity limits, SKU affinity, and zone preference
- Configured at: eWAVE → Configuration → Putaway move rules
Fulfillment Rules
- Fire during wave allocation — the picking engine applies them
- Determine which storage locations are searched for stock
- Support FIFO, LIFO, Min Pick, and Pick Clean allocation methods
- Can be set per product or overridden at wave level
- Configured at: eWAVE → Configuration → Fulfillment move rules
Replenishment Rules
- Fire when a forward pick zone needs restocking
- Identify reserve or bulk locations that hold the required SKU
- Support whole-LPN, partial-LPN, and mixed allocation constraints
- Determine which reserve location to draw from first (FIFO/LIFO)
- Configured at: eWAVE → Configuration → Replenishment move rules
Putaway Rules in Detail
After a dock receiver confirms an LPN at the dock, eWAVE's putaway engine (LpnLocationFinder) applies the active putaway rule in a four-pass cascade. Each pass narrows or broadens the search differently:
- Pass 1 — Single-SKU rule lines with a location hint: the engine looks for locations that already hold the same SKU and have available capacity, guided by a preferred-zone hint. This consolidates the same product together and keeps the warehouse organised by SKU.
- Pass 1b — Single-SKU rule lines without a hint: if no SKU-match location with capacity was found in Pass 1, the hint is dropped and the search broadens to any location in the rule that holds the same SKU.
- Pass 2 — Mixed-SKU or open-location rules with a hint: the engine searches for any eligible open location (one that accepts mixed SKUs) within the hinted zone.
- Pass 2b — Mixed-SKU rules without a hint: final fallback — any open eligible location in the full rule scope, regardless of zone.
If all four passes yield nothing, the LPN is assigned to the overflow staging location defined in system settings, and a supervisor alert is created. Enabling rule tracing (described below) will show exactly which passes ran and why each candidate was rejected.
Fulfillment Rules in Detail
When a fulfilment wave runs its allocation step, each order line's product drives a rule lookup. The rule name is taken from the product's Allocation Type field — this is a pointer to an active fulfillment move rule. If the product's Allocation Type is blank, the wave's configured default rule is used instead.
Within the rule, each line specifies a location scope (range, group, reference, or exact — see Rule Line Types below) together with an allocation method and order:
- Allocation method: FIFO (oldest received first), LIFO (newest received first), Min Pick (minimise the number of picks by taking larger quantities first), or Pick Clean (prefer to empty a location completely before moving to the next).
- Allocation order: Received Date, Create Date, Manufacture Date, or Expiry Date — controls the sequence in which matching LPN lines are consumed.
The engine evaluates rule lines in sequence number order. The first line that finds available stock satisfies as much of the order quantity as possible before moving to the next line if residual quantity remains.
Replenishment Rules in Detail
Replenishment rules control how the system restocks forward pick zones from reserve or bulk storage. When the replenishment engine runs, it evaluates the rule in the same line-by-line cascade as other rule types. Replenishment rule lines carry additional constraints not present in putaway or fulfillment rules:
- LPN quantity constraint: No constraint (take partial LPNs freely), Allocate whole LPN only (never break a pallet), Allocate any LPN, partial allowed, or Allocate whole LPN first, then partial — controls whether pallets are broken during replenishment.
- Allocate LPN first: when enabled, the engine prefers to move complete LPNs before splitting partial quantities.
Rule Line Types
Every rule (putaway, fulfillment, or replenishment) is made up of one or more rule lines. Each line specifies a different way of defining the set of locations to search or assign to. There are four rule line types:
| Type | What it defines | Key fields | When to use |
|---|---|---|---|
| Location Range | A contiguous block of locations from a start barcode to an end barcode — the default type for most rules | Location From, Location To | Defining a zone (e.g. all bays in Aisle A from A-01-01-01 to A-10-05-05); most common line type |
| Reference Location | Points to another move rule entirely — the engine follows the reference and evaluates that rule's lines instead | Ref Move Type | Sharing a common pool of locations across multiple rules without duplicating the location list; keeps rules DRY when many products share the same storage zone |
| Exact Location | A single, specific location barcode — the engine targets exactly this one location | Location From (only) | Directing high-value or hazardous goods to a dedicated slot; overflow to a known staging position |
| Location Group | A named collection of locations defined in the Location Group master — locations can be non-contiguous | Group Location | When the target locations cannot be described as a simple range (e.g. a set of refrigerated slots scattered across multiple aisles) |
The Default Rule in the Putaway Context
The putaway mobile workflow reads its rule configuration from a Context Parameter set — a named group of key-value settings that drive the mobile screen's behaviour. The context parameter set called Putaway is pre-configured during system installation and includes a move_rule parameter. The default value of move_rule is put01 — meaning eWAVE expects to find an active putaway rule named put01 in your system.
If you create your putaway rule with a different name, you must update the move_rule parameter in the Putaway context to match. To do this:
-
Navigate to eWAVE → Configuration → Context Parameters Find the context parameter set named Putaway. This is the parameter set linked to the mobile putaway action.
-
Locate the move_rule parameter in the detail lines In the parameter detail tab, find the row where Param ID is
move_rule. The default Param Value isput01. -
Update the value to match your rule name Change the Param Value to the exact name of your active putaway move rule (e.g.
PUTAWAY-MAINorput01). The value is case-sensitive and must match the rule's Name field exactly. -
Save and test a putaway scan Log in on the mobile device and perform a test putaway. The system should now resolve the rule and suggest a location. If no location is suggested, the rule name does not match — use the Rule Trace (below) to investigate.
Setting the Default Fulfillment Rule on a Wave Run
Fulfillment rules are applied per product via the product's Allocation Type field. However, a wave run carries its own default rule that acts as the fallback when a product's Allocation Type is not set. This default rule is configured directly on the Fulfillment Run record.
-
Navigate to eWAVE → Outbound → Fulfilment Runs and open the wave run record Open an existing wave run in status Wave run rules (status 00) — this is the template stage where you configure how the wave behaves before it is triggered.
-
Locate the Allocate Type field In the wave run form, find the Allocate Type field (linked to
ewave.move.typewith category Fulfillment). This is the default fulfillment rule applied when a product does not specify its own. -
Select the active fulfillment rule from the lookup Click the field and search for your active fulfillment rule by name. Only rules with category Fulfillment and Rule Active toggled on will appear. Select the appropriate rule.
-
Optionally enable Force Allocate Type If the Force Allocate Type toggle is switched on, the wave-level default rule overrides every product's individual Allocation Type setting. Use this when you want a single rule to govern all picking for this wave regardless of product-level configuration.
-
Save the wave run record for the first time Click Save (or navigate away — Odoo auto-saves). This is the first time the rule is persisted on the wave template. For subsequent runs generated from this template, the rule setting carries forward automatically into each new wave run instance.
Rule Tracing — Diagnosing Rule Problems
Move rules can be complex — especially when they involve multiple lines, reference rules, or location groups. When a putaway, allocation, or replenishment does not behave as expected, the rule trace feature gives you a complete, step-by-step log of exactly what the engine evaluated and why it accepted or rejected each candidate.
Tracing is enabled per context. For putaway, open the Putaway context parameter set and set the trace parameter value from n to y. Tracing will then generate a detailed trace record for every putaway scan that passes through this context. For fulfillment and replenishment, tracing is controlled through the equivalent context or through developer-level options.
Each trace session is assigned a sequential trace number (separate sequences for putaway, fulfillment, and replenishment). All events within one invocation share the same trace number, making it easy to read the full story of a single rule evaluation from start to finish.
The Rule Trace View
To inspect trace records, navigate to:
The trace list is grouped by trace number by default. Expanding a group shows all events for that invocation in sequence. The event types and their colour coding are:
| Event type | What it means | List colour |
|---|---|---|
| Parameters (1) | Session header — records the calling context, LPN, product, and quantity at the start of the evaluation | Muted (grey) |
| Allocation type (2) | Identifies which move type (rule) was resolved for this product or session | Normal |
| Rule selected (3) | A rule line was evaluated and contributed inventory or a valid location — partial or full allocation achieved | Green |
| Rule read (4) | A rule line was read and evaluated — outcome pending (followed by selected or rejected) | Normal |
| Rejected (5) | A rule line was evaluated but produced no usable result — reject reason explains why (no capacity, no stock, location inactive, etc.) | Red |
| Allocation resolved (6) | Final summary — allocation type was determined; used for fulfillment diagnostics when rule name lookup fails | Green |
The most useful diagnostic pattern is to look for red Rejected lines and read their Reject reason column. Common reasons include: No active move type (the rule name does not match any active rule), no available qty (the location in scope has no stock for the requested SKU), or capacity exceeded (the location is full). Each rejected line points to the specific rule line — including its sequence number, type, and location range — that the engine tried and could not use.
trace parameter back to n. Leaving tracing permanently on in production will generate large volumes of records and may slow down rule evaluation slightly on high-throughput systems.
Key Concepts — Episode 6
- Move Rules (Move Types) are ordered sets of location instructions that guide every inventory event in eWAVE
- Three rule categories: Putaway (receives → storage), Fulfillment (wave → picks), Replenishment (reserve → forward zone)
- Rules must be active before any transaction — no rule means no putaway suggestion, no allocation, no replenishment
- Four rule line types: Location Range (from/to barcode), Reference Location (delegates to another rule), Exact Location (single slot), Location Group (named non-contiguous set)
- Default putaway rule name in the Putaway context parameter:
put01— update if your rule uses a different name - Fulfillment run: set Allocate Type field on the wave run to the default fulfillment rule; use Force Allocate Type to override all product-level settings
- Enable tracing via the
tracecontext parameter (y/n) — generates a step-by-step audit of every rule evaluation - Rule trace view: eWAVE → Configuration → Debug → Rule trace-Putaway,Fulfillment,Repl
- Trace events: Parameters (grey), Allocation type, Rule selected (green), Rule read, Rejected (red), Allocation resolved (green)
- Both the rule header (Rule Active) and each line (Line active) must be toggled on for a line to be evaluated