All posts
Functional4 min read

Automating Stock Transfers with Rules in Odoo

Configure Odoo transfer rules and automated actions to automatically move stock between locations - triggering internal transfers when inventory levels or conditions are met without manual intervention.

Automated Stock Transfer Rules in Odoo#

Manually creating internal transfers every time stock needs to move between locations is error-prone and time-consuming. Odoo's push rules and automated actions trigger internal moves automatically based on defined conditions.

Push Rules (Location-Triggered)#

Push rules fire when a transfer delivers goods to a specific location:

Inventory → Configuration → Routes → [Route] → Rules → Add Push Rule:

  • Source Location: WH/Input
  • Destination Location: WH/Quality Control
  • Auto: Automatic (creates the next transfer as soon as the receipt is validated)
  • Operation Type: Internal Transfer

Effect: every time a receipt is validated at WH/Input, Odoo automatically creates an internal transfer to WH/Quality Control - no human intervention needed.

Multi-Step Automation with Push Rules#

Chain multiple push rules for a 3-step inbound process:

  1. Vendor → WH/Input: manual receipt (warehouse staff validates)
  2. WH/Input → WH/Quality Control: auto-push (created immediately on receipt validation)
  3. WH/Quality Control → WH/Stock: auto-push (created when QC transfer is validated)

Each step flows automatically - staff only handle exceptions.

Demand-Triggered Internal Transfers (Pull Rules)#

Pull rules create internal transfers when demand is generated:

Inventory → Configuration → Routes → [Route] → Rules → Add Pull Rule:

  • Source Location: WH/High-Value (secure storage)
  • Destination Location: WH/Packing
  • Trigger: When demand is created (a pick order references this product)

When a delivery order is confirmed that needs a product from WH/High-Value, Odoo automatically creates a pick transfer: WH/High-Value → WH/Packing.

Automated Stock Replenishment Between Warehouses#

For multi-warehouse operations:

Inventory → Configuration → Routes → Resupply WH2 from WH1:

  • WH1 (main warehouse) → WH2 (regional warehouse)
  • When WH2 runs low: replenishment request triggers a transfer from WH1

The regional warehouse manager sees incoming transfers; no inter-warehouse communication needed.

Exception Handling#

When automated transfers can't complete (insufficient stock):

  • Transfer is created but in "Waiting" state
  • Responsible person receives a notification
  • Once stock is available (receipt, MO completion): transfer moves to "Ready"

Filter "Waiting" transfers: Inventory → Operations → Transfers → Filter: Waiting - these are the exceptions needing investigation.

Try ERPeek on your own Odoo module - ask questions, scaffold tests, and explore your codebase in plain language.

Get started free