osTicket is legacy (launched 2006). FreeScout is the modern alternative. If you're on osTicket and want a better UI, more features, and active development, this guide covers migration.
Why Switch from osTicket to FreeScout
osTicket is:
- Old (19 years old, shows it)
- Slow-moving (infrequent updates)
- Dated UI (feels 2000s)
- No mobile app
- Limited modern features
FreeScout is:
- Modern (launched 2018, actively developed)
- Regular updates (monthly)
- Beautiful UI (2020s design)
- Native mobile apps
- Modular features (add what you need)
For new projects, FreeScout is the obvious choice. For osTicket users, migration is the path forward.
Migration Timeline
| Week | Activity | Hours | |---|---|---| | Week 1 | Set up FreeScout | 6–8 | | Week 2 | Export osTicket, import to FreeScout | 4–6 | | Week 3 | Parallel running (both systems) | 2–3 | | Week 4 | Cutover, training, osTicket shutdown | 1–2 |
Total: 3–4 weeks, 15–20 hours hands-on work.
(Faster than Zammad/Freshdesk migrations — osTicket data is simpler.)
Step 1: Set Up FreeScout (Week 1)
Choose an installation guide:
Recommendation: DigitalOcean or Hetzner (faster, easier than osTicket on same infrastructure).
Install, configure email, test email sending/receiving.
Step 2: Export Data from osTicket (Week 2)
osTicket stores data in MySQL. Export via database dump or admin interface.
Option A: MySQL Export (Recommended)
# SSH into osTicket server
ssh root@your-osticket-ip
# Export database
mysqldump -u osticket_user -p osticket_db > osticket_backup.sql
You now have a complete database dump.
Option B: osTicket Admin Export
Some osTicket installations have export features in admin panel:
- Go to Admin Panel → Data
- Look for "Export" or "Backup" option
- Download tickets as CSV
(Not all osTicket versions have this.)
Option C: Direct MySQL Query
mysql -u osticket_user -p osticket_db
# Get all tickets
SELECT * FROM ost_ticket INTO OUTFILE '/tmp/tickets.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"';
# Get all users
SELECT * FROM ost_staff INTO OUTFILE '/tmp/staff.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"';
Step 3: Transform osTicket Data
osTicket structure is quite old. You'll need to map tables:
osTicket → FreeScout Mapping:
| osTicket Table | FreeScout | Notes | |---|---|---| | ost_ticket | conversations | Direct mapping | | ost_ticket_thread | conversation_threads | Messages | | ost_user | customers | Support customers | | ost_staff | users | Your agents | | ost_department | mailboxes | Route to mailboxes | | ost_ticket_status | status | Map statuses |
Transform Script (PHP/Laravel)
<?php
// In artisan tinker
// Parse osTicket SQL dump
$sql = file_get_contents('osticket_backup.sql');
// Extract tickets (simple parser)
preg_match_all('/INSERT INTO `ost_ticket` VALUES \((.*?)\);/s', $sql, $matches);
$mailbox_id = 1; // Your FreeScout mailbox
foreach ($matches[1] as $ticket_data) {
$values = str_getcsv($ticket_data, ',', "'");
// Create customer
$customer = Customer::firstOrCreate(
['email' => trim($values[9])],
[
'first_name' => 'osTicket',
'last_name' => 'User',
]
);
// Create conversation
$conversation = Conversation::create([
'mailbox_id' => $mailbox_id,
'customer_id' => $customer->id,
'subject' => trim($values[1]),
'status' => map_status(trim($values[4])),
'priority' => map_priority(trim($values[5])),
'created_at' => $values[7],
'updated_at' => $values[8],
]);
}
// Helper functions
function map_status($status) {
$map = ['open' => 'open', 'closed' => 'closed', 'resolved' => 'closed'];
return $map[$status] ?? 'open';
}
function map_priority($priority) {
$map = ['Low' => 'low', 'Medium' => 'medium', 'High' => 'high', 'Urgent' => 'urgent'];
return $map[$priority] ?? 'medium';
}
echo "Transform complete!";
?>
Step 4: Import to FreeScout
cd /var/www/freescout
php artisan tinker < import_script.php
Step 5: Validate Import
Check:
- [ ] All tickets imported (count matches osTicket)
- [ ] Subjects and descriptions intact
- [ ] Status mapped correctly
- [ ] Priority mapped correctly
- [ ] Customer emails match
- [ ] Dates preserved
Review 20–30 random tickets in FreeScout vs osTicket.
Step 6: Parallel Running (Week 3)
Run both systems simultaneously:
- osTicket: Disable new ticket creation (read-only)
- FreeScout: Handle all new support requests
- Temporary email: Route new emails to FreeScout
- Duration: 1–2 weeks (until team is comfortable)
Step 7: Cutover (Week 4)
Pre-Cutover Checklist
- [ ] Team trained on FreeScout
- [ ] All new tickets in FreeScout
- [ ] Email working (sent and received)
- [ ] Queue workers running (emails processing)
- [ ] Backups created
Cutover
- Export any osTicket tickets created during parallel period
- Import to FreeScout
- Update website, email, docs, auto-responders
- Disable temporary email
- Cancel osTicket (if using hosted version)
Cost Analysis
osTicket Annual Cost:
- Hosting (1GB VPS): $6–$12/month = $72–$144/year
- Your server management time (estimated): ~$0 (unless you hire someone)
- Total: $72–$144/year (or more if you pay for support)
FreeScout Annual Cost:
- Setup: $150 one-time
- Hosting (1GB VPS): $6–$12/month = $72–$144/year
- Total: $222–$294/year
Cost difference: osTicket is slightly cheaper upfront. But FreeScout offers:
- Modern UI (saves training time)
- Regular updates (security + features)
- Mobile apps (included)
- Better support
Decision: Cost-neutral, but FreeScout is better product.
Why FreeScout is Better Than osTicket
| Factor | osTicket | FreeScout | Winner | |---|---|---|---| | Age | 19 years | 7 years | FreeScout (more modern) | | Update frequency | Quarterly | Monthly | FreeScout | | UI/UX | Dated (2000s) | Modern (2020s) | FreeScout | | Mobile app | No | Native iOS/Android | FreeScout | | Features | Sufficient | More modern | FreeScout | | Development activity | Slow | Very active | FreeScout | | Code quality | Old patterns | Modern Laravel | FreeScout |
FreeScout wins across the board except cost (negligible difference).
Migration Difficulty
osTicket → FreeScout is the easiest of all migrations because:
- osTicket database is simple (no complex schemas)
- Data mapping is straightforward
- No omnichannel complexity (osTicket is email-only)
- No Elasticsearch or advanced features to deal with
Compared to:
- Zammad → FreeScout: Harder (complex data, multiple channels)
- Zendesk → FreeScout: Harder (API-only export)
- Freshdesk → FreeScout: Harder (per-agent metadata)
osTicket is legacy, so migration is clean.
Common Issues
| Issue | Cause | Fix | |---|---|---| | "MySQL connection refused" | Wrong credentials | Check osTicket config.php for DB credentials | | "Import fails parsing SQL" | SQL syntax changes | Use mysqldump instead of manual export | | "Dates are wrong" | Timezone mismatch | Check FreeScout timezone in Settings | | "Status don't match" | osTicket has custom statuses | Map custom statuses in transform script |
Post-Migration Optimization
After cutover, add FreeScout features osTicket didn't have:
- Live Chat module — Real-time support (osTicket has none)
- Knowledge Base module — Self-service (reduce tickets by 20%)
- Mobile app — Agents can respond from phone
- Automation rules — Auto-assign, auto-close, escalate
- Reports module — Better analytics than osTicket
Each takes 1–2 hours and adds value.
Timeline for Go-Live
| Date | Action | |---|---| | Mon | Start FreeScout setup | | Wed | FreeScout ready, start data export | | Fri | Data imported, validation complete | | Mon | Parallel running begins (both systems live) | | Mon +2 weeks | Team comfortable with FreeScout | | Fri +3 weeks | Cutover (osTicket shutdown) |
Total: 3 weeks from start to fully live on FreeScout.
Summary
osTicket is reliable but old. FreeScout is the modern helpdesk for teams that have outgrown osTicket.
Migration is fast (3 weeks, 15–20 hours work), straightforward (simple data), and immediate payoff (better product).
If you're still on osTicket, upgrading to FreeScout is overdue.
Need expert help migrating your osTicket installation to FreeScout?
We handle the full FreeScout installation on your server — SSL, email, security hardening, and a 1-hour onboarding call. Done in 24 hours.
One-time fee · 30-day support · Money-back guarantee
Welcome to modern helpdesk software. osTicket's days are numbered.
Resources
- osTicket Documentation — official osTicket guide
- FreeScout GitHub — source code and releases
- MySQL Workbench — database migration tool
- FreeScout Module Marketplace — available modules