Hollander data sources

Index of MSSQL Hollander, PostgreSQL hollander_ic, and hollander_ic_urgpro. Row counts: MSSQL from sys.partitions; Postgres pg_stat_user_tables (estimate).

What the interchange updater does

This application rebuilds URG’s interchange list — the table that powers part-request resolution — by combining Hollander’s interchange data with URG member-yard data and mapping it onto the ACES/AAIA vehicle catalog. Hollander periodically ships an interchange update (a full SQL Server .bak); the pipeline below ingests it, parses it, enriches it, and rebuilds the hollander_ic_urgpro schema. Once validated, that schema is promoted to production (hollander_ic).

The heavy lifting lives in two PostgreSQL functions — split_hollander_app() (parses the free-text application) and get_aaia_position() (derives the part position) — orchestrated by the Laravel commands shown for each stage.

Current build output — hollander_ic_urgpro (live row estimates)

9,094,686
urg_interchangelist
Enriched interchange master
22,462
carline_w_make
Vehicles with brand + hol_id
1,620,347
ids2hol
OEM number → interchange
7,744,136
interchangelist_dist
Distinct interchange lookup

The pipeline

  1. 1
    Sync base data MSSQL ENTERPRISE → Postgres

    Pulls the 10 Hollander base tables from the MSSQL ENTERPRISE database (the interchange version Hollander ships as a .bak) into Postgres: interchangelist, indexlist, indexlistapp, interchangenote, carline, manufacturer, ptype, ids2hol, remarks, version.

    php artisan hollander:sync-from-mssql
  2. 2
    Carline & make carline → carline_w_make

    Builds carline_w_make and assigns each vehicle its brand through 435 manufacturer rules (ported from set_makes.sh) — GM/Chrysler year-splits, the Dodge→Ram rebrand, idxmodel disambiguation — then carries forward each carline’s hol_id.

    php artisan hollander:build --phase=2
  3. 3
    Build the interchange list interchangelist → urg_interchangelist (~9M rows)

    The core step. Parses every free-text application string via the split_hollander_app() database function → model, year range, engine, VIN-digit filters and left/right; joins carline for make and indexlistapp for the L/R interchange number; sets the AAIA position via get_aaia_position(); appends synthetic “NON-INTERCHANGE” one-to-one rows (every part type × carline) so parts with no interchange still resolve to a vehicle; and explodes VIN-digit ranges into discrete rows.

    php artisan interchange:update
  4. 4
    OEM cross-reference Interchange.Int_Pline → ids2hol

    Rebuilds ids2hol (OEM part number → interchange) from the Interchange database’s Int_Pline table — classifying left/right from the part description and resolving each OEM number to the real L/R interchange via the freshly-built list.

    php artisan interchange:build-ids2hol
  5. 5
    Derived lookups urg_interchangelist → interchangelist_dist

    Builds the distinct interchange / left-right / part-type lookup table and the other derived tables used for fast resolution.

    php artisan hollander:build --phase=4
  6. 6
    Validate hollander_ic_urgpro vs hollander_ic

    Read-only comparison of the freshly-built schema against the golden production schema — row counts, distinct interchange numbers and part types, and parsed-field coverage — so a build can be checked before going live.

    php artisan interchange:validate
  7. 7
    Publish (gated) hollander_ic_urgpro → hollander_ic

    Reversible production cutover: renames the current production schema to a timestamped backup and promotes the freshly-built schema in its place. Dry-run by default; requires an explicit confirmation and passes a row-count sanity check first.

    php artisan interchange:publish --confirm=PROMOTE

Data sources & table inventory

MSSQL Hollander Connected

ENTERPRISE · localhost:1433
Schema Table Rows (approx)
dbo h-Carline 22,454
dbo h-Hollander_Interchange_Version 1
dbo h-IDS2HOL 527,174
dbo h-IndexList 1,700,027
dbo h-IndexListApp 8,016,472
dbo h-InterchangeList 2,024,812
dbo h-InterchangeNote 2,989,140
dbo h-Manufacturer 104
dbo h-PType 423
dbo h-REMARKS 1,795

