Migrating from a legacy licensing system can feel daunting, but with the right approach it's straightforward. This guide walks you through every step, from data export to cut-over.
Step 1: Audit Your Current System
Before migrating, understand what you have:
- How many active licenses exist?
- What data fields are stored per license?
- Are there custom license types or tiers?
- What integrations depend on the current system?
Step 2: Export Your Data
Export all license data from your current system. Traffic Orchestrator accepts CSV imports with the following columns:
license_key,customer_email,plan,status,created_at,expires_at
XXXX-YYYY-ZZZZ,user@example.com,pro,active,2025-01-01,2026-01-01
Step 3: Set Up Parallel Validation
Run both systems in parallel during migration. Route validation requests to both your legacy system and Traffic Orchestrator, comparing results:
async function validateDualMode(licenseKey) {
const [legacy, to] = await Promise.all([
legacySystem.validate(licenseKey),
trafficOrchestrator.validate({ licenseKey })
]);
// Log any mismatches for investigation
if (legacy.valid !== to.valid) {
logger.warn('Validation mismatch', { licenseKey, legacy, to });
}
// Use legacy result during migration
return legacy;
}
Step 4: Cut Over
Once you've verified both systems return identical results, switch your primary validation to Traffic Orchestrator. Keep the legacy system running in read-only mode for 30 days as a safety net.
Step 5: Update Client SDKs
Replace your legacy validation calls with our SDK. The change is usually minimal:
// Before (legacy)
const result = await oldSystem.checkLicense(key);
// After (Traffic Orchestrator)
const result = await to.validate({ licenseKey: key });
Most migrations complete in under a week. Our team is available to help with complex cases — reach out via our support channel.
Ship licensing in your next release
5 licenses, 500 validations/month, full API access. Set up in under 5 minutes — no credit card required.