Files
claudetools/clients/valleywide/app-modernization/docs/MODERNIZATION_ROADMAP.md
Mike Swanson 4fd5688026 sync: auto-sync from Mikes-MacBook-Air.local at 2026-06-14 08:36:19
Author: Mike Swanson
Machine: Mikes-MacBook-Air.local
Timestamp: 2026-06-14 08:36:19
2026-06-14 08:36:21 -07:00

627 lines
19 KiB
Markdown

# Valley Wide ORDERS Modernization Roadmap
This document tracks the phased modernization of Valley Wide Plastering's VB6 ORDERS application to a modern web-based ERP. The strategy uses parallel development with SQL Server as the common backend, allowing VB6 and web clients to coexist during transition.
## Legend
- [ ] Not started
- [~] In planning
- [x] Completed
- Priority: P1 (critical/blocking), P2 (important), P3 (nice-to-have)
---
## Strategic Approach
**End Goal:** Modern web application replacing VB6 desktop client
**Migration Strategy:** Dual-client parallel development with gradual user adoption
- SQL Server backend supports both VB6 and web clients simultaneously
- VB6 continues production use while web client is developed
- Users transition module-by-module based on beta testing
- Zero-downtime migration with easy rollback per module
**Timeline:** 8-9 months to full production rollout
---
## Phase 1: Foundation & Database Migration (Month 1)
**Priority:** P1 (CRITICAL - removes 2GB Jet limit, enables all future work)
### Infrastructure Setup
- [ ] **DEV-001:** Provision development server environment
- **Options:** Repurpose SERVER3, cloud VM, or dedicated workstation
- **Requirements:** VB6 SP6 + OCX dependencies, SQL Server DEV instance
- **Status:** Not started
- **Blocking:** All development work
- [ ] **DEV-002:** Stand up VB6 build environment
- **Components needed:**
- Windows 10/11 VM with VB6 SP6 Enterprise
- True DBGrid Pro 7.0 (`todg7.ocx`)
- FarPoint Spread (`Flp32a30.ocx`)
- Crystal Reports 7 runtime (`Crystl32.OCX`, `craxdrt.dll`)
- MS common controls (TABCTL32, MSCOMCTL, MSCOMCT2, comdlg32)
- EasyP.ocx
- **Purpose:** Verify source compiles, understand business logic, test against SQL
- **Status:** Not started
- [ ] **DEV-003:** Stand up SQL Server development instance
- **Environment:** Separate from production
- **Version:** SQL Server 2022 or Azure SQL Database
- **Status:** Not started
### Database Migration (Week 1-2)
- [ ] **DB-001:** Jet → SQL Server schema migration
- **Tool:** SQL Server Migration Assistant (SSMA) for Access
- **Scope:** All 130 tables
- **Deliverable:** SQL Server schema with proper types, indexes, constraints
- **Priority:** P1
- **Status:** Not started
- **Effort:** 3-5 days
- [ ] **DB-002:** Data migration and validation
- **Process:** SSMA data transfer
- **Validation:** Record counts, key relationships, data integrity checks
- **Document:** Type conversion issues and resolutions
- **Priority:** P1
- **Status:** Not started
- **Effort:** 2-3 days
- [ ] **DB-003:** Enable SQL Server row versioning
- **Purpose:** Prevent VB6/web client conflicts during parallel operation
- **Implementation:** Add `rowversion` columns to all tables
- **Priority:** P1
- **Status:** Not started
- **Effort:** 1 day
- [ ] **DB-004:** Create development database snapshot
- **Purpose:** Reproducible dev environment, quick restore for testing
- **Priority:** P2
- **Status:** Not started
### VB6 SQL Server Adaptation (Week 2-3)
- [ ] **VB6-001:** Update `modADO.bas` for SQL Server
- **Changes:** Connection strings (Jet → SQL Server)
- **Convert:** Inline SQL to stored procedures (safer concurrency)
- **Priority:** P1
- **Status:** Not started
- **Effort:** 5-7 days
- [ ] **VB6-002:** Test VB6 against SQL Server (comprehensive)
- **Scope:** All modules, especially Certified Payroll + Positive Pay
- **Test data:** Production-like dataset
- **Priority:** P1
- **Status:** Not started
- **Effort:** 5-7 days
- [ ] **VB6-003:** VB6 compatibility with Windows 10/11
- **Goal:** Remove Win7 VM dependency
- **Test:** VB6 runtime + OCX registration on Win10/11
- **Fallback:** Application compatibility shims or Windows Sandbox
- **Priority:** P2
- **Status:** Not started
- **Effort:** 3-5 days
### Production Deployment (Week 3-4)
- [ ] **DEPLOY-001:** Deploy SQL Server to production
- **Prerequisites:** All testing complete, backup/restore procedures
- **Cutover:** VB6 client switches from Jet to SQL Server
- **Monitoring:** 2 weeks intensive observation
- **Priority:** P1
- **Status:** Not started
- **Blocking:** Web client development
---
## Phase 2: Web Client Foundation & API Layer (Month 2)
**Priority:** P1 (enables all web development)
### Technology Stack Decision
- [ ] **TECH-001:** Choose web application framework
- **Recommended:** Blazor Server/.NET 8
- **Alternatives:** React + .NET API, ASP.NET Core MVC
- **Factors:** Team skills, component libraries, VB6 logic porting ease
- **Priority:** P1
- **Status:** Not started
- **Blocking:** All web development
### API Layer Development
- [ ] **API-001:** Build REST API on SQL Server database
- **Framework:** .NET 8 Web API
- **Scope:** CRUD operations for all 130 tables
- **Authentication:** OAuth/JWT
- **Priority:** P1
- **Status:** Not started
- **Effort:** 2-3 weeks
- [ ] **API-002:** Port business logic from VB6 `modADO.bas`
- **Scope:** Critical validation rules, calculations, workflows
- **Testing:** Unit tests for all ported logic
- **Priority:** P1
- **Status:** Not started
- **Effort:** 2-3 weeks
- [ ] **API-003:** Implement Certified Payroll API endpoints
- **Scope:** prevailing-wage calculations, report generation
- **Testing:** Extensive testing (legal compliance requirement)
- **Priority:** P1
- **Status:** Not started
- **Effort:** 1 week
- [ ] **API-004:** Implement Positive Pay API endpoints
- **Scope:** Bank file generation for CRD, SWI, VWP
- **Testing:** Validate against bank specs
- **Priority:** P1
- **Status:** Not started
- **Effort:** 1 week
### Web Client Scaffolding
- [ ] **WEB-001:** Authentication and security framework
- **Requirements:** User login, role-based access control
- **Integration:** Match VB6 `tblSECURITY` user/role model
- **Priority:** P1
- **Status:** Not started
- **Effort:** 1 week
- [ ] **WEB-002:** Base UI framework
- **Components:** Navigation, layout, theming
- **Design:** Responsive (desktop + mobile)
- **Priority:** P1
- **Status:** Not started
- **Effort:** 1 week
- [ ] **WEB-003:** Audit logging system
- **Purpose:** Track VB6 vs web client actions for debugging
- **Implementation:** `AuditLog` table with client type tracking
- **Priority:** P2
- **Status:** Not started
- **Effort:** 2-3 days
---
## Phase 3: Web Client Beta - Read-Only Modules (Month 2-3)
**Priority:** P2 (high value, zero risk - read-only)
### Beta Module 1: Project Dashboard
- [ ] **MOD-001:** Project list view
- **Data source:** `tblPROJECT`
- **Features:** Search, filter, sort
- **Beta users:** Project managers, office staff (3-5 people)
- **Priority:** P2
- **Status:** Not started
- **Effort:** 3-5 days
- [ ] **MOD-002:** Lot details view
- **Data source:** `tblLOTINFO`, `tblPLANS`, `tblCHANGE`
- **Features:** Lot status, plans, change orders
- **Priority:** P2
- **Status:** Not started
- **Effort:** 3-5 days
- [ ] **MOD-003:** Orders status view
- **Data source:** `tblORDERS`, `tblTAKE`
- **Features:** Order tracking, takeoff data
- **Priority:** P2
- **Status:** Not started
- **Effort:** 3-5 days
- [ ] **MOD-004:** Crew schedules view
- **Data source:** `tblCREW`, `tblHRDAILY`
- **Features:** Daily crew assignments, labor hours
- **Priority:** P2
- **Status:** Not started
- **Effort:** 3-5 days
### Beta Module 2: Reporting Portal
- [ ] **MOD-005:** Job cost reports
- **Data source:** `tblJOBCOST`
- **Replace:** Some of the 791 Crystal Reports
- **Priority:** P2
- **Status:** Not started
- **Effort:** 1 week
- [ ] **MOD-006:** AR/AP summary reports
- **Data source:** `tblARMASTER`, `tblAPMASTER`
- **Beta users:** Accounting, management
- **Priority:** P2
- **Status:** Not started
- **Effort:** 3-5 days
- [ ] **MOD-007:** Payroll reports
- **Data source:** `tblPAYROLL`, `tblPAYHEADER`
- **Features:** Period summaries, employee hours
- **Priority:** P2
- **Status:** Not started
- **Effort:** 3-5 days
---
## Phase 4: Web Client Beta - Light Data Entry (Month 3-4)
**Priority:** P2 (write capability, low-risk modules)
### Beta Module 3: Daily Labor/Crew Entry
- [ ] **MOD-008:** Daily hours entry (mobile-friendly)
- **Data source:** `tblHRDAILY`
- **Target users:** Crew foremen (5-10 people, field use)
- **Features:** Enter hours, update crew assignments
- **Device support:** Tablets, phones
- **Priority:** P2
- **Status:** Not started
- **Effort:** 1-2 weeks
- [ ] **MOD-009:** Crew assignment management
- **Data source:** `tblCREW`
- **Features:** Assign crews to projects/lots
- **Priority:** P2
- **Status:** Not started
- **Effort:** 3-5 days
### Beta Module 4: Inventory Lookups/Updates
- [ ] **MOD-010:** Inventory level view
- **Data source:** `tblINVTRY`, `tblINVPRICE`
- **Target users:** Yard workers, purchasers (3-5 people)
- **Priority:** P2
- **Status:** Not started
- **Effort:** 3-5 days
- [ ] **MOD-011:** Inventory adjustments
- **Features:** Simple quantity updates, notes
- **Priority:** P2
- **Status:** Not started
- **Effort:** 3-5 days
- [ ] **MOD-012:** Supplier lookups
- **Data source:** `tblSUPPLIER`, `tblContractor`
- **Priority:** P3
- **Status:** Not started
- **Effort:** 2-3 days
---
## Phase 5: Web Client - Complex Modules (Month 5-6)
**Priority:** P2 (complex business logic, needs thorough testing)
### Beta Module 5: Orders & Takeoffs
- [ ] **MOD-013:** Full order entry
- **Data source:** `tblORDERS`, `tblTAKE`, `tblMEASURE`
- **Target users:** Estimators (2-3 people initially)
- **Features:** Complete order workflow, takeoff calculations
- **Priority:** P2
- **Status:** Not started
- **Effort:** 2-3 weeks
- [ ] **MOD-014:** Material estimates
- **Business logic:** Port from VB6 calculation routines
- **Priority:** P2
- **Status:** Not started
- **Effort:** 1-2 weeks
- [ ] **MOD-015:** Takeoff viewer
- **Features:** View/edit takeoff measurements
- **Grid component:** Blazor FlexGrid or equivalent
- **Priority:** P2
- **Status:** Not started
- **Effort:** 1 week
### Additional Complex Modules
- [ ] **MOD-016:** Billing module
- **Data source:** `tblBilling`, `tblMANBILL`
- **Features:** Manual billing, billing status
- **Priority:** P2
- **Status:** Not started
- **Effort:** 1-2 weeks
- [ ] **MOD-017:** Purchase Orders
- **Data source:** `tblPOrder`, `tblPOMatrl`, `tblYardOrder`
- **Priority:** P2
- **Status:** Not started
- **Effort:** 1-2 weeks
- [ ] **MOD-018:** Scaffold management
- **Data source:** `tblScaffold`, `tblSC_Crew`, `tblScafPay`
- **Priority:** P3
- **Status:** Not started
- **Effort:** 1 week
---
## Phase 6: Critical Compliance Modules (Month 7-8)
**Priority:** P1 (CRITICAL - legal/fraud-prevention requirements, must be perfect)
### Certified Payroll
- [ ] **MOD-019:** Certified payroll generation
- **Data source:** `tblCERTIFIED`, `tblPAYROLL`, `tblPAYHEADER`
- **Requirements:** Prevailing-wage calculations, government compliance
- **Target users:** Payroll admin (1-2 people)
- **Testing:** Extensive validation, parallel VB6 comparison
- **Priority:** P1
- **Status:** Not started
- **Effort:** 2-3 weeks
- [ ] **MOD-020:** Certified payroll reporting
- **Format:** Government-required formats
- **Validation:** Legal compliance verification
- **Priority:** P1
- **Status:** Not started
- **Effort:** 1 week
### Positive Pay (Bank Fraud Prevention)
- [ ] **MOD-021:** Positive Pay file generation (CRD bank)
- **Data source:** `tblPosPayCRD`
- **Format:** Bank-specific file format
- **Testing:** Validate against bank specs
- **Priority:** P1
- **Status:** Not started
- **Effort:** 3-5 days
- [ ] **MOD-022:** Positive Pay file generation (SWI bank)
- **Data source:** `tblPosPaySWI`
- **Priority:** P1
- **Status:** Not started
- **Effort:** 3-5 days
- [ ] **MOD-023:** Positive Pay file generation (VWP bank)
- **Data source:** `tblPosPayVWP`
- **Priority:** P1
- **Status:** Not started
- **Effort:** 3-5 days
---
## Phase 7: Remaining Modules & Full Rollout (Month 8-9)
### Additional Modules
- [ ] **MOD-024:** AR/AP management
- **Data source:** `tblARMASTER`, `tblAPMASTER`, related tables
- **Priority:** P2
- **Status:** Not started
- **Effort:** 2 weeks
- [ ] **MOD-025:** Repairs tracking
- **Data source:** `tblREPAIR`, `tblRepList`
- **Priority:** P3
- **Status:** Not started
- **Effort:** 1 week
- [ ] **MOD-026:** Materials/finishes management
- **Modules:** Texture, Foam, Sand, BlackPaper
- **Priority:** P3
- **Status:** Not started
- **Effort:** 1 week
### Production Readiness
- [ ] **PROD-001:** Performance optimization
- **Scope:** Database indexes, query tuning, caching
- **Priority:** P2
- **Status:** Not started
- **Effort:** 1 week
- [ ] **PROD-002:** Security audit
- **Scope:** Authentication, authorization, data protection
- **Priority:** P1
- **Status:** Not started
- **Effort:** 3-5 days
- [ ] **PROD-003:** User training materials
- **Deliverables:** Videos, documentation, quick-start guides
- **Priority:** P2
- **Status:** Not started
- **Effort:** 1 week
- [ ] **PROD-004:** Full user training
- **Scope:** All users, all modules
- **Priority:** P2
- **Status:** Not started
- **Effort:** 2 weeks
- [ ] **PROD-005:** VB6 retirement
- **Prerequisites:** All modules proven in production, zero critical issues
- **Process:** Archive VB6, documentation handoff
- **Priority:** P2
- **Status:** Not started
---
## Technical Safeguards
### Concurrency Management
- [ ] **SAFE-001:** Row versioning implementation
- **Purpose:** Prevent VB6/web overwrite conflicts
- **Implementation:** `rowversion` columns on all tables
- **Priority:** P1
- **Status:** Not started
- [ ] **SAFE-002:** Optimistic concurrency checks
- **Implementation:** Timestamp checks before updates
- **Error handling:** User-friendly conflict resolution
- **Priority:** P1
- **Status:** Not started
- [ ] **SAFE-003:** Feature flags system
- **Purpose:** Enable/disable web modules independently
- **Use case:** Quick rollback if module has issues
- **Priority:** P2
- **Status:** Not started
### Monitoring & Metrics
- [ ] **MON-001:** Beta success metrics tracking
- **Metrics:**
- Adoption rate (% of target users using web)
- Error rate (errors per session)
- Concurrency conflicts (VB6/web collisions)
- Performance (response times)
- User satisfaction (surveys)
- Data integrity (corruption checks)
- **Expansion criteria:**
- Error rate < 1% per session
- Zero data integrity issues for 2 weeks
- 80%+ user satisfaction
- Concurrency conflicts < 0.1% of operations
- **Priority:** P2
- **Status:** Not started
---
## Research & Documentation
### Crystal Reports Migration
- [ ] **RESEARCH-001:** Inventory 791 Crystal Reports
- **Goal:** Determine which reports are actively used
- **Method:** Usage logging, user interviews
- **Priority:** P2
- **Status:** Not started
- **Effort:** 1 week
- [ ] **RESEARCH-002:** Crystal Reports migration strategy
- **Options:**
- Crystal Reports for Visual Studio (auto-converts)
- Modern reporting engine (SSRS, Power BI, custom)
- **Decision factors:** Complexity, licensing, maintenance
- **Priority:** P2
- **Status:** Not started
### OCX/Component Migration
- [ ] **RESEARCH-003:** True DBGrid → .NET grid migration
- **Target:** ComponentOne/MESCIUS FlexGrid
- **Migration utility:** True DBGrid Pro 8.0 migration tool
- **Priority:** P2
- **Status:** Not started
- [ ] **RESEARCH-004:** FarPoint Spread → .NET migration
- **Target:** Spread for WinForms
- **Conversion:** `.ss2` designs to XML via GrapeCity designer
- **Priority:** P2
- **Status:** Not started
---
## Known Risks & Mitigation
### Risk 1: Undocumented Business Rules
**Impact:** HIGH
**Probability:** MEDIUM
**Mitigation:**
- Extensive beta testing with experienced users
- Parallel VB6/web operation during transition
- Module-by-module rollout (easy rollback)
- Preserve VB6 source as reference
### Risk 2: Certified Payroll Compliance Failure
**Impact:** CRITICAL (legal/contract violations)
**Probability:** LOW (with proper testing)
**Mitigation:**
- Extensive testing with parallel VB6 comparison
- Legal/compliance review before deployment
- Keep VB6 as backup for payroll until proven
- Gradual rollout to single payroll admin first
### Risk 3: Positive Pay Bank Integration Failure
**Impact:** HIGH (fraud prevention failure)
**Probability:** LOW (well-defined bank specs)
**Mitigation:**
- Validate output files against bank specifications
- Test with banks before production use
- Keep VB6 as backup until confirmed working
- Monitor first production files closely
### Risk 4: Performance Issues with Web Client
**Impact:** MEDIUM (user adoption)
**Probability:** MEDIUM
**Mitigation:**
- Performance testing during development
- Database indexing and query optimization
- Caching strategies
- Monitor response times during beta
### Risk 5: User Resistance to Change
**Impact:** MEDIUM (adoption rate)
**Probability:** MEDIUM
**Mitigation:**
- Early beta user involvement
- Comprehensive training
- Module-by-module adoption (users can stay on VB6)
- Highlight mobile/web benefits (field access)
---
## Success Criteria
### Phase 1 Success (Database Migration)
- [x] VB6 running against SQL Server in production
- [x] Zero data integrity issues
- [x] Performance equal or better than Jet
- [x] 2GB limit eliminated
### Beta Phase Success (Per Module)
- [x] Target beta users actively using module
- [x] Error rate < 1% per session
- [x] Zero concurrency conflicts with VB6
- [x] User satisfaction > 80%
- [x] No data corruption
### Production Rollout Success
- [x] All modules available in web client
- [x] Certified Payroll legal compliance verified
- [x] Positive Pay bank integration confirmed
- [x] User training complete
- [x] VB6 retired, web client primary
---
## Timeline Summary
| Phase | Duration | Key Deliverables |
|---|---|---|
| **Phase 1:** Foundation & DB Migration | Month 1 | SQL Server production, VB6 adapted |
| **Phase 2:** Web Foundation & API | Month 2 | API layer, web scaffolding |
| **Phase 3:** Read-Only Beta | Month 2-3 | Dashboards, reports (beta users) |
| **Phase 4:** Light Data Entry Beta | Month 3-4 | Labor entry, inventory (beta users) |
| **Phase 5:** Complex Modules | Month 5-6 | Orders, billing, purchasing |
| **Phase 6:** Critical Compliance | Month 7-8 | Certified Payroll, Positive Pay |
| **Phase 7:** Full Rollout | Month 8-9 | Training, VB6 retirement |
**Total Timeline:** 8-9 months from project start to VB6 retirement
---
## Notes
- **This is a living document** - update as features ship or requirements change
- **Checkboxes** track implementation status: [ ] planned, [~] in progress, [x] completed
- **Priority levels** guide sprint planning: P1 critical/blocking, P2 important, P3 nice-to-have
- **Effort estimates** are approximate; adjust based on actual experience
- **Dependencies** are noted in "Blocking" fields - resolve blockers first
---
**Last Updated:** 2026-06-14
**Status:** Initial roadmap created, planning phase
**Next Review:** After Phase 1 completion