Shahi LegalFlowSuite

Migration Issues

Fix Problems When Moving from Other Consent Solutions

Pre-Migration Data Assessment

Step 1: Analyze Source Plugin Data

`
SLOS → Migration → Assessment → Source Analysis
`

Supported Source Plugins:
`json
{
“cookie_notice”: {
“detected”: true,
“version”: “2.4.2”,
“datatables”: [“wpcn_cookies”],
“settings_found”: true,
“estimated_records”: 15420
},
“gdprcookieconsent”: {
“detected”: false,
“version”: null,
“data_tables”: [],
“settings_found”: false
},
“complianz”: {
“detected”: true,
“version”: “6.4.0”,
“datatables”: [“wpcmplzcookies”, “wpcmplz_services”],
“settings_found”: true,
“estimated_records”: 8750
}
}
`

Step 2: Check Data Compatibility

`
SLOS → Migration → Assessment → Compatibility Check
`

Compatibility Report:
`json
{
“datamappingscore”: 85,
“potential_issues”: [
{
“type”: “category_mismatch”,
“severity”: “medium”,
“description”: “Source plugin uses different cookie categories”,
“solution”: “Manual category mapping required”
},
{
“type”: “dateformatinconsistency”,
“severity”: “low”,
“description”: “Consent timestamps in different formats”,
“solution”: “Automatic conversion available”
}
],
“estimatedmigrationtime”: “45 minutes”,
“risk_level”: “low”
}
`

Migration Preparation

Step 1: Create Full Backup

`
SLOS → Migration → Backup → Create Migration Backup
`

Backup Configuration:
`json
{
“backupscope”: “fullsystem”,
“includesourcedata”: true,
“includewordpressdata”: true,
“compression”: “gzip”,
“encryption”: true,
“storage_location”: “/wp-content/uploads/migration-backups/”,
“retention_days”: 30
}
`

Step 2: Test Migration Environment

`
SLOS → Migration → Testing → Setup Test Environment
`

