Skip to main content
Back to AutoCore Hub

VCDB (Fitment) & PIES (Product) Integration Analysis

Question: Where does ACES fitment validation (VCDB) integrate with product data (PIES)?

Answer: None of the above. The integration is outsourced to the external Opticat cloud API. There is no internal service, entity, or import layer that bridges VCDB and PIES.


Evidence Matrix

LayerVCDB → PIES?PIES → VCDB?Verdict
Java importsVCDBServices never imports any PIES classPIESServices never imports any VCDB class❌ Zero
Entity modelentitymodel_vcdb.xml — separate file, autocore.vcdb packageentitymodel.xml — zero VCDb entity references❌ Zero foreign keys
DataImportServicesNever references BaseVehicle, VehicleID, or any VCDb entityN/A❌ No combined step
dispatcher.runSyncNo call from any VCDB service to any PIES service or vice versaSame❌ No orchestration

[!IMPORTANT] The two entity models (entitymodel.xml and entitymodel_vcdb.xml) are completely isolated schemas sharing only the OFBiz delegator connection. VCDb entities are all marked no-auto-stamp="true" — they are read-only ACES reference data, pre-loaded and never written to by the import pipeline.


The Actual Integration: Opticat SKU Bridge

The integration happens in a single method — AutoCoreB2CVehicleServices.getOpticatSearchResults():

Integration Mapping: VCDB to PIESUse mouse wheel to zoom, drag to pan • Pull bottom edge to resize

The SKU Construction

// From AutoCoreB2CVehicleServices.getOpticatSearchResults()
for (Map<String, Object> piesItem : parts) {
item = UtilGenerics.cast(piesItem.get("piesItem"));
sku = new StringBuilder();
// 1. Compressed part number (ACES data, from Opticat)
String stdPartNumber = ProductServices.compressString((String) item.get("partNumber"));
sku = sku.append(stdPartNumber).append("-");
// 2. Brand code (PIES data, from Opticat)
sku = sku.append((String) item.get("brandCode")).append("-");
// 3. Sub-brand code (PIES data, from Opticat)
sku = sku.append((String) item.get("subBrandCode"));

productSkuList.add(sku.toString());
// This SKU matches Product.allianceProductId in the local entity DB
}

[!CAUTION] The join between "which parts fit this vehicle" (ACES) and "what are the details of this part" (PIES) is performed entirely by Opticat's cloud service. The local system never correlates VCDb vehicle IDs with Product entity IDs. It trusts Opticat to have already ingested both ACES and PIES data and return the correct part numbers for a given vehicle.


Architectural Implications

Why this design?

ACdb fitment data (which part fits which vehicle) is enormous and complex — millions of vehicle-to-part mappings with attribute qualifiers (engine, submodel, position). Rather than maintaining this mapping locally, the AutoCore plugin delegates ACES fitment queries to Opticat and keeps only the VCDb reference data (vehicle DNA) locally for the Year/Make/Model dropdowns.

Risks

RiskImpactLikelihood
Opticat outage = complete fitment search failureHigh — no fallbackMedium
SKU mismatch between Opticat response and local Product.allianceProductIdPart details return empty for valid fitment resultsLow but silent
Hardcoded API credentials in OpticatSearchServicesSecurity vulnerabilityAlready present
No local ACES fitment cacheEvery fitment query = external HTTP callAlways

Source Files

FileRole
entitymodel_vcdb.xmlVCDb entity definitions (read-only reference data)
entitymodel.xmlPIES/Product entity definitions (no VCDb references)
VCDBServices.javaVCDb admin/CRUD (isolated)
PIESServices.javaPIES XML import (isolated)
AutoCoreB2CVehicleServices.javaVehicle search + SKU bridge
OpticatSearchServices.javaHTTP proxy to Opticat (hardcoded URL + credentials)
AutoCoreB2CProductServices.javaProduct detail retrieval (receives SKU from client)