2.3 CAFM — Legacy-Analyse

Stand: 2026-03-05

Übergeordnet: CAFM-Architektur — Gesamtübersicht Verwandt: 2.2 Asset-Modell | 2.4 Migration

Überblick

Vier Quellsysteme fließen in die neue Architektur:

System Fokus Stärken Schwächen Ziel
AMED Mechanik Vollständige Apparatehierarchie Kein Elektriker-Modell; kein TP ENIVERSCAFM
TecDB Rohre / EAV Flexible Objekteigenschaften Dynamisches SQL, kein Plan-Cache ENIVERSPIMS
WIS/PROOF Prüfpläne Bewährte TimeTrain-Engine 63 Synonyme; externe PROOF/HIST-DB ENIVERSPIMS
LD/ENIVERS Elektrik EMR-Stellen, Kv-Nummern, BESTAND Kein Mechanik-Modell ENIVERSCAFM

AMED — Mechanik-zentrisch

Fokus und Stärken

AMED ist auf Apparate (Maschinen, Behälter, Aggregate) ausgerichtet. APPMASTER.erwAppNr ist der universelle Primärschlüssel für alle mechanischen Objekte.

Objektdomänen

Tabelle Zweck Verknüpfung Anzahl (ca.)
APPMASTER Basisobjekt: Mechanische Apparate erwAppNr = PK ~11.650
MOTORMASTER Motoren (Untertyp von APPMASTER) FK → APPMASTER ~8.460
EZAMASTER Elektrische Zonierung / SIL-Einstufung FK → APPMASTER variabel
AVI_Equip TÜV-/§29-überwachungspflichtige Anlagen FK → APPMASTER variabel
tblLocationKV Elektrische Zonen (KV-Nummern, Motoren) polymorphisch via IDObType variabel

Schwachstellen

  • Mechanik-zentrisch: Elektriker-Sicht (EMR-Stellen, Schaltschrank-Abgänge) ist nur über tblLocationKV und EZAMASTER ansatzweise abgedeckt.
  • Kein Technischer Platz: APPMASTER beschreibt das physische Objekt, nicht den strukturellen Slot. Tausch eines Motors hinterlässt keine Slot-History.
  • Kein TP-Konzept für Rohre: Rohre und Leitungen liegen separat in TecDB.
Benutzerdokumentation (Ist-Stand): AMED 1. Apparatefunktion | AMED 2. Motorfunktionalität

Inspektionstypen (tdfObjectTypes — 17 Typen)

ID Kürzel Beschreibung
1 PIV Periodische Prüfung intern
2 BZ Betriebszustandsprüfung
3 GP Gesetzliche Prüfung
4 EIE Elektrische Inspektion
5 BGV/A3 Elektrische Prüfung BGV A3
6 KV KV-Motoren-Prüfung
7 EX Explosionsgefährdete Bereiche
8 BS Brandschutz
9 SS Sicherheitsstufe
10 FI FI-Schutzschalter
11 BL Blitzschutz
12 AK Ankerprüfung
13 DK Druckprüfung
14 PV Prüfvorschrift intern
15 SU Sachkundigenprüfung
16 SH Sicherheit halbjährlich
17 RM Regelmäßige Messung

TecDB — EAV-Problem

Architektur

TecDB verwendet ein bidirektionales EAV-Modell (Entity-Attribute-Value):

  • tblRohrMaster = flache Tabelle mit ~150 Spalten (eine pro Rohreigenschaft)
  • tblObjektEigenschaft = EAV-Tabelle (Objekt → Eigenschaft → Wert)
  • Beide Tabellen werden via bidirektionale Trigger synchron gehalten

Das Performance-Problem

trgRohrMasterInsertUpdate (Insert/Update auf tblRohrMaster):
  → Dynamisches UNPIVOT aller 150 Spalten
  → MERGE tblObjektEigenschaft
  → sp_executesql pro Datenschreib-Operation
  → Kein Plan-Cache möglich

trgObjektEigenschaftUpdate (Update auf tblObjektEigenschaft):
  → Lookup: idEigenschaft → Spaltenname
  → sp_executesql: UPDATE tblRohrMaster SET [dynamische Spalte]
  → Kein Plan-Cache möglich

In Zeiten geringer Rechnerleistung war dieses Modell ein sinnvoller Kompromiss. Heute ist es ein Engpass bei Massen-Updates (z.B. Migration, Nachtjobs).

Exportproblem: procExportObjektAllePivot

Diese Stored Procedure erzeugt einen dynamischen PIVOT über alle Eigenschaften — der resultierende SQL-Text ändert sich je nach Anzahl der Eigenschaften. Kein Plan-Cache, keine stabile Ausführungszeit.

Migrationsziel

  • tblRohrMasterasset.item (type_code='piping', properties=JSON)
  • tblObjektEigenschaft → JSON-Felder in asset.item.properties
  • Trigger entfallen; Views via trg_regen_type_views ersetzen den PIVOT
  • Bidirektionale Synchronisation entfällt ersatzlos

WIS / PROOF — Prüfplanungs-Engine

Architektur

WIS ist eine Synonym-Datenbank: 63 Synonyme zeigen auf AMED, HIST und AUDIT. PROOF ist eine externe Datenbank (nicht lokal verfügbar; Zugriff via Linked Server).

