Neos-User-Migration — Funktionscheck & Dokumente-Fix

e2e-verifiziert
2026-07-01 – 2026-07-02  ·  solcom @ feature/p2503-226-neos-dokumente-migration
156
Dokumente kopiert (E2E)
vorher: 0 von 100.931
500/500
SHA1-Resolution-Rate
Stichprobe, subdivided Layout
50+50
User + Profile importiert
--limit=50, lokal DDEV
5
Neue Folge-Befunde
2 davon in diesem Branch behoben

Kernbefund: Dokumente-Migration kopierte 0 Dateien


E2E-Evidenz (lokaler DDEV-Lauf, --limit=50)


Prüfpunkt Ergebnis
Import User → Profile 50 User (Rolle projektpartner) + 50 Profile (Typ projektpartner) importiert; Migration-Lookup User→Profil intakt.
Dokumente 156 Dateien nach private://ppp/<ppp_id>/ kopiert, file_managed-Einträge vorhanden; SHA1-Prüfsumme der kopierten Dateien matcht die Neos-DB (≥3 Stichproben).
Resolution-Rate 500 von 500 gesampelten Dokumenten lösen auf existierende Dateien im Export auf — alle über das subdivided SHA1-Layout, 0 Misses.
Feld-Qualität Skills werden zu Taxonomie-Term-Referenzen aufgelöst (Stichprobe: Term „PMO“ korrekt); 293 unbekannte Skill-Labels im State-Bucket solcom_projektpartner.neos_unknown_skills zur Nacharbeit erfasst.
Vorbestehende Test-Fails Volle Modul-Suite: 100 Tests, 3 Errors + 2 Failures — alle fünf vorbestehend auf develop (fehlender Entity-Type project_offer_alert, Login-Redirect-Drift, Webform-Config-Drift) und ohne Berührung der geänderten Dateien.

Neue Befunde aus dem E2E-Lauf


Befund Risiko
Suchagenten-Migration zeigt auf nicht existente Tabelle. solcom_projektpartner_alert_neos war auf neos_search_agent konfiguriert; die echte Quelle ist contenance_solcom_domain_model_projectalert (13.053 User-Alerts). Behoben in diesem Branch (Commits 9e708f7d + 0e146c2a): Source-Rewrite, neuer Process-Plugin neos_alert_nested_array für die verschachtelten Serialisierungen (alter Pfad hätte 0 Skills migriert), Entity um Location remote + field_excluded_skills erweitert. Proof-Run: 21 Alerts migriert, 0 failed. Behoben
Aktivierungs-Command via Drush defekt. solcom-ppp:activate-bestandsnutzer scheiterte bei der Command-Discovery: Drushs Autowire-Container konnte ProjektpartnerMailManager nicht auflösen (Service nur unter Custom-ID registriert, kein Autowire-Alias). Behoben in diesem Branch (Commit 2480b896): FQCN-Alias in der services.yml + Kernel-Repro-Test; --dry-run läuft durch („Project partners found: 52“). Behoben
Rollback nicht idempotent. migrate:rollback der Profil-Migration lässt File-Entities und physische Dateien verwaist zurück; ein Re-Import dupliziert sie anschließend (156 Duplikate mit _0-Suffix im Test). Vor produktiven Wiederholungsläufen braucht es Datei-Cleanup beim Rollback oder Replace-Semantik. Mittel
Datenqualität field_languages. 15 von 56 Profilen tragen den literalen PHP-Serialisierungs-String s:0:""; als Sprachwert — der neos_doctrine_array-Plugin reicht leere Quellwerte ungefiltert durch; würde im UI literal rendern. Mittel
Skills-Abdeckung 29/56. Konsistent mit spärlichen Quelldaten plus 293 nicht aufgelösten Labels; kein Auflösungs-Bug erkennbar, aber vor dem Voll-Import lohnt eine Alias-Erweiterung für die häufigsten unbekannten Labels. Niedrig

Offene Entscheidungen


DSGVO
Die Migration importiert derzeit alle 37.664 Neos-Accounts ohne Consent-/Aktivitätsfilter. Die Quellspalte policyoption existiert; ob nur eingewilligte/aktive Accounts migriert werden, ist eine Business-Entscheidung (Datenschutz/Vertrieb). Der Filter selbst ist eine kleine Ergänzung im Source-Query, sobald entschieden.
Follow-up
Befunde 1+2 (Suchagenten-Tabelle, Aktivierungs-Command) wurden nachträglich im selben Branch behoben — inklusive der zwei damit verbundenen Datenverlust-Risiken (Location remote: 1.835 aktive Alerts; Skill-Ausschlüsse notags: 1.441 aktive Alerts). Bewusst nicht migriert: D0–D9-Postleitzonen-Präferenzen (1.022 Alerts, kein Zielfeld). Offen bleiben Befunde 3–5: Rollback-Semantik vor produktiven Re-Runs, field_languages-Datenqualität, Skills-Alias-Abdeckung.