Employment contracts
You create the employment contracts of your staff or change them, with term, hours and contract group.
- Format
- CSV (comma or semicolon), UTF-8
- Access rights
- Staff (write)
- Example file
- Arbeitsvertraege_beispiel_technisch.csv (download)
In short: With this file you create the employment contracts of your staff or change existing ones. Each contract has a contract number, a term, the hours per weekday and a contract group.
What you need this for
The employment contract defines how many hours a person works, from when and until when. From this, the target hours and the holiday days result. With a table you transfer all contracts at once.
Before you start
- Rights: You need write access for the area Staff (Personal).
- Import beforehand: The organisational units and the contract groups. The persons must exist in vynst.
- Backup: An import cannot be undone at the click of a button. Before larger changes, export the affected data under Settings → Export (Einstellungen → Export).
- Change lock: If your administrator has activated the change lock for employment contracts, vynst rejects changes that alter values which are already in effect. More on this under “Good to know”.
Prepare the file
- Format: CSV. The separator is semicolon
;or comma,. Put texts containing separators in quotation marks"…". - Header row: The first 13 columns up to
SUNDAY_HOURSmust appear in this order. Also include all further columns from the table below, even if you leave them empty. - Contract number:
CONTRACT_NUMBERis the number of the contract. With it, vynst recognises the existing contract on a re-import. - Date:
01.03.2026or2026-03-01. - Decimal numbers: With a point, e.g.
25.00. A comma is not recognised as a decimal separator. - Yes/No:
jaornein, also1or0andtrueorfalse.
Columns
| Column | Required | Content | Example |
|---|---|---|---|
PERSON_ID |
yes | Number of the person in vynst, for example the import number of the person | AFS_CSV_1004 |
CONTRACT_NUMBER |
yes | Contract number | AV-2026-001 |
START_DATE |
yes | Start of the contract | 01.03.2026 |
END_DATE |
no | End of the contract. Empty means: open. | 31.12.2026 |
ORGANIZATION_GROUP_ID |
yes (column), cell as needed | Number of the organisational unit of the contract group | ORG-1 |
CONTRACT_GROUP_ID |
yes | Number of the contract group | VG-1 |
MONDAY_HOURS to SUNDAY_HOURS |
yes (columns), cell as needed | Hours on this weekday. Empty or 0 means: no hours. |
8 |
WEEK_TOTAL_DAYS |
include column | Working days per week | 5 |
YEAR_VACATION_DAYS |
include column | Holiday days per year | 30 |
NETTO_HOUR_COST |
include column | Net hourly cost | 25.00 |
BRUTTO_HOUR_COST |
include column | Gross hourly cost | 32.50 |
APP_TIME_TRACKING |
include column, always fill in the cell | Yes/No: time tracking via the app is allowed | ja |
SCANNER_TIME_TRACKING |
include column, always fill in the cell | Yes/No: time tracking via the scanner is allowed | ja |
LEADERSHIP_PERSON_ID |
no | Numbers of the persons in leadership, separated by commas. Empty removes all. | AFS_CSV_1002 |
KEEP_PARALLEL_CONTRACTS |
no | ja if a new contract should remain alongside an open contract |
nein |
Example
PERSON_ID;CONTRACT_NUMBER;START_DATE;END_DATE;ORGANIZATION_GROUP_ID;CONTRACT_GROUP_ID;MONDAY_HOURS;TUESDAY_HOURS;WEDNESDAY_HOURS;THURSDAY_HOURS;FRIDAY_HOURS;SATURDAY_HOURS;SUNDAY_HOURS;WEEK_TOTAL_DAYS;YEAR_VACATION_DAYS;NETTO_HOUR_COST;BRUTTO_HOUR_COST;APP_TIME_TRACKING;SCANNER_TIME_TRACKING;LEADERSHIP_PERSON_ID;KEEP_PARALLEL_CONTRACTS
AFS_CSV_1004;AV-1004;01.01.2026;;ORG-1;VG-1;8;8;8;8;8;;;5;30;25.00;32.50;ja;nein;;nein
AFS_CSV_1003;AV-1003;01.03.2026;;ORG-1;VG-2;4;4;4;4;4;;;5;30;18.50;24.00;nein;nein;;nein
Example file: Arbeitsvertraege_beispiel_technisch.csv
Max Mustermann (AFS_CSV_1004) works 8 hours from Monday to Friday according to contract group VG-1. Anna Beispiel (AFS_CSV_1003) works 4 hours on five days according to VG-2. The column END_DATE stays empty, so the contracts run without a fixed end. The column LEADERSHIP_PERSON_ID is empty, so no leadership is recorded. KEEP_PARALLEL_CONTRACTS is set to nein.
How to proceed
- Open Settings → Import (Einstellungen → Import).
- Click Add (Hinzufügen) and select the file. The file name must contain
.csv, e.g.arbeitsvertraege.csv. - The file appears in the list and is processed in the background. Check the log afterwards.
Good to know
- Re-import: A known contract number updates the contract. A new number creates a new contract.
- Person and contract group stay: For an existing contract, the import does not change the person and the contract group. You change these fields directly in vynst.
- End: If
END_DATEis empty, the end is removed. The contract then runs open-ended. - Start: If
START_DATEis empty, the previous start remains for an existing contract. - Previous contract: A new contract ends the previous open contract of the same person one day before its start. With
KEEP_PARALLEL_CONTRACTS=ja, the previous contract stays open. This only applies to new contracts. - Change lock: If it is active, values of contracts that are already in effect must not be changed. Changes are only possible at the start of a month, at the earliest from the date named in the message. For new contracts there is no previous state, so the protection for values in effect does not apply there. Rejected rows appear in the log.
- Time tracking: If the cell
APP_TIME_TRACKINGis empty, vynst takes the previous value of the scanner column. Therefore always fill in both columns. - Leadership: Numbers that are not found are skipped without a message.
When something does not work
| Message in the log | Meaning | What to do |
|---|---|---|
FAILED: No matching processor found. |
File name or header row does not match any import | Check that the file name contains .csv and that the first 13 columns are in the correct order |
FAILED: User missing rights to import. |
You lack the right Staff (Personal) | Ask an administrator |
Error: skipped empty line |
Empty row, is skipped | Nothing to do, or remove empty rows |
Error: skipped missing identifier |
PERSON_ID or CONTRACT_NUMBER is missing. The row appears directly below as LINE-DATA. |
Add both details |
Error: skipped missing person |
The person was not found in vynst. The row appears below as LINE-DATA. |
Check the person number, import persons first |
Error: skipped contract change rejected by change policy: … |
The change lock rejects the change. The reason follows the colon. | Enter the change only at the start of a month and at the earliest from the date named |
Error: less then one line |
The file contains no data rows | Check the file |
See also
- Contract groups: provide the hours and costs.
- Overtime: the overtime balance of a person at a reference date.
- Import overview: General information on files, header rows and the log.