Quick Transfer

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:

MetricParametersDescription
countNoneCount of items in the result set

Common Parameters:

  • operator - Aggregation function: sum, mean, min, max
  • transform - Mathematical transformation: abs
  • dateRange - Filter to specific date range
  • facilityUrlList - 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 formatter argument 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

The 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

Net 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

General 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

Packing 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

The 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

Label: Quantity, case or case equivalent
Sortable: No


quantityCaseStock

Label: Quantity, case stock
Sortable: No


quantityOpenStock

Label: Quantity, open stock
Sortable: No


shortCode

Label: Short code
Sortable: No


transferDate

Label: Transfer date
Sortable: Yes


units

Label: Units
Sortable: No


unitsPerCase

Label: Units per case
Sortable: No


weight

Label: 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
      }
    }
  }
}