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>
8.0 KiB
Session Log — 2026-04-27
User
- User: Mike Swanson (mike)
- Machine: DESKTOP-0O8A1RL
- Role: admin
Session Summary
This session initiated the Valleywide (VWP) application modernization project. The client (Valley Wide Plastering) has a custom-built business application that is their core operations system. The original developer, known as Darv, is deceased. The app still functions but is hitting the 2GB Jet/Access database file size limit. The goal is to assess feasibility of modernizing the app — either as a web application or a modern desktop executable.
Work began by establishing the project folder structure and analyzing a 2.7GB zip (Orders-VWP2.zip) of the application files provided by the client. This revealed the current production files: VWP.mdb (938MB, live database last written 2026-04-24) and Orders_10A.exe (13.4MB, current executable with four shortcuts pointing to it). The database is growing toward the 2GB limit; it was 671MB in 2020 and is now at 938MB.
The database schema was mapped via binary scan of VWP.mdb (modern ODBC/DAO/ADODB drivers cannot open the Jet 3.x / Access 97 format). Approximately 130 production tables were identified, spanning a full construction ERP: job/lot/project management, estimating, work orders, materials, purchasing, crew scheduling, payroll (including certified payroll for government contracts), accounts receivable, accounts payable, job costing, change orders, repairs, and bank positive pay integration for three accounts.
Stack investigation via WizTree exports of Darv's server folder (C:\Users\sysadmin\Desktop\Darv\) confirmed the application is Visual Basic 6.0 (not Visual FoxPro as initially suspected). The .frx files are VB6 form resource files. Crystal Reports 8.5 Developer edition was found in Darv's installs. The Denali2021v1 folder is an InstallShield 2021 installer package.
The Source\VWP folder on the server contained only one source file (frmPayroll.frm, 32KB) and personal photos. The rest of the source never lived on this server — Darv developed on a personal machine. Mike will search other servers/machines for .vbp and .frm files.
The production exe (Orders_10A.exe) was analyzed for compilation type. The entry point byte pattern (PUSH + CALL to ThunRTMain, imported by ordinal) confirms P-Code compilation — not Native Code. This is the best possible outcome: VB Decompiler Pro (~$200) can recover 70-80% of the source including form layouts, procedure names, string literals, and all SQL queries.
Key Decisions
- Project folder:
clients/valleywide/app-modernization/withsource-analysis/,research/,session-logs/subfolders - Stack corrected from VFP to VB6 —
.frxfiles are VB6 form resources, not VFP report files. The ~13MB exe size reflects embedded VB6 runtime + app, not a VFP compiled binary. - P-Code confirmed over Native Code — entry point pattern is unambiguous. Decompilation is viable and worth the $200 investment before scoping the modernization.
- Schema-analysis.md written at
research/— captures all table domains, compliance flags (certified payroll), and bank integration dependencies. - Certified payroll (
tblCERTIFIED) flagged as hard requirement — any replacement must handle this or VWP loses ability to bid government/prevailing wage contracts. - Three positive pay tables — the app generates bank fraud-prevention files for three accounts. Hard integration dependency on the replacement.
- VB source search deferred — Mike will check remaining servers/machines for
.vbp/.frmfiles. If found, source is available. If not, decompilation + schema is sufficient to proceed.
Problems Encountered
- Jet 3.x format blocks modern drivers — VWP.mdb is Access 97 format (version byte 0x00 in VB5 header). pyodbc, ADODB with ACE 12.0, and DAO 12.0 all return "cannot open a database created with a previous version." Workaround: binary scan of the .mdb file using Python regex to extract table names from the raw bytes. Full field-level schema still needs an older driver or machine with Access 97/2000.
- ThunRTMain not found as string — initially suggested Native Code. Resolved: VB6 P-Code apps commonly import ThunRTMain by ordinal (not name), so it doesn't appear as a string literal. The entry point byte pattern (
68 xx xx xx xx e8 ee ff ff ff) is definitive. - Source\VWP folder nearly empty — expected to find full source, found only one form file and personal photos. The development machine was personal, not the server.
Infrastructure & Files
Key Files (on this machine)
| Path | Description |
|---|---|
clients/valleywide/app-modernization/source-analysis/Orders-VWP2.zip |
Full application archive (2.7GB) |
clients/valleywide/app-modernization/source-analysis/VWP.mdb |
Live database extracted (938MB, Jet 3.x) |
clients/valleywide/app-modernization/source-analysis/Orders_10A.exe |
Current production exe extracted (13.4MB) |
clients/valleywide/app-modernization/source-analysis/Source.zip |
Darv's source folder (1 form + photos only) |
clients/valleywide/app-modernization/source-analysis/WizTree_FT_20260427091258.csv |
WizTree extension summary of Darv's folder |
clients/valleywide/app-modernization/source-analysis/WizTree_20260427091646.csv |
WizTree full path export of Darv's folder |
clients/valleywide/app-modernization/research/schema-analysis.md |
Full database schema analysis by domain |
clients/valleywide/app-modernization/CONTEXT.md |
Project context file |
VWP M365 Tenant
- Tenant ID:
5c53ae9f-7071-4248-b834-8685b646450f - Domain:
valleywideplastering.com
Server Location (Darv's files)
C:\Users\sysadmin\Desktop\Darv\— 13,231 files, 15.6GBC:\Users\sysadmin\Desktop\Darv\Source\VWP\— source folder (nearly empty)C:\Users\sysadmin\Desktop\Darv\Denali2021v1\— InstallShield 2021 installer project
Application Stack (Confirmed)
| Layer | Technology | Evidence |
|---|---|---|
| Frontend | Visual Basic 6.0 | frmPayroll.frm VB6 source, .frx resource files, VB5! header in exe |
| Compilation | P-Code (not Native) | Entry point PUSH+CALL ThunRTMain pattern, VBA6.DLL import |
| Database | MS Access Jet 3.x (.mdb) | VWP.mdb, version byte 0x00, Access 97 format |
| Reporting | Crystal Reports 8.5 | 791 .rpt files, Crystl32.OCX import, SCR85Dev install found |
| Installer | InstallShield Denali 2021 | Denali2021v1 folder with 64/32-bit setup.exe |
| OCX controls | TABCTL32, mscomct2, comdlg32, Flp32a30, odg7, todg7 | PE import table |
Database Highlights
- Current size: 938MB (Jet 3.x 2GB hard limit)
- Growth: 671MB (2020) → 761MB (2022) → 938MB (current) → 1.07GB (2024 backup before compact)
- ~130 production tables spanning full construction ERP
- Critical compliance:
tblCERTIFIED(certified payroll — government contracts) - Bank integrations:
tblPosPayVWP,tblPosPayCRD,tblPosPaySWI(positive pay — 3 accounts) - Full schema: see
research/schema-analysis.md
Pending Tasks
- Search remaining machines/servers for VB6 source (
.vbp,.frmfiles) — Mike searching - Purchase and run VB Decompiler Pro (~$200) against
Orders_10A.exe - Get schema with field types — need machine with Access 97/2000 or convert Jet 3.x → Jet 4.x to read with modern driver
- Audit Crystal Reports — identify which of the 791
.rptfiles are actively used vs historical dead weight - Interview VWP — map daily workflows, identify pain points beyond file size limit
- Feasibility report — after decompilation and schema analysis, produce stack recommendation (web app vs modern desktop)
Next Steps
- Mike checks remaining servers for VB6 source
- Purchase VB Decompiler Pro and run against
Orders_10A.exe - Use decompiled output + schema to map full business logic
- Interview VWP staff on workflows
- Produce modernization feasibility report with stack recommendation and effort estimate