Author: Mike Swanson Machine: Mikes-MacBook-Air.local Timestamp: 2026-06-14 08:36:19
19 KiB
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
- 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
- Components needed:
-
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
rowversioncolumns 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.basfor 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
tblSECURITYuser/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:
AuditLogtable 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
- Data source:
-
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
- Data source:
-
MOD-003: Orders status view
- Data source:
tblORDERS,tblTAKE - Features: Order tracking, takeoff data
- Priority: P2
- Status: Not started
- Effort: 3-5 days
- Data source:
-
MOD-004: Crew schedules view
- Data source:
tblCREW,tblHRDAILY - Features: Daily crew assignments, labor hours
- Priority: P2
- Status: Not started
- Effort: 3-5 days
- Data source:
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
- Data source:
-
MOD-006: AR/AP summary reports
- Data source:
tblARMASTER,tblAPMASTER - Beta users: Accounting, management
- Priority: P2
- Status: Not started
- Effort: 3-5 days
- Data source:
-
MOD-007: Payroll reports
- Data source:
tblPAYROLL,tblPAYHEADER - Features: Period summaries, employee hours
- Priority: P2
- Status: Not started
- Effort: 3-5 days
- Data source:
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
- Data source:
-
MOD-009: Crew assignment management
- Data source:
tblCREW - Features: Assign crews to projects/lots
- Priority: P2
- Status: Not started
- Effort: 3-5 days
- Data source:
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
- Data source:
-
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
- Data source:
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
- Data source:
-
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
- Data source:
-
MOD-017: Purchase Orders
- Data source:
tblPOrder,tblPOMatrl,tblYardOrder - Priority: P2
- Status: Not started
- Effort: 1-2 weeks
- Data source:
-
MOD-018: Scaffold management
- Data source:
tblScaffold,tblSC_Crew,tblScafPay - Priority: P3
- Status: Not started
- Effort: 1 week
- Data source:
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
- Data source:
-
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
- Data source:
-
MOD-022: Positive Pay file generation (SWI bank)
- Data source:
tblPosPaySWI - Priority: P1
- Status: Not started
- Effort: 3-5 days
- Data source:
-
MOD-023: Positive Pay file generation (VWP bank)
- Data source:
tblPosPayVWP - Priority: P1
- Status: Not started
- Effort: 3-5 days
- Data source:
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
- Data source:
-
MOD-025: Repairs tracking
- Data source:
tblREPAIR,tblRepList - Priority: P3
- Status: Not started
- Effort: 1 week
- Data source:
-
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:
rowversioncolumns 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
- Metrics:
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
- Options:
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:
.ss2designs 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)
- VB6 running against SQL Server in production
- Zero data integrity issues
- Performance equal or better than Jet
- 2GB limit eliminated
Beta Phase Success (Per Module)
- Target beta users actively using module
- Error rate < 1% per session
- Zero concurrency conflicts with VB6
- User satisfaction > 80%
- No data corruption
Production Rollout Success
- All modules available in web client
- Certified Payroll legal compliance verified
- Positive Pay bank integration confirmed
- User training complete
- 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