Author:
Fluent Commerce
Changed on:
18 Sept 2024
A topic on how to run Inventory Batches in the OMS.
Author:
Fluent Commerce
Changed on:
18 Sept 2024
An Inventory Batch is a bulk upload of Inventory Updates. These will typically range from 10,000 updates to in excess of 1 million inventory updates. By using the Batch API , you are able to leverage Fluent Big Inventory's ability to scale, enabling increased speed of inventory processing and more accurate inventory availability.
The primary use cases you should be using Inventory Batches:
After using this document, you will be able to run an Inventory Batch. If you need to extend or build on this document's capabilities, the below pages will link to the core capabilities used.
Capability | Description |
API to create & manage batch loading of information |
Author:
Fluent Commerce
Changed on:
18 Sept 2024
Please follow the Authentication API page for how to Authenticate against a Retailer.
The returned token will be used to authenticate all the following API calls.
Using the Job API you can create a new Batch Job.
1{
2 "name": "Batch Inventory Job",
3 "retailerId": "{{retailer.id}}"
4}
Language: json
Name: Example payload
Description:
[Warning: empty required content area]1{
2 "id": "199"
3}
Language: json
Name: Example response
Description:
[Warning: empty required content area]This id number is the Job id which has been created, save this id as we will use it in the following requests for sending a Batch. This Job id and the created Job will be used to group subsequent Batches together.
Using the Job API you can create an Inventory Batch to be processed under the previously created Job.
The URL is using the Job id returned by the last API call, for example 199 as per the previous response.
1{
2 "action": "UPSERT",
3 "entityType": "INVENTORY",
4 "source": "SAP-ERP",
5 "event" :"InventoryChanged",
6 "entities": [
7 {
8 "locationRef": "LOC1",
9 "skuRef": "SKU1",
10 "qty": 1534567,
11 "correctedQty": 0,
12 "retailerId": 2,
13 "attributes": {
14 "key1": "value1",
15 "complexJsonObject": {
16 "keyA": "valueA",
17 "keyB": [
18 "B",
19 "B1"
20 ]
21 },
22 "expectedOn": "2024-10-31T00:00:00.00Z",
23 "storageAreaRef": "LOC-1",
24 "condition": "NEW"
25 }
26 }
27 ]
28}
Language: json
Name: Example payload
Description:
[Warning: empty required content area]Field Name | Example Value | Mandatory/Optional | Notes |
action | "UPSERT" | Mandatory | Indicates the action being performed is an "UPSERT" |
entityType | "INVENTORY" | Mandatory | Specifies the type of entity being affected. In this case, it's related to inventory data. |
source | "SAP-ERP" | Optional | Represents the source of the data integration. This helps identify where the data is coming from, which is available in the sources dashboard. |
event | "InventoryChanged" | Optional | Indicates the specific event related to the inventory workflow, used to target a specific ruleset within the default catalog. |
locationRef | "LOC1" | Mandatory | A reference identifier for the location of the inventory item. |
skuRef | "SKU1" | Mandatory | A reference identifier for the stock-keeping unit (SKU) of the inventory item. |
qty | 250 | Mandatory | The quantity of the inventory item. |
correctedQty | 0 | Optional | The corrected quantity of the inventory item is used to adjust discrepancies. |
retailerId | 2 | Mandatory | The id of the retailer who is the owner of the corresponding inventory catalogue and workflow. The catalogue is identified using the format
|
attributes | { | Optional | Attributes can include complex data types such as JSON objects, arrays, booleans, numbers, and strings. |
1{
2 "id": "331"
3}
Language: json
Name: Example response
Description:
[Warning: empty required content area]The returned id will be used to check the Batch status in a following call. If you needed to send multiple groups of updates you would run this call for each group of Batches that you are running. If you needed to send 15,000 updates, you would run this 3 times for every 5,000 records( for illustration ) , all under the same Job, using the same job ID.
You can use the Job API again to check the status of an existing Job, this will share with you the status of Batches which are part of that Job.
1{
2 "jobId": "199",
3 "status": "OPEN",
4 "batch": [
5 {
6 "batchId": "331",
7 "status": "COMPLETE",
8 "createdOn": "2022-10-06T00:31:08.104+0000"
9 }
10 ],
11 "createdOn": "2022-10-06T00:31:08.104+0000"
12}
Language: json
Name: Example response
Description:
[Warning: empty required content area]You can view the status of a specific Batch as well, this provides a few more details than the previous Job status check.
The URL uses the Job id and the Batch id returned by previous APIs.
1{
2 "batchId": "331",
3 "entityType": "INVENTORY",
4 "status": "COMPLETE",
5 "start": 1,
6 "count": 10,
7 "total": 0,
8 "results": [],
9 "createdOn": "2022-10-06T00:36:09.344+0000"
10}
Language: json
Name: Example response
Description:
[Warning: empty required content area]Author:
Fluent Commerce
Changed on:
18 Sept 2024
This guide is designed to help you implement the enhanced
`attributes`
`attributes`
`attributes`
`expectedOn`
`storageAreaRef`
`condition`
`attributes`
`inventoryPosition.inventoryQuantity.attributes.<fieldname>`
`YYYY-MM-DDTHH:MM:SSZ`
`attributes`
While the
`attributes`
`expectedOn`
`storageAreaRef`
`condition`
Beyond the recommended attributes, you have the flexibility to include additional fields that are specific to your business requirements. Whether you need to send simple key-value pairs, nested JSON structures, or arrays, our system will process these and make them available within the workflow via
`inventoryPosition.inventoryQuantity.attributes.<fieldname>`
The table below provides examples of the recommended attributes along with their descriptions, usage, and examples. However, you are not limited to these fields—you can extend the
`attributes`
Attribute Description | Recommended Attribute Key Name | Example | Notes |
Specific storage locations in a warehouse. |
| "LOC1-SR-1" | Available in the workflow via
|
Date when new stock is expected. |
| "2024-10-31T00:00:00.00Z" | Available in the workflow via
|
Information on the manufacturing country. |
| "France" | Available in the workflow via
Alternate field name for this madeIn |
Details like production date and location. |
| { "batchNumber": "BATCH001", "productionDate": "2024-01-15T00:00:00.00Z" } | Available in the workflow via
|
Indicates the last date a product is safe to use. |
| "2025-12-31T23:59:59.00Z" | Available in the workflow via
|
Unique identifier for each supplier. |
| "SUP12345" | Available in the workflow via
|
Details on how inventory is quantified. Use Case: Ensure consistency in inventory counting, aid in order fulfillment, and simplify stocktaking processes. |
| "PCS" | Available in the workflow via
|
Unique identifier for high-value items. |
| "SN123456789" | Available in the workflow via
|
Links inventory to specific purchase orders. |
| "PO987654321" | Available in the workflow via
|
Source of inventory transfer. |
| "STORE01" | Available in the workflow via
|
Purpose of the inventory. |
| "For Sale" | Available in the workflow via
|
Indicates the condition of the inventory item. |
| "NEW" | Available in the workflow via
|
1{
2 "action": "UPSERT",
3 "entityType": "INVENTORY",
4 "source": "SAP_ERP",
5 "event" :"InventoryChanged",
6 "entities": [
7 {
8 "locationRef": "LOC_MEL",
9 "skuRef": "D45",
10 "qty": 350,
11 "correctedQty": 0,
12 "retailerId": 2,
13 "attributes": {
14 "expectedOn": "2024-10-31T00:00:00.00Z", // ISO 8601 format
15 "storageAreaRef": "LOC_MELB_RET2-SR1",
16 "condition": "NEW",
17 "countryOfOrigin": "China",
18 "expiryDate": "2025-12-31T23:59:59.00Z", // ISO 8601 format
19 "supplierId": "SUP12345",
20 "unitOfMeasurement": "PCS",
21 "serialNumber": "SN123456789",
22 "purchaseOrderNumber": "PO987654321",
23 "transferFrom": "STORE01",
24 "inventoryPurpose": "For Sale",
25 "manufacturingBatchInfo": {
26 "batchNumber": "BATCH001",
27 "productionDate": "2024-01-15T00:00:00.00Z" // ISO 8601 format
28 }
29 }
30
31 }
32
33 ]
34}
Language: json
Name: Example payload with enhanced inventory payload via Batch API
Description:
Example payload with enhanced inventory payload via Batch API
1
2{
3 "name": "INVENTORY_UPDATE",
4 "accountId": "YOUR_ACCOUNT",
5 "retailerId": "1",
6 "entityRef": "DEFAULT:2",
7 "entityType": "INVENTORY_CATALOGUE",
8 "entitySubtype": "DEFAULT",
9 "rootEntityType": "INVENTORY_CATALOGUE",
10 "rootEntityRef": "DEFAULT:2",
11 "attributes":
12 {
13 "inventoryUpdates":
14 [
15 {
16 "ref" : "testref1",
17 "productRef": "D45",
18 "locationRef": "LOC_MEL",
19 "qty": 350,
20 "correctedQty":0,
21 "type":"DEFAULT" ,
22 "inventoryQuantity": {
23 "attributes": {
24 "expectedOn": "2024-10-31T00:00:00.00Z", // ISO 8601 format
25 "storageAreaRef": "LOC_MELB_RET2-SR1",
26 "condition": "NEW",
27 "countryOfOrigin": "China",
28 "expiryDate": "2025-12-31T23:59:59.00Z", // ISO 8601 format
29 "supplierId": "SUP12345",
30 "unitOfMeasurement": "PCS",
31 "serialNumber": "SN123456789",
32 "purchaseOrderNumber": "PO987654321",
33 "transferFrom": "STORE01",
34 "inventoryPurpose": "For Sale",
35 "manufacturingBatchInfo": {
36 "batchNumber": "BATCH001",
37 "productionDate": "2024-01-15T00:00:00.00Z" // ISO 8601 format
38 }
39 }
40 }
41 ]
42 }
43}
Language: json
Name: Example payload with enhanced payload for direct updates via INVENTORY_UPDATE event
Description:
Example payload with enhanced payload for direct updates via INVENTORY_UPDATE event
Author:
Fluent Commerce
Changed on:
18 Sept 2024
Integration Guidelines for Sending Inventory Data with Attributes
When sending inventory data to the batch endpoint with BPP enabled, please adhere to the following guidelines to ensure successful processing:
`locationRef`
`skuRef`
`qty`
`correctedQty`
`retailerId`
The current best tool for visibility is to use the orchestration_audit events to understand the success and failures of Inventory Updates sent via batch. This provides visibility into the individual items included in the Batches.
Note: Right now, only Failures & Exception audit events are visible for Inventory.
After you have followed this guide and understand how to use Inventory Batches, we suggest reading a few more guides to enhance the usability of your Inventory implementation.
Guide | Description |
Learn how to send Inventory Updates via events | |
Learn how to send delta inventory updates via events |
Copyright © 2024 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.