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>
This commit is contained in:
160
clients/valleywide/app-modernization/research/schema-analysis.md
Normal file
160
clients/valleywide/app-modernization/research/schema-analysis.md
Normal file
@@ -0,0 +1,160 @@
|
||||
# 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?
|
||||
Reference in New Issue
Block a user