Inventory traits
Traits are a way to configure how certain storage locations and stocks should behave. This page describes the key concepts and how to work with them.
Introduction
Traits provide information on how storage locations and stock are to be handled in operational and order processes. Traits can be set both on storage locations and stocks. If set on storage locations, they affect the handling of both storage locations and the stock located on them. Each stock placed on a location (by assigning it a locationRef) will inherit the traits of its storage location if nothing is specified in the stock's traitConfig.
Traits can, for example, be used to mark a location and its stock as pickable or to lock locations along with their stock. When only using stocks (and no locations) traits can be used to mark stock as pickable or lock it.
Available traits
By default, each storage location has the traits PICKABLE and ACCESSIBLE, unless otherwise specified.
PICKABLE
Stock on these locations can be picked for fulfilling orders.
Only stock marked as PICKABLE can be considered for incoming orders.
ACCESSIBLE
The ACCESSIBLE trait indicates that stock can be removed from and new stock can be put on this location. Removing the ACCESSIBLE trait from a location locks it for picking and triggers a notification during stowing processes. Only stock marked as ACCESSIBLE can be considered for incoming orders.
KEEP_ON_ZERO
Normally stocks are deleted when they reach 0 through operations like picking or stock movements. To change this behaviour, add the KEEP_ON_ZERO trait to the location. See stock entities with amount 0.
OUTBOUND
The OUTBOUND trait marks storage locations for items that have already been picked and are ready for being handed over to a shipping provider. When configured in the outbound inventory tracking, stocks and reservations are automatically booked to the defined outbound location after picking has been completed.
IN_MOTION
The IN_MOTION trait marks stock that is currently being moved as part of a stow job. This stock should be filtered out during a stock update via the stocks REST API endpoints.
Interacting with traits
Each trait has a default value. When nothing else is specified, the enabled traits are processed on both the storage location itself and the stocks on it. The default value (whether it is enabled or not) can be overwritten individually for each trait by setting it in the traitsConfig field on the storage location or on the stock. Traits set on stocks overwrite the traits set on storage locations. All unspecified traits keep their defaults. This means that if a trait is enabled via the trait config, PICKABLE and ACCESSIBLE are set by default unless explicitly set to false.
The traitConfig should be used to write to traits. Do NOT use the trait array for that purpose.
The traitConfig can specify each trait as enabled, disabled or unset. The final trait config is determined in a cascading manner:
ACCESSIBLE
true
false
true
true
PICKABLE
true
true
false
false
KEEP_ON_ZERO
true
true
Locking storage locations or stocks
To lock a storage location including the items placed on it, the ACCESSIBLE trait must be removed. As a consequence, the items on the location are not considered for incoming orders (i.e. picking). It is still possible to remove items from the location or put new items on it. Additionally, users are notified about the locked status when moving items from the location via App or Backoffice. Similarly, stocks can be locked by removing the ACCESSIBLE trait from them.
To unlock the storage location, the ACCESSIBLE trait must be set (again).
Traits in order routing and fulfillment
Storage locations and stock with the traits PICKABLE and ACCESSIBLE or with no traits are considered for fences and ratings during order routing and calculating stock availability.
The following storage locations and stocks are ignored in order routing and fulfillment:
with an empty array of traits
with only the trait
PICKABLEwith only the trait
ACCESSIBLE
Last updated