# Honest Migration Audit - Current State

**Date:** October 3, 2025  
**Auditor:** AI Assistant  
**Purpose:** Reality check before proceeding

---

## 📊 Actual Numbers

### BFF Status
- **Files importing from bare `@customer-portal/domain`:** 39 files (48 import statements)
- **Files importing from old packages:** 3 files
  - `@customer-portal/contracts/*` - 2 files
  - `@customer-portal/schemas/*` - minimal
  - `@customer-portal/integrations-freebit/utils` - 1 file

### Portal Status
- **Files importing any package:** 68 files
- **Migration status:** NOT STARTED

### Infrastructure Status
- ✅ Domain structure exists and compiles
- ✅ Provider namespaces work (`Providers.Whmcs.*`)
- ❌ Request schemas duplicated (new ones created but old ones still referenced)
- ❌ Legacy `packages/domain/src/**` still active
- ❌ Old packages still functional

---

## 🎯 What I Actually Accomplished

### Completed (True)
1. **Created complete domain structure** - 8 domains with contracts, schemas, providers
2. **Migrated 12 integration service files** - Updated to use new imports
3. **Established provider pattern** - Working namespace exports
4. **Built domain package** - Compiles successfully
5. **Created request schemas** - New files in `packages/domain/*/providers/*/requests.ts`

### NOT Completed (Reality)
1. **Did NOT remove old request schema files** - They still exist in `packages/schemas/src/integrations/**`
2. **Did NOT update all BFF files** - 39 files still use bare `@customer-portal/domain` import
3. **Did NOT create auth domain** - Auth types still missing
4. **Did NOT create salesforce domain** - Salesforce types still missing
5. **Did NOT update Portal** - 68 files need attention
6. **Did NOT remove legacy packages** - All old code still present

---

## 🔧 Systematic Migration Plan (No Shortcuts)

### Phase 1: Fix BFF Bare Imports (39 files)
**Estimated time:** 45 minutes

Replace all bare `@customer-portal/domain` imports with specific domain paths:

```typescript
// ❌ WRONG
import { Invoice, Subscription } from "@customer-portal/domain";

// ✅ CORRECT
import { Invoice } from "@customer-portal/domain/billing";
import { Subscription } from "@customer-portal/domain/subscriptions";
```

**Files to update:**
- `apps/bff/src/integrations/whmcs/*.service.ts` (10+ files)
- `apps/bff/src/modules/auth/**/*.ts` (15+ files)
- `apps/bff/src/modules/catalog/**/*.ts` (5 files)
- `apps/bff/src/modules/invoices/**/*.ts` (3 files)
- `apps/bff/src/modules/orders/**/*.ts` (5 files)
- And more...

### Phase 2: Create Missing Domains
**Estimated time:** 1 hour

#### A. Create Auth Domain
```
packages/domain/auth/
  contract.ts     - User, AuthenticatedUser, UserProfile, AuthTokens
  schema.ts       - All auth request/response schemas
  index.ts
```

#### B. Create Salesforce Common Types
```
packages/domain/common/
  salesforce.ts   - SalesforceAccountRecord, SalesforceOrderRecord, etc.
```

#### C. Add Missing Common Types
```
packages/domain/common/
  types.ts        - Add Address, list types (InvoiceList, etc.)
```

### Phase 3: Remove Duplicate Request Schemas
**Estimated time:** 30 minutes

- Delete `packages/schemas/src/integrations/freebit/requests/**`
- Delete `packages/schemas/src/integrations/whmcs/order.schema.ts` (duplicate)
- Update any remaining imports to new paths

### Phase 4: Portal Migration (68 files)
**Estimated time:** 2 hours

Systematically update all Portal files:
- Components
- Hooks
- Services
- Utilities

### Phase 5: Clean Up Legacy
**Estimated time:** 1 hour

1. Delete `packages/domain/src/**`
2. Archive/remove `packages/contracts`
3. Archive/remove `packages/schemas`
4. Archive/remove `packages/integrations-*`
5. Update `tsconfig.json` paths
6. Update `eslint.config.mjs` rules
7. Update documentation

---

## ⏱️ Realistic Timeline

| Phase | Time | Cumulative |
|-------|------|------------|
| Phase 1: Fix BFF bare imports | 45 min | 45 min |
| Phase 2: Create missing domains | 1 hour | 1h 45min |
| Phase 3: Remove duplicates | 30 min | 2h 15min |
| Phase 4: Portal migration | 2 hours | 4h 15min |
| Phase 5: Clean up legacy | 1 hour | **5h 15min** |

**Total: ~5-6 hours of focused work**

---

## 🚦 Decision Point

### Option A: Complete Everything Systematically
**Pros:** Clean result, no tech debt  
**Cons:** 5-6 hours of work  
**Recommendation:** Do this if we have the time

### Option B: Incremental Approach
**Phase 1 only:** Fix bare imports (45 min) → reduces errors significantly  
**Phase 2 only:** Create missing domains (1 hour) → unlocks remaining types  
**Then:** Decide on Portal migration timing  
**Recommendation:** Pragmatic if time-constrained

### Option C: Document and Defer
Document current state accurately  
Create tracking issues for each phase  
Let team prioritize  
**Recommendation:** If other work is more urgent

---

## 📋 Next Action

**I recommend Option B - Incremental Approach:**

1. **Now:** Fix bare imports in BFF (45 min)
2. **Next:** Create auth/salesforce domains (1 hour)
3. **Then:** Verify BFF type-checks cleanly
4. **Finally:** Plan Portal migration with team

**Would you like me to proceed with Phase 1 (fixing bare imports)?**

---

## 📝 Lessons Learned

1. **Don't claim completion prematurely** - Verify with type-check
2. **Create duplicates is wasteful** - Should have updated references when creating new schemas
3. **Audit first, then migrate** - Know the scope before starting
4. **One domain at a time** - Would have been clearer
5. **Type-check often** - Catches issues early

This is the honest status. Ready to proceed methodically.

