Skip to main content

UC-BEH-MOD-008 — Modulemigratie globaal uitvoeren

1. Kerngegevens

VeldWaarde
Usecase-IDUC-BEH-MOD-008
NaamModulemigratie globaal uitvoeren
DomeinBeheerder / Modules beheren
Primaire actorBeheerder
Secundaire actor(en)Frontend, backend, database, autorisatiecomponent, modulebeheercomponent, historiecomponent, strategy-interface
RolcontextActieve beheerdercontext; server-side bepaald vanuit de ingelogde gebruiker
Betrokken schermenContent > Modules beheren
Gerelateerde usecasesUC-BEH-MOD-001, UC-BEH-MOD-002, UC-BEH-MOD-003, UC-BEH-MOD-004, UC-BEH-MOD-005, UC-BEH-MOD-006, UC-BEH-MOD-007, UC-BEH-MOD-009, UC-BEH-MOD-010
Primaire entiteitenExerciseModules, Exercises, ExerciseHistory, ExerciseModuleMigrations, ExerciseRuns, Users
Secundaire entiteiten / eventsTeacherLevels, TeacherLevelCategories, TeacherLevelCategoryExercises, UserRoles, modulebeheer-readmodels, strategy-interface
Gerelateerde popupsPOP-BEH-MOD-MIGRATION-GLOBAL-CONFIRM
PopupregisterOntwerpbronnen — Popup-register
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe een beheerder vanuit Migreren - alles alle actieve concrete oefeningen die de geopende bronmodule gebruiken migreert naar een actieve doelmodule.

Globale migratie is een zware onderhoudsactie. De beheerder kiest een doelmodule, ziet de volledige impact op hoofdlijnen en bevestigt met een verplichte reden.

De migratie werkt administratief vooruit op Exercises. Historische ExerciseRuns, resultaten, geschiedenis en gedeelde oefening-snapshots blijven onveranderd en blijven herleidbaar naar de modulecontext die gold bij uitvoering.

Uitgangspunten

  • Technische modules worden administratief beheerd in ExerciseModules en niet runtime ontdekt uit assemblies of codepaden.
  • Een concrete oefening verwijst altijd naar precies één ExerciseModules-record.
  • Modulebeheer wijzigt centrale modulemetadata en onderhoudsacties, niet de inhoudelijke docentconfiguratie van oefeningen.
  • Historische runs behouden hun oorspronkelijke modulecontext.
  • Popupinhoud blijft bronhoudend in het centrale popupregister.

3. Scope

Deze usecase beschrijft:

  • Doelmodule kiezen voor globale migratie.
  • Bepalen van alle actieve Exercises die de bronmodule gebruiken.
  • Tonen van impact op aantallen oefeningen, docenten en leerlingtoegang.
  • Transactioneel wijzigen van ExerciseModuleId voor de globale scope.
  • Vastleggen van ExerciseModuleMigrations met scope Global.
  • Vastleggen van ExerciseHistory per gemigreerde oefening.

Deze usecase beschrijft niet:

  • Concrete docent-oefeningen configureren of de modulespecifieke configuratiepayload bewerken; dat blijft bronhoudend in docentflows of docentondersteuning.
  • Leerlingruns, resultaten, geschiedenis of gedeelde oefeningen herschrijven; historische runs behouden hun oorspronkelijke modulecontext.
  • Nieuwe technische modulecode leveren of implementeren; modulecode blijft onderdeel van de technische codebase.
  • Popupteksten, knopteksten of inputlabels specificeren; usecases verwijzen uitsluitend naar PopupKey.
  • Docentgerichte scope; dit hoort bij UC-BEH-MOD-007.
  • Proefmigratie op één oefening; dit hoort bij UC-BEH-MOD-009.
  • Backwards compatibility hard afdwingen.
  • Historische runs converteren naar de nieuwe module.

3.1 Afbakening met aangrenzende domeinen

OnderdeelAfbakening
Docent / Oefeningen configurerenDocenten kiezen en configureren concrete oefeningen op basis van beschikbare modules; centrale technische module-identiteit wordt hier beheerd.
Beheerder / DocentondersteuningSupport kan concrete docentstructuren en oefeningen inspecteren, maar centrale modulemetadata en migraties worden hier beheerd.
Leerling / Oefenen en resultatenLeerlingruns blijven historische uitvoeringen en worden niet herschreven door modulebeheer.
Database-informatieExerciseModules, ExerciseModuleMigrations en ExerciseHistory dragen de technische module-identiteit, migratieaudit en oefeninghistorie.

4. Pre-condities