Test Environment Setup:

    1. Creates staging copy of site
    2. Installs SLOS in test environment
    3. Imports sample data for testing
    4. Configures test integrations
    5. Data Export Issues

      Step 1: Fix Export Permissions

      `
      SLOS → Migration → Export → Permission Check
      `

      Permission Issues:
      `json
      {
      “database_permissions”: {
      “select_granted”: true,
      “filewritegranted”: false,
      “issue”: “Cannot write export files to /wp-content/uploads/”
      },
      “filesystemfixes”: [
      “Change upload directory permissions to 755”,
      “Ensure web server user owns upload directory”,
      “Check disk space availability (2.3GB required)”
      ]
      }
      `

      Step 2: Resolve Export Errors

      `bash

      Fix file permissions

      sudo chown -R www-data:www-data /var/www/html/wp-content/uploads/
      sudo chmod -R 755 /var/www/html/wp-content/uploads/

      Check disk space

      df -h /var/www/html/wp-content/uploads/

      Test file creation

      touch /var/www/html/wp-content/uploads/test-export.txt
      `

      Step 3: Handle Large Data Sets

      `
      SLOS → Migration → Export → Large Dataset Handling
      `

      Large Dataset Options:
      `json
      {
      “chunk_size”: 1000,
      “memory_limit”: “256M”,
      “time_limit”: 300,
      “progress_tracking”: true,
      “resume_capability”: true,
      “compressionduringexport”: true
      }
      `

      Data Import Problems

      Step 1: Validate Import Files

      `
      SLOS → Migration → Import → File Validation
      `

      File Validation Results:
      `json
      {
      “consentdatajson”: {
      “valid”: true,
      “record_count”: 15420,
      “size_mb”: 45.2,
      “encoding”: “UTF-8”
      },
      “cookiesettingsjson”: {
      “valid”: false,
      “error”: “Invalid JSON structure at line 1250”,
      “fix_available”: true
      },
      “userpreferencescsv”: {
      “valid”: true,
      “record_count”: 3240,
      “columns_mapped”: 8,
      “dataqualityscore”: 92
      }
      }
      `

      Step 2: Fix Import Errors

      `
      SLOS → Migration → Import → Error Resolution
      `

      Common Import Fixes:
      `json
      {
      “jsonsyntaxerrors”: {
      “auto_fix”: true,
      “backup_original”: true
      },
      “encoding_issues”: {
      “converttoutf8″: true,
      “handlespecialchars”: true
      },
      “duplicate_records”: {
      “detectionmethod”: “hashcomparison”,
      “resolutionstrategy”: “skipduplicates”
      },
      “missingrequiredfields”: {
      “add_defaults”: true,
      “field_mapping”: {
      “oldfield”: “newfield”
      }
      }
      }
      `

      Step 3: Handle Data Conflicts

      `sql
      — Resolve data conflicts during import
      INSERT INTO wpslosconsentlog (userid, consentcategories, consenttimestamp, source)
      SELECT
      COALESCE(slos.userid, source.userid) as user_id,
      CASE
      WHEN slos.consenttimestamp > source.consenttimestamp THEN slos.consent_categories
      ELSE source.mapped_categories
      END as consent_categories,
      GREATEST(slos.consenttimestamp, source.consenttimestamp) as consent_timestamp,
      ‘migrated’ as source
      FROM sourceconsentdata source
      LEFT JOIN wpslosconsentlog slos ON slos.userid = source.user_id
      ON DUPLICATE KEY UPDATE
      consentcategories = VALUES(consentcategories),
      consenttimestamp = VALUES(consenttimestamp);
      `

      Category Mapping Issues

      Step 1: Review Category Mappings

      `
      SLOS → Migration → Categories → Mapping Review
      `

      Category Mapping Table:
      `json
      {
      “sourceplugin”: “cookienotice”,
      “mappings”: {
      “necessary”: {
      “slos_category”: “essential”,
      “confidence”: 100,
      “auto_mapped”: true
      },
      “analytics”: {
      “slos_category”: “analytics”,
      “confidence”: 95,
      “auto_mapped”: true
      },
      “marketing”: {
      “slos_category”: “marketing”,
      “confidence”: 90,
      “requires_review”: true,
      “reason”: “May include social media cookies”
      },
      “unmapped_category”: {
      “slos_category”: null,
      “confidence”: 0,
      “actionrequired”: “manualmapping”
      }
      }
      }
      `

      Step 2: Manual Category Mapping

      `
      SLOS → Migration → Categories → Manual Mapping
      `

      Manual Mapping Interface:

    6. Drag and drop category assignment
    7. Preview affected cookies
    8. Test mapping with sample data
    9. Bulk mapping operations
    10. Save mapping templates
    11. Step 3: Validate Mappings

      `javascript
      // Validate category mappings
      function validateCategoryMappings(mappings) {
      const validation = {
      unmapped_cookies: [],
      conflicting_mappings: [],
      datalosswarnings: []
      };

      // Check for unmapped cookies
      mappings.forEach(mapping => {
      if (!mapping.slos_category) {
      validation.unmappedcookies.push(mapping.sourcecategory);
      }
      });

      // Check for potential data loss
      mappings.forEach(mapping => {
      if (mapping.confidence < 80) { validation.datalosswarnings.push({
      category: mapping.source_category,
      confidence: mapping.confidence
      });
      }
      });

      return validation;
      }
      `

      Consent Data Conversion Problems

      Step 1: Handle Format Inconsistencies

      `
      SLOS → Migration → Data Conversion → Format Check
      `

      Format Conversion Issues:
      `json
      {
      “timestamp_formats”: [
      {
      “source_format”: “Y-m-d H:i:s”,
      “target_format”: “ISO8601”,
      “conversion_success”: true,
      “records_affected”: 15420
      }
      ],
      “consent_structure”: [
      {
      “sourcestructure”: “serializedarray”,
      “targetstructure”: “jsonarray”,
      “conversion_success”: true,
      “records_affected”: 15420
      }
      ],
      “user_identifiers”: [
      {
      “sourcetype”: “emailhash”,
      “targettype”: “userid”,
      “conversion_success”: false,
      “error”: “Cannot reverse email hashes”,
      “solution”: “Use anonymous user IDs”
      }
      ]
      }
      `

      Step 2: Fix Conversion Errors

      `php
      // Handle consent data conversion
      function convertConsentData($sourceData, $sourcePlugin) {
      $convertedData = [];

      foreach ($sourceData as $record) {
      $convertedRecord = [
      ‘userid’ => convertUserId($record[‘userid’], $sourcePlugin),
      ‘consent_timestamp’ => convertTimestamp($record[‘timestamp’], $sourcePlugin),
      ‘consent_categories’ => convertCategories($record[‘categories’], $sourcePlugin),
      ‘ipaddress’ => $record[‘ipaddress’] ?? null,
      ‘useragent’ => $record[‘useragent’] ?? null,
      ‘source’ => ‘migratedfrom‘ . $sourcePlugin
      ];

      // Validate converted record
      if (validateConvertedRecord($convertedRecord)) {
      $convertedData[] = $convertedRecord;
      } else {
      logConversionError($record, $convertedRecord);
      }
      }

      return $convertedData;
      }
      `

      Step 3: Data Quality Assurance

      `sql
      — Quality assurance queries
      SELECT
      COUNT(*) as total_records,
      SUM(CASE WHEN consentcategories IS NULL THEN 1 ELSE 0 END) as nullcategories,
      SUM(CASE WHEN consenttimestamp IS NULL THEN 1 ELSE 0 END) as nulltimestamps,
      SUM(CASE WHEN JSONVALID(consentcategories) = 0 THEN 1 ELSE 0 END) as invalid_json
      FROM wpslosconsent_log
      WHERE source LIKE ‘migratedfrom%’;
      `

      Post-Migration Validation

      Step 1: Compare Data Counts

      `
      SLOS → Migration → Validation → Data Comparison
      `

      Migration Validation Report:
      `json
      {
      “source_records”: 15420,
      “imported_records”: 15415,
      “failed_imports”: 5,
      “data_integrity”: “98.5%”,
      “category_distribution”: {
      “essential”: 15420,
      “analytics”: 12450,
      “marketing”: 8930,
      “preferences”: 6780
      },
      “date_range”: {
      “oldest_record”: “2023-01-15”,
      “newest_record”: “2025-12-31”
      }
      }
      `

      Step 2: Test Functionality

      `
      SLOS → Migration → Validation → Functional Testing
      `

      Functional Tests:

    12. [x] Consent banner displays correctly
    13. [x] Existing consents are recognized
    14. [x] New consents are recorded
    15. [x] Cookie categories work properly
    16. [x] Historical data is accessible
    17. [x] Reports include migrated data
    18. Rollback Procedures

      Step 1: Emergency Rollback

      `
      SLOS → Migration → Rollback → Emergency Rollback
      `

      Rollback Process:

    19. Deactivate SLOS plugin
    20. Restore from pre-migration backup
    21. Reactivate source plugin
    22. Verify source plugin functionality
    23. Notify users of temporary disruption
    24. Step 2: Partial Rollback

      `
      SLOS → Migration → Rollback → Selective Rollback
      `

      Selective Rollback Options:
      `json
      {
      “rollbackscope”: “dataonly”,
      “preserve_settings”: true,
      “preserve_customizations”: true,
      “restoresourceplugin”: false,
      “data_cleanup”: {
      “removeslostables”: false,
      “archiveslosdata”: true
      }
      }
      `

      Performance Issues During Migration

      Step 1: Optimize Migration Performance

      `
      SLOS → Migration → Performance → Optimization Settings
      `

      Performance Optimizations:
      `json
      {
      “batch_size”: 500,
      “memory_limit”: “512M”,
      “maxexecutiontime”: 600,
      “disableindexesduring_import”: true,
      “rebuildindexesafter_import”: true,
      “progress_reporting”: true
      }
      `

      Step 2: Monitor Migration Progress

      `
      SLOS → Migration → Performance → Progress Monitor
      `

      Migration Metrics:

    25. Records processed per minute
    26. Memory usage
    27. Database connection status
    28. Error rate
    29. Estimated completion time
    30. Multi-Site Migration Issues

      Step 1: Network Migration Setup

      `
      SLOS → Migration → Multi-Site → Network Configuration
      `

      Multi-Site Migration:
      `json
      {
      “network_migration”: true,
      “site_count”: 5,
      “shareddatatables”: true,
      “sitespecificsettings”: true,
      “sequential_migration”: true,
      “rollbackpersite”: true
      }
      `

      Step 2: Site-by-Site Migration

      `
      SLOS → Migration → Multi-Site → Site Migration
      `

      Per-Site Process:

    31. Backup individual site
    32. Migrate site-specific data
    33. Test site functionality
    34. Move to next site
    35. Network-wide validation
    36. Support Resources

      Documentation

    37. Migration Guide
    38. Data Export Procedures
    39. Import Troubleshooting
    40. Help

    41. Migration support hotline
    42. Data recovery services
    43. Plugin compatibility experts
    44. Emergency rollback assistance

Share this article

Was this article helpful?

Help us improve our documentation

Still need help?

Our support team is ready to assist you with personalized guidance for your workspace.

Submit a support ticket