Quick Transfer
Overview
Quick Transfers provide a streamlined way to move inventory between sublocations within the same location. Unlike transfer shipments which involve a ship-and-receive workflow for moving between locations, quick transfers instantly move stock from one bin or aisle to another within the same warehouse, updating inventory in a single operation.
The primary use case is warehouse reorganization. As you optimize warehouse layout, move products to different picking zones, or consolidate partial bins, quick transfers let workers move inventory with minimal paperwork. A worker can scan a product, specify the new sublocation, and complete the move immediately without the multi-step workflow required for cross-location transfers.
Putaway operations commonly use quick transfers. When a purchase shipment is received, it initially goes to a receiving sublocation. Workers then move products from receiving to their permanent storage sublocations. Quick transfers handle these moves efficiently, keeping your receiving area clear and getting products into their proper storage positions.
Picking operations can generate quick transfers when partial bins are created. If a picker takes 10 units from a bin containing 100 units, the system might create a quick transfer to move the remaining 90 units from the picking bin to a reserve sublocation. This keeps picking areas organized and ensures inventory is stored optimally.
Quick transfers create stock history entries documenting the sublocation change. These entries maintain the inventory audit trail, showing exactly when and why products moved within the warehouse. The history includes who made the transfer and when, supporting accountability and investigation of inventory discrepancies.
Unlike regular transfer shipments, quick transfers don't have an in-transit state. The inventory moves instantly from the source sublocation to the destination sublocation in a single atomic operation. This is safe because both sublocations are within the same location under the same physical control, eliminating the transit tracking needed for cross-location moves.
The simplicity of quick transfers makes them ideal for mobile warehouse operations. Workers with handheld scanners can execute quick transfers as they work, keeping inventory positions accurate in real-time without paperwork or data entry delays. This real-time accuracy supports efficient warehouse operations and accurate available-to-promise calculations.
GraphQL API
The quickTransfer collection provides access to quickTransfer data via the GraphQL API. All queries use the Relay connection specification with cursor-based pagination.
Query Name: quickTransferViewConnection
Available Features:
- Cursor-based pagination (first/last/after/before)
- 7 filter options
- 5 sortable fields
- 6 relations to other collections
Query Examples
Basic Query
The quickTransfer collection is accessed via the quickTransferViewConnection query, which returns a Relay-style connection with pagination support.
query {
quickTransferViewConnection(first: 10) {
edges {
node {
cbm
commitTimestamp
cost
inventoryTransferUrl
lotId
}
}
pageInfo {
hasNextPage
endCursor
}
}
}Pagination
Use cursor-based pagination to retrieve large datasets:
# First page
query {
quickTransferViewConnection(first: 50) {
edges {
node { lotId }
}
pageInfo {
hasNextPage
endCursor
}
}
}
# Subsequent pages
query {
quickTransferViewConnection(first: 50, after: "cursor-from-previous-page") {
edges {
node { lotId }
}
pageInfo {
hasNextPage
endCursor
}
}
}Filtering
Apply filters to narrow results (see Filters section for all available options):
query {
quickTransferViewConnection(
first: 10
destinationSublocation: "A-01"
) {
edges {
node { lotId }
}
}
}Sorting
Sort results by one or more fields:
query {
quickTransferViewConnection(
first: 10
sort: [{ field: "lotId", mode: "desc" }]
) {
edges {
node {
lotId
}
}
}
}Relations
Query related data (see Relations section for all available relations):
query {
quickTransferViewConnection(first: 10) {
edges {
node {
lotId
commitUser {
name
userLoginUrl
}
}
}
}
}Summary and Aggregation
This collection supports metrics aggregation through the summary field. You can calculate totals, averages, counts, and other aggregate values across filtered data.
Note: This collection does not support groupBy dimensions. For dimensional analysis, use collections like product, order, or invoice.
For a comprehensive guide to using aggregations, see the Aggregation Concept Guide.
Query Structure
quickTransferViewConnection(filters...) {
summary {
errorCode
errorMessage
metrics {
# Calculated metrics (see table below)
}
}
}Available Metrics
This collection provides 1 metric that can be aggregated:
| Metric | Parameters | Description |
|---|---|---|
count | None | Count of items in the result set |
Common Parameters:
operator- Aggregation function:sum,mean,min,maxtransform- Mathematical transformation:absdateRange- Filter to specific date rangefacilityUrlList- Filter to specific facilities
Examples
Example 1: Total quickTransfer Metrics
Calculate aggregate metrics across all quickTransfer records:
query {
quickTransferViewConnection(first: 1) {
summary {
errorCode
errorMessage
metrics {
totalCount: count
}
}
}
}Expected result structure:
{
"data": {
"quickTransferViewConnection": {
"summary": {
"errorCode": null,
"errorMessage": null,
"metrics": {
"totalCount": [1523]
}
}
}
}
}Fields
This collection has 20 fields:
- 20 simple fields
- 0 enum fields (with predefined values)
- 0 parameterized fields (accept query options)
Note on Field Formatting: All scalar fields support the
formatterargument to control output format. Available options:"html","none","abbreviated","blank-zero". Some fields have a default formatter (shown below). See the Formatting guide for details.
Note on Sorting: Field sortability may vary depending on the UI context and query parameters used. Some parameter options explicitly disable sorting (marked with ⚠️ not sortable).
Simple Fields
These fields return values directly without additional options.
cbm
cbmThe total cubic meters (volume) of the items being transferred, calculated by multiplying the quantity by the CBM per unit for the product. This metric helps with logistics planning and space allocation for inventory transfers.
Label: CBM subtotal
Sortable: No
commitTimestamp
commitTimestampThe date and time when the quick transfer was committed and finalized. This timestamp is extracted from the status history list and represents when the transfer moved from draft to completed status.
Label: Commit timestamp
Sortable: No
cost
costThe standard accounting cost amount for the transferred items, calculated by multiplying the quantity by the item cost per unit. This value is used for internal accounting and inventory valuation purposes.
Label: Std accounting cost amount
Sortable: No
inventoryTransferUrl
inventoryTransferUrlThe unique identifier for the quick transfer record. This field is automatically generated by the server and serves as the primary reference for accessing and linking to the specific inventory transfer transaction in the system.
IMPORTANT: Treat URL values as opaque strings supplied by the server. Do not attempt to parse, interpret, or construct URL values manually:
- ID values embedded in URLs may differ from entity ID values
- The URL structure is an internal implementation detail subject to change
- Manually constructing URLs can lead to bugs and system errors
- Always use URL values exactly as provided by the API
Label: Inventory transfer url
Sortable: No
lotId
lotIdThe lot identifier for the transferred items, typically including a prefix based on configuration settings. This field is only visible when manufacturer date shift tracking is enabled in preferences and allows for tracking specific product batches through the transfer process.
Label: Lot ID
Sortable: Yes
lotIdUnprefixed
lotIdUnprefixedThe lot identifier without any system-added prefix, showing the raw lot ID value. Like lotId, this field is only visible when manufacturer date shift tracking is enabled and provides the unformatted batch identifier.
Label: Lot ID unprefixed
Sortable: No
nativeNeq
nativeNeqThe total Net Explosive Quantity (NEQ) in native units for the transferred items, calculated by multiplying quantity by the NEQ per unit. This is critical for compliance tracking when transferring explosive or hazardous materials.
Label: Native NEQ subtotal
Sortable: No
nativeWeight
nativeWeightThe total weight of the transferred items in native units (as configured for each product), calculated by multiplying quantity by the weight per unit. This differs from the standardized weight field by preserving the product's original unit of measure.
Label: Native Weight subtotal
Sortable: No
neq
neqNet explosive mass (NEQ) for the transfer, calculated by multiplying the quantity by the product's NEQ per unit. This field is derived from the product's netExplosiveMassPerItemInSystemOfMeasure property and uses weight formatting for display.
Label: NEQ subtotal
Sortable: No
note
noteGeneral comments or notes associated with the quick transfer. This field stores text notes about the transfer and is sourced from the generalComments property of the inventory transfer record.
Label: Note
Sortable: Yes
packing
packingPacking information for the transferred product, displayed in normalized format (e.g., "cs 12/1" for case stock). If no packing string is specified, this field will be empty, indicating open stock or items without case packing.
Label: Packing
Sortable: No
quantity
quantityThe quantity of items being transferred in the quick transfer. This represents the number of units or cases being moved between locations, and is used in calculations for derived fields like units, weight, and NEQ.
Label: Quantity
Sortable: No
quantityCaseOrCaseEquivalent
quantityCaseOrCaseEquivalentLabel: Quantity, case or case equivalent
Sortable: No
quantityCaseStock
quantityCaseStockLabel: Quantity, case stock
Sortable: No
quantityOpenStock
quantityOpenStockLabel: Quantity, open stock
Sortable: No
shortCode
shortCodeLabel: Short code
Sortable: No
transferDate
transferDateLabel: Transfer date
Sortable: Yes
units
unitsLabel: Units
Sortable: No
unitsPerCase
unitsPerCaseLabel: Units per case
Sortable: No
weight
weightLabel: Weight subtotal
Sortable: No
Relations
commitUser
- Related Collection: userLogin
- Label: Commit user
TODO: Add relation description
destinationFacility
- Related Collection: facility
- Label: Destination
TODO: Add relation description
originFacility
- Related Collection: facility
- Label: Origin
TODO: Add relation description
product
- Related Collection: product
- Label: Product
TODO: Add relation description
recordCreatedUser
- Related Collection: userLogin
- Label: Record created user
TODO: Add relation description
recordLastUpdatedUser
- Related Collection: userLogin
- Label: Record last updated user
TODO: Add relation description
Filters
destinationSublocation
- Label: Destination sublocation
- Type: List|String
- Enabled: Yes
Filter Type: Text value
This filter accepts freeform text values.
Usage Example:
query {
quickTransferViewConnection(
first: 10
destinationSublocation: "A-01"
) {
edges {
node {
lotId
destinationSublocation
}
}
}
}inventoryTransferUrl
- Label: Inventory transfer url
- Type: List|InventoryTransferUrlString
- Enabled: Yes
Filter Type: Text value
This filter accepts freeform text values.
Usage Example:
query {
quickTransferViewConnection(
first: 10
inventoryTransferUrl: "/finaleengineer/api/inventorytransfer/100000"
) {
edges {
node {
lotId
inventoryTransferUrl
}
}
}
}originSublocation
- Label: Origin sublocation
- Type: List|String
- Enabled: Yes
Filter Type: Text value
This filter accepts freeform text values.
Usage Example:
query {
quickTransferViewConnection(
first: 10
originSublocation: "B-02"
) {
edges {
node {
lotId
originSublocation
}
}
}
}productUrl
- Label: Product
- Type: List|ProductUrlString
- Enabled: Yes
Filter Type: Reference to product collection
This filter accepts values from the productViewConnection query. To get available values:
query {
productViewConnection(
first: 100
) {
edges {
node {
productUrl # Use this value in the filter
title
}
}
}
}Usage Example:
query {
quickTransferViewConnection(
first: 10
productUrl: ["PRODUCT_URL_VALUE"]
) {
edges {
node {
lotId
product {
title
}
}
}
}
}search
- Label: Not specified
- Type: SearchString
- Enabled: Yes
Filter Type: Search text
This filter performs a text search across multiple fields.
Usage Example:
query {
quickTransferViewConnection(
first: 10
search: "search term"
) {
edges {
node {
lotId
}
}
}
}searchCustom
- Label: Not specified
- Type: searchCustomFilter
- Enabled: Yes
Filter Type: Advanced search with result expansion
See the Advanced Search guide for complete documentation on how this filter works.
Collection-Specific Examples:
Example 1: Basic search:
query {
quickTransferViewConnection(
first: 10
searchCustom: {
terms: "red widget"
}
) {
edges {
node {
lotId
}
}
}
}Example 2: Include additional fields in search:
# Searches defaults PLUS custom fields
query {
quickTransferViewConnection(
first: 10
searchCustom: {
terms: "acme"
include: ["customField1", "customField2"]
}
) {
edges {
node {
lotId
}
}
}
}Example 3: Expand results to include related records:
# For each match, also return the related record
query {
quickTransferViewConnection(
first: 10
searchCustom: {
terms: "urgent"
extend: ["relatedRecordUrl"]
}
) {
edges {
node {
lotId
}
}
}
}Example 4: Combine include and extend:
# Search in defaults + additional fields, then expand to related records
query {
quickTransferViewConnection(
first: 10
searchCustom: {
terms: "acme corp"
include: ["customField1"]
extend: ["relatedRecordUrl"]
}
) {
edges {
node {
lotId
}
}
}
}transferDate
- Label: Transfer date
- Type: dateRangeInput
- Enabled: Yes
Filter Type: Date range
Input Structure:
{
begin: string // ISO date format: "2024-01-01"
end: string // ISO date format: "2024-12-31"
}Usage Example:
query {
quickTransferViewConnection(
first: 10
transferDate: {
begin: "2024-01-01"
end: "2024-12-31"
}
) {
edges {
node {
lotId
transferDate
}
}
}
}