Stammdaten-Stewardship
mdm
core_platform
🛡️ RLS Protected
Stammdaten-Stewardship — aus Code abgeleitete Prozess- und API-Dokumentation.
⚡ Workflows & Läbenszykle
Dieses Modul folgt dem standardisierten transaktionalen CRUD- und Event-Lifecycle.
⚙️ Fachprozesse & Capabilities (System-Fachlogik)
Registrierte Fachoperationen und System-Capabilities dieses Moduls zur Steuerung von Workflows, Kaskaden und KI-Agenten.
| Capability & Schlüssel | Fachliche Bezeichnung | Ausführung / Coverage | Risikostufe & Freigabe | Effekte & Kaskaden |
|---|---|---|---|---|
Stammdaten-Dublette vorschlagen
capability:mdm.duplicate.propose
Op:
mdm.duplicate.propose
|
Intent:
review_master_data_identity
Quelle:
code:capability_registry
|
⚙️ Engine |
✓ Auto
Risiko:
business_record
|
|
Dublettenkandidaten ermitteln
capability:mdm.duplicate.scan_candidates
Op:
mdm.duplicate.scan_candidates
|
Intent:
review_master_data_identity
Quelle:
code:capability_registry
|
⚙️ Engine |
✓ Auto
Risiko:
metadata
|
|
Führende Feldquelle freigeben
capability:mdm.field_authority.select
Op:
mdm.field_authority.select
|
Intent:
manage_master_data_field_lineage
Quelle:
code:capability_registry
|
⚙️ Engine |
🔒 Freigabe nötig
Risiko:
business_record
|
|
Feldherkunft erfassen
capability:mdm.field_provenance.record
Op:
mdm.field_provenance.record
|
Intent:
manage_master_data_field_lineage
Quelle:
code:capability_registry
|
⚙️ Engine |
✓ Auto
Risiko:
metadata
|
|
Stammdatenidentität freigeben
capability:mdm.identity.decide
Op:
mdm.identity.decide
|
Intent:
decide_master_data_identity
Quelle:
code:capability_registry
|
⚙️ Engine |
🔒 Freigabe nötig
Risiko:
business_record
|
|
Quellsystemkennung zuordnen
capability:mdm.source_mapping.create
Op:
mdm.source_mapping.create
|
Intent:
manage_master_data_sources
Quelle:
code:capability_registry
|
⚙️ Engine |
🔒 Freigabe nötig
Risiko:
business_record
|
|
Quellsystemkennung neu zuordnen
capability:mdm.source_mapping.reassign
Op:
mdm.source_mapping.reassign
|
Intent:
manage_master_data_sources
Quelle:
code:capability_registry
|
⚙️ Engine |
🔒 Freigabe nötig
Risiko:
business_record
|
|
🧠 Fachprozess-Erzählung & Dual Knowledge Architektur
Synthese aus der ideologischen Blaupause (Meta-Fachlogik / Soll), der faktischen System-Implementierung (System-Fachlogik / Ist) und No-Code Customizing für KI-Consultants.
Der durchgängige Businessprozess im Detail (End-to-End Fließtext-Erzählung)
Der funktionale Ablauf von Stammdaten-Stewardship in der Plattform-Architektur
Das Modul mdm erbringt zentrale Infrastruktur- und Steuerungsdienste im Monolithen. Jeder Aufruf durchläuft die zweistufige Sicherheitsarchitektur: Zunächst verifiziert der Session-Guard die Identität des Benutzers, woraufhin die PostgreSQL Row-Level-Security (RLS) aktiviert wird. Dadurch ist garantiert, dass Datenzugriffe mathematisch und physisch ausschließlich auf den authentifizierten tenant_id-Kontext beschränkt bleiben.
Mutationen und administrative Aktionen werden über transaktionale Services ausgeführt. Bei zustandsverändernden Operationen schreibt das System simultan in die betriebliche Zieltabelle und in die transaktionale Outbox. Asynchrone Worker greifen diese Signale ab und kaskadieren Ereignisse an nachgelagerte Module, ohne den synchronen HTTP-Pfad zu blockieren. Jeder Zugriff wird unveränderbar im Audit-Trail protokolliert.
Meta-Fachlogik: Ideologische Blaupause, Soll-Weltbild & Normen
Meta-Fachlogik: Sicherheits- und Plattform-Architektur
Basiert auf den Standards ISO/IEC 27001:2022 (Informationssicherheits-Managementsysteme), den BSI IT-Grundschutz-Bausteinen (APP.3.1 Webanwendungen, SYS.1.1 Allgemeiner Server) und Art. 32 DSGVO.
-
Mandantentrennung als Primärinvariante: Keine Mandantendaten dürfen jemals ohne
tenant_id-Filter geladen oder mutiert werden. Das Soll-Modell verlangt die Durchsetzung auf Datenbankebene via PostgreSQL RLS. -
Unveränderbarkeit von Sicherheitsereignissen: Protokolldateien, Logins, Berechtigungsänderungen und Konfigurationsmutationen müssen revisionssicher und schreibgeschützt festgeschrieben werden.
Systemische Fachlogik: Faktische Umsetzung in Centurio ERP & Capabilities
Systemische Fachlogik: Die faktische Umsetzung von Stammdaten-Stewardship
In Centurio ERP wird mdm als modularer Monolith-Baustein unter app.modules.mdm geführt. Die Autorisierung erfolgt über die zentrale RBAC-Engine mit Berechtigungs-Prüfung gegen Rollen und Berechtigungen. Datenänderungen lösen Outbox-Events aus, die über den PostgreSQL events-Bus verteilt werden. Idempotente Requests verhindern Replay-Angriffe und versehentliche Mehrfachausführungen.
KI-Consultant Leitfaden: Customizing- & No-Code-Konzept (Soll-Ist-Synthese)
KI-Consultant Blueprint: Customizing & No-Code Leitfaden für Stammdaten-Stewardship
-
No-Code Datenmodell-Erweiterung: Bei Bedarf können kundenspezifische Zusatzfelder im No-Code Customizing Studio angelegt werden.
-
Workflow-Integration: Administrative Ereignisse können als Trigger in der Canvas No-Code DAG Engine genutzt werden.
-
Sicherheitsregeln: Vor kritischen Systemänderungen sind Human-in-the-Loop Freigabegates einzurichten.
📚 Operative Prozessbegriffe & Transaktionsschnittstellen
- Systemaufrufe über REST-API oder Web-Portal
- Hintergrund-Worker und Cron-Jobs
- Ereignisse über den Outbox-Eventbus
- Ausführungs- und Protokolldaten
- Audit-Events im Revisionsjournal
- Veränderte Systemzustände
- security_event -> admin_alert: Alarmierung bei verdächtigen Zugriffen
- config_changed -> cache_invalidation: Sofortige Aktualisierung
- Manuelle Ausnahmebehandlung durch berechtigte Sachbearbeiter
- Revisionssichere Protokollierung im Audit-Trail
- Rollen- und Berechtigungsstufen exakt an Mitarbeiteraufgaben anpassen
- Sicherheitsrichtlinien für Passwörter und Sessions aktivieren
🗄️ Datemodell & Fälder
🔌 Iistigspünkt (UI & APIs)
| Art | Method | Endpunkt / Pfad | Titel & Zweck | Berächtigig |
|---|---|---|---|---|
| ⚡ REST API | GET | /api/v1/mdm/assets/{asset_id}/summary |
get_asset_mdm_summary
Semantic binding: inventory_only; mutation=False
|
mdm
|
| ⚡ REST API | GET | /api/v1/mdm/connections |
list_connections
Semantic binding: inventory_only; mutation=False
|
mdm
|
| ⚡ REST API | GET | /api/v1/mdm/connections/{connection_id}/capabilities |
get_connection_capabilities
Semantic binding: inventory_only; mutation=False
|
mdm
|
| ⚡ REST API | GET | /api/v1/mdm/devices |
list_devices
Semantic binding: inventory_only; mutation=False
|
mdm
|
| ⚡ REST API | GET | /api/v1/mdm/profiles |
list_profiles
Semantic binding: inventory_only; mutation=False
|
mdm
|
| ⚡ REST API | GET | /api/v1/mdm/providers |
list_providers
Semantic binding: inventory_only; mutation=False
|
mdm
|
| ⚡ REST API | GET | /api/v1/stewardship/field-authority/check |
check_field_source
Semantic binding: inventory_only; mutation=False
|
mdm
|
| ⚡ REST API | GET | /api/v1/stewardship/field-keys/{object_key} |
field_keys
Semantic binding: inventory_only; mutation=False
|
mdm
|
| ⚡ REST API | GET | /api/v1/stewardship/field-provenance |
list_field_provenance
Semantic binding: inventory_only; mutation=False
|
mdm
|
| ⚡ REST API | GET | /api/v1/stewardship/identity/{object_key}/{record_id} |
resolve_identity
Semantic binding: inventory_only; mutation=False
|
mdm
|
| ⚡ REST API | GET | /api/v1/stewardship/object-types |
object_types
Semantic binding: inventory_only; mutation=False
|
mdm
|
| ⚡ REST API | GET | /api/v1/stewardship/proposals |
list_proposals
Semantic binding: inventory_only; mutation=False
|
mdm
|
| ⚡ REST API | GET | /api/v1/stewardship/source-mappings |
list_source_mappings
Semantic binding: inventory_only; mutation=False
|
mdm
|
| ⚡ REST API | GET | /api/v1/stewardship/source-mappings/resolve |
resolve_source_mapping
Semantic binding: inventory_only; mutation=False
|
mdm
|
| ⚡ REST API | GET | /data-stewardship |
stewardship_page
Semantic binding: inventory_only; mutation=False
|
mdm
|
| ⚡ REST API | GET | /data-stewardship/search |
search_records
Semantic binding: inventory_only; mutation=False
|
mdm
|
| ⚡ REST API | GET | /mdm |
mdm_console_page
Semantic binding: inventory_only; mutation=False
|
mdm
|
| ⚡ REST API | POST | /api/v1/mdm/commands |
request_command
Semantic binding: operator_surface; mutation=True
|
mdm
|
| ⚡ REST API | POST | /api/v1/mdm/commands/{command_id}/approve |
approve_command
Semantic binding: operator_surface; mutation=True
|
mdm
|
| ⚡ REST API | POST | /api/v1/mdm/connections |
create_connection
Semantic binding: operator_surface; mutation=True
|
mdm
|
| ⚡ REST API | POST | /api/v1/mdm/connections/{connection_id}/sync |
sync_connection_devices
Semantic binding: operator_surface; mutation=True
|
mdm
|
| ⚡ REST API | POST | /api/v1/mdm/connections/{connection_id}/sync-profiles |
sync_profiles
Semantic binding: operator_surface; mutation=True
|
mdm
|
| ⚡ REST API | POST | /api/v1/mdm/connections/{connection_id}/test |
test_connection
Semantic binding: operator_surface; mutation=True
|
mdm
|
| ⚡ REST API | POST | /api/v1/mdm/devices/{binding_id}/assign-profile |
assign_profile
Semantic binding: operator_surface; mutation=True
|
mdm
|
| ⚡ REST API | POST | /api/v1/mdm/fixed-assets |
create_fixed_asset
Semantic binding: operator_surface; mutation=True
|
mdm
|
| ⚡ REST API | POST | /api/v1/mdm/fixed-assets/link |
link_fixed_asset
Semantic binding: operator_surface; mutation=True
|
mdm
|
| ⚡ REST API | POST | /api/v1/stewardship/field-provenance |
record_field_provenance
Semantic binding: operator_surface; mutation=True
|
mdm
|
| ⚡ REST API | POST | /api/v1/stewardship/field-provenance/{provenance_id}/select-authority |
select_field_authority
Semantic binding: operator_surface; mutation=True
|
mdm
|
| ⚡ REST API | POST | /api/v1/stewardship/proposals |
create_proposal
Semantic binding: operator_surface; mutation=True
|
mdm
|
| ⚡ REST API | POST | /api/v1/stewardship/proposals/scan |
scan_duplicate_candidates
Semantic binding: operator_surface; mutation=True
|
mdm
|
| ⚡ REST API | POST | /api/v1/stewardship/proposals/{proposal_id}/decision |
decide_proposal
Semantic binding: operator_surface; mutation=True
|
mdm
|
| ⚡ REST API | POST | /api/v1/stewardship/source-mappings |
create_source_mapping
Semantic binding: operator_surface; mutation=True
|
mdm
|
| ⚡ REST API | POST | /api/v1/stewardship/source-mappings/{mapping_id}/reassign |
reassign_source_mapping
Semantic binding: operator_surface; mutation=True
|
mdm
|
| ⚡ REST API | POST | /data-stewardship/field-provenance |
record_field_provenance
Semantic binding: operator_surface; mutation=True
|
mdm
|
| ⚡ REST API | POST | /data-stewardship/field-provenance/{provenance_id}/select-authority |
select_field_authority
Semantic binding: operator_surface; mutation=True
|
mdm
|
| ⚡ REST API | POST | /data-stewardship/proposals |
create_proposal
Semantic binding: operator_surface; mutation=True
|
mdm
|
| ⚡ REST API | POST | /data-stewardship/proposals/scan |
scan_duplicate_candidates
Semantic binding: operator_surface; mutation=True
|
mdm
|
| ⚡ REST API | POST | /data-stewardship/proposals/{proposal_id}/decision |
decide_proposal
Semantic binding: operator_surface; mutation=True
|
mdm
|
| ⚡ REST API | POST | /data-stewardship/source-mappings |
create_source_mapping
Semantic binding: operator_surface; mutation=True
|
mdm
|
| ⚡ REST API | POST | /data-stewardship/source-mappings/{mapping_id}/reassign |
reassign_source_mapping
Semantic binding: operator_surface; mutation=True
|
mdm
|
🛡️ Regulatorie & Compliance
Dieses Modul unterliegt folgenden gesetzlichen, regulatorischen und Revisionsstandards:
- GoBD Nachvollziehbarkeit
- Mandanten-Isolation (PostgreSQL RLS)