PostgreSQL hollander_ic OK

bucket · 100.27.147.132:5432
Name Source Rows (est.)
urg-app_w_airbag urg-table 20,640
h-carline h-table 21,726
urg-carline_dist urg-table 21,726
urg-carline_w_make urg-table 32
urg-carline_w_make_dist urg-table 1,344
urg-carline_w_make_ic urg-table 22,018
urg-carline_w_make_powerlink urg-table 0
urg-carline_w_make_urg urg-table 0
urg-carlineidxdist urg-table 0
h-hollander_interchange_version h-table 1
urg-ic_numbers urg-table 731,530
h-ids2hol h-table 1,613,278
urg-ids2hol_array urg-table 747,938
urg-ids2hol_array_org urg-table 264,791
urg-ids2hol_org urg-table 513,492
urg-ids2hol_pt urg-table 10,707
h-indexlist h-table 1,657,508
h-indexlistapp h-table 7,804,428
h-interchangelist h-table 1,981,170
urg-interchangelist_dist urg-table 7,971,116
h-interchangenote h-table 2,902,500
h-manufacturer h-table 103
urg-oem_mapping_requests urg-table 12
urg-oem_match_queue urg-table 191,718
urg-oem_uploads urg-table 9
urg-pin_pro_ic urg-table 2,110,255
urg-pline_pl urg-table 1,609,731
h-ptype h-table 429
urg-ptype_salessupport urg-table 423
h-remarks h-table 2,762
urg-retired_part_numbers urg-table 0
urg-urg_interchangelist urg-table 9,398,390
urg-ptype_view urg-view

PostgreSQL hollander_ic_urgpro OK

bucket · 100.27.147.132:5432
Name Source Rows (est.)
urg-app_w_airbag urg-table 20,952
h-carline h-table 22,462
urg-carline_dist urg-table 22,462
urg-carline_w_make urg-table 22,462
urg-carline_w_make_dist urg-table 1,358
urg-carline_w_make_ic urg-table 22,462
urg-carline_w_make_powerlink urg-table 22,462
urg-carline_w_make_urg urg-table 22,462
urg-carlineidxdist urg-table 2,154
h-hollander_interchange_version h-table 1
urg-hollander_numbers urg-table 8,209,005
urg-hollander_numbers_retire_candidates urg-table 464,429
urg-ic_numbers urg-table 755,137
h-ids2hol h-table 1,620,347
urg-ids2hol_array urg-table 751,914
h-indexlist h-table 1,709,127
h-indexlistapp h-table 8,067,388
h-interchangelist h-table 2,037,758
urg-interchangelist_dist urg-table 7,744,136
h-interchangenote h-table 3,000,821
h-manufacturer h-table 104
urg-oem_mapping_requests urg-table 0
urg-oem_match_queue urg-table 0
urg-oem_uploads urg-table 0
urg-pin_pro_ic urg-table 0
urg-pline urg-table 1,621,015
urg-pline_array urg-table 751,914
urg-pline_pl urg-table 1,616,799
urg-plinetemp urg-table 1,616,679
h-ptype h-table 423
urg-ptype_salessupport urg-table 0
h-remarks h-table 1,820
urg-retired_part_numbers urg-table 0
urg-tmp_vin_5th urg-table 2,612
urg-tmp_vin_6and7th urg-table 0
urg-tmp_vin_7th urg-table 29
urg-tmp_vin_8th urg-table 7
urg-urg_interchangelist urg-table 9,094,686
urg-urg_interchangelist_holid urg-table 6,953,944
urg-urg_interchangelist_tmp1 urg-table 2,044,534
urg-urg_interchangelist_tmp2 urg-table 2,089,739
urg-ptype_view urg-view