BMD NLZ-Zulagen Import
BMD NLZ-Zulagen Import – Prozessdokumentation
BMD NLZ-Zulagen Import
Prozessdokumentation
| Version | 1.4 |
| Erstellt am | 2026-05-22 |
| Erstellt von | Patrick Sonderegger |
| Workspace | Fabric / 08_Data for Sharing / BMD NLZ-Zulagen Import |
| Status | Aktiv |
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
| Typ | Pfad |
| 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
| Typ | Pfad |
| 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"
| Bedingung | Spalte | Aktion |
| Spalte D == 7590 | F (idx 5) | Wert auf 1 setzen |
| Spalte D == 7590 | G (idx 6) | Aktuellen Monat aus Spalte A (YYYYMMDD) als Zahl eintragen (z.B. April → 4) |
| Spalte D != 7590 | — | Zeile bleibt unverändert |
3.2 NLZ-Files
Erkennungsmerkmal: Dateiname enthält "NLZ"
Schritt 1 – Zeilen löschen (Spalte D)
| Wert in Spalte D | Aktion |
| 3, 7, 8, 11, 16 | Zeile löschen |
Schritt 2 – Werte ersetzen (Spalte D)
| Ursprungswert | Neuer Wert |
| 4 | 1 |
| 6 | 2 |
| 9 | 3 |
Schritt 3 – Spalten neu anordnen
| Output-Spalte | Quelle |
| A | Source Spalte B |
| B | Source Spalte C |
| C | Source Spalte D (nach Ersetzung) |
| D | Fix-Wert 3 |
| E | Source Spalte A (Datum) |
| F | Source Spalte A (Datum, dupliziert) |
3.3 Firma-260-Integration
| Output-File | Filterkriterium | Änderung |
| ntcsZulagen.csv | Spalte B (idx 1) == 70 | Zeilen kopieren, Spalte B auf 260 setzen, ans Ende von ntcsZulagen.csv anhängen |
| ntcsNLZ.csv | Spalte A (idx 0) == 70 | Zeilen kopieren, Spalte A auf 260 setzen, ans Ende von ntcsNLZ.csv anhängen |
3.4 Kantine-File
Erkennungsmerkmal: Dateiendung .xlsx im Kantine/Raw-Ordner
| Schritt | Beschreibung |
| 1. Filter: Firma „Rudi Schütz“ | Zeilen mit Spalte Firma == „Rudi Schütz“ werden gelöscht |
| 2. Filter: Personalnummer leer | Zeilen ohne Personalnummer (Spalte Vorname leer) werden übersprungen |
| 3. Join mit sdmperson | Personalnummer wird mit spl_gold_lh.rimo.sdmperson (Spalte persid) gejoint. Resultat: getcompanyidorna |
| 4. Folgemonat berechnen | Spalte Monat (Format MM/YYYY) wird um 1 Monat erhöht und als einfache Monatszahl ausgegeben. Beispiel: 04/2026 → 5 |
| 5. Output-Struktur | Spalte A: Monat (einfache Zahl, z.B. 5) | B: getcompanyidorna | C: Personalnummer | D: 2934 (fix) | E: Betrag (2 Dezimalstellen, Komma) |
| 6. Firma-78-Split | Zeilen 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-Integration | Zeilen mit getcompanyidorna == 70 werden kopiert, Firma auf 260 geändert und ans Ende von Kantine/Output angehängt. |
| 8. Fehlerhafte Einträge | Zeilen 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
| Komponente | Name | Typ |
| Pipeline | Pipeline_CSV_Transform | Data Pipeline |
| Notebook | csv_transformation | Notebook (Python) |
| Lakehouse | shared_data_lh | Lakehouse |
| Gateway | SPL_Datagateway | On-Premises Data Gateway |
4.2 Pipeline-Activities im Detail
| Activity | Typ | Von | Nach |
| Copy NLZ FS → Lakehouse | Copy data | FS: NLZ\Rohdaten\*.csv | Lakehouse: NLZ/Raw |
| Copy Zulagen FS → Lakehouse | Copy data | FS: Zulagen\Rohdaten\*.csv | Lakehouse: Zulagen/Raw |
| csv_transformation (Notebook) | Notebook | Lakehouse: NLZ/Raw + Zulagen/Raw | Lakehouse: NLZ/Output + Zulagen/Output |
| Copy NLZ Lakehouse → FS | Copy data | Lakehouse: NLZ/Output | FS: NLZ\ |
| Copy Zulagen Lakehouse → FS | Copy data | Lakehouse: Zulagen/Output | FS: Zulagen\ |
| Archive NLZ on FS | Copy data | FS: NLZ\Rohdaten\*.csv | FS: NLZ\Rohdaten\Archiv |
| Delete NLZ on FS | Delete data | FS: NLZ\Rohdaten\*.csv | — |
| Archive Zulagen on FS | Copy data | FS: Zulagen\Rohdaten\*.csv | FS: Zulagen\Rohdaten\Archiv |
| Delete Zulagen on FS | Delete data | FS: Zulagen\Rohdaten\*.csv | — |
| Copy Kantine FS → Lakehouse | Copy data | FS: Kantine\Rohdaten\*.xlsx | Lakehouse: Kantine/Raw |
| Copy Kantine Lakehouse → FS | Copy data | Lakehouse: Kantine/Output | FS: Kantine\ |
| Copy Kantine (Firma 78) Lakehouse → FS | Copy data | Lakehouse: Kantine/Output_78 | FS: Kantine\Germany |
| Archive Kantine on FS | Copy data | FS: Kantine\Rohdaten\*.xlsx | FS: Kantine\Rohdaten\Archiv |
| Delete Kantine on FS | Delete data | FS: Kantine\Rohdaten\*.xlsx | — |
| Copy Kantine Fehlerhafte Einträge Lakehouse → FS | Copy data | Lakehouse: Kantine/Fehlerhafte_Eintraege | FS: 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:
| Datei | Inhalt |
| YYYYMMDD_HHMMSS_run.log | Vollständiges Zeilenprotokoll mit Timestamps |
| YYYYMMDD_HHMMSS_summary.json | Kompakte 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
| Fehler | Mögliche Ursache | Lösung |
| FileNotFoundError: .../Raw | Lakehouse-Ordner fehlt | Ordner manuell im Lakehouse anlegen |
| Source-Ordner nicht erreichbar | Gateway offline oder Pfad falsch | Gateway-Status prüfen; Pfad in Pipeline-Activity kontrollieren |
| Cannot connect to \\atvietfs01\... | Pfad-Dopplung im Wildcard folder | Basispath der Verbindung (\\atvietfs01\Daten) nicht nochmals angeben |
| Keine CSV-Files gefunden | Source-Ordner leer | Prüfen ob Files korrekt im Source-Ordner abgelegt wurden |
| Output-File fehlt | Transformation-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-Pfade | Pipeline-Activities (Source/Destination) |
| Transformationsregeln | Notebook: Funktionen transform_nlz() / transform_zulagen() |
| Firma-260-Logik | Notebook: Funktion process_folder() (260-Logik integriert) |
| Scheduled Trigger (Uhrzeit) | Pipeline → Schedule oben in der Toolbar |
| Lakehouse-Pfade | Notebook: Abschnitt KONFIGURATION (ganz oben) |
6. Zuständigkeiten
| Bereich | Zuständig |
| Fachliche Transformationsregeln | BMD-Team |
| Fabric Pipeline & Notebook | IT / Patrick Sonderegger |
| Fileserver & Gateway | IT-Infrastruktur |
| Monitoring & Fehleranalyse | IT / Patrick Sonderegger |
7. Änderungshistorie
| Version | Datum | Änderung | Autor |
| 1.0 | 2026-05-22 | Erstversion | Patrick Sonderegger |
| 1.1 | 2026-05-26 | Output-Dateinamen fix (ntcsNLZ.csv, ntcsZulagen.csv); 260-Logik in process_folder() integriert; create_260_files() entfernt | Patrick Sonderegger |
| 1.2 | 2026-05-27 | Kantine-Verarbeitung hinzugefügt: Excel-Einlesen, Join mit sdmperson (Delta via abfss), Folgemonat-Logik, Firma-78-Split, neue Pipeline-Activities | Patrick Sonderegger |
| 1.3 | 2026-05-28 | Kantine: 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_DIR | Patrick Sonderegger |
| 1.4 | 2026-06-08 | Kantine: 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):
- Rimo DWH
- Fabric external data sharing
- Rimo Daten für Power User
- Fabric Data Pipelines
- Fabric Dataflows
- Fabric Excel Ingestion
Status: Migriert — Team-Review ausstehend · Owner: (festlegen) · Letzter Review: 2026-06-11