# ADR 0016 — Modul-Lifecycle ## Status Accepted ## Kurz erklärt Der Modul-Lifecycle beschreibt, was mit einem Modul passiert, wenn es installiert, aktiviert, deaktiviert oder entfernt wird. ## Kontext Das Architekturreview hat kritisiert, dass Module zwar aktivierbar/deaktivierbar sein sollen, aber nicht definiert war, was mit bestehenden Daten passiert. ## Entscheidung Module haben definierte Zustände: - available - installed - enabled - disabled - archived Deinstallation mit Datenlöschung ist kein Standardfall. ## Zustände ### available Modul ist im System vorhanden, aber nicht installiert. ### installed Modul ist installiert, aber nicht aktiv. ### enabled Modul ist aktiv. ### disabled Modul ist deaktiviert, Daten bleiben erhalten. ### archived Modul wird nicht mehr genutzt, Daten bleiben aus Nachvollziehbarkeitsgründen erhalten. ## Datenregel Daten werden beim Deaktivieren nicht gelöscht. Grund: - Audit - GoBD - Nachvollziehbarkeit - Referenzintegrität ## Modul-Abhängigkeiten Module müssen Abhängigkeiten deklarieren. Beispiel: ```text Invoice Ninja Adapter benötigt Billing-Modul. ``` ## Migrationen Jedes Modul verwaltet eigene Migrationen. Core-Migrationen dürfen keine Anbieterlogik enthalten. ## Verwandte ADRs - ADR 0007 — Modul-System - ADR 0009 — Core-Grenzen