Fulfilment Rules & Warehouse Workflow
- 2 Fulfilment Workflow
- 2.2 Backorder Workflow
- 2.2.1 1. Insufficient stock quantity at the Warehouses.
- 2.2.2 2. Reconcile the Inventory
- 2.2.3 3. Update Pre-Sale Inventory
- 2.2.4 4. Process unpaid partially paid orders
- 2.2.5 Processing the orders that are in backorders status
- 2.2.6 Create fulfillments
- 2.2.6.1 1. Grouping rule
- 2.2.6.2 2. Remove from queue test orders
- 2.2.6.3 3. Check duplicates
- 2.2.6.4 4. Assign the warehouse
- 2.2.6.5 5. Process orders with stock availability of 100%
- 2.2.6.6 6. Reconcile inventory
- 2.3 50% Rule - Orders with stock availability greater than 50%
CRM UI Fulfilment Status vs Database Fulfilment Status
CRM UI Fulfilment Status | Database Fulfilment Status |
---|---|
New | 1 |
Sent | 2 |
Processed | 3 |
Error | 4 |
Canceled | 5 |
Removed | 6 |
Waiting for Tracking Number | 7 |
Backorder | 8 |
Processing | 9 |
Pending Tracking Number Email | 10 |
Sent Tracking Number Email | 11 |
Fatal Shipping Error | 12 |
Fatal Tracking Error | 13 |
Reprocess | 14 |
Fulfilment Workflow
Fulfilment is created three times per day
Selecting the orders that can be fulfilled
Orders are fulfilled if they comply with the below requirements:
Select all orders with the status Paid, Partially Refunded, Partially Paid) according to the product type (Warranty, eBooks, Coupon, Audio File and Fixed Price Warranty)
Select all orders with Reshipping status and the same product type above.
Creating the fulfillments
Prior to sending orders to be fulfilled, the system verifies the below:
Check if there were any problems last time the system ran the orders, which need to be fulfilled, if any issue is spotted the system will correct the order(s)
Remove orders with email such as "test.com"
Remove orders with Partially Refunded status
Remove old fulfillments that have been set as Reship, as order status, and have a Fatal Shipping Error as fulfilment status
Set with a Backorders status, Partially Paid orders in order to request the full remaining payment from the customer
Set the order status to Shipping for orders with Paid status, Shipping error, Reshipping and Partially refunded
Set the fulfilment status New (1), in order to prepare the system for the next step which is: to assign the warehouse
Fix old processed fulfillments – the system has a list of warehouse response errors, so in some cases, the system will automatically recover those fulfillments to the queue
Update the Inventory fields: Reserved New and Reserved Sent
Assign a Warehouse
Orders are assigned to a specific Warehouse by following the below rules:
Only active warehouses, set as Fulfillment Center and with API Integration will be used
Check for fulfillments with status Error (4) that was processed 36 hours ago and enqueue them – the status is set as New (1)
Select all fulfillments with the status New (1)
Select all Warehouse Products with available quantity [deducting from the quantity reserved for Pre-sale – not paid yet]
Check if there is any package group (DFO is the only one that uses it)
Remove orders from the fulfilment queue
Orders that adhere to the below requirements are removed from the fulfilment queue:
Ignore fulfillments in which SKU hasn’t been included in any warehouse and without available stock
Check shipping countries
Send to backorder fulfillments without warehouse (no available stock)
Update the inventory by checking the warehouse priority
Include orders from the fulfilment queue
Orders that obey the below requirements are included in the fulfilment queue:
Select all fulfillments with the status New (1) and without any previously assigned warehouse, grouping by email/zip code
Check if a warehouse is available (according to the shipping countries, available quantity, distance, and priority), then orders can fit one of the below scenarios:
A. If a warehouse is available | B. If no warehouse is available |
|
|
Fulfillments are sent to warehouses three times per day
For the warehouses that have automatic stock reconciliation, the inventory is updated and just continues if this process is successful
Create packages for fulfilment with the status New (1) and with assigned warehouse
Update fulfilment status to Processing (9)
DFO is the only one that group packages, which needs to comply with the below rules:
A single package may contain products of multiple fulfilments
It is necessary to limit the weight of the package (according to each warehouse)
If the warehouse limit weight per package is not null, use this value (Kg)
If the warehouse limit weight per package is null, the packages will not be split based on weight
The system will also try to group similar SKUs in the same package
Before sending the fulfillments to the warehouse, the availability of stock will be checked between the products in the package and the warehouse’s real-time stock quantity
When the warehouse's real-time inventory is not sufficient, the system sends these orders to the backorder
Right after the shipment, each warehouse returns a response via the API, which is handled according to the documentation for each warehouse
The result of the API is updated in the system can be:
If successful, the fulfilment will be set to status Sent (2)
If successful and the warehouse provide the tracking number in the same response, the fulfilment status is set to Processed (3)
If error, the fulfilment status will be set to Error (4)
Moreover, for all cases, the processing details field is filled in when available with additional information
The inventory is also updated again
Ultimately, the system checks the processing details looking for some warehouse’s duplicate answers (security) and in the case finds one or some, it updates the fulfilment process according to the response, so to avoid future errors.
Tracking Numbers information is received four times a day
In order to check with the Warehouses database if any tracking information is available, the system will follow the below steps.
Get all fulfillments with status Sent (4) that were sent to the warehouse 12 hours ago
Try getting the tracking number by API from the warehouses
Updates the system with the return of the warehouse (each warehouse has specific documentation)
If a successful response is returned, then set the fulfilment status to Processed (3), as well as fill in the courier name and other processing details
If a failed response is returned, then, set the fulfilment status to Waiting for Tracking Number (7). The system will try again later.
Recovering Fulfillment Information
Recover Shipments Information
Fulfillments with status Error (4) will be set as New (1), after 3 hours.
This process will be carried out in twelve attempts.
Recover Tracking Information
Once a week, the system tries to recover all pending tracking numbers from the last 3 months.
Recover Orders that have not been Processed
If something happens during the process of sending the orders to be fulfilled to the warehouse, and they have their fulfilment status set to Processing (9), the system will recover their status to New (1) so that it resumes processing on the next shipment.
Backorder Workflow
Backorders are processed four times per day
Below are some of the reasons orders get status backorders.
1. Insufficient stock quantity at the Warehouses.
Sometimes fulfillments sent to the warehouses are rejected because of insufficient stock quantity, system failure or rejection, and so on.
Therefore, the system will set those fulfilments with the fulfilment status Backorder (8), as well as group them to backorders and update their order status to Backorder (26), and leave a note in the order notes.
2. Reconcile the Inventory
For warehouses that have stock conciliation, the available quantity is updated.
3. Update Pre-Sale Inventory
Update the Warehouse Quantity Reserved PreSale field by deducting future sales backorders.
4. Process unpaid partially paid orders
Feed the Future Sale Backorders table with orders that are Partially Paid, not yet charged, with stock available for that, so that we can request payment.
Processing the orders that are in backorders status
In cases, we had a problem during processing, the system ensures that we will proceed correctly.
Remove any eventual backorders that do not have fulfillments with status fulfilment status Backorder (8)
Add to backorder table fulfillments with status Backorder (8) that eventually is not already in backorder
Updates the order status to Backorder (26) for orders that are in fulfilment status Backorder (8) and whose orders are not yet in Backorder
Whenever the create fulfillments process fails, recreate the reshipments
Create fulfillments
Process orders with priority first, then the others.
Select all backlog backorders
1. Grouping rule
Active: group orders by email | Not active: do not apply any group rule |
---|
Try to find a warehouse available to deliver the products.
Remove Pre-sale orders which have already a warehouse that can deliver them.
Set fulfillments status to New (1) and assign the warehouse
Update the inventory
Update quantity reserved for pre-sale
Checks that there is no negative value for the Pre-Sale reserved quantity and the available quantity
Remove fulfilments from the backorders table
Update order status to Shipping (3)
2. Remove from queue test orders
Set the fulfilment status to Removed (6) from the queue where the customer name is an Automation or Tester or a dummy one.
3. Check duplicates
For security reasons, check if there are any fulfillments with the same shipping reference with the status not equal to Removed (6) from the queue.
4. Assign the warehouse
5. Process orders with stock availability of 100%
Backorders group by email and all products available for delivery
6. Reconcile inventory
For warehouses that have stock conciliation, the quantity available is regularly updated
50% Rule - Orders with stock availability greater than 50%
This process is responsible for processing all pending orders in a specific situation and this is why it is described separately from the above.
In this case, orders are splitted into more packages as long as for the main order and its upsells there is stock availability greater than 51% so then at least one package of products is processed and sent first. The rest of goods will be fulfilled once the item is back in stock.
For example, the main order has 3 units of EarPods on it and it has 2 upsells with one unit of EarPods each. By applying the 50% Rule, this order is fulfilled ONLY if at least 3 units of EarPods are available to be shipped in the first package. Then a second package will be sent, once the rest of the items are in stock.
How the fulfilment works with orders complying with the 50% Rule
Group all backorders by order number and related upsell order.
Check the increases in the warehouses since the last time that this process runs, to avoid process orders without available stock.
Check if there is an available warehouse, which must:
have stock availability
delivery in that country
If the delivery country is the US, CA or MX and the warehouse is in the US or CA the system will accept it as a valid warehouse
Check warehouse distance
Confirm that inventory is available in that selected warehouse
If the products have:
Stock availability for which there is more than 50%
The SKU is in the exception list and with inventory available
Then, the fulfilment will be sent.
Set the fulfilment status to New (1) and add a note to the orders notes section about this process
Remove the order from the Future Sales Backorder if necessary
Update order status to Shipping (3)
Update CRM inventory
Remove from backorder
Check for any SKU exceptions that were not sent using this current warehouse. However, if it exists, the system will choose the best warehouse according to the same rules above and process it with the same actions to send this fulfilment.