Skip to main content
Back to AutoCore Hub

AutoCore Data Model — Complete Entity-by-Entity Mapping

Source of truth: Every entity and field below is derived from actual production data files in autocore/data/, entitydef/entitymodel.xml, and entitydef/entitymodel_vcdb.xml.


[!IMPORTANT] Single-Threaded Processing for Member Products While standard OFBiz data imports (like ImportDataFromCSV1) utilize multi-threading, Member Product CSV imports (configId=8005) run via a Single-Threaded route (importMemberProductWrapper) in production. This is because importing a member product orchestrates a complex entity graph (Product → Pricing → Inventory → Features → Category Membership), uses raw JDBC batching for high-frequency ProductFacility changes, and maintains global scorecard state (newPartsAdded, globalLBMMapCount). Multi-threading would cause race conditions and database deadlocks across these interdependent writes.


Part 1 — The PIES Domain (Product Information)

1.1 Product (Extended OFBiz Entity)

The hub of the entire data model. Every other entity connects here.

Dual-key identity:

Key PathFields
Legacy ERPdomainPartyId + mfrLineCode + mfrSubLineCode + partNumber
AAIA StandarddomainPartyId + aaiaBrandId + aaiaSubBrandId + partNumber

Field Mapping (from production data):

FieldExample ValueDescription
productId10000004Internal OFBiz surrogate key
partNumberCF4757Manufacturer's part number
internalNameBGBTCF4757Brand prefix + partNumber (search key)
domainPartyIdAutoCoreTenant/organization partition
aaiaBrandId32439AAIA brand identifier
allianceProductId12372Aftermarket Alliance network ID
primaryProductCategoryId22061FK → ProductCategory hierarchy
isHazardousMaterialY / NBoolean (PIES Segment B03)
minimumOrderQuantity1.000000PIES Segment B55
minimumOrderQuantityUomIdCACase / EA / etc. (from AutoCoreTypeData.xml Uom table)
harmonizedTariffCode8421230000Schedule B tariff code
nationalPopularityCodeNPC_ZAAIA Popularity Code (PIES E10-NPC)
acesApplicationsY / NHas ACES fitment records?
inventoryMessagePBActiveLifecycle/inventory status
isHawkIndexedY / NSynced to Hawk Search engine?
hawkIndexedDate2019-01-04 00:14:38.0Last Hawk sync timestamp
autoCreateKeywordsNAuto-generate search keywords
statusIdPRODUCT_STS_CPIES EXPI status (see below)

PIES EXPI Status Codes (from AutoCoreTypeData.xml):

statusIdstatusCodeDescription
PRODUCT_STS_00Proposed
PRODUCT_STS_11Released
PRODUCT_STS_CCCurrent
PRODUCT_STS_55Temporarily Unavailable
PRODUCT_STS_77Superseded
PRODUCT_STS_88Discontinued
PRODUCT_STS_99Obsolete

1.2 LegacyBrandMapping

Purpose: Translates legacy ERP line codes into modern AAIA brand IDs. This is the first operation performed by importMemberProductWrapper before any product record can be resolved or upserted.

FieldExample ValueDescription
aaiaBrandId29370, 32123, 29372Modern AAIA brand ID (FK → AAIA standard)
domainPartyId1666Tenant partition
mfrLineCode1666_LISLegacy manufacturer line code
mfrSubLineCode1666_LIS_LISLegacy manufacturer sub-line code

Import service: configId=8009importLegacyBrandMapping


1.3 ProductCategory & ProductCategoryType

The AutoCore model uses a very specific category type hierarchy (from AutoCoreTypeData.xml):

productCategoryTypeIdDescription
AAIARoot AAIA category type
AAIA_BRANDBrand-level category
AAIA_SUBBRANDSub-brand category
AAIA_CATEGORYProduct category (parent: AAIA)
AAIA_SUBCATEGORYProduct subcategory
AAIA_TERMINOLOGYAAIA Part Terminology
AAIA_POSITIONSFitment position
ERP_LINELegacy ERP Line Code
ERP_SUBLINELegacy ERP Sub-Line Code
EPICOR_CATEGORYEpicor catalog category
ACDB_CATEGORYACdb catalog category
VEHICLE_MAKEVehicle Make (used in ACES)
VEHICLE_MODELVehicle Model (used in ACES)
VEHICLE_YEARVehicle Year (used in ACES)

