Files
shopdb/sql/migration_phase1/README.md
cproudlock 4bcaf0913f Complete Phase 2 PC migration and network device infrastructure updates
This commit captures 20 days of development work (Oct 28 - Nov 17, 2025)
including Phase 2 PC migration, network device unification, and numerous
bug fixes and enhancements.

## Major Changes

### Phase 2: PC Migration to Unified Machines Table
- Migrated all PCs from separate `pc` table to unified `machines` table
- PCs identified by `pctypeid IS NOT NULL` in machines table
- Updated all display, add, edit, and update pages for PC functionality
- Comprehensive testing: 15 critical pages verified working

### Network Device Infrastructure Unification
- Unified network devices (Switches, Servers, Cameras, IDFs, Access Points)
  into machines table using machinetypeid 16-20
- Updated vw_network_devices view to query both legacy tables and machines table
- Enhanced network_map.asp to display all device types from machines table
- Fixed location display for all network device types

### Machine Management System
- Complete machine CRUD operations (Create, Read, Update, Delete)
- 5-tab interface: Basic Info, Network, Relationships, Compliance, Location
- Support for multiple network interfaces (up to 3 per machine)
- Machine relationships: Controls (PC→Equipment) and Dualpath (redundancy)
- Compliance tracking with third-party vendor management

### Bug Fixes (Nov 7-14, 2025)
- Fixed editdevice.asp undefined variable (pcid → machineid)
- Migrated updatedevice.asp and updatedevice_direct.asp to Phase 2 schema
- Fixed network_map.asp to show all network device types
- Fixed displaylocation.asp to query machines table for network devices
- Fixed IP columns migration and compliance column handling
- Fixed dateadded column errors in network device pages
- Fixed PowerShell API integration issues
- Simplified displaypcs.asp (removed IP and Machine columns)

### Documentation
- Created comprehensive session summaries (Nov 10, 13, 14)
- Added Machine Quick Reference Guide
- Documented all bug fixes and migrations
- API documentation for ASP endpoints

### Database Schema Updates
- Phase 2 migration scripts for PC consolidation
- Phase 3 migration scripts for network devices
- Updated views to support hybrid table approach
- Sample data creation/removal scripts for testing

## Files Modified (Key Changes)
- editdevice.asp, updatedevice.asp, updatedevice_direct.asp
- network_map.asp, network_devices.asp, displaylocation.asp
- displaypcs.asp, displaypc.asp, displaymachine.asp
- All machine management pages (add/edit/save/update)
- save_network_device.asp (fixed machine type IDs)

## Testing Status
- 15 critical pages tested and verified
- Phase 2 PC functionality: 100% working
- Network device display: 100% working
- Security: All queries use parameterized commands

## Production Readiness
- Core functionality complete and tested
- 85% production ready
- Remaining: Full test coverage of all 123 ASP pages

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 20:04:06 -05:00

7.4 KiB

Phase 1: Database Schema Migration Scripts

Created: 2025-11-06 Status: Ready for DEV testing Estimated Time: 15-20 minutes


Overview

This directory contains Phase 1 migration scripts for consolidating the pc table into the machines table. These scripts create new infrastructure tables and extend existing tables to support both PCs and machines in a unified schema.


Scripts Included

Migration Scripts (Run in Order)

  1. 01_create_communications_infrastructure.sql (2-3 min)

    • Creates comstypes table (8 communication types)
    • Creates communications table (generic address field)
  2. 02_extend_machines_table.sql (2-3 min)

    • Adds 11 new columns to machines table
    • Adds indexes for new columns
  3. 03_create_pc_machine_types.sql (1 min)

    • Creates 5 PC machine types (Standard, Shopfloor, Engineer, Server, Laptop)
  4. 04_create_warranty_infrastructure.sql (1-2 min)

    • Creates warranties table
    • Creates warranty status views
  5. 05_create_compliance_infrastructure.sql (2-3 min)

    • Creates compliance table (15 columns)
    • Creates compliancescans table
    • Creates compliance views
  6. 06_extend_businessunits_table.sql (1 min)

    • Adds liaison fields to businessunits
  7. 07_rename_pcstatus_to_machinestatus.sql (1 min)

    • Renames pcstatus table and columns
    • Adds FK constraint to machines
  8. 08_create_machine_relationships_infrastructure.sql (2 min)

    • Creates relationshiptypes table
    • Creates machinerelationships table
    • Creates relationship views

Rollback Scripts (Reverse Order)

  • ROLLBACK_08_machine_relationships_infrastructure.sql
  • ROLLBACK_07_machinestatus_rename.sql
  • ROLLBACK_06_businessunits_extensions.sql
  • ROLLBACK_05_compliance_infrastructure.sql
  • ROLLBACK_04_warranty_infrastructure.sql
  • ROLLBACK_03_pc_machine_types.sql
  • ROLLBACK_02_machines_table_extensions.sql
  • ROLLBACK_01_communications_infrastructure.sql

Quick Start

# Run master script (executes all 8 in order)
docker exec -i dev-mysql mysql -u 570005354 -p570005354 shopdb < RUN_ALL_PHASE1_SCRIPTS.sql

Option 2: Run Individual Scripts

