Movement Rules
Deprecated. Movement rules are replaced by the Move Inventory workflow action, which expresses every rule concept (trigger, from-location, destination, transaction type, order) with the workflow's own event conditions, tag conditions, and action order. Existing rules keep running until the feature is removed in a later release. See Converting rules to Move Inventory below.
Movement Rules no longer has an entry in the navigation menu. Open it from Global Search (type "movement rules") or go straight to /movement-rules.
Movement rules automatically move inventory items between locations when scan events occur. They provide a simpler alternative to full workflows for straightforward location-based tracking: when a tag is scanned at a specific reader, move the item to a specific location.
Overview
Movement rules evaluate incoming scan events against a set of conditions (which device, which location, which direction) and, when matched, move the associated inventory item to a configured destination. Rules are evaluated in sequence order, and the first matching rule is applied.
From the Movement Rules page you can:
- Create rules that automatically move items based on scan events
- Configure device, antenna, and motion-based triggers
- Set flexible match criteria (any location, no location, specific location, or location type)
- Use relative destinations (parent, sibling, or child locations)
- Control rule evaluation order from a dedicated Arrange page
- View the read point locations set on devices and groups
Permissions
| Permission | What It Allows |
|---|---|
| View Movement Rules | See the movement rules list and details |
| Manage Movement Rules | Create, edit, copy, enable/disable, and delete rules |
The Movement Rules Grid
Columns
| Column | Description |
|---|---|
| Name | Rule name |
| Sequence | Number controlling evaluation order (lower = first); managed from the Arrange page |
| Trigger | Device, group, or antenna filter displayed as a chip |
| Route | Visual flow showing "From" → "To" locations |
| Transaction | Transaction type used for the inventory movement |
| Description | Optional notes about the rule's purpose (hidden by default) |
| On repeat | What happens when a matched item is already at the resolved destination (hidden by default) |
| Status | Enabled or Disabled |
| Created / Updated | Audit timestamps (hidden by default) |
| Scope | Access scope (shown when multiple scopes are active) |
| Actions | Details, Edit, Copy, Enable/Disable, Delete |
Click the column icon on the grid header to show or hide columns; your choices are remembered between sessions.
Search
Filter rules by name or description using the search bar.
Linked Locations
An info banner at the top notes that the locations set on devices and device groups are read point locations: a Move Inventory workflow action can send items there, and the "within read point's location" filter tests against them. They are no longer fallback destinations when no movement rule matches; a tag no rule matches stays where it is. Click View Linked Locations to see which devices and groups have a location set.
Viewing a Rule
Click any row (or choose Details from the row actions menu) to open the rule's own page at a stable, shareable URL. Its sections mirror the edit form: Basics (status, sequence, description), Trigger, Match criteria, Destination, and Transaction, plus an audit section with creation and modification timestamps. The page header's Actions menu holds Edit, Change Scope (admins only, see below), and the Enable/Disable toggle, next to a Back to Movement Rules button.
Creating a Movement Rule
Click Create Rule to open the create page. If your organization has more than one site scope, the form leads with an Applies to section: choose whether the rule is Shared across your organization or scoped to one site. This choice bounds which devices, groups, and locations the rest of the form can reference. If you only have one site scope, this step is skipped and the rule is created shared automatically.
Use the section rail on the left to move between the form's sections:
Basics
| Field | Description | Required |
|---|---|---|
| Name | Display name for the rule | Yes |
| Description | Optional notes about the rule's purpose | No |
Note: Evaluation order (Sequence) is no longer set on this form. New and copied rules are appended to the end of the order; adjust their position on the Arrange page.
Trigger
Define which devices and conditions activate this rule:
| Field | Description |
|---|---|
| Device | Specific device, or leave blank for any device |
| Device Group | Specific group, or leave blank for any group |
| Antenna Number | Specific antenna port (1–16), or leave blank for any |
| Motion Filter | Filter by tag motion state: In Motion, Slight Movement, Stationary |
When no device or group is specified, the rule evaluates for scan events from any device. On a site-scoped rule, "any device" means any device in that site: a site rule can only trigger from its own site's devices, matching the trigger-surface rule that also governs workflows.
Match Criteria
Define which items the rule applies to based on their current location:
| Match Mode | Behavior |
|---|---|
| Any Location | Matches all items regardless of current location |
| No Location | Only matches items not currently assigned to a location |
| Specific Location | Matches items at a particular location (optionally including child locations) |
| Location Type | Matches items at any location of a specific type |
Transaction
| Field | Description | Required |
|---|---|---|
| Transaction Type | The type of transaction recorded for the movement | Yes |
Destination
Define where matched items are moved:
| Target Type | Behavior |
|---|---|
| Specific Location | Move to a named location |
| Parent Location | Move to the item's current location's parent |
| Sibling by Type | Move to a sibling location matching a specific type |
| Sibling by Name | Move to a sibling location matching a specific name |
| Child by Type | Move to a child location of the current location matching a type |
| Child by Name | Move to a child location matching a specific name |
| Remove from Inventory | Close the item out of live inventory (no destination location required). Works whether the item is currently at a location or not. |
When Remove from Inventory is selected, no location configuration is needed. The item's lifecycle state becomes Closed regardless of whether it was previously at a location. If the item was at a location, it is removed from that location. If the item was New (never placed), it is closed out directly from the New state. Pair this with a close-out transaction type (such as Ship or Consume) on the Transaction section so both the physical event and the lifecycle change are recorded.
Note: A plain Remove from Inventory destination paired with a non-close-out transaction type still does nothing for an item that is not currently at a location. Only a close-out transaction type (one with the Removes from inventory toggle enabled) will close out a New item that has never been placed.
Alternatively, if you select a transaction type that already has the Removes from inventory toggle enabled, the destination type becomes irrelevant: the item is closed out automatically regardless of what destination is configured, and the destination field is replaced by an informational message.
Note: Whatever destination a rule resolves to, whether a fixed Specific Location pick or a computed one like Parent Location or Sibling by Type, must be a location where Inventory is set to Allowed. If a rule resolves to a location that doesn't allow inventory, the placement is rejected rather than moving the item there. See Locations for how that setting is configured.
For more detail on close-out behavior and lifecycle states, see Inventory Item Lifecycle.
When Already at Destination:
| Option | Behavior |
|---|---|
| Done | Stop processing; no movement needed |
| Continue to Next Rule | Skip this rule and evaluate the next one in sequence |
Rule Evaluation Order
Rules are evaluated by sequence number, lowest first. When a scan event occurs:
- Rules are checked in sequence order
- The first matching rule is applied
- If no rules match, the tag stays where it is
Open the kebab menu (⋮) next to Create Rule and choose Arrange to open /movement-rules/arrange, drag rows to change their order, and see the current evaluation order at a glance. Reordering is admin-only, since evaluation order is shared across every site: non-admins can view the page but not drag rows, and admins can't reorder while a site scope filter is active in the app header (clear the filter first). Search also switches the page to view-only.
This means you can create specific rules with low sequence numbers to handle special cases, and broader catch-all rules with higher sequence numbers as defaults.
Actions
| Action | Description |
|---|---|
| Enable/Disable | Toggle a rule on or off without deleting it |
| Edit | Modify all rule properties |
| Copy | Duplicate the rule with "(Copy)" suffix, created in disabled state, appended to the end of the evaluation order |
| Change Scope | Admins only. Move the rule to a different scope; see below |
| Delete | Permanently remove the rule and its execution history |
Change Scope (Admins)
From the detail page's Actions menu, administrators can move a rule to a different scope. Tagnet clears any device, group, or location references that fall outside the new scope, warning you which ones will be removed. If the rule's transaction type itself is out of scope for the target (and not a shared type), the transfer is blocked entirely until you change the transaction type first, since a rule can't run without one.
Converting rules to Move Inventory
A rule set becomes one workflow per kind of read point, with one Move Inventory action per destination. Rules are global and workflows are per event condition, so the conversion is done by hand, rule by rule. Each rule field has a home in the workflow:
| Movement rule field | Where it goes in the workflow |
|---|---|
| Device or device group trigger | A Device or Device Group event condition. For a fleet of the same kind of reader across sites, one shared workflow with a Device Type event condition instead |
| Antenna trigger | An action tag condition on Tag.PrimaryAntenna |
| Motion indicator filter | An action tag condition on Tag.MotionIndicator |
| From location: any, none, specific, or by type | Action tag conditions on InventoryItem.CurrentLocation.*. For a doorway or site portal, the Within read point condition replaces the from-location entirely: inside means leaving, everything else arrives |
| To location: specific | Move Inventory target Specific location |
| To location: the reader's own location | Target Read point's location, with the location set on the device or group |
| To location: the same-coded location in each scope | Target Location by code in the device's scope, one shared workflow for every scope |
| To location: sibling by type | Target Sibling location by type |
| To location: parent, child, or sibling by name | No direct equivalent. Under last-seen semantics the destination is where the reader is; model it as the read point's location or a location by code |
| Remove from inventory | Target Remove from inventory with a close-out transaction type |
| Transaction type | The action's transaction type |
| Sequence, first match wins | Action order. An item a Move Inventory action already handled is skipped by every later one in the same execution |
| When already at destination | Built in: an item already at the target is left alone and counts as handled |
A typical conversion:
- Set the Location on each reader (or its group) whose rules used it as the destination.
- Create one workflow per read-point kind, for example Yard portals or Workstations, shared or per site.
- Add one Move Inventory action per destination in the order the rules ran, copying each rule's from-location conditions into the action's filters.
- Run both side by side for a scan or two and compare the execution history, then disable the rules workflow.
- Delete the rules once nothing references them.
Best Practices
- Use sequence numbers strategically: Put specific rules first (low numbers) and general rules last (high numbers), and check the Arrange page after adding new rules since they append to the end.
- Start with disabled rules: Copy rules in disabled state, then enable them after review.
- Use relative destinations: Parent, sibling, and child destinations make rules reusable across similar location hierarchies without hardcoding specific locations.
- Combine with motion filters: Use motion state filters to distinguish between items passing through a zone vs. items being placed in a zone.
- Set the "already at destination" behavior: Use "Continue to Next Rule" to allow fallthrough to more general rules when an item is already where the current rule would move it.
- Review read point locations: The locations on your devices and groups are where a Move Inventory action can send items and what the "within read point's location" filter tests. They are not fallback destinations when no rule matches.
- Automate close-out at exit points: For shipping docks or consumption stations covered by fixed readers, configure a rule with a close-out transaction type (or the "Remove from Inventory" destination) so items are closed out automatically when scanned, without manual data entry.
- Let the transaction type say what a move means: A workflow action that runs after Execute Movement Rules can filter on the transaction type the rule wrote (see Movement Result Fields), so an outbound integration subscribes to
SHIPrather than restating the rule's from and to locations. Pick the type for its business meaning, and name the rule for it too: when several rules write the same type and only one should reach an integration, the rule name is the tiebreaker.