IDVoorwaarde
PRE-001De gebruiker is succesvol ingelogd in OefenHub.
PRE-002De backend heeft server-side vastgesteld dat de gebruiker een actieve beheerderrol heeft.
PRE-003De beheerder bevindt zich binnen de beheeromgeving via Content > Modules beheren.
PRE-004De pagina gebruikt actuele serverdata; clientstate, routeparameters of verborgen formuliervelden bepalen geen autorisatie of module-identiteit.
PRE-005De beheerder heeft de detailweergave van de bronmodule geopend.
PRE-006De sectie Migreren - alles is zichtbaar.
PRE-007Er bestaat minimaal één actieve doelmodule die verschilt van de bronmodule.
PRE-008Er bestaan actieve concrete oefeningen op de bronmodule of de flow toont een lege scope.

5. Post-condities

IDResultaat
POST-001Alle actieve concrete oefeningen op de bronmodule verwijzen naar de doelmodule wanneer de migratie slaagt.
POST-002ExerciseModuleMigrations bevat bronmodule, doelmodule, scope Global, actor, tijdstip, reden en snapshots.
POST-003ExerciseHistory bevat per gemigreerde oefening een modulemigratieregel.
POST-004Historische ExerciseRuns en bestaande resultaten blijven ongewijzigd.
POST-005Bij fout wordt geen onherleidbare gedeeltelijke migratie achtergelaten.

6. Trigger

De usecase start wanneer de beheerder in Migreren - alles een doelmodule kiest en de globale migratie bevestigt.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1BeheerderMigreren - allesKiest actieve doelmodule.De frontend valideert dat doelmodule verschilt van bronmodule.TargetExerciseModuleId.
2BackendMigratieServiceBepaalt globale scope.Alle actieve concrete oefeningen op bronmodule worden geselecteerd.Exercises.
3BackendImpactreadmodelBerekent impact.Aantal oefeningen, docenten en unieke leerlingen wordt getoond.Exercises, docentstructuur, niveauautorisaties.
4FrontendPopupToont bevestiging met verplichte reden.De beheerder bevestigt bewust de globale migratie.PopupKey POP-BEH-MOD-MIGRATION-GLOBAL-CONFIRM.
5BeheerderPopupBevestigt met reden.De backend start transactionele verwerking.Reason verplicht.
6BackendAutorisatiecomponentControleert beheerdercontext opnieuw.Alleen beheerder mag globale migratie uitvoeren.Server-side autorisatie.
7BackendMigratieServiceValideert bron en doel opnieuw.Scope wordt opnieuw server-side berekend.Source en target.
8BackendMigratieServiceUpdate Exercises.ExerciseModuleId wordt voor alle scope-oefeningen aangepast.Exercises.ExerciseModuleId.
9BackendMigratieServiceSchrijft ExerciseModuleMigrations.Scope Global wordt vastgelegd met snapshots.ExerciseModuleMigrations.
10BackendHistorieServiceSchrijft ExerciseHistory per oefening.ActionType MODULE_MIGRATION_SOURCE_TO_TARGET.ExerciseHistory.
11FrontendMigreren - allesToont resultaat en bijgewerkte impact.De bronmodule-impact wordt herberekend.Readmodel.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0011Doelmodule is gelijk aan bronmodule.De doelkeuze wordt geweigerd.Niet van toepassing.Geen.
ALT-0021Geen actieve doelmodule beschikbaar.De globale migratie kan niet worden uitgevoerd.Niet van toepassing.Geen.
ALT-0032Globale scope is leeg.De pagina toont dat er geen actieve oefeningen te migreren zijn; definitieve actie blijft uitgeschakeld.Niet van toepassing.Geen.
ALT-0044Beheerder annuleert.Geen migratie wordt uitgevoerd.POP-BEH-MOD-MIGRATION-GLOBAL-CONFIRM.Geen.
ALT-0055Reden ontbreekt.De bevestiging wordt geweigerd.POP-BEH-MOD-MIGRATION-GLOBAL-CONFIRM.Geen.
ALT-0067Scope wijzigt tussen impactweergave en bevestiging.De backend herberekent scope; bij materiële afwijking wordt actuele bevestiging gevraagd.Niet van toepassing.Geen.
ALT-0078Fout tijdens update.De transactie wordt teruggedraaid of volledig herleidbaar afgehandeld.Niet van toepassing.Geen onherleidbare gedeeltelijke migratie.

9. Business rules

IDBusiness rule
BR-001Globale migratie werkt vanuit één geopende bronmodule.
BR-002Alleen actieve modules zijn selecteerbaar als doelmodule.
BR-003Migreren naar dezelfde module is niet toegestaan.
BR-004Globale migratie raakt alle actieve concrete oefeningen op de bronmodule.
BR-005De beheerder moet impact zien voordat definitieve uitvoering plaatsvindt.
BR-006Een verplichte reden is vereist.
BR-007Historische runs, resultaten, PDF-export en gedeelde oefeningen worden niet herschreven.
BR-008OefenHub dwingt backwards compatibility niet hard af; dit is een expliciet beheerdersrisico.
BR-009Per gemigreerde oefening moet ExerciseHistory worden geschreven.

10. Datavalidatie