From AutoCoreCatalogData.xml, the root catalog is AAIA_ROOT_CATALOG with AAIA_PART_SEARCH_CAT as the search category. OE parts use a separate OE_CATALOGOE_PART_SEARCH_CAT.


1.4 ProductPackage & ProductPackageType

Maps to PIES Package Segments (physical dimensions, barcodes, weight).

FieldExample ValueDescription
productId10008FK → Product
productPackageTypeIdEA / CAPIES PACK code
gtinId00019495070702GTIN/UPC barcode
quantityIncluded1.000000 / 20.000000Items per package
weight7.950000Gross weight
weightUomIdWT_lbWeight unit of measure
height10.375000Height dimension
heightUomIdINHeight UoM
width11.375000Width dimension
widthUomIdINWidth UoM
packageDepth24.375000Depth dimension
depthUomIdINDepth UoM
fromDate2017-06-02 19:58:27.992Effective date

PIES PACK Codes (from AutoCoreTypeData.xml):

  • EA = Smallest Pack (Consumer Level)
  • PK = Inner Pack (shippable)
  • BX = Inner Pack (non-shippable)
  • CA = Case
  • PL = Pallet

1.5 ProductFacility (Extended — JDBC-Batched)

Tracks inventory at a specific warehouse. Updated via raw JDBC batching (not OFBiz Entity Engine) during importMemberProduct to avoid performance degradation and locking.

FieldExample ValueDescription
productId10000004FK → Product
facilityId10643FK → Facility (warehouse/store ID)
isPrimaryFacilityYBoolean — primary stocking location
invDemand0.000000Historical demand velocity metric
quantityOnHandPhysical stock count
posUnitsPoint-of-sale units (from DW)
lastInventoryDate2018-12-22 07:24:25.0Last inventory reconciliation date

Inventory lookup methods (configured per Facility.inventoryLookupMethod):

enumCodeDescription
STANDARDUses OFBiz InventoryItem records
ERP_SNAPSHOTUses ProductFacility.lastInventoryCount from ERP
VIC_SNAPSHOTUses VIC (Vendor Inventory Connection) snapshot
VICLive VIC quote request
IPOLive IPO quote request

1.6 ProductPrice (Extended)

One product can carry multiple simultaneous price points for different channels, tiers, and agreements.

FieldExample ValueDescription
productId10000001FK → Product
productPricePurposeIdPURCHASE / SUPPLY / NAP_PRICEContext of the price
productPriceTypeIdP1 / P2 / MSR / WD1Price tier code
productStoreGroupId_NA_Geographic/org price group
price252.400Monetary value
currencyUomIdUSDCurrency
fromDate2018-12-24 12:47:24.576Effective start date

Key productPriceTypeId values (from AutoCoreTypeData.xml):

CodeDescription
P1P8WD (Warehouse Distributor) Price tiers
MSRManufacturer's Suggested Retail
JOBBER_PRICEJobber Price
CORE_PRICECore Price (surcharge/deposit)
WD1Distributor's Price
CATCatalog Price
LIST_PRICEStandard List Price (OE parts)
NAP_PRICENational Account Pricing

1.7 ProductFeature & ProductFeatureType

The flexible extension layer for PIES/PAdb attributes that don't fit fixed Product columns.

FieldExample ValueDescription
productFeatureId100091Surrogate key
productFeatureTypeIdEMISSION_CODE / 2000Type classifier
descriptionLegal / 5720838Human-readable value
idCode1External code/reference

Key productFeatureTypeId values (from AutoCoreTypeData.xml):

TypeDescription
EMISSION_CODEEmission compliance code
WARRANTY_YEARS / WARRANTY_MONTHSWarranty duration
HAZMATHazardous material flag
LENGTH / STROKEPhysical measurements
20002032PAdb (Product Attribute Database) attributes (Brake Shoe Width, Friction Material, Hub Type, etc.)

