Odoo Multi-Warehouse Collaboration and Virtual Warehouse Practical Guide: Achieving Cross-Warehouse Shipping and Intelligent Inventory Scheduling (Based on Odoo 19)

This article provides a comprehensive analysis of the application scenarios, configuration steps, complete business processes, and implementation suggestions for multi-warehouse collaboration and virtual warehouses in Odoo 19, helping enterprises achieve cross-warehouse shipping, a unified sales shipping view, and efficient inventory scheduling. The article covers a complete practical guide from warehouse structure design, system configuration, testing methods, to go-live monitoring, serving as an important reference for enterprises in multi-warehouse management and Odoo ERP implementation.

Introduction

In modern supply chain and warehouse management, more and more enterprises not only have a single warehouse but operate multiple warehouses across various locations, regions, and even countries. Faced with the practical need that "a single sales order may need to pick goods from multiple warehouses simultaneously," the traditional logic of "one warehouse → one shipment" appears insufficiently flexible. To address this requirement, Odoo 19's inventory module provides a "Virtual Locations / Virtual Warehouses" mechanism, which integrates multiple real warehouses and supports cross-warehouse transfers and a unified shipment view during sales, shipping, and inventory picking processes.

This article will provide a step-by-step explanation of this feature from aspects such as business background, key concepts, system settings, typical operation procedures, precautions, and best practices, helping you clearly understand and implement it in Odoo 17/19 and other versions.

1. Business Background and Why Use Virtual Warehouses

1. Multi-warehouse operation scenario

Suppose a company has two or more warehouses, such as "Warehouse A" in Tokyo and "Warehouse B" in Osaka, or "Warehouse A" handling domestic operations and "Warehouse B" handling overseas operations. After a customer places an order, it is possible that a certain product is out of stock in Warehouse A but still available in Warehouse B, or that different products in the order are scattered across multiple warehouses. To improve customer delivery speed and reduce the risk of stockouts, the company hopes to:

  • When a warehouse is out of stock, automatically transfer goods from another warehouse or ship directly;
  • In the sales order placement process, there is no need to manually split orders or select warehouses, as the system automatically handles inventory across multiple warehouses;
  • For sales personnel and customers, it still appears as "one warehouse/one sales order" for processing, while behind the scenes supporting multi-warehouse collaboration.

2. Limitations of the Traditional Single Repository Model

In the case of a single warehouse or simple warehouse structure, the sales order and shipping process is typically: Sales → Select warehouse → Ship. However, when there are multiple warehouses:

  • If the customer selects "Warehouse A" but there is no stock, the order may get stuck;
  • If salespersons must manually determine warehouse selection, it will increase operational complexity and human error;
  • In an ERP system, without a unified mechanism to support "cross-warehouse picking," orders are often split or manually transferred, resulting in low efficiency and a high risk of errors.

3. Odoo's Solution: Virtual Warehouse/Virtual Location

Odoo 19 provides a "Virtual Location" (Location Type = View/Virtual) mechanism and a "Sub-warehouse Attribution" mechanism, combined with Multi-Step Routes and the configuration of "Warehouse as a Location Hierarchy," to achieve the following:

  • Create a "virtual warehouse" as the parent level to integrate multiple real warehouses. (Odoo)
  • Set multiple physical warehouses as sub-locations of this virtual warehouse.
  • Selecting "Virtual Warehouse" as the shipping warehouse in the sales order allows the system to pick goods from multiple sub-warehouses to fulfill the order requirements. (Odoo)
  • For salespeople, they still only need to select a "Warehouse" field in the sales order; however, the backend can schedule across warehouses.

In this way, it retains the inventory management advantages of multi-warehouse operations while simplifying the sales and shipping processes.

2. Analysis of Key Concepts

Before moving forward, let’s clarify a few key concepts to avoid confusion in subsequent configuration and operations.

1. Warehouse

In Odoo, "Warehouse" refers to a physical location (or logical location) used to store products, with an address, inventory, receiving and shipping processes, etc. (Odoo)

Each warehouse can configure inbound/outbound processes (1-step, 2-step, 3-step) and replenishment rules.

2. Location

Warehouses can be further subdivided into "locations," such as "Shelf A," "Cold Storage Area," "Shipping Area," etc. The location type determines its attributes: internal, supplier, customer, virtual, in transit, etc. (Odoo)

  • Internal: Internal storage, counted in inventory.
  • Virtual (or View): Used only for organizational structure, not actual inventory. Products generally cannot be stored here. (Odoo)
  • Transit, Vendor, Customer, etc., are used for in-transit, at the supplier's location, and at the customer's location, respectively.

3. Virtual Warehouse / Virtual Location