Stärken

Die WIS TimeTrain-Engine ist architektonisch solide und wird vollständig in ENIVERSPIMS übernommen:

WIS-Funktionsfamilie (5-Phasen-Zyklus):

  RuleBase-Tabelle
    └─► tf_GetScheduledTasksForecast   (Vorausplanung: welche Tasks wann fällig)
          └─► sp_TimeTrain_AppendMissingTasks  (Materialisierung in TimeTrain)
                └─► sp_TimeTrainRun / sp_JedeNacht  (Nachtjob)
                      └─► tf_GetScheduledTasksListCurrent   (aktuelle Aufgabenliste)
                      └─► tf_GetScheduledTasksTreeCurrent   (Baumansicht)
                            └─► sp_TimeTrain2Hist            (Archivierung → HIST-DB)

Nachtjob sp_JedeNacht (Ablauf)

1. CUTOFDAY-Schleife: Fehlende Tage aufholen (Catch-up bei Ausfällen)
2. sp_Deactivate:  Inaktive Anlagen aus TimeTrain ausblenden
3. sp_TransferRules: Regeländerungen propagieren
4. sp_Activate:    Neue/reaktivierte Anlagen aktivieren
5. sp_TimeTrain_AppendMissingTasks: Neue Tasks generieren (Fenster bis +90 Tage)
6. sp_TimeTrain2Hist: Erledigte Tasks → HIST-DB archivieren
7. Überfällige Tasks markieren (InProcess=4)
8. dtShow-Korrektur für Tasks ohne EIE-Datum

tf_GetCommonExtended — Kerndaten-View-Funktion

Verbindet Common + Names + RuleBase + App + AVI_Equip zu einer flachen Zeile:

  • Beschreibung aus APPMASTER (AppNr + AppBenennung) oder AVI_Equip (RegNr + INT_NR)
  • Alle RuleBase-Codes (PIV, BZ, GP, EIE, AK, DK, PV, PO, MC, DAO, SU, SH, RM, MIN)
  • Basis für alle TimeTrain-Forecast-Berechnungen

Schwachstellen

  • Synonym-Abhängigkeiten: 63 Synonyme auf 3+ Datenbanken; wartungsintensiv
  • PROOF extern: Kein direkter Zugriff aus WIS; Linked-Server-Abhängigkeit
  • HIST extern: sp_TimeTrain2Hist schreibt in HIST.dbo.TimeTrain_Hist — ebenfalls extern
  • Kein TP-Konzept: WIS kennt nur Common.IdSub (Geräte-ID aus AMED), keinen strukturellen TP

LD / ENIVERS — Elektriker-zentrisch

Fokus und Stärken

LD (früher: dbTECC) ist auf Betriebsmittel aus Elektriker-Perspektive ausgerichtet. BESTAND.EMR_STELLE ist der natürliche Schlüssel für alle elektrischen Objekte.

Kerntabellen

Tabelle Zweck
BESTAND Betriebsmittel mit EMR_Stelle (Kennzeichnung)
MOTORSTAMM Motorenstammdaten (Elektriker-Felder)
KV_NUMMER Kraftverteiler-Nummern
tblPerson Benutzer (migriert → ENIVERSSIAM Phase 2)
tblRolle Rollen (migriert → ENIVERSSIAM Phase 2)

Schwachstellen

  • Elektriker-zentrisch: Mechanik-Sicht (Apparat, Behälter, Aggregate) fehlt vollständig.
  • EMR_STELLE als natürlicher Schlüssel: Umbenennungen erfordern Kaskaden-Updates.
  • Kein TP-Konzept: BESTAND beschreibt das Betriebsmittel, nicht den Einbauort.

Was ENIVERS hatte, was AMED nicht hatte

  • Klare KV-Nummern und Schaltschrankzuordnung
  • EMR-Stelle als standardisiertes Kennzeichnungssystem
  • Vollständige Elektriker-Sicht auf Motoren und Antriebe

Was AMED hatte, was ENIVERS nicht hatte

  • Apparate-Hierarchie (was gehört zu welcher Maschine)
  • Mechanische Inspektionstypen (Druckprüfung, Sachkundigenprüfung)
  • TÜV-Überwachung (AVI_Equip)
  • Vollständige mechanische Sicht auf Aggregate und Behälter
Benutzerdokumentation (Ist-Stand): AMED — Programmbeschreibung (Gesamtübersicht)

Fazit: "Beste beider Welten"

Die neue Architektur mit asset.item und asset.electrical_connection vereint:

AMED (Mechanik-Sicht)                  LD/ENIVERS (Elektriker-Sicht)
  erwAppNr → asset.item.id               EMR_STELLE → asset.item.item_number
  APPMASTER → type_code='device'         BESTAND    → type_code='electrical'
  MOTORMASTER → type_code='motor'        KV_NUMMER  → asset.electrical_connection.kv_number

  Beide Sichten auf dasselbe physische Objekt:
  asset.electrical_connection verknüpft device_id + motor_id + kv_code

Der Technische Platz ist weder AMED-Apparat noch ENIVERS-Betriebsmittel — er ist der neutrale strukturelle Slot, dem Equipment aus beiden Welten zugewiesen werden kann.

Zuletzt geändert: den 05.03.2026 um 22:52