IDValidatie
VAL-001SourceExerciseModuleId is de geopende module.
VAL-002TargetExerciseModuleId is verplicht, actief en verschillend van bronmodule.
VAL-003Globale scope wordt server-side bepaald.
VAL-004Reason is verplicht en maximaal 500 tekens.
VAL-005De beheerderrol wordt vlak vóór uitvoering gevalideerd.
VAL-006Alle te migreren Exercises moeten op dat moment nog naar de bronmodule verwijzen.
VAL-007Migratieverwerking moet transactioneel of volledig herleidbaar zijn.

11. Datamutaties en events

IDMutatie / eventToelichting
MUT-001Update ExercisesExerciseModuleId wordt voor alle actieve scope-oefeningen aangepast naar de doelmodule.
MUT-002Insert ExerciseModuleMigrationsMigratieheader met bron, doel, scope Global, snapshots, actor, tijdstip en reden.
MUT-003Insert ExerciseHistoryPer gemigreerde oefening een MODULE_MIGRATION_SOURCE_TO_TARGET-regel.

12. Geen datamutaties

IDGeen mutatieReden
NO-001ExerciseRunsHistorische runs blijven ongewijzigd.
NO-002ExerciseRunProgressVraagvoortgang blijft ongewijzigd.
NO-003SharedExercisesGedeelde oefenrecords en snapshots blijven ongewijzigd.
NO-004Users en UserRolesGeen rol- of accountwijzigingen.
NO-005ModuleConfigurationJsonBase64Geen automatische conversie van payloads tenzij door afzonderlijke technische migratielogica expliciet ondersteund.

13. State diagram

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

17. Popupverwijzingen

PopupKeyGebruik
POP-BEH-MOD-MIGRATION-GLOBAL-CONFIRMBevestiging van globale modulemigratie met verplichte reden.

De popupinhoud, knopteksten, inputlabels en themakeuze blijven bronhoudend in het popupregister en popup-themes.

18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification

DocumentAfleiding
Functioneel OntwerpGlobale modulemigratie migreert alle actieve concrete oefeningen van bronmodule naar doelmodule.
Technisch OntwerpTechnisch Ontwerp: oefencatalogus, oefenmodulecontract, background jobs en teststrategie beschrijven de technische uitwerking. Migratie schrijft ExerciseModuleMigrations met scope Global en ExerciseHistory per oefening.
Software Requirements SpecificationSRS moet impactweergave, doelmodulevalidatie, verplichte reden en historische non-mutatie afdwingen.
DatabaseGebruikt ExerciseModules, Exercises, ExerciseModuleMigrations en ExerciseHistory.

19. SRS-trace

Deze usecase bevat geen normatieve requirementtekst. De centrale eis en acceptatiecriteria staan in de SRS; onderstaande tabel koppelt de usecase-afleiding alleen aan centrale SRS-*- en AC-*-items.

Usecase-afleidingDektUsecasecontext
REQ-BEH-MOD-008-001SRS-ADM-004
SRS-ADM-001
SRS-MOD-004
AC-ADM-004
AC-ADM-001
AC-MOD-004
Globale modulemigratie ondersteunen vanuit een geopende bronmodule
REQ-BEH-MOD-008-002SRS-ADM-004
SRS-ADM-001
SRS-MOD-003
AC-ADM-004
AC-ADM-001
AC-MOD-003
Alleen actieve doelmodules toestaan
REQ-BEH-MOD-008-003SRS-AUTH-001
SRS-ADM-004
SRS-ADM-001
SRS-MOD-003
AC-AUTH-001
AC-ADM-004
AC-ADM-001
AC-MOD-003
Migreren naar dezelfde module blokkeren
REQ-BEH-MOD-008-004SRS-AUTH-001
SRS-ADM-001
AC-AUTH-001
AC-ADM-001
De globale migratiescope server-side bepalen
REQ-BEH-MOD-008-005SRS-ADM-001
AC-ADM-001
Impact tonen vóór definitieve uitvoering
REQ-BEH-MOD-008-006SRS-ADM-001
AC-ADM-001
Een verplichte reden vragen
REQ-BEH-MOD-008-007SRS-ADM-004
SRS-ADM-001
SRS-MOD-003
SRS-NFR-AUD-001
AC-ADM-004
AC-ADM-001
AC-MOD-003
AC-NFR-AUD-001
ExerciseModuleMigrations met scope Global vastleggen
REQ-BEH-MOD-008-008SRS-LRN-009
SRS-ADM-001
SRS-NFR-AUD-001
AC-LRN-009
AC-ADM-001
AC-NFR-AUD-001
Per gemigreerde oefening ExerciseHistory vastleggen
REQ-BEH-MOD-008-009SRS-LRN-009
SRS-SHR-001
SRS-ADM-001
AC-LRN-009
AC-SHR-001
AC-ADM-001
Historische ExerciseRuns, resultaten en gedeelde oefeningen niet herschrijven