DSB-PlugIn/AddOn/Datenexport_Zeiterfassung
olaf.braun dee8f6ebf7 AddOn/Datenexport_Zeiterfassung/test2.html hinzugefügt 2025-06-27 00:04:33 +02:00
..
Kalender-Export-Parser.php AddOn/Datenexport_Zeiterfassung/Kalender-Export-Parser.php hinzugefügt 2025-06-26 23:58:39 +02:00
TimeTrackingAPI.php AddOn/Datenexport_Zeiterfassung/TimeTrackingAPI.php aktualisiert 2025-06-26 23:56:47 +02:00
index.php AddOn/Datenexport_Zeiterfassung/index.php aktualisiert 2025-06-26 23:57:09 +02:00
readme.md AddOn/Datenexport_Zeiterfassung/readme.md aktualisiert 2025-06-26 23:01:40 +02:00
test.html AddOn/Datenexport_Zeiterfassung/test.html aktualisiert 2025-06-25 22:32:48 +02:00
test2.html AddOn/Datenexport_Zeiterfassung/test2.html hinzugefügt 2025-06-27 00:04:33 +02:00

readme.md

Daten aus der Zeiterfassung übernehmen

Die Zeiterfassungssoftware bietet eine WebAPI-Schnittstelle zur automatisierten Datenabfrage, z.B. für Kalenderfehlzeiten.


Voraussetzungen

  • REST WebAPI Client (curl, Bruno, Postman, ...)
  • IIS Webserver mit HTTPS-Unterstützung
  • Lizenz zur Nutzung der WebAPI für den Export von Daten

Installation & Einrichtung

1. Export in der Zeiterfassungssoftware anlegen

  • Navigiere zu:
    Einrichtung → Modelle → Datenaustausch → Exportdefinition → [+] Neu
  • Lade dort das gewünschte Export-Layout hoch.

2. (De)Aktivierung der zusätzlichen Zeitstempelverschlüsselung

  • Als Systemadministrator in der Weboberfläche anmelden

  • Navigiere zu:
    Einrichtung → Personen → Systemstart (Datum 01.01.2000) auswählen
    Systemeinstellungen → API Web-Service → Datenschutzeinstellung

  • Stelle sicher, dass „Auf zusätzliche Client-Autorisierung wird verzichtet“ aktiviert ist.

  • Erstelle ein Bearer-Token unter:
    https://<WebUI-URL>/Environment/Account/Token.aspx

    Mit folgenden Angaben:

    • Schnittstelle: webapi
    • Login: Ein zugelassenes Benutzerkonto

API-Anfragen

3. Verfügbare Exporte abfragen

curl --request GET \
     --url https://<Server-URL>/<API-Site>/api/export/ \
     --header 'authorization: <Token>'

Gibt eine JSON-Liste aller in der Zeiterfassungssoftware definierten Exportdefinitionen zurück.
Die jeweilige ObjectId wird für spätere Anfragen benötigt.


4. Organisationseinheiten abfragen

curl --request GET \
     --url https://<Server-URL>/<API-Site>/api/organization/ \
     --header 'authorization: <Token>'

Liefert alle in Zeiterfassungssoftware angelegten Organisationseinheiten (Abteilungen) mit zugehörigen ObjectIds.


5. Export beantragen

curl --request POST \
     --url https://<Server-URL>/<API-Site>/api/export \
     --header 'authorization: <Token>' \
     --header 'content-type: application/json' \
     --data '{
       "ExportDefinition": "<ObjectId aus Schritt 3>",
       "organizationUnit": "<ObjectId aus Schritt 4>",
       "DateFrom": "01.01.2024",
       "DateUntil": "31.01.2024"
     }'

Gibt eine GUID zurück, die zur Abfrage der generierten Daten verwendet wird.


6. Exportdaten abrufen

curl --request GET \
     --url https://<Server-URL>/<API-Site>/api/export/<GUID> \
     --header 'authorization: <Token>'

