Files
claudetools/clients/valleywide/app-modernization/research/schema-analysis.md
Mike Swanson e0a117b434 client(valleywide): init app modernization project — VB6/Access stack analysis
Initial research session for VWP application modernization. Analyzed 2.7GB
application archive, mapped ~130-table Access 97 schema via binary scan,
confirmed VB6 + P-Code compilation (decompilation viable), and identified
compliance requirements (certified payroll, 3-bank positive pay).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 10:10:35 -07:00

5.6 KiB

VWP.mdb Schema Analysis

Source: VWP.mdb (938MB, last written 2026-04-24, Jet 3.x / Access 97 format) Method: Binary scan (Jet 3.x format cannot be opened by modern ACE/DAO drivers)


Table Inventory by Domain

Projects & Jobs

Table Purpose
tblPROJECT Builders / general contractors
tblLOTINFO Individual job sites / lots
tblPLANS House plans / blueprints
tblOPTION Plan options / upgrades
tblELEVATION Architectural elevations
tblFINISH Finish types
tblCONINFO Contractor / contact info
tblProjDate Project scheduling dates
tblCHANGE Change orders
tblLotChange Lot-level change orders
tblSZONE Schedule zones
tblWORKTYPE Work type codes

Work Orders & Estimating

Table Purpose
tblORDERS Work orders
tblORDMatrl Work order materials
tblTAKE Material takeoffs (quantity estimates)
tblTOMATRL Takeoff materials
tblLOTMATRL Lot materials
tblOPTMATRL Option materials
tblPLANMAT Plan bill of materials
tblPOMATRL Purchase order materials
tblPOPTION Plan options (billing side)
tblPOptBill Plan option billing rates
tblPlanBill Plan billing rates
tblMEASURE Measurement records

Inventory & Purchasing

Table Purpose
tblINVPRICE / tblINVPRC Material price list
tblINVTRY Inventory on hand
tblSUPPLIER Vendor / supplier master
tblPOrder / tblPURCHORDR Purchase orders
tblPOrdMat PO line items
tblYardOrder / tblYardMemo Yard material orders
tblJCVENDOR Job cost vendor assignments

Crew & Payroll

Table Purpose
tblCREW Employee master
tblCREWLIST Crew-to-job assignments
tblCREWRATE Pay rate history
tblHRDAILY Daily hours entries
tblTIME Time records
tblHOURLIST Hour list by period
tblPAYHEADER Payroll run header
tblPAYCREW Per-employee payroll detail
tblPAYSHEET Pay sheets
tblPAYROLL Payroll summary
tblTOLABOR Labor cost totals
tblINCODES Earnings / deduction codes
tblCERTIFIED Certified payroll (govt contracts)
tblSC_Crew Scaffold crew assignments
tblScaffold Scaffold tracking
tblRCREW ? (repair crew?)

Accounts Receivable

Table Purpose
tblARMASTER Customer master
tblARINVOICE AR invoices
tblARTRANS AR transactions / payments
ARN_InvHistoryHeader Invoice history
tblCBOSalesCode Sales / billing codes
tblCBOWorkType Work type codes for billing
tblBPTYPE Billing / payment type
tblSWARTRANS AR variant (Southwest?)

Accounts Payable

Table Purpose
tblAPMASTER Vendor master
tblAPTRANS AP transactions
APH_JobDistDetail Job cost distribution detail
tblJCLIST Job cost list
tblJCTRANS Job cost transactions
tblJOBCOST Job cost summary
tblCHECKREC Check reconciliation

Bank / Positive Pay

Table Purpose
tblPosPayVWP Positive pay — VWP bank
tblPosPayCRD Positive pay — second bank
tblPosPaySWI Positive pay — third bank

Repair / Service

Table Purpose
tblREPAIR / tblREPAIRS Repair work orders
tblRepList Repair list / punch list

System / Config

Table Purpose
tblSECURITY / tblUsers User accounts / permissions
tblSYSInfo System configuration
tblGLAcct General ledger chart of accounts
tblTCINFO ? (TrueCommerce? Tax?)
tblPRGINFO Program / config info

Key Findings

This is a full construction ERP

Not a simple order tracker. Covers the entire plastering operation end-to-end:

  • Estimating → Work Orders → Crew Scheduling → Materials → Payroll → Invoicing → Collections

Certified Payroll (tblCERTIFIED)

Indicates government / prevailing wage work. Certified payroll is a legally mandated report format (federal / state). Any replacement system must preserve this or have a certified payroll module.

Positive Pay (3 bank accounts)

Bank fraud-prevention integration — the app generates positive pay files for three different bank accounts. This is a hard integration dependency.

Relationship names visible in binary

Entries like tblLOTINFOtblPROJECT, tblPAYCREWtblCREW etc. are Access relationship / query names — confirms foreign key structure exists in the data model.

Scratch / temp tables (can be ignored for migration)

tblLOTINFO000, tblLOTINFOCCCCCCCCCCC, tblPROJECT_ExportErrors, tblLOTINF3, etc. — developer working copies, not production objects.


Modernization Complexity: HIGH

Factor Impact
~130 real tables Large but manageable data model
791 Crystal Reports Biggest migration effort — must map each report
Certified payroll Legal compliance — cannot be dropped
Positive pay (3 banks) Hard file-format integration
Full AR/AP/Payroll Financial accuracy requirements
Jet 3.x format No modern driver can open natively — must be converted first
No VFP source (pending) Business logic must be reverse-engineered

Next Steps

  1. Find VFP source (Mike searching server) — determines if logic can be read or must be RE'd
  2. Convert MDB to readable format — need Access 97 / older ODBC path to extract full schema with field types
  3. Sample top tables — row counts, date ranges, key field values
  4. Audit Crystal Reports — identify which .rpt files are active vs dead weight
  5. Interview VWP — what are the daily workflows? What's broken or painful beyond file size?