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>
161 lines
5.6 KiB
Markdown
161 lines
5.6 KiB
Markdown
# 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?
|