Add configuration and dedicated screens to work with Vertical Lift systems (such as Kardex Remstar, Modula, ...). Drivers for controlling the lifts physically must be added by additional addons.
auto_awesome What this module does
AI-generated from the code · Odoo 18.0Adds dedicated screens and configuration to run picking, putting away and inventory operations on vertical lift systems (Kardex, Modula, etc.) directly from Odoo, with barcode scanning and tray handling.
This module prepares Odoo to work with vertical lift shuttles. You first configure a shuttle (name, hardware, server, port, TLS) and mark a location as the view for the lift; child locations are automatically classified as shuttle, tray or cell.
Operators then use dedicated screens for three activities: - Pick: the system proposes move lines, fetches the tray, and asks to scan the destination location. Lines can be skipped and are proposed again later. - Put: goods are placed in a tray and the destination is confirmed. - Inventory: quantities are entered for quants due for inventory, with a confirmation step when the entered quantity differs from the system quantity.
Business rules include: urgent transfers can be picked first (by priority and scheduled date), skipped lines can be proposed last, and only one operation can run per shuttle at a time. The module also adds a secret setting for the lift API, records hardware commands with automatic cleanup, and sends refresh notifications to the operator screen. It touches stock.location, stock.move, stock.move.line, stock.quant, res.company and res.config.settings.
Depends on
Required by other modules
Menus it adds
Models and fields (13)
- stock.move · extends an existing model
- res.company · extends an existing modelvertical_lift_pick_by_priority (Pick urgent transfers first), vertical_lift_pick_skipped_last (Pick skipped lines last)
- stock.quant · extends an existing modelvertical_lift_done, vertical_lift_tray_id
- stock.location · extends an existing modelvertical_lift_kind, vertical_lift_location (Is a Vertical Lift View Location?), vertical_lift_shuttle_id, inverse_vertical_lift_shuttle_ids
- stock.move.line · extends an existing modelvertical_lift_skipped (Skipped in Vertical Lift?), vertical_lift_skipped_date (Skipped in Vertical Lift on)
- res.config.settings · extends an existing modelvertical_lift_secret (Secret for Vertical Lift API), vertical_lift_pick_by_priority, vertical_lift_pick_skipped_last
- vertical.lift.command · new modelname, error, answer, command, shuttle_id
- vertical.lift.shuttle · new modelmode, name, port, server, use_tls, hardware, command_ids (Hardware commands), location_id, number_of_ops (Operations to Process)
- vertical.lift.operation.put · new model
- vertical.lift.operation.base · new modelmode, name, state, shuttle_id, location_id, number_of_ops (Number of Operations), number_of_ops_all (Number of Operations in all shuttles)
- vertical.lift.operation.pick · new model
- vertical.lift.operation.transfer · new modellot_id, tray_x (X), tray_y (Y), quantity, tray_qty (Stock Quantity), tray_name, picking_id, product_id, tray_matrix (Cells), tray_type_id (Tray Type), picking_origin, product_uom_id, tray_type_code (Tray Code), location_dest_id (Destination), tray_location_id (Tray Location), picking_partner_id, product_packagings (Packaging), current_move_line_id
- vertical.lift.operation.inventory · new modellot_id, tray_x (X), tray_y (Y), quant_id (Current Quant), tray_qty (Stock Quantity), tray_name, package_id, product_id, product_qty, tray_matrix (Cells), tray_type_id (Tray Type), product_uom_id, quantity_input, tray_type_code (Tray Code), tray_location_id (Tray Location), product_packagings (Packaging), last_quantity_input
Text generated by AI (DeepSeek) from reading the Odoo 18.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 3 confirmed, 6 with no information of 9 versions.
Sources · Odoo 14.0
Confirmed on 2026-11-03 in branch 14.0 of OCA/stock-logistics-warehouse.
terminal Installation and usage
OCA documentation · Odoo 18.0Configuration
Source · Odoo 18.0General
In Inventory Settings, you must have:
> - Storage Locations > - Multi-Warehouses > - Multi-Step Routes
Locations
Additional configuration parameters are added in Locations:
- Sub-locations of a location with the "Is a Vertical Lift View Location" activated are considered as "Shuttles". A shuttle is a vertical lift shelf.
- Sub-locations of shuttles are considered as "Trays", which is a tier of a shuttle. When a tray is created, a tray type must be selected. When saved, the tray location will automatically create as many sub-locations - called "Cells" - as the tray type contains.
- The tray type of a tray can be changed as long as none of its cell contains products. When changed, it archives the cells and creates new ones as configured on the new tray type.
Tray types
Tray types can be configured in the Inventory settings. A tray type defines how much cells a tray can hold. It is a square or rectangle matrix of n cols * m rows.
Vertical Lift Shuttles
The Shuttles are the Vertical Lift Trays. One Shuttle entity has to be created in Odoo for each physical shuttle. Depending of the subsidiary addons installed (eg. Kardex), different options may be required (host address, ...). The base addon only includes shuttles of kind "simulation" which will not send orders to the hardware.
Put-away configuration
If you want to use put-away in the vertical lift, the Receipts must have the vertical lift view as destination. E.g. create put-away rules on the products so when they arrive in WH/Stock, they are stored in WH/Stock/Vertical Lift. On the put-away screen, when scanning the tray type to store, the destination will be updated with an available cell of the same tray type in the current shuttle.
Barcodes
The operations allowed in the screen for the vertical lift (save, release, skip) can be triggered using a barcode. For this, print the barcodes contained in the folder 'images'.
Security
A callback endpoint /vertical-lift is published to receive commands' answers. To be able to call this endpoint a secret key has to be provided in the POST request. Example data: {"answer": "foo", "secret": "SECRET"}
On the server side you must configure the matching secret. There are 2 ways:
- set a config param via "Inventory/Settings/Vertical Lift"
- set the env var
VERTICAL_LIFT_SECRET
No verified information in OCA: Installation, Usage.
Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.