TA system configuration and tacon.properties
The Webdesk TA Connector (Interflex IF6020) is configured through the file tacon.properties. The file defines which technical user the connector uses to log in to the IF6020, which IF6020 accounts and fields are used for vacation, working time and persons, and how bookings, the attendance board and the calendar behave. Most values can be edited in Webdesk in the mask "Systemkonfiguration" (action ta_editSystemConfig) without accessing the connector server. This page is intended for administrators and consultants who set up or maintain a TA connector. An installed and running Webdesk TA Connector is a prerequisite (installation: Webdesk TA Connector); Webdesk system parameters of the time and attendance module are described on Systemparameter TA.
How Webdesk, the connector and the file work together
-
Location: The file is located in the
confdirectory of the TACon installation (e.g.TACon\conf). The connector finds it on the classpath (wrapper.confcontains../conf). The connector does not start without the file. Webdesk itself never reads the file directly but asks the connector via RMI. -
Connector start: The broker (
TaBrokerStart) first renames obsolete keys (see section "Automatic adjustments at startup"). Afterwards every entry of the formbeanname.propertyis applied as an override to the bean of that name, both in the broker and in every RMI server. Keys for which no bean or property exists are ignored without an error message, so typos in a key go unnoticed. -
Hand-over to the RMI servers: After an RMI server has started, the broker reads the keys that can be edited in the mask from the file and passes them to the server. These values take precedence over the defaults built into the software. A missing key counts as empty or
falseand overrides the internal default. All keys of the mask should therefore exist in the file; saving in the mask writes all of them automatically. -
Editing in the mask: When the mask is opened, Webdesk fetches the current configuration from the broker via RMI (address in
webdesk.properties, see below). On saving, the broker writes all values totacon.propertiesand passes them immediately to all running RMI servers. A restart is only necessary for the exceptions noted in the key reference. With a clustered connection (several addresses separated by;inwebdesk.ta.if6020impl.rmi) Webdesk forces a failover after saving and saves the configuration on the second connector as well. - Editing the file by hand: The broker keeps the file in memory. Manual changes only take effect after a restart of the service "Webdesk TA Connector for IF6020". If someone saves in the mask beforehand, the file content is overwritten with the broker's old state. Therefore edit the file manually only while the service is stopped.
Mask "Systemkonfiguration"
You find the mask in the menu under Time and Attendance > IF6020 > Systemkonfiguration (action ta_editSystemConfig). It always shows exactly one configuration (that of the connector) and cannot be deleted. The group headings of the mask are fixed in English and are not translated. The fields of the mask map to the keys of the file as follows:
|
Group in the mask |
Keys / content |
|---|---|
|
Authentication |
Credentials for the IF6020 ( |
|
Holiday Display (planned/unplanned) |
Vacation accounts and vacation reference date ( |
|
Person Settings |
Person fields and person management ( |
|
Vacation Calculation Binding |
Vacation entitlement and levels ( |
|
Booking Parameters |
Booking behavior ( |
|
Accounting Parameters |
Working time accounts and maximum working times ( |
|
Calendar Configuration |
Calendar and absences ( |
|
StatusList Configuration |
Attendance board ( |
|
Timemodel Administration |
Number ranges for new daily and weekly programs ( |
|
TA Data Warehouse |
Switch for the data warehouse ( |
- Read-only (no input field): "Credentials encrypted", "Name of field storing PoPerson UID", "Name of the field storing the employee ID", "Name of the field storing the effective employment marker", "IDs of productive absence reasons" and "IDs of absence reasons with attendant behavior". You change these values only in the file (with the service stopped) or via the absence reason administration.
- Fields for IF6020 accounts, person fields, daily and weekly program fields and absence reasons are filled as selection lists from the IF6020.
- Keys that do not appear in the mask (see "Further keys, file only") are kept unchanged in the file when saving.
Credentials and encryption
The connector logs in to the IF6020 with a technical user. User name and password are stored in tacon.properties and inserted as placeholders into the RMI servers when the connector starts. If the credentials are encrypted, the connector decrypts them at startup with the key encryption.key from the same file.
Encryption procedure: When Webdesk starts, it passes its encryption key to the connector. If encryption.key is missing in the file and credentials.encrypted is not explicitly set to false, the connector encrypts user name and password with this key, writes the key (Base64) and sets credentials.encrypted=true. If credentials.encrypted=false is set, the credentials stay in plain text. In the same step Webdesk writes the two lists of absence reason IDs if they are still empty in the file (see section absence reason lists).
Warning: Never pass on the value of encryption.key or store it in documentation, tickets or version control. If the key is lost, the encrypted credentials can no longer be read. For backing up the Webdesk key see Neue Features in 4.56.
Note: With encrypted credentials the mask shows a button for changing instead of the fields "User" and "Password" (e.g. "Change user"). New values are encrypted with the key from the file when saving. After changing user or password the service "Webdesk TA Connector for IF6020" must be restarted.
|
Property |
Description |
Possible value(s) |
|---|---|---|
|
|
Required: yes. Technical user in the IF6020 the connector connects with. Mask: "User". With encrypted credentials this holds the encrypted Base64 value. A change takes effect only after a restart of the connector. |
text (default: no default; the shipped file contains an example user that must be replaced with the installation's user) |
|
|
Required: yes. Password of the technical user. Mask: "Password". With encrypted credentials this holds the encrypted Base64 value. A change takes effect only after a restart of the connector. |
text (default: no default; the shipped file contains an example password in plain text that must be replaced) |
|
|
Required: no. Marks whether user name and password are encrypted. Mask: "Credentials encrypted" (read-only). Set at the first Webdesk start (see above). If the key is missing, the connector reads the credentials as plain text. |
true/false (default: not set = plain text) |
|
|
Required: no, entered automatically. Base64 key with which the credentials are encrypted. Corresponds to the encryption key of Webdesk. Not visible in the mask. Never pass the value on. |
Base64 text (default: not set) |
Key reference
For each key the tables give the effect including whether the key is required, the corresponding field of the mask (in quotation marks, as on screen) and the default value. "Default" is the value that applies when the key is missing; "shipped file" means the tacon.properties of the installation package. "Required: yes" means that the connector does not work, or not meaningfully, without a value; "conditional" applies only to the named function; "no" means optional. Account and field names are IF6020 names (e.g. vkkonto4, stpinfo120, stwert5). Lists are comma-separated unless stated otherwise. Only keys that the code actually evaluates are listed.
Connection, broker and queue
The Webdesk side of the connection is defined in webdesk.properties; the connector service is started through wrapper.conf. Neither are entries of tacon.properties, but they are listed here because they are checked together during setup. The keys in the table can only be changed in the file (not in the mask).
|
Property |
Description |
Possible value(s) |
|---|---|---|
|
|
Required: no. If |
true/false (default: false) |
|
|
Required: no. Only when running with the object pool (optional start parameter |
integer in minutes (default: 30) |
|
|
Required: no. Only when running with the object pool: maximum number of RMI servers over which one attendance board request may be distributed. |
integer (default: 4) |
|
|
Required: no. Only when running with the object pool: number of RMI servers that stay free for other calls (above all bookings) when an attendance board request is distributed. |
integer (default: 2) |
|
|
Required: no. Only when running with the object pool: minimum number of persons per RMI server when distributing. Smaller requests are not split. |
integer (default: 25) |
Counterpart and start parameters outside tacon.properties
|
Property |
Description |
Possible value(s) |
|---|---|---|
|
|
Address of the broker as seen from Webdesk, e.g. |
text (installation default: rmi://localhost:4009/taRmiBroker) |
|
|
Time limit in milliseconds for the connection handshake to the broker. |
number (default: 2000) |
|
|
Time limit in milliseconds for establishing the TCP connection to the broker. |
number (default: 3000) |
|
|
Port of the broker (and start port; the RMI servers use the following ports). |
number (installation default: 4009) |
|
|
Number of RMI servers running concurrently, i.e. of parallel possible accesses to the IF6020. An update keeps the previous value. |
number (default of the shipped wrapper.conf: 2) |
|
|
Optional, in this order: number of connection attempts per RMI server, maximum total number of RMI servers (only with object pool), use object pool ( |
default: 20 attempts, 20 servers, object pool false, start method ant |
Vacation: accounts, reference date and absence reasons
These keys control the display of remaining vacation and of planned and unplanned vacation. Note: If the remaining vacation account in days or the one in hours is empty, the values for planned/unplanned vacation are not calculated at all; a warning appears in the connector log ("Remaining Account Holidays not set"). Both accounts must therefore be set, even if calculation is only done in days. The page Berechnung und Darstellung von verplanten/unverplanten Urlaub describes the calculation and display.
|
Property |
Description |
Possible value(s) |
|---|---|---|
|
|
Required: yes. Conditional: required when remaining or planned/unplanned vacation is displayed. Name of the IF6020 account ( |
account name (default: empty; shipped file: vkkonto4) |
|
|
Required: yes. Conditional as above. Name of the IF6020 account holding the remaining vacation in hours. Mask: "Account for remaining holidays (h)". The shipped file sets |
account name (default: empty; shipped file: vkkonto3) |
|
|
Required: yes. Conditional as above. Name of the IF6020 person field (master record) that holds the vacation entitlement added every year. Mask: "Personfield for holiday entitlement". The shipped file sets |
field name (default: empty; shipped file: stwert5) |
|
|
Required: yes. Conditional as above. Comma-separated list of the absence reason numbers that count as vacation (for planned/unplanned vacation and the vacation calculations). Mask: "Vacation absence reasons". The former key |
list, e.g. 1 (default: empty; shipped file: 1) |
|
|
Required: no. If |
true/false (default: false) |
|
|
Required: no. Fixed system-wide vacation reference date as a fallback. Format |
date (default: empty, then 1 January) |
|
|
Required: no. Name of the person field containing the vacation reference date of the individual person. Mask: "Personfieldname with vacation entitlement day". |
field name (default: empty) |
|
|
Required: no. Name of a person field that must contain the value |
field name (default: empty) |
|
|
Required: no. Name of a field in the daily program that marks with |
field name (default: empty) |
Order in which the reference date for the yearly addition of the vacation entitlement is determined (the first matching rule applies):
- The person field from
taPersonFieldnameFlagEntryDateForAccountHolidayscontainsJ: entry date of the person. - The person field from
taPersonFieldnameAlternativeDateForAccountHolidayscontains a date: that date. -
entryDateForAccountHolidaysistrue: entry date of the person. -
alternativeDateForAccountHolidaysis set: that day and month. - Otherwise: 1 January.
Vacation entitlement and levels
These keys (mask group "Vacation Calculation Binding") define from which person fields and accounts the yearly vacation entitlement is determined. The entitlement depends on the years of service: level 1 applies as long as the years of service are below the value of level 2, then level 2, and from the value of level 3 on level 3. Levels 2 and 3 are only read if both the entitlement field and the field with the years of service of the level are set (level 3 additionally only if level 2 is set). The years of service are counted from the entry date.
|
Property |
Description |
Possible value(s) |
|---|---|---|
|
|
Required: conditional (yes, if the vacation entitlement is calculated; if empty, the mask help says the field steindat is used). Name of the person field with the entry date used for years of service and vacation reference date. Mask: "Personfieldname for entrydate" (group "Person Settings"). If no date can be read, the start of validity of the person record is used. |
field name (default according to the mask help: steindat) |
|
|
Required: conditional (yes, if the vacation entitlement is calculated from person fields). Person field with the yearly vacation (days) of level 1. Mask: "Personfield for holiday entitlement (1st level)". If the field is empty or 0, 25 days apply. |
field name (default: empty; fallback 25 days) |
|
|
Required: no. Person field with the yearly vacation (days) of level 2. Mask: "Personfield for holiday entitlement (2nd level)". If the field is empty or 0, 30 days apply. |
field name (default: empty; fallback 30 days) |
|
|
Required: no. Person field with the number of years of service from which level 2 applies. Mask: "Personfield for No of employment years for Holidays Level 2". If the field is empty or 0, level 2 is never reached. |
field name (default: empty) |
|
|
Required: no. Person field with the yearly vacation (days) of level 3. Mask: "Personfield for holiday entitlement (3rd level)". If the field is empty or 0, 35 days apply. |
field name (default: empty; fallback 35 days) |
|
|
Required: no. Person field with the number of years of service from which level 3 applies. Mask: "Personfield for No of employment years for Holidays Level 3". |
field name (default: empty) |
|
|
Required: no. Person field that defines the calculation unit of the vacation calculation. If the field has the value |
field name (default: empty = calculation in days) |
|
|
Required: no. Name of the account or daily value in which the accounting stores the vacation entitlement (level 1) historically. For reference dates in the past the entitlement is read from there on the respective vacation reference date; if the value cannot be read, the person fields are used. Mask: "Account/Daily value for historic holiday entitlement". |
account/value name (default: empty) |
|
|
Required: no. As above for level 2. Mask: "Account/Daily value for historic holiday entitlement level 2". |
account/value name (default: empty) |
|
|
Required: no. As above for level 3. Mask: "Account/Daily value for historic holiday entitlement level 3". |
account/value name (default: empty) |
|
|
Required: no. Account (continuous yearly) for vacation remuneration, e.g. as compensation for negative balances or paid-out vacation days. Taken into account in the display of the remaining vacation development. Mask: "Account holiday remuneration". Empty: no remuneration. |
account name (default: empty) |
|
|
Required: no. Monthly account for the correction of the vacation remuneration. Mask: "Account holiday remuneration correction (mthly)". Empty: no correction. |
account name (default: empty) |
Persons: synchronization, info fields and deletion
Webdesk creates a person master record in the IF6020 for each person (for each employment in case of multiple employments). These keys define in which IF6020 info fields name, employee number and person UID are stored. The info fields must exist in the IF6020, be unused and long enough (notes and check script on Breaking Changes). Existing data is transferred to the configured fields with the job migrateEmployeeId.
|
Property |
Description |
Possible value(s) |
|---|---|---|
|
|
Required: yes. IF6020 info field holding the first name (by default the IF6020 only knows a compound name). Mask: "Fieldname for firstname". The shipped file sets |
field name (default: empty; shipped file: stpinfo120) |
|
|
Required: yes. IF6020 info field holding the last name. Mask: "Fieldname for lastname". The shipped file sets |
field name (default: empty; shipped file: stpinfo118) |
|
|
Required: yes. Conditional: to be set up for connections to Webdesk 4.64 and later according to Breaking Changes. Pstamm info field in which the person UID (PoPerson) is stored. Mask: "Name of field storing PoPerson UID" (read-only, change only in the file). The mask help names at least 20 characters, the page Breaking Changes a field length of 50 characters. |
field name (default: empty) |
|
|
Required: yes. Conditional as above. Pstamm info field holding the real Webdesk employee number (not the standard field |
field name (default: empty) |
|
|
Required: yes. Conditional as above. Pstamm info field (1 character) with the flag |
field name (default: empty) |
|
|
Required: no. TA ID of a template master record that is copied when a new person is created if no other template is specified. Mask: "Template ta-ID for creations". |
TA ID (default: empty) |
|
|
Required: no. Number of an IF6020 PLI script ("PlausiPli") that is run on every save (arguments: TA ID and |
PLI number (default: empty) |
|
|
Required: no. If |
true/false (default: false) |
|
|
Required: no. Number of an IF6020 script (PLI) that is run after the termination date of a person has actually changed; also when the termination date is cleared (then with an error log only if the script fails). Mask: "PLI-Number which will be run on termination date change.". Without a number nothing is run. Warning: the key starts with |
PLI number (default: empty) |
|
|
Required: no. Arguments for the script, separated by |
list, e.g. $taId;1 (default: empty) |
|
|
Required: no. Additional IF6020 tables with person data that are also deleted when a master record is deleted from Webdesk. Per table: table name, field with the TA ID and optionally a date field, separated by |
text (default: empty) |
Bookings and shift change
These keys concern bookings written from Webdesk to the IF6020 (mask group "Booking Parameters").
|
Property |
Description |
Possible value(s) |
|---|---|---|
|
|
Required: no. Number of the IF6020 terminal stored as reference for bookings from Webdesk. If the person has a time zone, the matching virtual terminal of that time zone is used instead; if there is none, the booking is rejected with an error. Mask: "ID of terminal for Webdesk bookings". |
terminal number (default: 1000 if empty; shipped file: 1) |
|
|
Required: no. If |
true/false (bean default: true; if the key is missing, false applies at startup) |
|
|
Required: no. If |
true/false (bean default: true; if the key is missing, false applies at startup) |
|
|
Required: no. If |
true/false (default: false) |
|
|
Required: no. If |
true/false (default: false) |
|
|
Required: no. Not in the mask. Assigns terminals to IP ranges: entries of the form |
text (default: empty) |
Working time accounts and maximum working time
These keys (mask group "Accounting Parameters") control the display of the current working time and the check against the daily and weekly maximum working time (see job checkMaxWorkingTime). The current working time is determined by placing the bookings of the day so far on a dummy person record and accounting them there.
|
Property |
Description |
Possible value(s) |
|---|---|---|
|
|
Required: yes. Conditional: required for the functions current daily and weekly working time; without an entry these functions report a configuration error. Comma-separated list of TA IDs of dedicated person master records used solely for these calculations (several allow parallel calculations). The records must not be used for anything else; they are excluded from the data warehouse export. Mask: "Person Dummy-TA-ID(s) for working-time calculations". The former key |
list of TA IDs (default: empty) |
|
|
Required: no. Person info fields relevant for the calculation, which are therefore copied to the dummy record before the calculation. Mask: "Person info-fields for Dummy". |
list of field names (bean default: stwert1, stwert2; if the key is missing, an empty list applies at startup) |
|
|
Required: no. Account holding the accounted daily working time, also used for the check of the daily maximum working time. Mask: "Account for daily working time". |
account name (default: twistzeit, also if empty) |
|
|
Required: no. Account holding the accounted weekly working time, also used for the check of the weekly maximum working time. Mask: "Account for weekly working time". |
account name (default: vkwoche, also if empty) |
|
|
Required: no. Field in the daily program with the maximum daily working time (industrial hours/minutes). Takes precedence over the person field. Mask: "Daily Programm field for max daily working time". |
field name (default: empty) |
|
|
Required: no. Person field with the maximum daily working time; fallback if the daily program provides no value. If no value is stored anywhere, 10 hours apply. Mask: "Personfield for max daily working time". |
field name (default: empty; fallback 10 hours) |
|
|
Required: no. Field in the weekly program with the maximum weekly working time. Takes precedence over the person field. Mask: "Weekly Programm field for max weekly working time". |
field name (default: empty) |
|
|
Required: no. Person field with the maximum weekly working time; fallback if the weekly program provides no value. If no value is stored anywhere, 50 hours apply. Mask: "Personfield for max weekly working time". |
field name (default: empty; fallback 50 hours) |
|
|
Required: no. If |
true/false (default: false) |
Absence reason lists and calendar
Note on the lists of absence reason numbers in this section and in the vacation section: the absence reason numbers defined in the IF6020 are used. In the mask they are selected from the existing absence reasons.
|
Property |
Description |
Possible value(s) |
|---|---|---|
|
|
Required: no. Comma-separated IDs of the absence reasons that count as productive (count as work). Maintained by Webdesk: entered at Webdesk startup if empty, and updated when an absence reason is saved in the action |
list of IDs (default: empty; filled automatically) |
|
|
Required: no. Comma-separated IDs of the absence reasons with attendant behavior (e.g. remote or home work). Maintained by Webdesk like the previous list. Mask: "IDs of absence reasons with attendant behavior" (read-only). The behavior is defined on the absence reason itself (see Systemparameter TA). |
list of IDs (default: empty; filled automatically) |
|
|
Required: no. Absence reason numbers for sick leave. Basis for the sum of sick days per month in the calendar. Mask: "Absencereasons for Sick-Leave". |
list (default: empty) |
|
|
Required: no. Absence reason numbers for special leave (e.g. moving, death in the family). Basis for the sum of special leave days per month in the calendar. Mask: "Absencereasons for Special Leaves". |
list (default: empty) |
|
|
Required: no. If |
true/false (default: false) |
|
|
Required: no. Short name of the custom IF6020 table for passive, intra-day absences (e.g. |
short name (default: empty) |
Attendance board
These keys (mask group "StatusList Configuration") determine how the status of persons is determined in the attendance board. The lists contain numbers of daily or weekly programs, separated by commas.
|
Property |
Description |
Possible value(s) |
|---|---|---|
|
|
Required: no. Numbers of the daily programs for persons who do not book ("non-bookers"). A person without a booking who has one of these daily programs gets the status "Person is not booking" instead of "absent". Mask: "List of daily programs used by Non-Bookers". The shipped file sets |
list (default: empty; shipped file: -1) |
|
|
Required: no. Numbers of the daily programs for absence-only recorders (negative time recorders). Their absences are displayed as for normal time recorders; without an absence the status is "Person is not booking". Mask: "List of daily programs used by Absence-only TA Management". |
list (default: empty) |
|
|
Required: no. As above, but numbers of weekly programs. Mask: "List of weekly programs used by Absence-only TA Management". |
list (default: empty) |
|
|
Required: no. If |
true/false (default: false) |
Note: Entries that you delete from the three program lists in the mask are not removed in the running connector (new entries are only added). The deletion takes effect only after a restart of the service.
Number ranges for daily and weekly programs
When Webdesk creates new daily or weekly programs in the IF6020, the first free number starting from the value given here is assigned (mask group "Timemodel Administration").
|
Property |
Description |
Possible value(s) |
|---|---|---|
|
|
Required: no. Lower threshold for the numbers of newly created daily programs. Mask: "Minimal ID for day programs". Empty: next free number from 1. |
integer (default: 1) |
|
|
Required: no. Lower threshold for the numbers of newly created weekly programs. Mask: "Minimal ID for week programs". Empty: next free number from 1. |
integer (default: 1) |
Data warehouse
Optionally, the time and attendance module can read part of the time data from a data warehouse (SQL database) instead of from the IF6020. The export is configured through the file synchronization-job.xml in the conf directory of the connector; if it is missing, nothing is exported. The ongoing synchronization is done by the job taIf2sqlSynchronizationJob.
|
Property |
Description |
Possible value(s) |
|---|---|---|
|
|
Required: no. Switches the use of the data warehouse on. Mask: "TA Data Warehouse Enabled". Switching takes effect immediately in the broker. If a database error is detected while building the warehouse, the connector switches the use off by itself. |
true/false (default: false) |
Further keys, file only
Besides the keys described above, the connector evaluates every entry of the form beanname.property for which a bean and a settable property exist (see the section on how the parts work together). In addition, the following entry of the shipped file is of interest:
|
Property |
Description |
Possible value(s) |
|---|---|---|
|
|
Comma-separated daily program numbers that prevent consecutive absences from being merged. Only concerns the old absence store and is marked as deprecated in the code. The shipped file sets |
list (default: empty) |
Automatic adjustments at startup
At startup the broker renames or removes the following obsolete entries and writes the file back:
|
Old key |
Action |
|---|---|
|
TaJournalDAO.allowedAbsenceReasons |
becomes |
|
TaAccountDAO.taIdOfDummyRecordForCalculations |
becomes |
|
TaCalendarDAO.taCalendarSuffixFuerUntertgFehlzeiten |
becomes |
|
TaPersonDAO.bookingMessageField |
is removed |
When the connector is updated with the installation package, the installer carries the entries of the old tacon.properties over into the new file; keys of the same name keep their previous value, new keys of the new file are kept. Back up the file before every update (see Update mit Installpackage + Patches).
Setup and verification
- Stop the service "Webdesk TA Connector for IF6020" and back up
tacon.properties. - Enter at least:
TaRmiService.usernameandTaRmiService.password(technical IF6020 user), the accounts and fields of the vacation calculation,TaPersonDAO.fnFirstNameandTaPersonDAO.fnLastName, with Webdesk 4.64 and later the three info fields for person UID, employee number and effective-employment marker, and if neededTaBrokerImpl.personTaIdsReservedForCalculations. - Start the service. The log
wrapper.logmust show the message "TA RMI Broker successfully started with N running servers of M requested". - Open the mask "Systemkonfiguration" in Webdesk, check the remaining values and save once. This writes all keys of the mask to the file.
- The credentials are encrypted at the next start of Webdesk (see above); afterwards check in the mask that "Credentials encrypted" is active.
Note: Typos in a key are not reported; the entry simply has no effect. When behavior is unexpected, first check the key name against this page. Errors when starting the connection are in the connector log (wrapper.log in the logs directory).
Keine Kommentare vorhanden.