Split-order fulfilment: preserve the customer's original promise
For order fulfilment manager · Plan implementation
TL;DR — what you’ll learn
- When a multi-line customer order cannot be fulfilled immediately from a single warehouse, never allow the order management system (`OMS`) to split the shipment blindly without checking two hard constraints: **the customer's original delivery-date promise** and **the net order contribution after extra parcel freight**.
- Compare the **Consolidated 1-Parcel Option** (`waiting 24 hours for an internal store-to-hub shuttle to ship all 3 items together tomorrow at ₹150.00 total logistics cost, still arriving by the promised Thursday deadline`) against the **Immediate 2-Parcel Split Option** (`shipping 2 parcels today from separate nodes at ₹230.00 total courier cost, burning ₹80.00 in unnecessary extra freight`).
- Never bill the customer a second shipping fee for an internal merchant split (`Customer_Shipping_Charged remains locked at the checkout-agreed ₹0.00`), and preserve a single parent order status view that links every child shipment back to the original promise date.
- Validate your split-order orchestration engine with three acceptance tests: consolidate-within-promise gating, split-margin floor blocking, and unified parent-child customer tracking.
Topics: retail split order fulfilment · partial shipment order status · split shipment charges · order line allocation

Illustrative omnichannel store fulfilment and parcel staging counter; not a client facility.
All quantities, amounts, product codes and events are illustrative teaching examples.
On Monday morning (Day 1), a Bengaluru shopper places a three-item prepaid order (ORD-BLR-55190, merchandise value ₹2,850.00, gross product margin ₹820.00, checkout shipping fee ₹0.00 under the brand's free-shipping threshold) with a guaranteed checkout promise of 'Delivery by Thursday, 18 October (Day 4)'. At the moment of order routing, the central Bengaluru fulfilment hub (HUB-BLR-01) has Line 1 (Running Shorts, ₹950.00) and Line 2 (Performance Tee, ₹800.00) in stock, while Line 3 (Compression Socks, ₹1,100.00) is out of stock at the hub but available on the shelf at the brand's Indiranagar store (STR-BLR-03, 8 km away, connected by a daily evening store-to-hub milk-run van). An uncalibrated OMS routing rule set to 'Ship Available Items Immediately' splits ORD-BLR-55190 into two separate courier shipments on Monday: Parcel A (Lines 1 & 2 from HUB-BLR-01, courier charge ₹105.00) and Parcel B (Line 3 from STR-BLR-03, courier charge ₹125.00, total courier cost ₹230.00). Worse, the OMS sends a poorly worded 'Order Fulfilled' webhook on Parcel A that leads the customer to think Line 3 was missing, and if consolidated via Monday evening's internal store shuttle (₹35.00 internal transfer cost + ₹115.00 single-parcel courier cost = ₹150.00 total) and shipped Tuesday (Day 2 with 24-hour local delivery on Wednesday Day 3), all 3 items would have arrived in one box, one day ahead of the Thursday promise, saving ₹80.00 (11.9% of net order contribution).
The operational decision for an order fulfilment manager across omnichannel retailers, D2C brands, and multi-warehouse merchants is how to govern split-shipment routing—grounded in location-level inventory state visibility, omnichannel inventory reservation and orchestration rules, and ERP-to-storefront order status integration—so orders split only when required to save the customer's delivery promise and always preserve transparent parent-child status (Shopify Help Center — Inventory states (Available, On hand, Committed, Incoming, Unavailable), Salesforce Omnichannel Inventory Documentation — Inventory Reconciliation and Reservation Management). By linking this control to click-and-collect handover and reservation workflows and AI customer service order-status accuracy controls, order fulfilment manager teams prevent downstream inventory, customer-promise, and financial breaks before stock or cash moves.
Why greedy split-shipment rules erode unit economics and confuse customers
Distributed order management (DOM) systems allow retailers to expose store and multi-warehouse inventory as a single online pool. However, when a customer puts 3 items in their basket that sit in 2 different locations, naive routing engines optimize either speed of first scan (split everything today) or minimum shipping cost (hold everything until replenished, breaching the delivery date) without weighing both against the customer's checkout promise.
Three operational failures occur when split-order logic lacks commercial and promise-date guardrails:
- Unnecessary parcel splitting when consolidation still beats the promised delivery date: If the customer was promised delivery by Thursday (
Day 4) and an overnight internal transfer (₹35.00) allows all 3 items to ship in one consolidated parcel on Tuesday (Day 2) for delivery on Wednesday (Day 3), splitting into two courier parcels on Monday (₹230.00vs₹150.00) wastes₹80.00in courier fees and extra packaging while forcing the customer to receive two separate doorstep deliveries. - Double-charging or misallocating shipping fees and COD collection: When a customer agreed to a single shipping fee at checkout (
₹0.00or₹49.00) or selected Cash-on-Delivery (CODfor₹2,850.00), splitting the order across two courier airway bills (AWBs) without locking invoice-level shipping and COD apportionment causes couriers either to bill the customer twice for shipping or to demand the full₹2,850.00COD amount on the first partial box. - Broken customer-service status ('Partially Shipped' shown as 'Completed'): Many ERP-to-storefront connectors map the first shipment confirmation (
Parcel A) to a globalOrder_Status = Fulfilledevent. The customer receives a single tracking link, opens a box containing 2 of 3 items, assumes the 3rd item was forgotten, and floods customer support with'Missing Item'refund tickets.
To make every split vs consolidate decision deterministic and auditable, evaluate four equations in your OMS routing engine before releasing pick waves:
Consolidated Arrival Date (T_arr_consol) = Current_Day + Internal_Shuttle_Delay (1d) + Courier_Transit_Days (1d) = Day 3 <= Promised_Delivery_Date (Day 4)Consolidated Net Order Contribution (M_consol) = Gross_Merchandise_Margin (₹820.00) + Shipping_Charged_To_Customer (₹0.00) - Shuttle_Cost (₹35.00) - Single_Parcel_Courier_Cost (₹115.00) = ₹670.00Split-Shipment Net Order Contribution (M_split) = Gross_Merchandise_Margin (₹820.00) + Shipping_Charged_To_Customer (₹0.00) - (Courier_Parcel_1 (₹105.00) + Courier_Parcel_2 (₹125.00)) = ₹590.00Incremental Split Cost Penalty (ΔC_split) = M_consol (₹670.00) - M_split (₹590.00) = ₹80.00 per order
The Governed Split Rule:
- If
T_arr_consol <= Promised_Delivery_Date, ALWAYS CONSOLIDATE (save ₹80.00and deliver 1 clean parcel on time). - If
T_arr_consol > Promised_Delivery_Date(for example, an inter-city order where consolidation would arrive onDay 6vs aDay 4promise), SPLIT IMMEDIATELY to honour the customer's promise—providedM_split >= Min_Order_Margin_Floor(or notify the customer with a split-shipment timeline).
Scroll horizontally to see all columns.
Fulfilment routing option (ORD-BLR-55190) |
Dispatch & arrival timeline (Promise: Thu Day 4) |
Logistics & packaging cost (₹) |
Net order contribution (from ₹820.00 gross) |
OMS routing gate decision & customer experience |
|---|---|---|---|---|
| Option 1: Governed Consolidation via Hub Shuttle | Shuttle Mon night; Ship 1 parcel Tue (Day 2); Arrive Wed (Day 3) |
₹150.00 (₹35.00 shuttle + ₹115.00 1-box courier) |
₹670.00 (23.51% of ₹2,850 order) |
SELECTED (Metro): Meets Thu promise 1 day early in 1 box; saves ₹80.00 |
Option 2: Immediate 2-Parcel Split (Hub + Store) |
Ship 2 parcels Mon (Day 1); Arrive Tue/Wed (Days 2–3) |
₹230.00 (₹105.00 Parcel 1 + ₹125.00 Parcel 2) |
₹590.00 (-₹80.00 freight erosion) |
Rejected for Metro / Selected for Inter-City: Use only when consolidation misses Thu SLA |
Option 3: Uncontrolled 3-Node Split (3 Parcels) |
Ship 3 separate 1-item parcels from 3 stores on Mon | ₹345.00 (3 x ₹115.00 separate AWBs) |
₹475.00 (-₹195.00 margin collapse) |
Hard Blocked (Max_Splits = 2): Breaches ₹550.00 minimum order contribution floor |
Option 4: Passive Backorder Wait (No Shuttle) |
Wait 5 days for vendor PO restock at Hub; Arrive Sun (Day 7) |
₹115.00 (1 parcel, zero shuttle) |
₹705.00 (if not cancelled by buyer!) |
Blocked by Promise Gate: Breaches Thursday Day 4 customer promise by +3 days |
| Customer Billing & Status Contract (All Splits) | Parent ORD-BLR-55190 tracks Child_01 (2/3) & Child_02 (1/3) |
Customer pays ₹0.00 extra shipping |
Merchant absorbs approved split cost | Never alter customer invoice total; show explicit 'Parcel 1 of 2 / Parcel 2 of 2' UI |
By checking T_arr_consol <= Promised_Delivery_Date first, the OMS avoids splitting orders that can be consolidated within the delivery window while still authorising two-parcel splits when customer promises are genuinely at risk.
Worked illustrative example: choosing between 1 parcel tomorrow (₹150.00) and 2 parcels today (₹230.00)
Illustrative example (hypothetical scenario): Examine the OMS routing calculation for 3-line order ORD-BLR-55190 (Merchandise Value ₹2,850.00, Landed Product Cost ₹2,030.00, Gross Product Margin ₹820.00) under two different customer location scenarios.
Step 1: Establish the baseline operational and commercial parameters
- Order line breakdown and inventory location at checkout (
Monday 10:00 IST, Day 1):- Line 1 (
SKU-SHORT-RUN-M): Price₹950.00, Landed Cost₹680.00, Gross Margin₹270.00— Available atHUB-BLR-01. - Line 2 (
SKU-TEE-PERF-M): Price₹800.00, Landed Cost₹560.00, Gross Margin₹240.00— Available atHUB-BLR-01. - Line 3 (
SKU-SOCK-COMP-L): Price₹1,100.00, Landed Cost₹790.00, Gross Margin₹310.00— Out of stock atHUB-BLR-01, Available at StoreSTR-BLR-03. - Order Totals: Revenue =
₹950.00 + ₹800.00 + ₹1,100.00 = ₹2,850.00; Total Product Cost =₹680.00 + ₹560.00 + ₹790.00 = ₹2,030.00; Gross Product Margin =₹820.00(28.77%). Customer shipping fee charged at checkout =₹0.00; Promised delivery date = Thursday (Day 4).
- Line 1 (
Step 2: Reconcile states, exceptions, and financial impact
- Comparing Scenario A (Local Metro Delivery, 1-Day Courier Transit) vs Scenario B (Outstation Delivery, 3-Day Courier Transit):
- Scenario A — Local Metro Customer (
1-day courier transit after dispatch):- Path 1 (
Consolidated 1-Parcel Tomorrow): Reserve Line 3 atSTR-BLR-03immediately (Committed), move it on Monday evening's internal store-to-hub shuttle (₹35.00internal handling/van cost), pack all 3 items into 1 box atHUB-BLR-01on Tuesday (Day 2, single courier + box cost₹115.00, total logistics cost =₹35.00 + ₹115.00 = ₹150.00), and deliver on Wednesday (Day 3). BecauseWednesday (Day 3) <= Thursday (Day 4 Promise), the OMS selects Path 1, earning₹820.00 - ₹150.00 = ₹670.00net contribution (saving ₹80.00). - Path 2 (
Split 2-Parcels Today): Ship Lines 1–2 fromHUB-BLR-01on Monday (₹105.00) and Line 3 fromSTR-BLR-03on Monday (₹125.00, total logistics cost =₹230.00) for delivery Tuesday (Day 2). Net contribution drops to₹820.00 - ₹230.00 = ₹590.00(-₹80.00penalty for speed the customer did not ask for).
- Path 1 (
- Scenario B — Outstation Customer (
3-day courier transit after dispatch, Promise: ThursdayDay 4):- Waiting until Tuesday (
Day 2) to ship a consolidated parcel with3-daytransit would deliver on Friday (Day 5), breaching the customer's Thursday (Day 4) promise! - Here, the OMS approves the 2-parcel split today (
Monday Day 1) (Parcel 1: ₹105.00, Parcel 2: ₹125.00, Total = ₹230.00, Net contribution margin = ₹590.00 >= ₹550.00 floor) so both parcels arrive by Thursday (Day 4). It keeps customer shipping at₹0.00, prorates COD if applicable (Parcel 1 COD = ₹950 + ₹800 = ₹1,750.00;Parcel 2 COD = ₹1,100.00), and displays explicitParcel 1 of 2 (2 items)andParcel 2 of 2 (1 item)status cards to the customer.
- Waiting until Tuesday (
- Scenario A — Local Metro Customer (
Scroll horizontally to see all columns.
Decision metric (ORD-BLR-55190) |
Consolidated 1-Parcel Tomorrow (Day 2) |
Split 2-Parcels Today (Day 1) |
Metro customer (1d transit, Thu SLA) |
Outstation customer (3d transit, Thu SLA) |
Financial & promise variance |
|---|---|---|---|---|---|
| 1. Merchandise value & gross margin | ₹2,850.00 / ₹820.00 |
₹2,850.00 / ₹820.00 |
Identical product margin (₹820.00) |
Identical product margin (₹820.00) |
₹0.00 merchandise difference |
2. Logistics & packaging cost (₹) |
₹150.00 (₹35 shuttle + ₹115 AWB) |
₹230.00 (₹105 AWB1 + ₹125 AWB2) |
Consolidation costs ₹150.00 |
Split costs ₹230.00 |
₹80.00 (+53.3%) extra freight on split |
3. Net order contribution (₹) |
₹670.00 (23.51%) |
₹590.00 (20.70%) |
Earns ₹670.00 (Consolidate) |
Earns ₹590.00 (Split to save SLA) |
₹80.00/order saved when shuttle fits SLA |
4. Customer arrival date vs Thu Day 4 |
Ship Tue (D2) -> Arrive D2 + Transit |
Ship Mon (D1) -> Arrive D1 + Transit |
Consolidate arrives Wed (Day 3 <= Day 4) |
Consolidate arrives Fri (Day 5 > Day 4!) |
Metro consolidates; Outstation splits for Thu SLA |
| 5. Customer billing & COD apportionment | 1 Invoice (₹2,850.00, ₹0.00 ship) |
2 Child AWBs (₹1,750.00 + ₹1,100.00) |
1 box (₹2,850.00 total) |
2 boxes (₹0.00 extra ship fee charged) |
100% promise & price integrity preserved |
Verified scenario calculation summary
Order_Merchandise_Total = ₹950.00 (Line 1) + ₹800.00 (Line 2) + ₹1,100.00 (Line 3) = ₹2,850.00Gross_Product_Margin = ₹2,850.00 (revenue) - (₹680.00 + ₹560.00 + ₹790.00 = ₹2,030.00 cost) = ₹820.00 (28.77%)Consolidated_1_Parcel_Logistics_Cost = ₹35.00 (store-to-hub shuttle) + ₹115.00 (single parcel courier) = ₹150.00Consolidated_Net_Order_Contribution (M_consol) = ₹820.00 - ₹150.00 = ₹670.00 (23.51% of order value)Split_2_Parcel_Logistics_Cost = ₹105.00 (Parcel 1 from Hub) + ₹125.00 (Parcel 2 from Store) = ₹230.00Split_Net_Order_Contribution (M_split) = ₹820.00 - ₹230.00 = ₹590.00 (₹80.00 lower than consolidated; COD proration = ₹1,750.00 Parcel 1 + ₹1,100.00 Parcel 2 = ₹2,850.00)
This rule gives operations and finance a crystal-clear policy: never pay an extra ₹80.00 to split an order when tomorrow's single parcel still beats the promised Thursday delivery date, and never miss a Thursday promise when a ₹80.00 split keeps the order profitable (₹590.00) and on time.
Split-order fulfilment workflow: roles, exception handling, and system choice
To orchestrate split shipments without surprising customers or leaking freight margin, configure four controls in your OMS and customer-status pipeline:
- Checkout promise-date and shipping-fee lock (Owner: E-Commerce Checkout & OMS Lead). Stamp every incoming order (
ORD-BLR-55190) with an immutablePromised_Delivery_Date (Thursday Day 4)andAgreed_Customer_Shipping_Fee (₹0.00). Downstream warehouse splits may create multiple child shipments, but may never add shipping charges to the customer's total. - SLA-bounded consolidation window check (Owner: Order Fulfilment Manager). Before splitting an order across nodes, check whether an internal transfer shuttle (
24h delay) allows a single consolidated parcel (₹150.00) to arrive on or beforePromised_Delivery_Date. IfYes, reserve the store unit (Committed) and route via the consolidation shuttle. - Contribution-floor and COD-proration check on approved splits (Owner: Commercial Finance + Fulfilment Ops). When a split is required to meet the delivery date (
Outstation Scenario B), verify thatM_split (₹590.00) >= Min_Order_Floor(or Max_Parcels <= 2). For COD orders, automatically prorate the collectible cash across child airway bills (₹1,750.00on AWB 1 and₹1,100.00on AWB 2) so couriers collect exact line values. - Line-item-aware customer notifications and support view (Owner: Customer Experience Lead). Replace generic
'Your order has shipped'emails on split orders with structured parent-child notifications ('Parcel 1 of 2 (Shorts & Tee) has shipped; Parcel 2 of 2 (Compression Socks) is shipping separately to arrive by Thursday'), keeping the parent order inPartially Delivereduntil both AWBs confirm delivery.
Choosing the right tool: Merchants fulfilling from 1 warehouse and 2–3 local stores can enforce a simple 24-hour local consolidation cutoff rule in their OMS or shipping aggregator (such as Shiprocket/ClickPost/Unicommerce paired with Shopify). Omnichannel chains routing across dozens of stores should configure DOM routing cost weights (Shuttle_Cost + 1_AWB vs 2_AWBs subject to Delivery_SLA <= Promised_Date).
Operational governance and audit controls for sustained compliance
To prevent this workflow from eroding after the initial implementation sprint, embed four recurring governance checkpoints into your weekly retail operations cadence:
- Version-locked rule and threshold tables: Store every tolerance band, status-transition rule, and exception-routing map in a versioned configuration table rather than ad-hoc personal spreadsheets. Any threshold change requires sign-off from order fulfilment manager and commercial finance, recording the effective timestamp and the cohort of SKUs or locations affected.
- Automated daily orphan and stale-state sweep: Run a scheduled morning query that flags records stuck in an intermediate state (
Pending Verification,In Transit,Awaiting Confirmation, orHeld for Review) beyond their agreed service-level cutoff. Route aged exceptions directly to the named role owner before customer promises or period-close cutoffs are breached. - Separation of operational execution from financial write-off authority: Staff who execute physical picks, catalogue edits, or customer service actions should never have unilateral system permission to clear reconciliation variances or post financial write-offs. Require dual sign-off once cumulative weekly adjustments on a SKU, store, or vendor exceed your materiality floor.
- Monthly root-cause retrospective tied to source-system hygiene: Aggregate exception logs by upstream root cause—such as missing supplier identifiers, delayed webhook deliveries, or uncalibrated store stock counts—and require the responsible upstream team to remediate the top three recurring defects before the next monthly cycle.
Bounded pilot scope, baseline measurement, and stop/recovery criteria
Because this workflow alters operational control gates across distribution and financial reconciliation, run a bounded 30-day pilot in one category or location before enabling enterprise-wide enforcement:
Scroll horizontally to see all columns.
| Pilot governance dimension | Bounded design parameter | Accountable owner | Verification evidence required before expansion |
|---|---|---|---|
| Bounded pilot scope | Multi-line e-commerce orders (2+ items) routed across the Bengaluru central hub (HUB-BLR-01) and 4 Bengaluru metro retail stores over a 30-day window. |
Order fulfilment manager | Signed scope charter naming the exact category, SKU cohort, or channel group and excluding automated general-ledger postings until parallel reconciliation passes. |
| Pre-change baseline window | 30-day pre-pilot order log measuring split-shipment percentage, average courier cost per multi-line order (₹), and 'Where is my remaining item?' customer support contact rate. |
Order fulfilment manager + commercial finance analyst | Locked 30-day historical baseline extract recording denominator counts, exception rates, and manual rework hours prior to rule activation. |
| Stop and recovery triggers | Disable 24-hour shuttle consolidation and revert to immediate 2-parcel split if internal store-to-hub shuttle on-time arrival drops below 98% or jeopardises Thursday delivery promises. | Order fulfilment manager + IT systems administrator | Tested rollback procedure that pauses automated holds or queue transitions within 30 minutes, preserves raw event logs, and reverts to supervised manual review. |
During the pilot window, hold a weekly joint review between order fulfilment manager, store or warehouse operations, and commercial finance to inspect every quarantined exception record. Do not expand the rule set to additional categories or automate ledger adjustments until the pilot achieves zero unexplained reconciliation breaks across two consecutive weekly cut-offs.
Observable acceptance tests for your retail systems
Before relying on this workflow in production, execute three deterministic acceptance tests (ACT-R038-01 to ACT-R038-03) in your staging environment or controlled worksheet:
Scroll horizontally to see all columns.
| Test ID | Scenario setup | Action executed in system | Expected pass criteria | Failure indicator |
|---|---|---|---|---|
ACT-R038-01 |
Create 3-line metro order ORD-BLR-55190 (₹2,850.00, gross margin ₹820.00, Promised_Date = Day 4, 1-day courier transit) with Lines 1–2 at Hub and Line 3 at Store (24h shuttle available). |
Run the OMS order-routing and split-evaluation engine. | Engine verifies T_arr_merged = Day 3 <= Day 4, suppresses the ₹230.00 2-parcel split, reserves Line 3 at the store for the evening shuttle (₹150.00 total cost), and preserves ₹670.00 net contribution. |
Engine greedily splits the order into 2 parcels on Day 1 (burning ₹80.00 extra freight) despite consolidation easily meeting the Day 4 promise. |
ACT-R038-02 |
Create an identical 3-line order for an outstation pincode (3-day courier transit, Promised_Date = Day 4) paid via COD (₹2,850.00 total, ₹0.00 shipping fee). |
Execute OMS routing and courier AWB generation. | Engine detects T_arr_merged = Day 5 > Day 4, approves the immediate 2-parcel split (₹230.00 cost, ₹590.00 margin), keeps customer shipping fee at ₹0.00, and prorates COD as ₹1,750.00 on Parcel 1 and ₹1,100.00 on Parcel 2. |
Engine either delays the order past Day 4, double-charges shipping, or assigns the full ₹2,850.00 COD collection to Parcel 1. |
ACT-R038-03 |
Mark Parcel 1 of 2 (Lines 1 & 2) as Delivered via courier webhook while Parcel 2 of 2 (Line 3) is still In Transit. |
Query the customer order-status portal and AI support bot for ORD-BLR-55190. |
Parent order status displays Partially Delivered (2 of 3 items delivered; Line 3 arriving by Thursday via AWB #2) and blocks premature full-order closure. |
System marks the entire parent order Delivered/Completed upon the first parcel's arrival, triggering a false missing-item complaint. |
Putting promise-aware split-order fulfilment into practice
To stop burning courier margin on avoidable split shipments while keeping every multi-parcel customer informed, take these four actions:
- Measure how many of your current split shipments arrived 1–2 days ahead of the promised date: Audit your last 30 days of split orders to see how many
₹80.00+extra-parcel fees could have been avoided via a 24-hour hub consolidation shuttle without missing a single customer promise. - Gate OMS splitting on
Consolidated_Arrival_Date > Promised_Delivery_Date: Make the customer's checkout promise date the primary trigger for splitting, rather than splitting every multi-location order on minute one. - Hard-lock customer shipping fees and COD line proration on split AWBs: Ensure your courier integration sums child COD collectable amounts (
₹1,750.00 + ₹1,100.00) to the exact parent invoice total (₹2,850.00). - Upgrade your storefront and WhatsApp/email templates to show
Parcel X of Yline lists: Never send a shipment notification for a split order without explicitly listing which items are in the current box and which items are arriving in the second parcel.
Discuss this workflow
If multi-parcel split shipments are eroding your order contribution and generating 'missing item' support tickets, NextEdge Labs can help you configure promise-aware OMS routing and parent-child status synchronisation.
References
Sources checked 15 October 2026. Vendor documentation supports platform facts; the worked examples and diagrams are original.
- Shopify Help Center — Inventory states (Available, On hand, Committed, Incoming, Unavailable)Explains how retail inventory is partitioned into available, committed, incoming, and unavailable states across locations.
- Salesforce Omnichannel Inventory Documentation — Inventory Reconciliation and Reservation ManagementCovers location-level stock reservations, available-to-fulfil calculations, and reconciliation across stores and distribution centres.
- Shopify Enterprise — Ecommerce and ERP Integration ArchitectureExplains how order orchestration, split-shipment statuses, and supplier dropship confirmations synchronise between storefront and ERP.

