Fluent Commerce Logo
Docs
Sign In

Enable Batch Inventory Pre-Processing

How-to Guide

Authors:

Girish Padmanabha, Randy Chan

Changed on:

12 Feb 2025

Key Points

  • Inventory Batch Pre-Processing (BPP) occurs before batch inventory updates reach the workflow engine. If you rely on every incoming inventory item hitting the workflow, ensure you configure the job-level meta value appropriately or disable BPP at the relevant account/retailer level. However, we recommend using the job-level option for greater flexibility. Be sure to read through this article in full—especially the “Managing Batch Pre-Processing” section—before making any changes.
  • If enabled at an ACCOUNT level, every retailer under that ACCOUNT will have their batch inventory updates pre-processed
  • If enabled at RETAILER levels, it will only pre-process updates for that specific retailer
  • The RETAILER context setting overrides the ACCOUNT context setting. This allows you to enable the whole account and disable it for specific retailers. 

Steps

Setting up Batch Pre-Processing

Step arrow right iconWorkflow Comparison

The first step is to ensure that your inventory workflows are compatible with Batch Pre-Processing to ensure that they work correctly and won’t impact your inventory accuracy.

Batch Pre-Processing is based on the logic within the inventory module. This diagram details the high-level view of the logic.

No alt provided
Signs of a compatible workflow
  • Uses the latest inventory module reference workflow and reference plugin
  • Transient quantities are either standard/default types or, if custom, are properly input in the batch payload
  • Does not rely on unchanged inventory records for further processing
Signs of an incompatible workflow
  • The workflow executes logic on unchanged inventory records (which Batch Pre-Processing typically filters out)

Step arrow right iconManaging Batch Preprocessing (BPP) at Account and Retailer Levels

Batch Pre-Processing is enabled by default. You will notice that the setting

`fc.enable.batch.preprocessing`
is set to
`TRUE`
at your configured context level (Account or Retailer). If this setting is not explicitly configured, the default behavior is to enable Batch Pre-Processing for the account.

Managing Batch Preprocessing (BPP) at Account and Retailer Levels

The

`fc.enable.batch.preprocessing`
setting allows you to enable or disable Batch Preprocessing (BPP) at both the Account and Retailer levels, with Retailer-level settings overriding Account-level settings. Here's how it works:

Disabling BPP
  • At the Account Level:
    To disable BPP globally for all Retailers under an Account, set
    `fc.enable.batch.preprocessing`
    to
    `FALSE`
    at the Account level. This sets a default behavior for all Retailers unless overridden by specific Retailer-level settings.
  • At the Retailer Level:
    To disable BPP for a specific Retailer, set
    `fc.enable.batch.preprocessing`
    to
    `FALSE`
    for that Retailer. This ensures that BPP is turned off for the selected Retailer, regardless of the Account-level setting.
Enabling BPP
  • To Enable BPP Globally:
    Set
    `fc.enable.batch.preprocessing`
    to
    `TRUE`
    at the Account level. This enables BPP for all Retailers within the Account unless explicitly overridden by a Retailer-level setting.
  • To Enable BPP for a Specific Retailer:
    • If the Account-level setting is
      `FALSE`
      , you can enable BPP for a specific Retailer by setting
      `fc.enable.batch.preprocessing`
      to
      `TRUE`
      for that Retailer.
    • This Retailer-level setting will take precedence over the Account-level setting, ensuring BPP is enabled only for the desired Retailer.
Key Rules and Behavior
  • Retailer-Level Overrides: A Retailer-level setting (
    `TRUE`
    or
    `FALSE`
    ) will always override the Account-level setting for that specific Retailer.
  • Global Defaults: The Account-level setting acts as the default behavior for all Retailers unless a specific Retailer-level override is applied.
  • Case-Insensitive: The value input for
    `fc.enable.batch.preprocessing`
    is not case-sensitive (e.g.,
    `TRUE`
    and
    `true`
    are treated the same).
  • Flexible Control: This setup allows for flexible configurations, enabling global control while allowing exceptions at the Retailer level.

By configuring

`fc.enable.batch.preprocessing`
at the appropriate level, you can efficiently manage BPP behavior for both global and specific Retailer contexts.

