Skip to content

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 pattern

Data Location Map

DataLocationExamples
Physical specsItem.AttributesAmps, kW, dimensions, weight, voltage
Product IDsItem.AttributesManufacturerItemNo, LegacyPIMItemNo, UPC, OpticalCode
Global flagsItem.AttributesProp65, OEMPart, SupplySyncItem, HydrosItem
Inventory (all subs)Item.AttributesItemOnHandQtyInAllWatscoSubs
BU descriptionsBUQ.AttributesDescriptiveItemName, LongDescription, ShortDescription
BU commerce flagsBUQ.AttributesBUActiveinECommerce, ReferenceOnly, OnlineOnly
BU orderingBUQ.AttributesSellingUOM, StockingUOM, PurchasingUOM, OrderQtyIncrements
BU ERP keysBUQ.AttributesERPItemKey, ERPItemNumber
BU shippingBUQ.AttributesShippingCode, ParcelAllowed, ProhibitBackorder
Region presenceBUQ existenceCEFL BUQ present = item available in CE Florida

Key Observations

Structure

  • BusinessUnitQualifiers is an array on each Item (sibling to Attributes, Resources, InboundLinks, OutboundLinks)
  • Each entry has EntityId, EntityTypeId: "IBUQ", FieldSetId, and Attributes
  • FieldSetId identifies 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 Florida
  • IBUQCEMA — CE Mid-Atlantic
  • IBUQCESC — CE South Central
  • IBUQCESE — CE Southeast
  • IBUQCEST — CE South Texas
  • IBUQCENE — CE Northeast
  • IBUQCEPR — CE Puerto Rico
  • IBUQCECP — CE Central Plains
  • IBUQSupplySync — SupplySync
  • IBUQGEM — Gemaire
  • IBUQBAK — Baker
  • IBUQECM — 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 IBUQERPItemKey and IBUQERPItemNumber
  • 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

ProductItemsBUQs per first itemFieldSets
650984 (Heat Kits)74CEUS, CEFL, CESC, CEMA
646747 (Grilles)101CEUS only
657046 (Heat Pumps)74CEUS, CEFL, CEMA, CESC

Impact on Pipeline

Delta Loader

  • Must detect BusinessUnitQualifiers and store/index appropriately
  • Items without BUQs fall back to old flat Attributes behavior (backward compat during transition)

CSV Generator

  • Must read IBUQ fields from BusinessUnitQualifiers[].Attributes (by FieldSetId) instead of Items[].Attributes
  • For regional output: filter by FieldSetId matching 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)

  1. When will this structure be in production full loads?Now. Already live in sandbox nightly feeds as of June 4.

  2. 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.

  3. How do we determine which BUQ is the "master" for inheritance?IBUQEffectiveBusinessUnit is correct. The master BUQ is where IBUQBUName == IBUQEffectiveBusinessUnit.

  4. 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 has IBUQBAK as sole BUQ.

  5. 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.

  6. 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: IBUQERPOnhandInventoryQuantity updates nightly. If inventory changes count as "any change," deltas could approach full-load size since most items have inventory movement daily.

  7. 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.

  8. 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.