CSV Import
Spezifikation CSV-Aufbau für Personenimport
Als Feldtrennung muss ";" verwendet werden
Description | Config | Expected | |
---|---|---|---|
Header | Am einfachsten gelangt man zu einer CSV-Vorlage, indem man eine Person exportiert. Das durch den Export erhaltene CSV-File kann anschliessend angepasst und dann als Import-CSV verwendet werden. Grundsätzlich muss das der Header des CSV-Files wie folgt aussehen: Die Reihenfolge ist zwingend, wird eine Spalte verschoben, gelöscht, oder hinzugefügt ist der Import nicht mehr möglich. Wird der Header (die oben angezeigten 4 Zeilen) nach unten verschoben, werden nur die Daten unterhalb des Headers importiert. Sollten sich Daten darüber befinden werden diese ignoriert. |
||
date | Ist editierbar und spielt derzeit keine Rolle. | ||
language | Ist ein Pflichtfeld und muss befüllt werden, Möglichkeiten "de", "fr", "en", "it". Die erfasste Sprache definiert in welcher Sprache die Merkmale (OE/Tätigkeit) im System gegengeprüft oder importiert werden. | ||
encoding "ansi" | Definiert die Zeichenkodierung (erlaubt die eindeutige Zuordnung von Schriftzeichen - darf nicht geändert werden) | ||
person-id | System-ID des Benutzer. Wird vom System automatisch vergeben und darf nicht angepasst werden. Wird beim aktualisieren einer Person als Identifikation verwendet. | ||
status | enabled = aktiviert archived = archiviert disabled = deaktiviert |
||
name | Pflichtfeld | ||
prename | Pflichtfeld | ||
username | Optionale Identifikation | Pflichtfeld | |
password | Neue Person:
|
||
Optionale Identifikation | Es handelt sich um ein Pflichtfeld, es wird geprüft ob es sich beim Eintrag um eine Emailadresse handelt. | ||
personal-id | Optionale Identifikation | Es gibt keine Mindestlänge Maximallänge ist 255 Zeichen Nicht zu verwechseln mit "person-id" Muss nicht eindeutig sein |
|
role | Es gibt folgende Möglichkeiten, es handelt sich um ein Pflichtfeld
Niedrige Rollen können keine höheren Rollen importieren oder ändern! |
||
language | Es handelt sich um ein Pflichtfeld. Vorhandene Sprachen (de, en, fr, it). | ||
orgunit, jobdescription | (orgunits/jobdescription) for Admin
|
||
is_deletable | Definiert ob die angelegte Person mit der Einstellung "löschbar ja/nein" erstellt wird.
|
||
change_password | Definiert ob die angelegte Person mit der Einstellung "PW-ändern ja/nein" erstellt wird. Es handelt sich um ein Pflichtfeld, und folgende Einstellungen sind möglich:
|
Speicherung unter OSX
Speicherung von Listen unter OSX in Excel: "Windows Comma Separated" wählen.
System-Konfigurationen
Die Konfiguration für die Standardpasswortvergabe und die Identifzierungsmöglichkeiten werden vom Systemadmin unter: Default php im Parameter "person_import" vorgenommen.
Übersetzung von OE/Tätigkeit:
- Eine OE/Tätigkeit besteht aus einem Identifier, für den es Übersetzungen geben kann.
- Übersetzungen müssen im System in der Merkmalsverwaltung bei Bedarf eingetragen werden.
- Sind keine Übersetzungen vorhanden, wird der Identifiername verwendet.
- OE werden mit Pfad und Übersetzung in der entsprechend gewählte Exportsprache ausgegeben. So können beim Import entsprechend Anpassungen an der Übersetzung sauber nachgeführt werden.
Dies erfolgt nur in der gewählten Sprache des Exports.\
Vorhandene Person ändern:
Mit dieser ID wird die Person eindeutig identifiziert. Ist die ID bereits im System vorhanden, werden die vorhanden Personendaten mit den neuen Daten aus der Liste überschrieben.
Ist die ID noch nicht im System oder das Feld leer, kann die Person über drei weitere Felder identifiziert werden.
Identifizierungsmöglichkeiten werden in folgender Priorität geprüft:
- "person_id" (Definition siehe "SpezifikatioSV-Aufbau")
- "personal_id" (Definition siehe "SpezifikatioSV-Aufbau")
- "email" (Definition siehe "SpezifikatioSV-Aufbau")
- "username" (Definition siehe "SpezifikatioSV-Aufbau")
Ablauf Fehlerhandling:
- Validierung File und Header des CSV
- Inhaltliche Fehler im CSV
- Validerung Ergebnis Export
- Fehlerhandling DB:
- Die Prüfungen zwischen der Importliste und dem System, geschieht auf verschiedenen Ebenen. Bei der Prüfung in der Datenbank, wird ein Fehler auf dem GUI dargestellt, aber nicht der Grund.
- Dafür gibt es zwei Tabellen in der Datenbank. In der Tabelle "trc_import_data" wird der Grund (Zeile/Spalte) des fehlerhaften Imports ausgewiesen.
- Folgende relevante Tabellen gibt es:
- trc_import_data
- trc_import_option
Error Messages
if (error_msg === 'orgunits_not_accepted') {
validatorData.headline = auxiliary.gt('Dateiüberprüfung fehlgeschlagen');
validatorData.text = auxiliary.gt('Organisationseinheiten nicht akzeptiert!');
validatorResult.push(validatorData);
validatorData = [];
}
if (error_msg === 'too_many_header_lines') {
validatorData.headline = auxiliary.gt('Dateiüberprüfung fehlgeschlagen');
validatorData.text = auxiliary.gt('Falsche Anzahl Zeilen im Tabellen-Header!');
validatorResult.push(validatorData);
validatorData = [];
}
if (error_msg === 'header_fields_invalide') {
validatorData.headline = auxiliary.gt('Dateiüberprüfung fehlgeschlagen');
validatorData.text = auxiliary.gt('Ungültige Felder im Tabellen-Header!');
validatorResult.push(validatorData);
validatorData = [];
}
if (error_msg === 'no_person_header_found') {
validatorData.headline = auxiliary.gt('Dateiüberprüfung fehlgeschlagen');
validatorData.text = auxiliary.gt('Bitte überprüfen Sie den Tabellen-Header!');
validatorResult.push(validatorData);
validatorData = [];
}
if (error_msg === 'no_valide_person_found') {
validatorData.headline = auxiliary.gt('Fehler');
validatorData.text = auxiliary.gt('Keine gültigen Personen gefunden!');
validatorResult.push(validatorData);
validatorData = [];
}
if (error_msg === 'wrong_person_status') {
validatorData.headline = auxiliary.gt('Fehler');
validatorData.text = auxiliary.gt('Fehlerhafter Personenstatus!');
validatorResult.push(validatorData);
validatorData = [];
}
if (error_msg === 'wrong_person_username') {
validatorData.headline = auxiliary.gt('Fehler');
validatorData.text = auxiliary.gt('Fehlerhafter Benutzername!');
validatorResult.push(validatorData);
validatorData = [];
}
if (error_msg === 'wrong_person_role') {
validatorData.headline = auxiliary.gt('Fehler');
validatorData.text = auxiliary.gt('Fehlerhafte Benutzerrolle');
validatorResult.push(validatorData);
validatorData = [];
}
if (error_msg === 'wrong_person_personal_id') {
validatorData.headline = auxiliary.gt('Fehler');
validatorData.text = auxiliary.gt('Fehlerhafte Personalnummer');
validatorResult.push(validatorData);
validatorData = [];
}
if (error_msg === 'wrong_person_language') {
validatorData.headline = auxiliary.gt('Fehler');
validatorData.text = auxiliary.gt('Fehlerhafte Benutzersprache');
validatorResult.push(validatorData);
validatorData = [];
}
if (error_msg === 'wrong_person_is_deletable') {
validatorData.headline = auxiliary.gt('Fehler');
validatorData.text = auxiliary.gt('Nicht erlaubte Einträge in "Ist löschbar"!');
validatorResult.push(validatorData);
validatorData = [];
}
if (error_msg === 'duplicate_person_id') {
validatorData.headline = auxiliary.gt('Fehler');
validatorData.text = auxiliary.gt('Doppelte Personen-ID!');
validatorResult.push(validatorData);
validatorData = [];
}
if (error_msg === 'empty_username') {
validatorData.headline = auxiliary.gt('Fehler');
validatorData.text = auxiliary.gt('Benutzername ist leer!');
validatorResult.push(validatorData);
validatorData = [];
}
if (error_msg === 'duplicate_username') {
validatorData.headline = auxiliary.gt('Fehler');
validatorData.text = auxiliary.gt('Doppelter Benutzername!');
validatorResult.push(validatorData);
validatorData = [];
}
if (error_msg === 'duplicate_personal_id') {
validatorData.headline = auxiliary.gt('Fehler');
validatorData.text = auxiliary.gt('Doppelte Personalnummer!');
validatorResult.push(validatorData);
validatorData = [];
}
if (error_msg === 'jobdescriptions_not_accepted') {
validatorData.headline = auxiliary.gt('Fehler');
validatorData.text = auxiliary.gt('Nicht erlaubte Einträge in "Tätigkeiten"!');
validatorResult.push(validatorData);
validatorData = [];
}
if (error_msg === 'orgunits_not_accepted') {
validatorData.headline = auxiliary.gt('Fehler');
validatorData.text = auxiliary.gt('Nicht erlaubte Einträge in "Organisationseinheiten"!');
validatorResult.push(validatorData);
validatorData = [];
}
if (error_msg === 'role_not_accepted') {
validatorData.headline = auxiliary.gt('Fehler');
validatorData.text = auxiliary.gt('Nicht erlaubte Einträge in "Benutzerrollen"!');
validatorResult.push(validatorData);
validatorData = [];
}