A virtual warehouse is essentially an abstraction of a "warehouse," using a "parent" warehouse that contains multiple "child warehouses" as its internal sub-locations. The Stock Location where this parent warehouse resides is set to Location Type = View (i.e., virtual, not actual inventory storage). (Odoo)

Its functions are as follows:

  • Aggregate the inventory of multiple sub-warehouses into a unified view.
  • Used as a warehouse selection option in sales orders, allowing the system to pick goods from multiple sub-warehouses.
  • Not used for direct inventory; its Stock location is set to View type.

4. Child Warehouse

Warehouses with actual inventory in operations. They are configured as sub-locations of a virtual parent warehouse. In this way, when a sale selects the parent warehouse, the system can draw inventory from its sub-warehouses. (Odoo)

5. The meaning of the "Warehouse" field in sales orders

In the Sales Order, there is a "Warehouse" field that indicates from which warehouse this order should be shipped. If a virtual warehouse is selected, the system will set the source location to the virtual warehouse's Stock location during allocation, thereby triggering picking from multiple sub-warehouses. (Odoo)

3. System Configuration Steps (Using Odoo 19 as an Example)

The following steps explain how to configure this feature in Odoo 19. It is recommended to operate in a test environment and confirm it is correct before moving to the production environment.

Step 1: Enable Required Features

In the Inventory app → Configuration → Settings, the following two options need to be enabled:

  • Storage Locations
  • Multi-Step Routes
    Only when these two functions are enabled can the configuration of locations, warehouse levels, and sub-warehouses be performed. (Odoo)

Saving settings, the system may prompt an update.

Step 2: Create a Virtual Parent Repository

  1. Go to: Inventory → Configuration → Warehouses → Create a new warehouse. (Odoo)
  2. Fill in the new warehouse form:
    • Name (e.g., “VWH – Virtual Warehouse”)
    • Short name (e.g., "VWH")
    • Address/Company and other information.
  3. After saving, the warehouse generates default Stock, Reception, Delivery locations, etc.
  4. Next, in the Locations configuration, change the Location Type of the "Stock" location in this warehouse to "View". That is:
    • In Inventory → Configuration → Locations, find VWH/Stock (the Stock location of the virtual warehouse)
    • Click Edit, and in Additional Information, change the Location Type from "Internal" to "View".
    • Save. This location is not used for inventory, only as a parent structure view. (Odoo)

Step 3: Create a sub-repository (or change an existing repository to a sub-repository)

  1. If there are already multiple physical warehouses (e.g., "WH-A Virtual A", "WH-B Virtual B"), ensure they correspond to their respective Stock locations as Internal.
  2. Edit the Stock locations (e.g., "WHA/Stock", "WHB/Stock") of these sub-warehouses in Locations, and set their Parent Location to the Stock location of the virtual parent warehouse (e.g., "VWH/Stock"). (Odoo)
  3. Save. At this point, "WHA/Stock" and "WHB/Stock" become child positions of the parent VWH.

Step 4: Verify the sub-repository structure takes effect

In the product form, click the On Hand button, and the system will display inventory including all sub-warehouses. Through the "Quantity on hand by Location" or similar view, you can see the inventory of both WH-A and WH-B warehouses. In this way, after the sales selects a virtual warehouse, the system already has multiple warehouses available. (Odoo)

Step 5: Set Virtual Warehouse as Default Sales Warehouse (Optional)

If you want all sales orders to use this virtual warehouse by default, you can set the Default Warehouse to "VWH" in each salesperson's settings. Go to Sales → Configuration → Users & Companies → Employees, select the employee → Default Warehouse setting. (Odoo)

4. Typical Operation Process: From Sales to Delivery

The following uses an example to illustrate the complete process of "picking goods from multiple warehouses."

Hypothetical Scenario:

  • Product "Toy Soldier" has 1 unit in stock at "WHA/Stock" and 2 units in stock at "WHB/Stock".
  • The virtual parent warehouse "VWH" has been configured, with its child warehouses being WHA and WHB.
  • The customer placed an order to purchase 2 "toy soldiers".

Operation Procedure:

  1. In the Sales application, create a new quotation → add customer → add product "Toy Soldier" quantity 2.
  2. In the Other Info tab, set the Warehouse field to "VWH – Virtual Warehouse".
  3. Confirm quotation → Convert to sales order.
  4. Click the "Delivery" smart button to enter the delivery note. Check whether the Source Location of the delivery note is "VWH/Stock". If not, the configuration may be incorrect. (Odoo)
  5. In the "Detailed Operations" tab of the delivery note, you can see two picking lines: one picks 1 piece from "WHA/Stock", and the other picks 1 piece from "WHB/Stock" (assuming the system automatically decides how to allocate inventory) — thus using two sub-warehouses to complete the shipment of one sales order. (Odoo)
  6. After verifying shipment, return to the sales order page and click "Create Invoice" to generate the invoice.

