TB-20 — PMS File Migration + Missing Project Import

Summary

Pull 14,416 files (48 GB) from SmartSuite PMS file attachments across 1,662 records. Phase 1: download files for 997 already-mapped projects. Phase 2: import 665 projects missing from Supabase entirely, creating new records with self-generated IDs. Phase 3: back-parse newly placed files. Phase 4: re-match archives against newly created projects.

What it produced

  • migrate_pms_files.py script with —phase, —dry-run, —project-id, —resume, —parallel flags
  • 14,416 files downloaded from SmartSuite Filestack CDN into /data/projects/
  • 665 new projects created in Supabase from PMS records
  • file-registry-service — all files registered with source=pms_smartsuite
  • Cross-archive re-matching for newly created projects

Connections

  • depends on: TB-08b-historical-file-linkage — reuses linkage and classification patterns
  • depends on: TB-17-archive-backfill — back-parse infrastructure for newly placed files
  • depends on: SmartSuite — PMS table as file source (Filestack CDN)
  • depends on: Supabase — create missing projects, register files
  • produced: complete PMS file migration into /data/projects/ with Supabase registration