BMD NLZ-Zulagen Import

Last modified by Claude MCP Bot on 2026/06/23 21:14

BMD NLZ-Zulagen Import – Prozessdokumentation

BMD NLZ-Zulagen Import

Prozessdokumentation

  
Version1.4
Erstellt am2026-05-22
Erstellt vonPatrick Sonderegger
WorkspaceFabric / 08_Data for Sharing / BMD NLZ-Zulagen Import
StatusAktiv

 

 

1. Überblick

Dieser Prozess liest täglich CSV-Dateien (NLZ und Zulagen) sowie ein Excel-File (Kantine) von einem Windows-Fileserver ein, transformiert sie gemäss definierten Geschäftsregeln und legt die verarbeiteten Dateien wieder auf dem Fileserver ab. Die Output-Files heissen fix ntcsNLZ.csv, ntcsZulagen.csv und Importdatei Kantine.csv. Das Kantine-File wird zusätzlich mit Firmendaten aus dem Lakehouse spl_gold_lh angereichert.

Der Prozess läuft vollautomatisch einmal täglich über Microsoft Fabric (Pipeline + Notebook) und ist über ein On-Premises Data Gateway mit dem Fileserver verbunden.

2. Prozessablauf

2.1 Täglicher Ablauf

  • Die Pipeline wird automatisch gestartet (Scheduled Trigger)
  • NLZ-, Zulagen- und Kantine-Files werden vom Fileserver in das Fabric Lakehouse kopiert
  • Das Notebook transformiert die Files gemäss den Geschäftsregeln
  • Die transformierten Files werden zurück auf den Fileserver geschrieben
  • Die ursprünglichen Source-Files werden auf dem Fileserver archiviert und gelöscht
  • Zeilen für Firma 260 werden in die Output-Files ntcsNLZ.csv / ntcsZulagen.csv integriert
  • Ein Log-Protokoll wird im Lakehouse abgelegt

2.2 Ordnerstruktur Fileserver

Test-Umgebung

TypPfad
NLZ Source\\atvietfs01\daten\Orbyte_Testordner\NLZ\Rohdaten
NLZ Output\\atvietfs01\daten\Orbyte_Testordner\NLZ
NLZ Archiv\\atvietfs01\daten\Orbyte_Testordner\NLZ\Rohdaten\Archiv
Zulagen Source\\atvietfs01\daten\Orbyte_Testordner\Zulagen\Rohdaten
Zulagen Output\\atvietfs01\daten\Orbyte_Testordner\Zulagen
Zulagen Archiv\\atvietfs01\daten\Orbyte_Testordner\Zulagen\Rohdaten\Archiv

Live-Umgebung

TypPfad
NLZ Source\\atvietfs01\daten\IT\BMD\BMD\LV\NLZ\Rohdaten
NLZ Output\\atvietfs01\daten\IT\BMD\BMD\LV\NLZ
NLZ Archiv\\atvietfs01\daten\IT\BMD\BMD\LV\NLZ\Rohdaten\Archiv
Zulagen Source\\atvietfs01\daten\IT\BMD\BMD\LV\Zulagen\Rohdaten
Zulagen Output\\atvietfs01\daten\IT\BMD\BMD\LV\Zulagen
Zulagen Archiv\\atvietfs01\daten\IT\BMD\BMD\LV\Zulagen\Rohdaten\Archiv

2.3 Ordnerstruktur Fabric Lakehouse (shared_data_lh)

Files/

└── CSV_Transformation/

├── NLZ/

│ ├── Raw/ ← Eingang vom Fileserver

│ ├── Output/ ← Transformierte Files

│ └── Archive/ ← Archiv der Source-Files

├── Zulagen/

│ ├── Raw/

│ ├── Output/

│ └── Archive/

├── Kantine/

│ ├── Raw/ ← Eingang vom Fileserver

│ ├── Output/ ← Importdatei Kantine.csv (ohne Firma 78)

