Magento 2 Disable Inventory Reservation: MSI & Stock Reservation
Is managing stock causing complications in your store? Magento 2 Disable Inventory Reservation helps to disable inventory reservation.
This tutorial will cover how to disable inventory reservation in Magento 2.
Key Takeaways
- Insights into how the reservation system works.
- Methods to manage stock effectively to simplify your inventory management.
- Tips to prevent overselling issues and improve order processing efficiency.
- Steps to disable inventory reservation in Magento 2.
- Features of disabling single source inventory reservation.
- Common issues with multi-source inventory setup.
-
How to Use the Inventory Module to Disable Stock Reservations?
-
Best Practices to Manage the Stock in Every Magento Inventory
How to Use the Inventory Module to Disable Stock Reservations?
Magento 2's inventory reservation system, by default, keeps track of salable quantities. Sometimes, customers add items to their cart before the order is fully processed. It can result in inaccuracies if reservations aren't cleared properly.
Magento's reservation logic is designed to reserve stock once an order is placed. However, issues can arise with handling backorders and real-time inventory updates. Some opt to disable the Magento inventory reservation feature to manage stock effectively. Disabling inventory reservation allows you to have more precise control over your inventory management. It helps you avoid stock discrepancies and customer dissatisfaction.
How to Remove and Upgrade Inventory Management Modules?
To remove Magento inventory modules, follow these steps:
- Using the default Inventory Management modules is highly recommended. Removing these modules can cause system instability and issues.
Note: If you still choose not to use the Inventory Management functionality, you can remove the modules by adding the following to the composer.json
file:
Module Name | Version |
---|---|
magento/module-inventory |
* |
magento/module-inventory-admin-ui |
* |
magento/module-inventory-advanced-checkout |
* |
magento/module-inventory-api |
* |
magento/module-inventory-bundle-product |
* |
magento/module-inventory-bundle-product-admin-ui |
* |
magento/module-inventory-cache |
* |
magento/module-inventory-catalog |
* |
magento/module-inventory-catalog-admin-ui |
* |
magento/module-inventory-catalog-api |
* |
magento/module-inventory-catalog-search |
* |
magento/module-inventory-configurable-product |
* |
magento/module-inventory-configurable-product-admin-ui |
* |
magento/module-inventory-configurable-product-indexer |
* |
magento/module-inventory-configuration |
* |
magento/module-inventory-configuration-api |
* |
magento/module-inventory-distance-based-source-selection |
* |
magento/module-inventory-distance-based-source-selection-admin-ui |
* |
magento/module-inventory-distance-based-source-selection-api |
* |
magento/module-inventory-export-stock |
* |
magento/module-inventory-export-stock-api |
* |
magento/module-inventory-elasticsearch |
* |
magento/module-inventory-graph-ql |
* |
magento/module-inventory-grouped-product |
* |
magento/module-inventory-grouped-product-admin-ui |
* |
magento/module-inventory-grouped-product-indexer |
* |
magento/module-inventory-import-export |
* |
magento/module-inventory-indexer |
* |
magento/module-inventory-low-quantity-notification |
* |
magento/module-inventory-low-quantity-notification-admin-ui |
* |
magento/module-inventory-low-quantity-notification-api |
* |
magento/module-inventory-multi-dimensional-indexer-api |
* |
magento/module-inventory-product-alert |
* |
magento/module-inventory-requisition-list |
* |
magento/module-inventory-reservations |
* |
magento/module-inventory-reservations-api |
* |
magento/module-inventory-reservation-cli |
* |
magento/module-inventory-sales |
* |
magento/module-inventory-sales-admin-ui |
* |
magento/module-inventory-sales-api |
* |
magento/module-inventory-sales-frontend-ui |
* |
magento/module-inventory-setup-fixture-generator |
* |
magento/module-inventory-shipping |
* |
magento/module-inventory-shipping-admin-ui |
* |
magento/module-inventory-source-deduction-api |
* |
magento/module-inventory-source-selection |
* |
magento/module-inventory-source-selection-api |
* |
magento/module-inventory-visual-merchandiser |
* |
magento/module-inventory-swatches-frontend-ui |
* |
magento/module-inventory-quote-graph-ql |
* |
magento/module-inventory-in-store-pickup |
* |
magento/module-inventory-in-store-pickup-sales |
* |
magento/module-inventory-in-store-pickup-admin-ui |
* |
magento/module-inventory-in-store-pickup-sales-admin-ui |
* |
magento/module-inventory-in-store-pickup-api |
* |
magento/module-inventory-in-store-pickup-sales-api |
* |
magento/module-inventory-in-store-pickup-frontend |
* |
magento/module-inventory-in-store-pickup-shipping |
* |
magento/module-inventory-in-store-pickup-graph-ql |
* |
magento/module-inventory-in-store-pickup-shipping-admin-ui |
* |
magento/module-inventory-in-store-pickup-multishipping |
* |
magento/module-inventory-in-store-pickup-shipping-api |
* |
magento/module-inventory-in-store-pickup-quote |
* |
magento/module-inventory-in-store-pickup-webapi-extension |
* |
magento/module-inventory-in-store-pickup-quote-graph-ql |
* |
magento/module-inventory-configurable-product-frontend-ui |
* |
magento/module-inventory-catalog-search-configurable-product |
* |
magento/module-inventory-catalog-search-bundle-product |
* |
magento/module-inventory-catalog-frontend-ui |
* |
magento/module-inventory-bundle-import-export |
* |
magento/module-inventory-bundle-product-indexer |
* |
- After modifying
composer.json
, run the following command to apply the changes:
composer install
To upgrade Magento inventory modules, follow these steps:
- Edit the
<Commerce_installation_directory>/app/etc/config.php
file.
- Set all Inventory modules from
0
to1
to enable them.
- Update the database:
bin/magento setup:upgrade
- Clean the cache:
bin/magento cache:clean
Note: OMS does not support Inventory Management modules. Disabling them allows Commerce 2.3.x to work seamlessly.
It is recommended to use reservation inconsistencies commands after upgrading. This sock and any pending orders are updated with their salable quantities and reservations for sales and order fulfillment.
Best Practices to Manage the Stock in Every Magento Inventory
Aspect | When to Use | Impact | Best Practice |
---|---|---|---|
Disable Inventory Reservation | - High-volume sales - Single-source inventory - Simple product catalogs |
- Faster checkout process - Reduced database load - Improved order processing speed |
- Keep backups before disabling - Test in a staging environment first - Monitor order processing |
Performance Optimization | - Multi-store setups - Complex product types - Heavy traffic periods |
- 20-30% faster page loads - Reduced server load - Better customer experience |
- Regular database cleanup - Index management - Cache optimization |
Stock Management | - B2B operations - Marketplace setups - International stores |
- Real-time inventory accuracy - Reduced overselling - Better stock predictions |
- Set buffer stock levels - Automate stock updates - Regular inventory audits |
MSI Considerations | - Multiple warehouses - Dropshipping - Omnichannel retail |
- Centralized inventory control - Better stock distribution - Enhanced fulfillment |
- Source prioritization - Distance-based sourcing - Stock transfer protocols |
Safety Measures | - Vital business periods - System upgrades - New feature implementations |
- Data integrity - System stability - Business continuity |
- Regular backups - Monitoring systems - Rollback procedures |
How to Decrement Stock on Order Placement?
1. Prevent Inventory Reservation Writes
Prevent all writes from being added to the inventory_reservation
table. Use an around plugin on PlaceReservationsForSalesEventInterface
.
2. Trigger Stock Deductions on Order Placement
Initiate stock deductions immediately upon order placement. You can achieve it through the inventory_sales_source_deduction_processor
plugin on Magento\Sales\Model\Service\OrderService
.
3. Disable Stock Deductions on Shipment
Prevent additional stock deductions during shipment. Use the disabled inventory_sales_source_deduction_processor
observer on the sales_order_shipment_save_after
event.
4. Replenish Stock for Canceled Orders
Replenish stock for canceled order items using an observer on the sales_order_item_cancel
event.
5. Replenish Stock on Refund
Restore stock when a credit memo is issued. You can manage it using the RestoreSourceItemQuantityOnRefundObserver
class.
Note: The "Back to stock" or the "Automatically Return Credit Memo Item to Stock" option should be checked.
For more information, refer to the Magento Documentation.
6. Truncate Inventory Reservation Table
Upon installation, the module truncates the inventory_reservation
table.
Advantages of Disabling Single Source Inventory Reservation
1. Accurate Stock Information
When you disable inventory reservation in Magento 2, you get real-time stock updates without reservation holds. It ensures customers see accurate salable quantities, preventing overselling and improving customer satisfaction.
2. Simplified Order Management
Order processing becomes more straightforward without the reservation system. The stock decreases directly upon order placement. It eliminates the need for complex reservation calculations and temporary holds.
Order management simplifies through:
- Direct stock deduction when orders are placed.
- Clear visibility of actual available stock without calculating holds.
- Elimination of reservation cleanup for abandoned carts.
- Streamlined order cancellation process without reservation reversals.
- Faster order processing as the system skips reservation validation steps.
3. Better Integration Capabilities
External systems work more efficiently when Magento 2's inventory reservation is disabled. Examples include ERPs and inventory management tools. It creates a direct flow of stock information without reservation logic interference.
External system integration becomes more reliable because:
- Stock updates flow in a single direction without reservation complications.
- ERP systems can directly read actual stock levels instead of calculating available stock.
- Third-party inventory tools don't need to account for temporary holds.
- Real-time synchronization happens without waiting for reservation clearance.
4. Streamlined Stock Management
Managing inventory becomes more direct and efficient. Without reservations, you get:
- Immediate stock updates
- Clear visibility of available products
- Simplified stock adjustment processes
5. Enhanced Performance
System performance improves significantly because:
- Fewer database operations are required
- Reduced server load from reservation calculations
- Faster checkout process
- Improved API response times
- Each order placement requires "2-3 fewer database writes" since no reservation entries are needed.
- Checkout speeds increase by eliminating reservation validation steps.
- API calls process "20-30%" faster without reservation table queries.
- The database size stays smaller as the reservation table doesn't accumulate entries.
Reduction in server load occurs in specific ways:
- Each page load requires fewer SQL queries to check stock status.
- Cart updates process faster by skipping reservation calculations.
- Order placement bypasses multiple inventory validation steps.
- Background processes don't need to clean up expired reservations.
6. Error Reduction
Error reduction occurs in several key areas:
- No more mismatches between reserved and actual stock.
- Elimination of 'ghost' reservations from abandoned carts.
- Reduced chance of overselling due to failed reservation releases.
- More precise audit trail of stock changes tied directly to orders.
- Fewer edge cases in inventory calculations.
Eliminating the reservation system reduces the following:
- Stock discrepancies
- Order fulfillment errors
- Inventory synchronization issues
- Data inconsistencies between systems
3 Steps to Handle Stock and Disable Stock Reservation
- Connect to your server via SSH to access the Magento installation.
Check the command below:
ssh root@<your-ip-address> -p <your-port-number>
-
Navigate to your Magento 2 root directory, where all the commands will be run.
-
Run the disable command.
Note: The command varies depending on your Magento version.
Troubleshooting Common Multi-Source Inventory Issues
Issue | Symptoms | Solution | Prevention |
---|---|---|---|
Stock Sync Delays | - Incorrect inventory levels - Mismatched salable quantities - Reservation table conflicts |
- Disable inventory reservation modules - Clear reservation table - Reindex inventory |
- Regular database maintenance - Monitor reservation logs - Schedule off-peak updates |
Order Processing Bottlenecks | - Slow checkout process - Failed order submissions - Stock deduction errors |
- Optimize MSI configuration - Clean reservation records - Update source priority |
- Set buffer stock levels - Configure source algorithms - Regular performance audits |
Performance Issues | - Slow admin panel - Delayed stock updates - High server load |
- Disable unused MSI modules - Optimize database tables - Clean reservation logs |
- Regular database cleanup - Monitor system resources - Schedule maintenance |
Source Assignment Conflicts | - Wrong stock allocation - Shipping delays - Inventory discrepancies |
- Review source priorities - Update distance-based rules - Check source algorithms |
- Define clear source hierarchy - Set geographic boundaries - Regular source audits |
Integration Problems | - ERP sync failures - API timeout errors - Data inconsistencies |
- Verify API endpoints - Check module compatibility - Update integration settings |
- Regular integration tests - Monitor API responses - Document sync protocols |
FAQs
1. How does disabling inventory reservation affect salable quantities in Magento 2?
When you disable inventory reservation, your salable quantities will match your actual stock levels. This means no more reserved quantities. Your stock updates happen right after order placement. It creates a simpler stock management system. The decrement stock on order placement works directly with your inventory.
2. Will disabling MSI impact my multi-source inventory setup?
The reservation logic works differently when you disable stock reservations. Your inventory management stays intact. Sources and stocks remain connected. Orders pull stock from assigned sources. The module to disable stock reservations only changes how quantities are held.
3. How does the reservation table work after disabling inventory reservations?
The system stops adding entries to the reservation table. Your magento_inventory
system bypasses the reservation process. Stock changes happen in real-time, which reduces database load. The inventory and cataloginventory_stock
tables handle all stock updates directly.
4. Can I handle stock across multiple stores after disabling stock reservations?
Yes, the disable inventory feature works with multiple stores. Your single source inventory management continues working as usual. The magento_inventoryadminui
still shows all your sources. Stock syncs between stores remain active, and your order management flows remain unchanged.
5. What happens to GitHub module dependencies after disabling the Magento inventory system?
The magento_inventoryapi
and related modules stay installed. Your system keeps core inventory features & only the reservation system gets turned off. Other inventory modules keep working, which lets your store maintain its stock functions.
6. Will disabling inventory reservations affect my existing Magento inventory management settings?
Your current inventory settings remain unchanged. The disable stock feature only stops new reservations; however, previous configurations stay active. Your magento_inventorycatalog
keeps working, which allows your stock management rules to continue functioning.
7. How does disabling automatic stock reduction affect inventory management?
The inventory and cataloginventory_stock tables work together to update stock. Orders won't automatically reduce your stock levels. Many stores use this for pre-order products. You'll need to manage stock changes manually. It gives more control over inventory flows. Your stock numbers stay fixed until you update them.
Summary
Magento 2 disable inventory reservation offers you more accurate inventory control & prevents issues like inaccurate salable quantities. It helps store owners:
- Streamline their order management process and maintain accurate stock levels.
- Simplify inventory management by reducing discrepancies.
- Improve customer experience by showing accurate stock levels.
- Control their inventory management with accurate stock levels and fewer discrepancies.
- Reduce complexity in managing their store’s inventory.
Prevent overselling and stock discrepancies by disabling the default MSI reservation system with Magento hosting services.