Through this process, the sales order only selects the "VWH" warehouse, but the backend automatically completes shipment from multiple warehouses, achieving multi-warehouse coordination.

V. Notes and Limitations

In practical application, there are some important limitations and points to note that cannot be ignored.

  1. The virtual warehouse address may be treated as the Source Location address in documents. That is, in shipping, packaging, and courier documents, the virtual warehouse address may be displayed instead of the actual physical address of the sub-warehouse. This must be confirmed whether the process allows it. (Odoo)
  2. For two-step/three-step receiving and shipping processes, using a virtual warehouse may cause the "output area" or "packing area" to display as the parent warehouse address, which is a limitation of the current system mechanism. (Odoo)
  3. The virtual warehouse Stock location is set to View type, and it itself cannot store product inventory. Therefore, real inventory must be stored in sub-warehouses. Otherwise, it will cause abnormal inventory display. (Odoo)
  4. The Warehouse field in the sales order must be set to a virtual warehouse; otherwise, the system will not trigger the cross-warehouse picking logic. If selected incorrectly, items will only be picked from a single warehouse. (Odoo)
  5. If the Source Location in the delivery order is not a virtual warehouse Stock location, the system will be unable to automatically transfer stock from multiple warehouses. If necessary, you can manually click "Check Availability" on the delivery order or run the scheduler (Inventory → Operations → Run Scheduler) to retry. (Odoo)
  6. Virtual warehouses are considered parent-level hierarchies and are used only for logical structure. It is not recommended to perform "inventory receipt" operations on them, as this may cause confusion.

6. Best Practice Recommendations

Combining the above processes and considerations, the following are some practical recommendations to help enterprises smoothly implement multi-warehouse collaboration.

  1. Clarify warehouse hierarchy: It is recommended to draw a warehouse structure diagram within the organization, clarify the relationship between the parent warehouse (virtual) and child warehouses (physical), and indicate the inventory status of each child warehouse.
  2. Maintain inventory accuracy: The inventory status of sub-warehouses must be kept accurate so that the system can correctly allocate warehouses during sales shipment. Incorrect inventory can lead to order delays.
  3. Salesperson Training: Let sales understand that "selecting a warehouse as a virtual warehouse" means the system can automatically allocate warehouses, avoiding manual selection errors while still being limited to a single warehouse.
  4. Check shipping address display: Confirm whether the address shown on courier documents, packaging proof, and shipping notices is the actual warehouse address. If it still shows the parent warehouse address, assess whether the enterprise process is acceptable.
  5. Test multi-step process: If the enterprise has enabled a two-step/three-step receiving and shipping process, it should first test the virtual warehouse mode in a test environment to observe whether there are any unreasonable aspects in addresses, logistics routes, or operations.
  6. Adjust default warehouse settings: If most sales should use multi-warehouse mode, you can set the virtual warehouse as the default warehouse to reduce the risk of sales staff manually selecting warehouses.
  7. Monitor Inventory Transfer Logs: It is recommended to view the Moves History report in Inventory → Reporting to check for cross-warehouse picking situations and promptly handle any anomalies.
  8. Continuously optimize warehouse structure: As operations upgrade, it may be necessary to add or remove warehouses and adjust sub-warehouse relationships. At this time, the parent warehouse structure should be maintained in a timely manner.

VII. Summary

Through this article, we have sorted out the principles, configuration steps, operation procedures, precautions, and best practices of the "Using virtual locations to sell inventory products from multiple warehouses" feature in Odoo 19. Its core value lies in:

  • Supports coordinated picking across multiple physical warehouses, improving inventory scheduling efficiency;
  • Simplify the sales order process; sales personnel only need to select "one warehouse" (i.e., the virtual parent warehouse).
  • Automatically extract inventory from multiple sub-warehouses in the background to enhance customer delivery capability.

The effect achieved is as follows:



关于我们

​我们致力于帮助中小企业实现数字化转型,我们的团队由一群充满激情和创新思维的专业人士组成,他们具备丰富的行业经验和技术专长。

扫一扫获取顾问以及手册

归档
Sign in to leave a comment
Odoo Equipment Management Solution (Based on Odoo 19 Features)
Odoo's equipment management functionality is seamlessly integrated into the Maintenance and Inventory modules, designed to achieve full lifecycle management of equipment, enabling closed-loop tracking from procurement and maintenance to spare parts consumption. This manual will provide detailed guidance on configuring and using equipment warranty, scheduled maintenance, and spare parts management features.