│ ├── Output_78/ ← Importdatei Kantine.csv (nur Firma 78)

│ ├── Fehlerhafte_Eintraege/ ← Zeilen mit fehlender PersonalNr oder Betrag

│ └── Archive/ ← Archiv der Source-Files

└── Logs/ ← Run-Protokolle und Summaries

3. Transformationsregeln

3.1 Zulagen-Files

Erkennungsmerkmal: Dateiname enthält "Zulagen"

BedingungSpalteAktion
Spalte D == 7590F (idx 5)Wert auf 1 setzen
Spalte D == 7590G (idx 6)Aktuellen Monat aus Spalte A (YYYYMMDD) als Zahl eintragen (z.B. April → 4)
Spalte D != 7590Zeile bleibt unverändert

3.2 NLZ-Files

Erkennungsmerkmal: Dateiname enthält "NLZ"

Schritt 1 – Zeilen löschen (Spalte D)

Wert in Spalte DAktion
3, 7, 8, 11, 16Zeile löschen

Schritt 2 – Werte ersetzen (Spalte D)

UrsprungswertNeuer Wert
41
62
93

Schritt 3 – Spalten neu anordnen

Output-SpalteQuelle
ASource Spalte B
BSource Spalte C
CSource Spalte D (nach Ersetzung)
DFix-Wert 3
ESource Spalte A (Datum)
FSource Spalte A (Datum, dupliziert)

3.3 Firma-260-Integration

Output-FileFilterkriteriumÄnderung
ntcsZulagen.csvSpalte B (idx 1) == 70Zeilen kopieren, Spalte B auf 260 setzen, ans Ende von ntcsZulagen.csv anhängen
ntcsNLZ.csvSpalte A (idx 0) == 70Zeilen kopieren, Spalte A auf 260 setzen, ans Ende von ntcsNLZ.csv anhängen

3.4 Kantine-File

Erkennungsmerkmal: Dateiendung .xlsx im Kantine/Raw-Ordner

SchrittBeschreibung
1. Filter: Firma „Rudi Schütz“Zeilen mit Spalte Firma == „Rudi Schütz“ werden gelöscht
2. Filter: Personalnummer leerZeilen ohne Personalnummer (Spalte Vorname leer) werden übersprungen
3. Join mit sdmpersonPersonalnummer wird mit spl_gold_lh.rimo.sdmperson (Spalte persid) gejoint. Resultat: getcompanyidorna
4. Folgemonat berechnenSpalte Monat (Format MM/YYYY) wird um 1 Monat erhöht und als einfache Monatszahl ausgegeben. Beispiel: 04/2026 → 5
5. Output-StrukturSpalte A: Monat (einfache Zahl, z.B. 5) | B: getcompanyidorna | C: Personalnummer | D: 2934 (fix) | E: Betrag (2 Dezimalstellen, Komma)
6. Firma-78-SplitZeilen mit getcompanyidorna == 78 werden im Originalformat (Spalten: Firma | Kunde | PersonalNr | Nachname | Betrag | Monat) in ein separates File geschrieben (Kantine/Output_78 → FS: Kantine\Germany). Alle anderen Zeilen kommen transformiert in Kantine/Output.
7. Firma-260-IntegrationZeilen mit getcompanyidorna == 70 werden kopiert, Firma auf 260 geändert und ans Ende von Kantine/Output angehängt.
8. Fehlerhafte EinträgeZeilen mit fehlender Personalnummer und/oder fehlendem Betrag werden aus dem Output entfernt und im Originalformat als „Fehlerhafte Eintraege.csv“ unter Kantine/Fehlerhafte_Eintraege gespeichert.

4. Technische Dokumentation

4.1 Fabric Komponenten

KomponenteNameTyp
PipelinePipeline_CSV_TransformData Pipeline
Notebookcsv_transformationNotebook (Python)
Lakehouseshared_data_lhLakehouse
GatewaySPL_DatagatewayOn-Premises Data Gateway

