Using Odoo CE 13, with a minimalist setup as we are only using Odoo to manage our inventory related workflows.
Modules enabled: Contacts, Inventory + Invoicing and WMS Accounting (due to dependency, not relevant for the question)
Configuration
Single company
Multi step routes enabled
Multiple warehouses enabled
Warehouse to fulfil delivery orders is set to "Deliver goods directly (1 step)"
The route related to it has 2 pull rules - listed below in the order they should execute. The locations mentioned are all views, not internal locations as the internal locations are one level down from FGCG/Pick and FGCG/Store (e.g. FGCG/Pick/AA01-01-01)
Rule 1 (sequence 21): When products are needed in Partner Locations/Customers, Delivery Orders are created from FGCG/Pick to fulfill the need. If the products are not available in FGCG/Pick, a rule will be triggered to bring products in this location.
Rule 2 (sequence 20): When products are needed in FGCG/Pick, Internal Transfers are created from FGCG/Store to fulfill the need.
Problem
When I create a planned Delivery order for the warehouse for a product that doesn't have enough stock anywhere in FGCG/Pick, then Mark as todo, then Check availability, the available stock is reserved, but internal transfer is not created to transfer stock from FGCG/Store to FGCG/Pick to cover the shortfall. The delivery order remains in Waiting status.
I've researched this topic for the last few weeks, but it feels like I'm missing something obvious.
After reading https://github.com/odoo/odoo/blob/13.0/addons/stock/doc/stock.rst it seems like procurements / demand is placed on Partner Locations/Customers by the confirmed sales order and the delivery order is simply the outcome of fulfilling that demand.
If I install the Sales module and confirm an order, the pull rules do work as expected.
It would still be great to understand if it's possible to trigger these rules by manually creating / importing a planned transfer then confirming it.