Feature Application Types (how features attach to products):

  • PADB_ATTRIBUTE — PAdb standard attribute
  • SAT_ATTRIBUTE — Supplies Accessories & Tools attribute
  • STANDARD_FEATURE — Standard vehicle feature (used in ACES)

1.8 ProductAttribute

Key-value store for product attributes that are not standard PAdb features.

From AutoCoreCatalogData.xml (OE parts):

<ProductAttribute productId="2088" attrName="oePartCoreFlag" attrValue="N" attrType="OE_PART_CORE_FLAG"/>

Stores dynamic PIES data like isPcdbAttribute, sequenceNum, languageId.


1.9 GoodIdentification

Cross-reference table mapping product IDs across multiple external systems.

goodIdentificationTypeIdDescription
MANUFACTURER_ID_NOMPN — Manufacturer Part Number
VMRSVehicle Maintenance Reporting System code
ACCUPI_PART_IDAccuPI OE part ID
ACCUPI_PART_ID_USAAccuPI US-specific OE part ID
ACCUPI_PART_ID_CANAccuPI Canada-specific OE part ID

1.10 ProductContent & ProductContentType

Rich media and text content attached to a product (from AutoCoreTypeData.xml):

TypeDescription
KEYWORD_SEARCHSearch keywords
EXTENDED_DESCExtended description
MARKETING_DESCMarketing description
MKT_CTNTMarket Copy content
DIGITAL_ASSETImages, PDFs, videos
INVOICE_DESCInvoice description
SHIPPING_RESTRICTIONShipping restriction notes
ACA_DEF_IMAGEACA default product image

Part 2 — The ACES / VCdb Domain (Vehicle Configuration)

The ACES domain uses the OFBiz Product entity as a polymorphic node to represent Vehicles. This is a critical design decision — vehicles are Products with isVirtual=Y or isVariant=Y, connected via ProductAssoc and ProductFeatureGroupProductAppl.

2.1 Three-Level Vehicle Hierarchy

BaseVehicle (isVirtual=Y, isVariant=N)
└── Vehicle [per Region] (isVirtual=Y, isVariant=Y)
└── VehicleConfig (isVirtual=N, isVariant=Y)

From AutoCoreVCDBData.xml:

<!-- Level 1: Base Vehicle (Year+Make+Model) -->
<Product productId="1010" productName="2009 Chevrolet Suburban 1500" internalName="30025"
isVirtual="Y" isVariant="N"/>

<!-- Level 2: Vehicle (Submodel + Region) -->
<Product productId="1250" productName="2009 Chevrolet Suburban 1500 LT" internalName="72128"
isVirtual="Y" isVariant="Y"/>
<ProductGeo productId="1250" geoId="USA" description="1"/>

<!-- Level 3: VehicleConfig (Engine+Transmission+Brake+Body+Drive configs) -->
<Product productId="1100" internalName="VC-1100" isVirtual="N" isVariant="Y"/>

2.2 Vehicle Relationship Chains

RelationshipEntityproductAssocTypeId
BaseVehicle → VehicleProductAssocPRODUCT_VARIANT
Vehicle → VehicleConfigProductAssocPRODUCT_VARIANT
VehicleConfig → PartProductAssocVEHICLE_APPL
VehicleConfig → FeaturesProductFeatureGroupProductAppl(engine, trans, brake, etc.)
Vehicle → Sub-ModelProductFeatureApplSTANDARD_FEATURE

2.3 Vehicle Configuration Feature Groups (from AutoCoreVCDBTypeData.xml)

Each VehicleConfig product has a set of ProductFeatureGroups attached, one per system:

Feature Group TypeFeature TypesDescription
ENGINE_CONFIGENGINE_LTR, ENGINE_CC, CYLINDERS, BLOCK_TYPE, FUEL_DELIVERY_CONFIG, ASPIRATION, HORSE_POWERFull engine specification
TRANSMISSIONTRANSMISSION_TYPE, TRANSMISSION_SPD, TRANSMISSION_CTRLTransmission details
BRAKE_CONFIGFRONT_BRAKE_TYPE, REAR_BRAKE_TYPE, BRAKE_SYSTEM, BRAKE_ABSBrake system
SPRING_TYPE_CONFIGFRONT_SPRING_TYPE, REAR_SPRING_TYPESuspension springs
STEERING_CONFIGSTEERING_TYPE, STEERING_SYSTEMSteering type
BODY_STYLE_GRPBODY_STYLEBody style (sedan, SUV, etc.)
BODY_STYLE_CONFIGBODY_NUM_DOORS, BODY_TYPEBody configuration
DRIVE_TYPE_GRPDRIVE_TYPEFWD / RWD / AWD / 4WD
BED_CONFIGBED_LENGHT, BED_TYPETruck bed config
WHEEL_BASE_GRPWHEEL_BASE, WHEEL_BASE_MATRICWheelbase measurement
MFR_BODY_CODE_GRPMFR_BODY_CODEManufacturer body code