4.2 Pipeline-Activities im Detail

ActivityTypVonNach
Copy NLZ FS → LakehouseCopy dataFS: NLZ\Rohdaten\*.csvLakehouse: NLZ/Raw
Copy Zulagen FS → LakehouseCopy dataFS: Zulagen\Rohdaten\*.csvLakehouse: Zulagen/Raw
csv_transformation (Notebook)NotebookLakehouse: NLZ/Raw + Zulagen/RawLakehouse: NLZ/Output + Zulagen/Output
Copy NLZ Lakehouse → FSCopy dataLakehouse: NLZ/OutputFS: NLZ\
Copy Zulagen Lakehouse → FSCopy dataLakehouse: Zulagen/OutputFS: Zulagen\
Archive NLZ on FSCopy dataFS: NLZ\Rohdaten\*.csvFS: NLZ\Rohdaten\Archiv
Delete NLZ on FSDelete dataFS: NLZ\Rohdaten\*.csv
Archive Zulagen on FSCopy dataFS: Zulagen\Rohdaten\*.csvFS: Zulagen\Rohdaten\Archiv
Delete Zulagen on FSDelete dataFS: Zulagen\Rohdaten\*.csv
Copy Kantine FS → LakehouseCopy dataFS: Kantine\Rohdaten\*.xlsxLakehouse: Kantine/Raw
Copy Kantine Lakehouse → FSCopy dataLakehouse: Kantine/OutputFS: Kantine\
Copy Kantine (Firma 78) Lakehouse → FSCopy dataLakehouse: Kantine/Output_78FS: Kantine\Germany
Archive Kantine on FSCopy dataFS: Kantine\Rohdaten\*.xlsxFS: Kantine\Rohdaten\Archiv
Delete Kantine on FSDelete dataFS: Kantine\Rohdaten\*.xlsx
Copy Kantine Fehlerhafte Einträge Lakehouse → FSCopy dataLakehouse: Kantine/Fehlerhafte_EintraegeFS: Kantine\Fehlerhafte Eintraege

4.3 Notebook-Konfiguration

Alle konfigurierbaren Pfade sind am Anfang des Notebooks im Abschnitt KONFIGURATION zusammengefasst:

BASE_DIR = "/lakehouse/default/Files/CSV_Transformation"

NLZ_SOURCE_DIR = f"{BASE_DIR}/NLZ/Raw"

NLZ_OUTPUT_DIR = f"{BASE_DIR}/NLZ/Output"

NLZ_ARCHIVE_DIR = f"{BASE_DIR}/NLZ/Archive"

ZUL_SOURCE_DIR = f"{BASE_DIR}/Zulagen/Raw"

ZUL_OUTPUT_DIR = f"{BASE_DIR}/Zulagen/Output"

ZUL_ARCHIVE_DIR = f"{BASE_DIR}/Zulagen/Archive"

KAN_SOURCE_DIR = f"{BASE_DIR}/Kantine/Raw"

KAN_OUTPUT_DIR = f"{BASE_DIR}/Kantine/Output"

KAN_OUTPUT_78_DIR = f"{BASE_DIR}/Kantine/Output_78"

KAN_ERROR_DIR = f"{BASE_DIR}/Kantine/Fehlerhafte_Eintraege"

KAN_ARCHIVE_DIR = f"{BASE_DIR}/Kantine/Archive"

SDMPERSON_ABFSS = "abfss://<container>@<storage>.dfs.core.windows.net/spl_gold_lh/rimo/sdmperson"

LOG_DIR = f"{BASE_DIR}/Logs"

4.4 Logging & Monitoring

Pro Run werden zwei Dateien im Lakehouse unter CSV_Transformation/Logs/ erstellt:

DateiInhalt
YYYYMMDD_HHMMSS_run.logVollständiges Zeilenprotokoll mit Timestamps
YYYYMMDD_HHMMSS_summary.jsonKompakte Zusammenfassung: Status, verarbeitete Files, Fehler

