Configuring Receiving Routing Rules
When you receive stock on a purchase order, AccuArk can automatically determine which storage zone the incoming items should be placed in. This is handled by AccuArk's automatic routing system, which evaluates routing rules in a priority chain and falls back through multiple levels until a zone is found.
The Priority Chain
The routing service evaluates rules in this exact order, stopping at the first match:
| Priority | Rule Type | What It Matches |
|---|---|---|
| 1 (Highest) | Item-Specific Rule | Routes a specific item to a specific zone. Matched when the rule targets a specific item and the received item matches. |
| 2 | Category Rule | Routes all items in a category to a zone. Matched when the rule targets a specific category and the item's category matches. |
| 3 | Vendor Rule | Routes all items from a vendor to a zone. Matched when the rule targets a specific vendor and the PO's vendor matches. |
| 4 | Location Default Zone | Uses the default receiving zone configured in the location's receiving settings. |
| 5 | Unassigned Zone | Falls back to the location's system-managed Unassigned zone (if Overflow to Unassigned Zone is enabled). |
| 6 (Lowest) | No Zone | Returns null if no rule matched and overflow to unassigned is disabled. |
The first three levels (item, category, vendor) are evaluated in a single database query for efficiency, using evaluating rules in priority order (item-specific first, then category, then vendor, then default) to enforce the priority. Only active rules are considered.
Example Scenario
Suppose you are receiving a PO from Vendor X that includes Item A (in the "Frozen Foods" category) and Item B (in the "Dry Goods" category). You have these rules:
- Item A has an item-specific rule pointing to Zone "Freezer-1"
- "Frozen Foods" category has a rule pointing to Zone "Cold Storage"
- Vendor X has a rule pointing to Zone "Receiving Dock"
Result:
- Item A goes to Freezer-1 (item-specific rule wins, priority 1)
- Item B goes to Receiving Dock (no item or category rule matches, but the vendor rule matches, priority 3)
Location Receiving Settings
Each location has a settings record that controls how routing behaves at that location:
| Setting | Default | Description |
|---|---|---|
| DefaultReceivingZoneId | NULL | The zone to use when no routing rule matches (priority 4 in the chain). Set this to your main receiving area. |
| RequireZoneSelection | false | When true, the PO receiving form forces the user to manually select a zone before saving. The auto-resolved zone is used as a suggestion but can be changed. |
| AllowOverride | true | When true, users can override the auto-resolved zone by selecting a different zone on the PO form. When false, the auto-resolved zone is locked. |
| Overflow to Unassigned Zone | true | When true, stock that cannot be routed to any zone falls through to the Unassigned zone (priority 5). When false, unroutable stock gets no zone assignment. |
| DisallowInactiveZones | true | When true, routing rules pointing to inactive zones are skipped, and the next rule in the priority chain is evaluated instead. |
If no settings record exists for a location, AccuArk uses the defaults shown above.
How PO Receiving Uses Routing
During purchase order receiving, the routing flow works as follows:
- For each item being received, AccuArk's automatic routing system's
routing evaluationmethod is called with the location ID, item ID, category ID, and vendor ID - The service runs the priority chain and returns a
RoutingResultcontaining:- ResolvedZoneId — The target zone (or null if none found)
- ResolvedZoneName — The zone name for display
- ResolvedBy — Which rule matched (e.g., "item_rule", "category_rule", "vendor_rule", "location_default", "unassigned")
- RequiresUserSelection — Whether the user must confirm or select a zone
- AllowOverride — Whether the user can change the auto-resolved zone
- If the user manually selects a different zone via the zone picker on the PO form, that manual override takes precedence over the auto-resolved zone
- The stock is placed in the final zone (auto-resolved or manually overridden)
Override Audit Logging
When a user overrides the auto-resolved zone, AccuArk logs the override to the receiving_override_audit_log table. Each log entry records:
| Field | Description |
|---|---|
| location_id | The location where receiving happened |
| transaction_id | The stock transaction ID (if available) |
| item_id | The item that was received |
| default_zone_id | The zone that was auto-resolved by the routing rules |
| override_zone_id | The zone the user manually selected instead |
| user_id | The user who performed the override |
| reason | An optional reason for the override |
This audit trail helps managers understand why stock ended up in unexpected zones and identify whether routing rules need to be updated.
Setting Up Routing: Step by Step
Follow these steps to configure receiving routing for a location:
1. Create Your Zones First
Before you can create routing rules, you need storage zones at the location. See Article 69: Setting Up Storage Zones.
2. Configure Location Receiving Settings
Set the location's receiving preferences:
- Choose a Default Receiving Zone (the fallback zone when no rule matches)
- Decide whether to Require Zone Selection (force manual confirmation)
- Decide whether to Allow Override (let users change the auto-resolved zone)
- Enable Overflow to Unassigned (recommended to prevent unrouted stock from having no zone)
- Enable Disallow Inactive Zones (recommended to prevent routing to zones that are no longer in use)
3. Create Routing Rules
Add rules at the level of specificity you need:
- Item-specific rules for items that always go to a particular zone (e.g., hazardous materials always go to the Hazmat area)
- Category rules for broad routing (e.g., all "Frozen Foods" items go to Cold Storage)
- Vendor rules for vendor-specific staging (e.g., all items from Vendor X go to the Receiving Dock for inspection)
Remember: more specific rules (item) always override less specific rules (category, vendor).
4. Test with a Purchase Order
Create a test PO and receive a few items. Verify that:
- Items with specific rules go to the expected zones
- Items without specific rules fall through to category, vendor, or default zones
- The override audit log captures any manual changes
Tips
- Start with category-level rules — These give you the broadest coverage with the least configuration. Add item-specific rules only for exceptions.
- Set a default receiving zone — This is your safety net for items that do not match any rule. Without it, unmatched items either go to Unassigned (if enabled) or get no zone assignment.
- Enable Overflow to Unassigned Zone — This prevents stock from falling through with no zone. The Unassigned zone acts as a catch-all that you can periodically review and reorganize.
- Review override logs periodically — If you see frequent overrides for the same item or category, consider creating a new routing rule to automate what users are doing manually.
- Use DisallowInactiveZones — This prevents stock from being routed to zones that have been deactivated, which would defeat the purpose of deactivation.