Appearance
BusinessUnitQualifiers — New Item Structure (June 2026)
Date Discovered: June 4, 2026
Sample File: ecommerce_20260603222533716_001.jsonl (CEUS channel)
Status: Live — in production as of June 4, 2026
Summary
IBUQ (Business Unit Qualified) fields have moved from flat attributes on Items[].Attributes to a new nested array: Items[].BusinessUnitQualifiers[]. Each entry represents one BU or region's data for that item.
Before (May 2026)
json
{
"Items": [{
"EntityId": 435946,
"Attributes": {
"ItemManufacturerItemNo": "EHK310B",
"IBUQBUName": "CEUS",
"IBUQEffectiveBusinessUnit": "CEUS",
"IBUQERPItemKey": null,
"IBUQERPItemNumber": "EHK310B",
"IBUQBUActiveinECommerce": true,
...all IBUQ fields flat on item...
}
}]
}After (June 2026)
json
{
"Items": [{
"EntityId": 435946,
"Attributes": {
"ItemManufacturerItemNo": "EHK310B",
"IBUQBUName": null,
"IBUQEffectiveBusinessUnit": null,
...IBUQ fields null at item level...
},
"BusinessUnitQualifiers": [
{
"EntityId": 513622,
"EntityTypeId": "IBUQ",
"FieldSetId": "IBUQCEUS",
"Attributes": {
"IBUQBUName": "CEUS",
"IBUQEffectiveBusinessUnit": "CEUS",
"IBUQERPItemNumber": "EHK310B",
"IBUQBUActiveinECommerce": true,
"IBUQDescriptiveItemName": {"en": "10 kW Electric Heater Kit..."},
...full BUQ data...
}
},
{
"EntityId": 664867,
"EntityTypeId": "IBUQ",
"FieldSetId": "IBUQCEFL",
"Attributes": {
"IBUQBUName": "CEFL",
"IBUQEffectiveBusinessUnit": "CEUS",
"IBUQMerchandisedIntoThisBusinessUnit": true,
...sparse overrides only...
}
},
{
"EntityId": ...,
"FieldSetId": "IBUQCESC",
"Attributes": { ...sparse... }
},
{
"EntityId": ...,
"FieldSetId": "IBUQCEMA",
"Attributes": { ...sparse... }
}
]
}]
}Record Hierarchy
Product (EntityId: 650984)
├── Attributes (Product-level)
│ ProductId, ProductMainSupplier, ProductShortDescription,
│ ProductMerchandisedIntoBUChannels, Taxonomy refs...
├── InboundLinks [] — category assignments
├── OutboundLinks []
├── Resources [] — product-level media
└── Items []
└── Item (EntityId: 435946)
├── Attributes (Item-level, non-BU-specific)
│ ItemManufacturerItemNo, ItemAmps, ItemKilowattkW,
│ ItemDimensions, ItemCountryofOrigin, ItemPhase...
│ (physical specs, IDs, flags — ~41 non-null attrs)
│ NOTE: IBUQ fields are NULL here now
├── Resources [] — item-level media
├── InboundLinks [], OutboundLinks []
└── BusinessUnitQualifiers []
├── [0] IBUQCEUS (master) — 39 attrs
│ Full BU data: descriptions, UOMs, EComm flag,
│ ERP numbers, shipping, ordering, rankings...
├── [1] IBUQCEFL (CE Florida) — 10 attrs
│ Sparse: BUName, EffectiveBU, MerchandisedInto,
│ ConcatName, DisplayDesc, TaxonomyVerified
├── [2] IBUQCESC (CE South Central) — 10 attrs
│ Same sparse override pattern
└── [3] IBUQCEMA (CE Mid-Atlantic) — 10 attrs
Same sparse override patternData Location Map
| Data | Location | Examples |
|---|---|---|
| Physical specs | Item.Attributes | Amps, kW, dimensions, weight, voltage |
| Product IDs | Item.Attributes | ManufacturerItemNo, LegacyPIMItemNo, UPC, OpticalCode |
| Global flags | Item.Attributes | Prop65, OEMPart, SupplySyncItem, HydrosItem |
| Inventory (all subs) | Item.Attributes | ItemOnHandQtyInAllWatscoSubs |
| BU descriptions | BUQ.Attributes | DescriptiveItemName, LongDescription, ShortDescription |
| BU commerce flags | BUQ.Attributes | BUActiveinECommerce, ReferenceOnly, OnlineOnly |
| BU ordering | BUQ.Attributes | SellingUOM, StockingUOM, PurchasingUOM, OrderQtyIncrements |
| BU ERP keys | BUQ.Attributes | ERPItemKey, ERPItemNumber |
| BU shipping | BUQ.Attributes | ShippingCode, ParcelAllowed, ProhibitBackorder |
| Region presence | BUQ existence | CEFL BUQ present = item available in CE Florida |
Key Observations
Structure
BusinessUnitQualifiersis an array on each Item (sibling toAttributes,Resources,InboundLinks,OutboundLinks)- Each entry has
EntityId,EntityTypeId: "IBUQ",FieldSetId, andAttributes FieldSetIdidentifies the BU/region:IBUQCEUS,IBUQCEFL,IBUQCEMA,IBUQCESC, etc.
Data Model
- Master BUQ (e.g.,
IBUQCEUS): Contains full IBUQ data — descriptions, UOMs, ecommerce flags, etc. - Regional BUQs (e.g.,
IBUQCEFL,IBUQCEMA): Sparse — only contains overrides and region-specific flags - Regional BUQs reference the master via
IBUQEffectiveBusinessUnit: "CEUS" - Not all items have regional BUQs — product 646747 only has
IBUQCEUS
Business Units
Expected BU/region FieldSetIds:
IBUQCEUS— CE US (master for CE regions)IBUQCEFL— CE FloridaIBUQCEMA— CE Mid-AtlanticIBUQCESC— CE South CentralIBUQCESE— CE SoutheastIBUQCEST— CE South TexasIBUQCENE— CE NortheastIBUQCEPR— CE Puerto RicoIBUQCECP— CE Central PlainsIBUQSupplySync— SupplySyncIBUQGEM— GemaireIBUQBAK— BakerIBUQECM— East Coast Metal
Channel-Specific Filtering
- A CE export now only contains CE-relevant BUQs (CEUS + regional)
- A GEM export would contain the GEM BUQ
- This resolves the "spurious data" issue — each channel gets only its relevant BU data
Per-BU ERP Keys
- Each BUQ can have its own
IBUQERPItemKeyandIBUQERPItemNumber - In this sample, regional BUQs have null ERP keys (they inherit from master CEUS)
- SupplySync items would have Mincron ERP keys on their SupplySync BUQ
Items in Sample
| Product | Items | BUQs per first item | FieldSets |
|---|---|---|---|
| 650984 (Heat Kits) | 7 | 4 | CEUS, CEFL, CESC, CEMA |
| 646747 (Grilles) | 10 | 1 | CEUS only |
| 657046 (Heat Pumps) | 7 | 4 | CEUS, CEFL, CEMA, CESC |
Impact on Pipeline
Delta Loader
- Must detect
BusinessUnitQualifiersand store/index appropriately - Items without BUQs fall back to old flat
Attributesbehavior (backward compat during transition)
CSV Generator
- Must read IBUQ fields from
BusinessUnitQualifiers[].Attributes(by FieldSetId) instead ofItems[].Attributes - For regional output: filter by
FieldSetIdmatching the target region - For
itemdataflex.csv: select the BUQ matching the output BU - Inheritance: use regional BUQ fields when present, fall back to master BUQ for nulls
Per-BU/Region CSV Generation
- Can now produce CE Florida–specific CSVs by selecting
FieldSetId: "IBUQCEFL"BUQ - Inherit from master CEUS BUQ for fields not overridden in the regional BUQ
Questions for inRiver Team — ANSWERED (June 5, 2026)
When will this structure be in production full loads? → Now. Already live in sandbox nightly feeds as of June 4.
Will the old flat structure continue during a transition period, or is it a hard cutover? → No transition period. Hard cutover — old flat format is gone.
How do we determine which BUQ is the "master" for inheritance? →
IBUQEffectiveBusinessUnitis correct. The master BUQ is whereIBUQBUName == IBUQEffectiveBusinessUnit.Will GEM/BAK/ECM exports also have
BusinessUnitQualifiers, or only CEUS? → Yes, all BUs — but only the master BUQ (no regional sub-BUQs for GEM/BAK/ECM). Confirmed: BAK June 4 delta hasIBUQBAKas sole BUQ.What determines which regional BUQs are present on an item? → Any field declared in that channel. In practice, this will be a CVL representing whether the item is active in ecommerce for that region.
Delta triggers: What triggers a record to appear in a delta? → Any change to the item anywhere results in it being in the delta — not scoped to the export's channel.
⚠️ Volume implication:
IBUQERPOnhandInventoryQuantityupdates nightly. If inventory changes count as "any change," deltas could approach full-load size since most items have inventory movement daily.Delta completeness: Do deltas always contain ALL BUQs for an item? → Yes — deltas are complete records with all regional BUQs included, regardless of what triggered the item being considered a delta.
Empty BUQs as signals: Do we receive a regional BUQ object (even with all-null fields) to indicate the region carries the item? → Unsure — needs further testing. For now, treat BUQ presence as the carry signal.