# Category 12: Migration & Transition

> **Usage:** Plan transition from AS-IS to TO-BE, handle existing data
> **When to load:** ALWAYS for new modules (not enhancements)

---

## 12.1 Existing Data

| # | Question | Answer Type |
|---|----------|-------------|
| Q12.1 | Is there existing data to migrate? | Yes/No + source |
| Q12.2 | What format is the existing data in? | Excel/CSV/DB/API/Manual |
| Q12.3 | What volume of data to migrate? | Estimation |
| Q12.4 | What data quality issues exist? (duplicates, missing fields, inconsistencies) | List |

## 12.2 Transition Plan

| # | Question | Answer Type |
|---|----------|-------------|
| Q12.5 | Is there a coexistence period? (old + new system in parallel) | Duration |
| Q12.6 | What is the cutover strategy? | Big-bang / Progressive / Parallel |
| Q12.7 | Who validates the migrated data? | Role |
| Q12.8 | What is the rollback plan if migration fails? | Strategy |

---

## Migration Patterns

| Need | Pattern | Tool |
|------|---------|------|
| CSV/Excel import | Background job + FluentValidation | Hangfire + custom importer |
| Database migration | EF Core seed / SQL script | `dotnet ef` + seed data |
| API import | HttpClient batch | Background job + Polly |
| Data cleanup | Validation pipeline | FluentValidation + reporting |
| Progressive rollout | Feature flag | LaunchDarkly / custom config |

## Elicitation Guide

### Follow-ups by Question

| Question | If answer is vague/insufficient | Probe |
|----------|-------------------------------|-------|
| Q12.1 (existing data) | "Oui" sans détail | "Dans quel outil ? Excel, ERP, autre DB ? Combien de fichiers/tables ? Qui y a accès ?" |
| Q12.2 (format) | "Excel" | "Un seul fichier ou plusieurs ? Avec des onglets ? Des macros ? Des formules ? Quelles colonnes ?" |
| Q12.4 (quality) | "C'est propre" | "Pas de doublons ? Pas de champs vides obligatoires ? Pas de formats incohérents (dates, montants) ?" |
| Q12.5 (coexistence) | "Non" | "Les utilisateurs passent directement au nouveau système ? Pas de période d'apprentissage en parallèle ?" |
| Q12.6 (cutover) | "On verra" | "Big-bang (bascule à date fixe) ou progressif (équipe par équipe) ? Si progressif, quels groupes en premier ?" |
| Q12.8 (rollback) | "Pas prévu" | "Si l'import échoue ou corrompt des données, comment revenir en arrière ? Backup avant migration ?" |

### Anti-patterns to Detect

| Signal | Anti-pattern | Action |
|--------|-------------|--------|
| "On saisira tout à la main" | **Migration non planifiée** | Si > 100 enregistrements, l'import automatisé est indispensable |
| Pas de validation post-migration | **Données non vérifiées** | Prévoir un rapport de migration : importés / rejetés / à corriger |
| Aucun rollback plan | **Risque de perte de données** | Toujours faire un backup avant migration + possibilité de rollback |
| "On migrera plus tard" | **Dette technique** | Si la migration est nécessaire, la planifier dès le départ même si simplifiée |
