Migrating from Legacy Software: A Complete Guide
Switching from your current platform to a new one doesn’t have to be painful. Here’s how to migrate your customer data with Ferry in minutes, not days.
Why Migrate?
Legacy fitness and wellness platforms have been industry staples for years, but many businesses are moving to more flexible, modern solutions. Common reasons include:
- High costs - Legacy pricing can be prohibitive for small businesses
- Limited customization - Modern platforms offer more flexibility
- Better integrations - Connect with your favorite tools
- Improved user experience - Both for staff and customers
The Challenge
Legacy system exports are notoriously messy:
- Inconsistent date formats across different exports
- Customer data split across multiple CSV files
- Custom fields with unclear naming
- Missing or corrupted data in legacy records
The Ferry Solution
Ferry’s AI handles these challenges automatically. Here’s how to migrate your data:
Step 1: Export from Your Current System
In your current platform, go to Reports > Export Data:
- Select Clients report
- Choose your date range (all time for full migration)
- Include custom fields
- Export as CSV
You’ll receive a file named something like clients_export_2026_01_20.csv.
Step 2: Define Your Schema
Create a schema matching your new platform:
const schema = {
name: 'my-platform',
entities: [
{
name: 'members',
fields: [
{ name: 'email', type: 'email', required: true },
{ name: 'firstName', type: 'string' },
{ name: 'lastName', type: 'string' },
{ name: 'phone', type: 'phone' },
{ name: 'membershipType', type: 'enum', values: ['monthly', 'annual', 'unlimited'] },
{ name: 'joinDate', type: 'date' }
]
}
]
}; Step 3: Import with Ferry
import { Ferry } from '@ferry/sdk';
const ferry = new Ferry({ apiKey: 'your-api-key' });
// Upload your export
const job = await ferry.parse({
file: clientExport
});
// Ferry auto-detects:
// - Source format and field mappings
// - Date format variations
// - Duplicate records
// - Data quality issues Step 4: Handle Edge Cases
Ferry’s AI handles common issues automatically, but you can also chat with it:
You: “For any member with ‘Unlimited’ in their plan name, set membershipType to ‘unlimited’”
Ferry: ”✓ Updated 342 records”
You: “Remove any customers with invalid email addresses”
Ferry: ”⚠ Found 5 invalid emails. Would you like to export these for manual review?”
Step 5: Review & Import
Once processing is complete:
// Get import summary
const summary = await ferry.getJob(job.id);
console.log(summary);
// {
// totalRecords: 1247,
// imported: 1239,
// skipped: 3,
// issues: 5,
// entities: {
// members: 1239
// }
// }
// Export cleaned data
const cleaned = await ferry.export(job.id, {
format: 'json',
entity: 'members'
}); Common Field Mappings
Here’s how legacy fields typically map:
| Legacy Field | Your Field | Notes |
|---|---|---|
| Primary contact | ||
| FirstName | firstName | - |
| LastName | lastName | - |
| MobilePhone | phone | May include country code |
| BirthDate | birthDate | Various formats, Ferry normalizes |
| CreationDate | memberSince | When they joined |
| MembershipName | membershipType | Needs enum mapping |
| EmergencyContactName | emergencyContact | - |
| EmergencyContactPhone | emergencyPhone | - |
Handling Multiple Exports
If you have separate exports for customers, classes, and appointments:
// Import all related files together
const job = await ferry.parse({
files: [
{ file: clientsExport, hint: 'members' },
{ file: classesExport, hint: 'classes' },
{ file: appointmentsExport, hint: 'bookings' }
],
// Ferry will automatically link records by email/ID
linkBy: 'email'
}); Best Practices
- Test with a small export first - Export just 100 customers to verify mapping
- Backup everything - Keep original exports
- Review invalid records - Ferry flags issues for manual review
- Communicate with customers - Let them know about the migration
- Keep old system active briefly - In case you need to reference old data
After Migration
Once your data is imported:
- Verify counts - Ensure all customers transferred
- Test login flows - Make sure customers can access their accounts
- Update integrations - Point email/payment systems to new platform
- Archive old data - Keep exports for historical reference
Need Help?
Migration support is included with all Ferry plans. We can:
- Review your legacy exports
- Help define optimal schemas
- Troubleshoot any import issues
- Provide migration best practices
Contact our migration team or book a call.
Try It Free
Ready to migrate? Sign up for Ferry and get started today. Your first 100 imports are free - perfect for testing your migration.