Episode 6 of 12

Move Rules — Guiding Every Inventory Decision

Why this matters: Move Rules are the intelligence behind eWAVE. They answer three questions automatically: where should a received LPN be stored, which locations should a pick draw from, and where should replenishment stock come from. Without rules in place before your first transaction, the system cannot make those decisions — receiving cannot complete putaway, waves cannot allocate inventory, and replenishment cannot function. Rules must be configured before operations begin.

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.

Critical — Set up rules before your first transaction: If no active rule exists when a putaway, allocation, or replenishment event fires, the engine has nowhere to direct the inventory. Putaway will fail to suggest a location, allocation will leave order lines unresolved, and replenishment cannot run. Configure and activate all required rules as part of your go-live checklist — before any receiving, wave, or replenishment operation takes place.

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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:

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:

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)
Tip — Start with Location Range lines: Location Range is the most flexible and easiest to set up. Define ranges that correspond to your physical zones — refrigerated zone, bulk zone, forward pick zone. Add Reference Location lines when two rules share a zone, rather than duplicating the From/To in both rules. Use Exact Location only for exceptions, not as the main rule structure.

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:

  1. Navigate to eWAVE → Configuration → Context Parameters Find the context parameter set named Putaway. This is the parameter set linked to the mobile putaway action.
  2. 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 is put01.
  3. 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-MAIN or put01). The value is case-sensitive and must match the rule's Name field exactly.
  4. 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.

  1. 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.
  2. Locate the Allocate Type field In the wave run form, find the Allocate Type field (linked to ewave.move.type with category Fulfillment). This is the default fulfillment rule applied when a product does not specify its own.
  3. 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.
  4. 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.
  5. 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:

eWAVE Configuration Debug Rule trace-Putaway,Fulfillment,Repl

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.

Tip — Turn tracing on temporarily, then turn it off: Trace records accumulate quickly in a live warehouse. Enable tracing only when investigating a specific problem. After resolving the issue, set the 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.
Warning — Active rules must have at least one active rule line: A rule header can be toggled Active, but if all its rule lines have their individual Line Active toggle set to off, the engine will find no lines to evaluate and the rule will fail silently. When a new rule produces no results, check both the rule-header status (Rule Active) and the line-level status (Line active) on every line in the rule. Both must be on for the line to participate.

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 trace context 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