# Run each script one at a time
docker exec -i dev-mysql mysql -u 570005354 -p570005354 shopdb < 01_create_communications_infrastructure.sql
docker exec -i dev-mysql mysql -u 570005354 -p570005354 shopdb < 02_extend_machines_table.sql
# ... and so on

Option 3: Use MySQL Workbench

  1. Connect to database
  2. Open script file
  3. Execute
  4. Review output
  5. Repeat for each script

Pre-Execution Checklist

  • Backup created - Full database backup exists
  • Dev environment - Running on DEV, not production
  • Dependencies - All required tables exist (machines, pctype, operatingsystems, etc.)
  • Disk space - At least 100MB free
  • Permissions - User has CREATE, ALTER, DROP privileges

Execution Steps

1. Create Backup

# Backup current database
docker exec dev-mysql mysqldump -u 570005354 -p570005354 shopdb > /tmp/shopdb-before-phase1-$(date +%Y%m%d).sql

2. Run Migration Scripts

cd /home/camp/projects/windows/shopdb/sql/migration_phase1

# Option A: Run all at once
docker exec -i dev-mysql mysql -u 570005354 -p570005354 shopdb < RUN_ALL_PHASE1_SCRIPTS.sql

# Option B: Run individually for better control
for i in {01..08}; do
    echo "Running script $i..."
    docker exec -i dev-mysql mysql -u 570005354 -p570005354 shopdb < ${i}_*.sql
    if [ $? -ne 0 ]; then
        echo "ERROR in script $i! Stopping."
        exit 1
    fi
done

3. Verify Results

# Check new tables were created
docker exec dev-mysql mysql -u 570005354 -p570005354 shopdb -e "SHOW TABLES LIKE '%com%'; SHOW TABLES LIKE '%warrant%'; SHOW TABLES LIKE '%compliance%'; SHOW TABLES LIKE '%relationship%';"

# Check machines table structure
docker exec dev-mysql mysql -u 570005354 -p570005354 shopdb -e "DESCRIBE machines;"

# Check machine types
docker exec dev-mysql mysql -u 570005354 -p570005354 shopdb -e "SELECT * FROM machinetypes WHERE machinetype LIKE 'PC -%';"

4. If Rollback Needed

# Run rollback scripts in REVERSE order (08 down to 01)
for i in {08..01}; do
    echo "Rolling back script $i..."
    docker exec -i dev-mysql mysql -u 570005354 -p570005354 shopdb < ROLLBACK_${i}_*.sql
done

Tables Created

New Tables (7)

  1. comstypes - Communication types (IP, Serial, etc.)
  2. communications - Generic communications (replaces pc_comm_config + pc_network_interfaces)
  3. warranties - Warranty tracking
  4. compliance - Compliance and security tracking
  5. compliancescans - Historical scan records
  6. relationshiptypes - Types of machine relationships
  7. machinerelationships - Machine-to-machine relationships

Modified Tables (3)

  1. machines - Added 11 columns (hostname, serialnumber, osid, etc.)
  2. businessunits - Added 2 columns (liaisonname, liaisonsso)
  3. machinestatus - Renamed from pcstatus

New Columns in machines Table

  1. hostname (VARCHAR 100)
  2. loggedinuser (VARCHAR 100)
  3. serialnumber (VARCHAR 100)
  4. osid (INT 11) - FK to operatingsystems
  5. machinestatusid (INT 11) - FK to machinestatus
  6. pctypeid (INT 11) - FK to pctype
  7. controllertypeid (INT 11) - FK to controllertypes
  8. controllerosid (INT 11) - FK to operatingsystems
  9. requires_manual_machine_config (TINYINT 1)
  10. lastupdated (DATETIME)
  11. dateadded (DATETIME)

Views Created

  • vw_warranty_status
  • vw_warranties_expiring
  • vw_compliance_summary
  • vw_machine_relationships
  • vw_dualpath_machines

Testing Checklist

After running scripts, verify:

  • All 7 new tables exist
  • machines table has 11 new columns
  • 5 PC machine types created
  • machinestatus table exists (pcstatus renamed)
  • All views created successfully
  • No errors in execution
  • Foreign keys in place
  • Indexes created

Common Issues

Issue: FK constraint fails

Cause: Referenced table doesn't exist yet Fix: Run scripts in order (01 through 08)

Issue: Column already exists

Cause: Script already ran Fix: Safe to ignore or run rollback first

Issue: Permission denied

Cause: User lacks privileges Fix: Grant CREATE, ALTER, DROP privileges


Next Steps After Phase 1

  1. Test queries - Verify new tables work
  2. Phase 2 - Data migration scripts (PC → machines)
  3. Phase 3 - Update views that reference pc table
  4. Phase 4 - Update ASP files

Support

Documentation:

  • Main design doc: PC_MACHINES_CONSOLIDATION_PLAN.md
  • Status summary: MIGRATION_STATUS_SUMMARY.md
  • Quick reference: MIGRATION_QUICK_REFERENCE.md

Questions?

  • Review design documents
  • Check CRITICAL_RULES.md
  • Test on DEV first!

Notes

  • REVERSIBLE: All scripts have rollback scripts
  • SAFE: No data deletion (only schema changes)
  • TESTED: Design complete, ready for dev testing
  • ESTIMATED TIME: 15-20 minutes total

Created: 2025-11-06 Last Updated: 2025-11-06 Status: Ready for DEV testing