Fluent Commerce Logo
Docs
Sign In

LoadInventoryPositionData

Rule

Changed on:

17 Feb 2025

Overview

Send an inline event including the

`inventoryPositionExists`
flag indicating whether the corresponding Inventory Position exists or not.

This Rule is a simplified version of the

rule, excluding the logic for:

  • Retrieving Inventory Quantity data of type
    `LAST_ON_HAND`
    in status
    `ACTIVE`
    or
    `CREATED`
  • Setting and forwarding the 
    `inventoryQuantityExists`
    flag (true or false)
Plugin NameInventory Reference Module
Namespace[[account.id]].globalinventory

The Inventory Reference Module is the foundation for inventory related implementations. It provides reference Workflows for inventory ingestion and processing. Extensible by design, use this Module as a base to build a solution to the needs of your customers.

The Inventory Module includes the following areas:

  • Product Catalogue workflow
  • Inventory Catalogue workflow
  • Control Group workflow
  • Virtual Catalogue workflow

UI Description

Forward event {eventName} (inline event) with the attribute `inventoryPositionExists` set to true or false if the inventory position exists or not respectively.

Accepts

  • INVENTORY_CATALOGUE

Actions

Rule parameters

Name

Type

Description

`eventName`

`String`

The name of the event to be triggered

Event attributes

Name

Type

Description

Required?

`inventoryPosition`

`InventoryUpdate`

A single item of the Inventory Batch request.

This Object contains the Inventory Position specific data. 

See the Sub-attributes below.

Yes

InventoryUpdate Object Sub-attributes

Name

Type

Description

Required

`ref`

`String`

The Reference of the Inventory Position

No

`type`

`String`

The Type of the Inventory Position.

No

Unused because the Inventory Position Type is inherited from the Inventory Catalog Sub Type.

`productRef`

`String`

The Reference of the Variant Product associated to the Inventory Position

Yes

`locationRef`

`String`

The Reference of the  Location associated to the Inventory Position

Yes

`qty`

`Integer`

The quantity

Yes

`correctedQty`

`Integer`

The quantity value of the Inventory Quantity of the

`CORRECTED`
Type

No, unused

`inventoryQuantity`

`InventoryQuantityUpdate`

The Object that contains the Inventory Quantity specific data. 

See the Sub-attributes below.

No

InventoryQuantityUpdate Object Sub-attributes

Name

Type

Description

Required

`ref`

`String`

The Reference of the Inventory Quantity

No

`qty`

`Integer`

The quantity value of the Inventory Quantity

No

`type`

`String`

The Type of the Inventory Quantity

No

`status`

`String`

The Status of the Inventory Quantity

No

`attributes`

`Map<String, Object>`

The following attributes are supported:

  • `condition`
  • `expectedOn`
  • `storageAreaRef`

No

Exceptions

  • This Rule throws a
    `PropertyNotFoundException`
    when the Rule parameter(s) is not provided.
  • This Rule throws an 
    `EventAttributeNotFoundException`
     when the required Event attribute(s) is not provided.

Configuration example

1{
2  "name": "[[account.id]].globalinventory.LoadInventoryPosition",
3  "props": {
4    "eventName": "CheckInventoryPositionExists"
5  }
6}

Language: json

Detailed Technical Description

This Rule execution includes the following steps:

1. Validate that:

  • The
    `eventName`
    Rule parameter has been provided
  • The mandatory Event attributes have been provided:
    • `inventoryPosition`
      and its Sub-attributes:
      • `productRef`
      • `locationRef`
      • `qty`

2. Load the Inventory Position in one GraphQL API request based on the following:

  • Inventory Position Reference
    The value is taken from the
    `inventoryPosition.ref`
    Sub-attribute.
  • Inventory Catalog Reference
    The value is taken from the incoming event
    `rootEntityRef`

3. Add the retrieved information into the event attributes and produce a

`SendEventAction`
 with the event 
`{eventName}`
:

Event Attribute Key

Event Attribute Value

`type`

  • `entitySubtype`
    (from the incoming event attributes)
  • If undefined (null), the value is set to
    `DEFAULT`

`ref`

`inventoryPosition.ref`
(from the incoming event attributes)

`qty`

`inventoryPosition.qty`
(from the incoming event attributes)

`productRef`

`inventoryPosition.productRef`
(from the incoming event attributes)

`locationRef`

`inventoryPosition.locationRef`
(from the incoming event attributes)

`correctedQty`

`inventoryPosition.correctedQty`
(from the incoming event attributes) - UNUSED

`inventoryPositionStatus`

  • `inventoryPosition.status`
    from the GraphQL query*
  • Otherwise, the value is set to
    `CREATED`

`inventoryPositionRef`

  • `inventoryPosition.ref`
    from the GraphQL query*
  • Otherwise, the value is generated based on the following pattern:
    `<productRef>:<locationRef>:<type>`
    .
    For example:
    • If the
      `productRef`
      (Event attribute) is
      `PRDREF`
    • And the
      `locationRef`
      (Event attribute) is
      `LOCREF`
    • And the Inventory Position Type is
      `DEFAULT`
      :
      • The value is taken from the incoming event
        `entitySubtype`
      • If the
        `entitySubtype`
        is undefined (null), the value is set to
        `DEFAULT`
    • The generated Inventory Position Reference will be
      `PRDREF:LOCREF:DEFAULT`

`inventoryPositionOnHand`

  • `inventoryPosition.onHand`
    from the GraphQL query*
  • Otherwise, the value is set to 0

`inventoryPositionExists`

  • TRUE if the Inventory Position exists 
  • FALSE if the Inventory Position doesn't exist

*The first option will occur when the Inventory Position already exists; otherwise, the second option will occur.

Version History

2025-02-18

v25.2.18

Refers to the Product Release Version.