Run History in Fabric: Pipeline → View run history → Status, Dauer und Fehlerdetails pro Activity.

5. Fehlerbehandlung & Troubleshooting

5.1 Wo sehe ich ob der Prozess erfolgreich war?

  • Fabric Portal → Workspace → Pipeline → View run history (Status pro Activity, Dauer, Fehlertext)
  • Lakehouse → shared_data_lh → Files → CSV_Transformation → Logs → _summary.json für schnellen Überblick
  • _run.log für vollständige Details

5.2 Häufige Fehler und Lösungen

FehlerMögliche UrsacheLösung
FileNotFoundError: .../RawLakehouse-Ordner fehltOrdner manuell im Lakehouse anlegen
Source-Ordner nicht erreichbarGateway offline oder Pfad falschGateway-Status prüfen; Pfad in Pipeline-Activity kontrollieren
Cannot connect to \\atvietfs01\...Pfad-Dopplung im Wildcard folderBasispath der Verbindung (\\atvietfs01\Daten) nicht nochmals angeben
Keine CSV-Files gefundenSource-Ordner leerPrüfen ob Files korrekt im Source-Ordner abgelegt wurden
Output-File fehltTransformation-Fehler_run.log im Lakehouse öffnen und nach ERROR suchen

5.3 Manueller Test

  • Source-Files manuell in Raw-Ordner im Lakehouse hochladen (Lakehouse → Files → NLZ/Raw oder Zulagen/Raw → Upload)
  • Notebook direkt öffnen und Run all klicken
  • Output-Files im Lakehouse unter NLZ/Output bzw. Zulagen/Output prüfen

5.4 Anpassungen vornehmen

Was ändern?Wo?
Fileserver-PfadePipeline-Activities (Source/Destination)
TransformationsregelnNotebook: Funktionen transform_nlz() / transform_zulagen()
Firma-260-LogikNotebook: Funktion process_folder() (260-Logik integriert)
Scheduled Trigger (Uhrzeit)Pipeline → Schedule oben in der Toolbar
Lakehouse-PfadeNotebook: Abschnitt KONFIGURATION (ganz oben)

6. Zuständigkeiten

BereichZuständig
Fachliche TransformationsregelnBMD-Team
Fabric Pipeline & NotebookIT / Patrick Sonderegger
Fileserver & GatewayIT-Infrastruktur
Monitoring & FehleranalyseIT / Patrick Sonderegger

7. Änderungshistorie

VersionDatumÄnderungAutor
1.02026-05-22ErstversionPatrick Sonderegger
1.12026-05-26Output-Dateinamen fix (ntcsNLZ.csv, ntcsZulagen.csv); 260-Logik in process_folder() integriert; create_260_files() entferntPatrick Sonderegger
1.22026-05-27Kantine-Verarbeitung hinzugefügt: Excel-Einlesen, Join mit sdmperson (Delta via abfss), Folgemonat-Logik, Firma-78-Split, neue Pipeline-ActivitiesPatrick Sonderegger
1.32026-05-28Kantine: Monat als einfache Zahl (statt MM/YYYY); Firma-260-Integration; Fehlerhafte-Einträge-Logik (fehlende PersonalNr/Betrag → Fehlerhafte Eintraege.csv); neue Pipeline-Activity; KAN_ERROR_DIRPatrick Sonderegger
1.42026-06-08Kantine: Germany-File (Output_78) wird im Originalformat gespeichert (Spalten: Firma | Kunde | PersonalNr | Nachname | Betrag | Monat)Patrick Sonderegger

Version 1.0 | 2026-05-22 | Seite 7

 


Verwandte Themen

Kuratiert — kann direkt im Editor ergänzt werden:////

Automatisch vorgeschlagen über gemeinsame Tags (anleitung): 


Status: Migriert — Team-Review ausstehend · Owner: (festlegen) · Letzter Review: 2026-06-11