After updating the setting, the new value will take effect within 5 minutes. The handling of all inventory within the batches created under a job will be determined based on the logic defined by the input at the job level, including the

`meta`
key, as well as the configuration of the
`fc.enable.batch.preprocessing`
setting. Once the update is applied, the inventory will either be processed through Batch Pre-Processing (BPP) or handled directly according to these combined rules. Refer to the details below for further clarification.

Inventory Batch Preprocessing Settings and Behavior in Job API

The

`meta`
object allows for the inclusion of additional metadata when creating a Job. The currently supported key within
`meta`
is
`preprocessing`
, which can influence whether the Batch Preprocessing Process (BPP) is utilized based on the account's settings.

The behavior of the

`meta.preprocessing`
key is governed by the
`fc.enable.batch.preprocessing`
configuration setting. Below is a table outlining the expected behavior:

`fc.enable.batch.preprocessing `
value

`meta.preprocessing`
Value

Additional Info in Job Payload

Result

true

"preprocessing": "skip"

BPP should not be used

Do not use BPP

true

"preprocessing": "enabled"

BPP should be used

Use BPP

true

"meta": null or "meta": {}

BPP should be used

Use BPP

true

Omitted or previously created Jobs

BPP should be used

Use BPP

false

Any value

BPP should not be used (overridden)

Do not use BPP

  • When
    `fc.enable.batch.preprocessing`
    is
    `true`
    :
    • "preprocessing": "skip"
      • Action: BPP should not be used.
    • "preprocessing": "enabled" ( any value other than "skip" )
      • Action: BPP should be used.
    • "meta": null or "meta": {}
      • Action: BPP should be used.
    • Jobs without
      `meta`
       
      • Action: BPP should be used.
  • When
    `fc.enable.batch.preprocessing`
    is
    `false`
    :
    • Regardless of the
      `meta.preprocessing`
      value (including
      `null`
      or omitted)
      • Action: BPP should not be used.
  • The fc.enable.batch.preprocessing setting takes precedence over the
    `meta.preprocessing`
    value. If fc.enable.batch.preprocessing is set to
    `FALSE`
    , BPP will not be used regardless of the
    `meta.preprocessing`
    value.
  • Ensure that when setting
    `meta.preprocessing`
    , only the supported values (
    `"skip"`
    or
    `"any value not skip"`
    ) are used to avoid unexpected behavior.
  • A job-level override will affect only the batches containing inventory data created under the specific job, and this impact will remain in effect until the job expires.

Step arrow right iconPost enablement analysis

Due to the way Batch Pre-Processing works, it is most efficient with large amounts of updates and a significant unchanged rate. Through our Metrics API we provide metrics to track the total number of batch items processed and the ratio of unchanged items.

Desired volumes

For the total amount of batch inventory updates, you should be aiming for the following:

  • At least 1 million total per day
  • Grouped in batches of at least 100,000

For the unchanged rate of batch inventory updates, you should be aiming for the following:

  • Ideally, the unchanged rate should be greater than 50%
    • Once the unchanged rate falls below 50% (the majority of submitted changes are considered updates), Batch Pre-Processing loses its efficiency gains vs batch inventory updates going straight into workflows
    • Most retailers have an unchanged rate of greater than 80%
Using the Metrics API to analyse
Finding total amount

The metric to use here is bpp_records_processed_total. This will return the total count of all batch inventory updates processed through Batch Pre-Processing for the given time period

Find the unchanged rate

This will use an additional metric. To calculate the unchanged rate you will want to divide the total unchanged records by the total records. The metric for unchanged records is bpp_records_unchanged_total.

E.g. (bpp_records_unchanged_total / bpp_records_processed_total)

Girish Padmanabha

Girish Padmanabha

Contributors:
Randy Chan

Copyright © 2025 Fluent Retail Pty Ltd (trading as Fluent Commerce). All rights reserved. No materials on this docs.fluentcommerce.com site may be used in any way and/or for any purpose without prior written authorisation from Fluent Commerce. Current customers and partners shall use these materials strictly in accordance with the terms and conditions of their written agreements with Fluent Commerce or its affiliates.

Fluent Logo