Mögliche Antworten:

  • Daten liegen vor:
    Die Antwort enthält die exportierten Daten. Beispiel:

    <PersonalNr>;<Nachname>;<Vorname>;<Datum>;<E-Mail/Username>;<FehlzeitNr_erster_Halbtag>;<FehlzeitNr zweiter Halbtag>;<FehlzeitName erster Halbtag>;<FehlzeitName_zweiter_Halbtag>;<TagestypNr>;<Name des Tages/Feiertages>
    10;Musterfrau;Max;01.06.2025;Max.Musterfrau@kunde.tld;;;;;2;Sonntag;
    10;Musterfrau;Max;02.06.2025;Max.Musterfrau@kunde.tld;85;85;Mob.Arb.;Mob.Arb.;3;Montag;
    10;Musterfrau;Max;03.06.2025;Max.Musterfrau@kunde.tld;85;85;Mob.Arb.;Mob.Arb.;4;Dienstag;
    10;Musterfrau;Max;04.06.2025;Max.Musterfrau@kunde.tld;85;85;Mob.Arb.;Mob.Arb.;5;Mittwoch;
    10;Musterfrau;Max;05.06.2025;Max.Musterfrau@kunde.tld;85;85;Mob.Arb.;Mob.Arb.;6;Donnerstag;
    10;Musterfrau;Max;06.06.2025;Max.Musterfrau@kunde.tld;;;;;7;Freitag;
    10;Musterfrau;Max;07.06.2025;Max.Musterfrau@kunde.tld;;;;;8;Samstag;
    10;Musterfrau;Max;08.06.2025;Max.Musterfrau@kunde.tld;;;;;48;Pfingstsonntag;
    10;Musterfrau;Max;09.06.2025;Max.Musterfrau@kunde.tld;;;;;49;Pfingstmontag;
    10;Musterfrau;Max;10.06.2025;Max.Musterfrau@kunde.tld;81;81;GLZ;GLZ;4;Dienstag;
    10;Musterfrau;Max;11.06.2025;Max.Musterfrau@kunde.tld;85;85;Mob.Arb.;Mob.Arb.;5;Mittwoch;
    10;Musterfrau;Max;12.06.2025;Max.Musterfrau@kunde.tld;85;85;Mob.Arb.;Mob.Arb.;6;Donnerstag;
    10;Musterfrau;Max;13.06.2025;Max.Musterfrau@kunde.tld;;;;;7;Freitag;
    10;Musterfrau;Max;14.06.2025;Max.Musterfrau@kunde.tld;;;;;8;Samstag;
    10;Musterfrau;Max;15.06.2025;Max.Musterfrau@kunde.tld;;;;;2;Sonntag;
    10;Musterfrau;Max;16.06.2025;Max.Musterfrau@kunde.tld;1;1;Urlaubbez;Urlaubbez;3;Montag;
    10;Musterfrau;Max;17.06.2025;Max.Musterfrau@kunde.tld;1;1;Urlaubbez;Urlaubbez;4;Dienstag;
    10;Musterfrau;Max;18.06.2025;Max.Musterfrau@kunde.tld;1;1;Urlaubbez;Urlaubbez;5;Mittwoch;
    10;Musterfrau;Max;19.06.2025;Max.Musterfrau@kunde.tld;;;;;50;Fronleichnam;
    10;Musterfrau;Max;20.06.2025;Max.Musterfrau@kunde.tld;;;;;7;Freitag;
    10;Musterfrau;Max;21.06.2025;Max.Musterfrau@kunde.tld;;;;;8;Samstag;
    10;Musterfrau;Max;22.06.2025;Max.Musterfrau@kunde.tld;;;;;2;Sonntag;
    10;Musterfrau;Max;23.06.2025;Max.Musterfrau@kunde.tld;85;85;Mob.Arb.;Mob.Arb.;3;Montag;
    10;Musterfrau;Max;24.06.2025;Max.Musterfrau@kunde.tld;85;85;Mob.Arb.;Mob.Arb.;4;Dienstag;
    10;Musterfrau;Max;25.06.2025;Max.Musterfrau@kunde.tld;;;;;5;Mittwoch;
    10;Musterfrau;Max;26.06.2025;Max.Musterfrau@kunde.tld;;;;;6;Donnerstag;
    10;Musterfrau;Max;27.06.2025;Max.Musterfrau@kunde.tld;;;;;7;Freitag;
    10;Musterfrau;Max;28.06.2025;Max.Musterfrau@kunde.tld;;;;;8;Samstag;
    10;Musterfrau;Max;29.06.2025;Max.Musterfrau@kunde.tld;;;;;2;Sonntag;
    10;Musterfrau;Max;30.06.2025;Max.Musterfrau@kunde.tld;;;;;3;Montag;
    33;Musterman;Hans;01.06.2025;Hans.Musterman@kunde.tld;;;;;2;Sonntag;
    33;Musterman;Hans;02.06.2025;Hans.Musterman@kunde.tld;;;;;3;Montag;
    33;Musterman;Hans;03.06.2025;Hans.Musterman@kunde.tld;;;;;4;Dienstag;
    33;Musterman;Hans;04.06.2025;Hans.Musterman@kunde.tld;;;;;5;Mittwoch;
    33;Musterman;Hans;05.06.2025;Hans.Musterman@kunde.tld;;;;;6;Donnerstag;
    33;Musterman;Hans;06.06.2025;Hans.Musterman@kunde.tld;;;;;7;Freitag;
    33;Musterman;Hans;07.06.2025;Hans.Musterman@kunde.tld;;;;;8;Samstag;
    33;Musterman;Hans;08.06.2025;Hans.Musterman@kunde.tld;;;;;48;Pfingstsonntag;
    33;Musterman;Hans;09.06.2025;Hans.Musterman@kunde.tld;;;;;49;Pfingstmontag;
    33;Musterman;Hans;10.06.2025;Hans.Musterman@kunde.tld;81;81;GLZ;GLZ;4;Dienstag;
    33;Musterman;Hans;11.06.2025;Hans.Musterman@kunde.tld;81;81;GLZ;GLZ;5;Mittwoch;
    33;Musterman;Hans;12.06.2025;Hans.Musterman@kunde.tld;1;1;Urlaubbez;Urlaubbez;6;Donnerstag;
    33;Musterman;Hans;13.06.2025;Hans.Musterman@kunde.tld;1;1;Urlaubbez;Urlaubbez;7;Freitag;
    33;Musterman;Hans;14.06.2025;Hans.Musterman@kunde.tld;;;;;8;Samstag;
    33;Musterman;Hans;15.06.2025;Hans.Musterman@kunde.tld;;;;;2;Sonntag;
    33;Musterman;Hans;16.06.2025;Hans.Musterman@kunde.tld;1;1;Urlaubbez;Urlaubbez;3;Montag;
    33;Musterman;Hans;17.06.2025;Hans.Musterman@kunde.tld;1;1;Urlaubbez;Urlaubbez;4;Dienstag;
    33;Musterman;Hans;18.06.2025;Hans.Musterman@kunde.tld;81;81;GLZ;GLZ;5;Mittwoch;
    33;Musterman;Hans;19.06.2025;Hans.Musterman@kunde.tld;;;;;50;Fronleichnam;
    33;Musterman;Hans;20.06.2025;Hans.Musterman@kunde.tld;81;81;GLZ;GLZ;7;Freitag;
    33;Musterman;Hans;21.06.2025;Hans.Musterman@kunde.tld;;;;;8;Samstag;
    33;Musterman;Hans;22.06.2025;Hans.Musterman@kunde.tld;;;;;2;Sonntag;
    33;Musterman;Hans;23.06.2025;Hans.Musterman@kunde.tld;;;;;3;Montag;
    33;Musterman;Hans;24.06.2025;Hans.Musterman@kunde.tld;;;;;4;Dienstag;
    33;Musterman;Hans;25.06.2025;Hans.Musterman@kunde.tld;;;;;5;Mittwoch;
    33;Musterman;Hans;26.06.2025;Hans.Musterman@kunde.tld;;;;;6;Donnerstag;
    33;Musterman;Hans;27.06.2025;Hans.Musterman@kunde.tld;;;;;7;Freitag;
    33;Musterman;Hans;28.06.2025;Hans.Musterman@kunde.tld;;;;;8;Samstag;
    33;Musterman;Hans;29.06.2025;Hans.Musterman@kunde.tld;;;;;2;Sonntag;
    33;Musterman;Hans;30.06.2025;Hans.Musterman@kunde.tld;;;;;3;Montag;
    
  • Export läuft noch:
    Rückgabe folgender JSON-Statusmeldung: { "Result": "JobPending", "Message": "" }