Bối cảnh + tại sao migrate
Cty M dùng ERP custom build 2015 (PHP 5.6 + MySQL). 10 năm sau:
- PHP 5.6 end-of-life 2018, không patch security.
- Performance load 8-15s — slow.
- Crash 2-3 lần/tháng, không recover graceful.
- Vendor build cũ đã dissolution — không support được.
- Không tích hợp được với hệ thống mới (e-commerce, accounting cloud).
Decision: rebuild thay vì refactor
Đánh giá: refactor PHP 5.6 → PHP 8 + Symfony cost 1.5 tỷ + 12 tháng nhưng giữ data model cũ (đã không tốt). Rebuild Next.js + NestJS cost 2.2 tỷ + 18 tháng nhưng modernize toàn bộ. Quyết: rebuild — debt cũ quá nặng.
Phase 1: Build mới (tháng 1-12)
Build parallel song song với ERP cũ chạy:
- Tháng 1-3: design DB mới + architecture. Audit ERP cũ chi tiết.
- Tháng 4-9: build 8 module chính. Mỗi module 2 sprint.
- Tháng 10-12: tích hợp + UAT internal team.
Phase 2: Data migration (tháng 13-15) — khó nhất
10 năm data: ~50GB, 200 table cũ, mapping sang 80 table mới.
4 lần migration test fail trước thành công:
- Lần 1: data corruption do encoding khác (latin1 vs utf8mb4) — phát hiện 1000+ tên KH bị garbled.
- Lần 2: relation lost do foreign key cũ inconsistent — mất 5% đơn hàng.
- Lần 3: timezone mismatch — ngày tháng lệch 7 giờ.
- Lần 4: performance — migration mất 36 giờ, không acceptable cho downtime window.
- Lần 5: thành công sau optimize + dry-run 4 lần.
Phase 3: Parallel run + cutover (tháng 16-18)
Cả 2 ERP chạy song song 3 tháng:
- Tháng 16: 20% transactions trên ERP mới + 80% cũ. Reconcile hằng ngày.
- Tháng 17: 60% trên mới + 40% cũ.
- Tháng 18: 100% mới, ERP cũ chỉ read-only archive.
Chi phí + ROI
- Build: 1.4 tỷ.
- Data migration: 500tr (4 lần fail tốn nhiều).
- Parallel run + training: 300tr.
- Total: 2.2 tỷ.
- Saving: performance gain → productivity +12% (đo lường), downtime giảm từ 40h/năm xuống 6h, sai sót giảm 70%.
- ROI: payback 22 tháng.
Bài học
- Migration là risk cao nhất, không phải build.
- Plan dry-run migration 4-6 lần trước go-live.
- Parallel run 2-3 tháng — không cutover overnight.
- Champion 1 person knows old + new ERP rất quan trọng.
- Document data mapping kỹ — auditor cần khi sai số xảy ra.
Lưu ý đặc thù VN: migration data sang ERP mới phải đảm bảo character set UTF-8 cho dấu tiếng Việt (latin1 vs utf8mb4 là nguồn lỗi hàng đầu), timezone GMT+7 cho mọi timestamp, format số ngày tháng dd/mm/yyyy.
Doanh nghiệp đang plan migrate ERP cũ? Alodev tham vấn miễn phí 60 phút. /lien-he