2.4 Vehicle Category Classification

The Make/Model/Year classification is done via ProductCategory + ProductCategoryMember:

<ProductCategory productCategoryId="1010" productCategoryTypeId="VEHICLE_MAKE" categoryName="47" description="Chevrolet"/>
<ProductCategory productCategoryId="1011" productCategoryTypeId="VEHICLE_MODEL" categoryName="497" description="Suburban 1500"/>

<!-- Associates BaseVehicle to Make, Model, and Year categories -->
<ProductCategoryMember productCategoryId="1010" productId="1010"/> <!-- Make -->
<ProductCategoryMember productCategoryId="1011" productId="1010"/> <!-- Model -->
<ProductCategoryMember productCategoryId="1014" productId="1010"/> <!-- Year -->

2.5 Region Mapping

Vehicles are region-scoped via ProductGeo:

geoIddescriptionRegion
USA1United States
CAN2Canada
MEX3Mexico

Vehicle region group VRG includes USA, CAN, and MEX.


Part 3 — The Organization / Party Domain

3.1 Party Hierarchy

From AutoCoreExtData.xml, the core organizational structure:

partyIdgroupNameRole(s)Description
AAIAAAIAASSOCIATION, CONTENT_ADMINThe Auto Care Association
AutoCoreAutoCoreASSOCIATION, OWNER, DOMAIN_PARTYAutoCore (primary tenant)
AHQ-WAHQ-WINTERNAL_ORGANIZATIO, DOMAIN_PARTYAPW (Alliance Parts Warehouse)

OE Manufacturers (from AutoCoreCatalogData.xml):

partyIdgroupNameOE MFR ID
6656Chrysler5
6657Acura (Honda)1
6658Ford8
6659BMW4

3.2 National Account Programs (NAP)

The NAP system ties pricing to customer groups via Agreement entities.

Flow: Party (AutoCore)Agreement (NAP_AGREEMENT)Party (CustomerGroup)PartyIdentification (NAP_PRICE_CODE)

agreementIdCustomer GroupPrice Code Ref/Core
1800FirestoneZAA / ZAB
1801Goodyear TSNZAC / ZAD
1803MeinekeZAG / ZAH
1805Pep BoysZAK / ZAL

Part 4 — Import Configuration Map

From AutoCoreExtData.xml, all DataManagerConfig entries:

configIdServiceScript TitleFormat
8004importAPWProductsAPW ProductsCSV
8005importMemberProductMember Products ⚠️ single-threadedCSV
8006importVicInventorySnapshotVIC Inventory SnapshotXML
8007importAAIABrandsAAIA BrandsCSV
8009importLegacyBrandMappingLegacy Brand MappingCSV
`8011"importPIESPIESXML
`8015"importNAPProductPricesNAP Product PricingCSV
`8022"importMemberProductInventoryMember Product InventoryCSV
`8023"importPIESSAXPIES SAX ParserXML SAX

Part 5 — Full Entity Relationship Diagram (ERD)

AutoCore Full Entity Relationship DiagramUse mouse wheel to zoom, drag to pan • Pull bottom edge to resize

Part 6 — ACES Vehicle Hierarchy ERD

ACES Vehicle Hierarchy & ConfigurationUse mouse wheel to zoom, drag to pan • Pull bottom edge to resize

Part 7 — Import Workflow Sequence

Member Product Import WorkflowUse mouse wheel to zoom, drag to pan • Pull bottom edge to resize

Generated from: autocore/data/*.xml | Last updated: 2026-05-02