What's new – HR

What changed recently - newest first.

September 2026

  • Cost centre and location messages are readable again

    Creating, editing or deleting a cost centre, or assigning a member to one, confirmed the action not with "Cost center created" but with the string hr.costCenters.created. The same happened for locations and their work areas, and for every error message of those two areas - 15 messages in all. The texts were there the whole time, in both languages; the message simply asked for them at an address the interface does not look at. It now names the area the text lives in, and shows it again.

  • A survey's response rate now counts only who was actually addressed (#3393)

    A survey scoped to a department or team showed a tiny response rate even when everyone addressed had answered - the calculation always divided by the whole active workforce, regardless of who the survey actually targeted. For a survey scoped to a 20-person department at a company with 500 active employees, that pushed the rate down to a twenty-fifth of the real figure. The rate now honors the survey's target audience: for a department- or team-scoped survey, only members of that department or team count; a survey sent to the whole workforce still calculates the same way it always did.

    Open the Knowledge Base →
  • An expense report no longer sums entries in different currencies (#3376)

    If you linked expense entries in more than one currency (for example a USD hotel bill and a EUR taxi receipt) into the same report, the amounts used to simply be added together and labeled with whichever report currency you last chose - a numerically wrong total. The report is now rejected as soon as a linked entry was not recorded in the report's currency; create separate reports per currency instead.

    Open the Knowledge Base →
  • Euro amounts in Benefits now follow your language setting (#3417)

    The total paid stat,

  • Onboarding checklist tasks assigned by role now actually get an owner

    When a checklist is created from a template, each task can be set to go to the direct supervisor, the HR manager, the IT admin, or the new employee themselves - previously none of those role-based assignments were resolved, and every such task landed with no owner at all, so it never showed up in anyone's "my open onboarding tasks" view. Tasks assigned to the direct supervisor now go to the new employee's manager (falling back to their absence deputy if no manager is recorded); tasks assigned to the HR manager or IT admin now go to the department manager. Tasks with a specific person picked by hand are unaffected.

    Open the Knowledge Base →
  • Reactivating an employee through the status transition now correctly resets status, termination date and contract, and a rehired employee can be terminated again (#3444)

    Setting a terminated or alumni employee back to "active" through the status-transition endpoint used to update only an internal history flag. Lists and reports that look at the actual employment status kept showing the person as terminated, the termination date stayed set, and their last contract stayed inactive. Reactivation through this endpoint now fully resyncs status, termination date and contract - the same as the direct "reactivate" action already did. Also fixed: an employee who had been terminated once could never be terminated again after being rehired - creating a new termination record failed with "Employee already has a termination record", even though the employee was active at the time. That now works.

    Open the Knowledge Base →
  • The absence rate now weights mid-year hires proportionally (#3378)

    When headcount was growing, the "absence rate" metric used to read too low. Newly hired employees counted a full year's working days in the denominator no matter how briefly they had actually been employed - ten people hired on 1 December counted the same as ten people employed all year. The rate is now weighted by actual employment duration within the year. The separately shown employee count is unaffected.

    Open the Knowledge Base →
  • The hours account now deducts public holidays and approved leave from the target hours (#3392)

    The monthly balance in the hours account used to compare hours worked against the full weekday-pattern target for every calendar day in the month - a public holiday or an approved vacation day counted as target time nobody could have worked. The balance drifted permanently negative as a result, regardless of actual attendance. Public holidays (per the employee's applicable holiday calendar) and approved absences are now deducted from the target before the balance is calculated.

    Open the Knowledge Base →
  • The team hours-account dashboard now also deducts holidays and approved leave (#3392)

    An individual's own hours-account balance already deducted public holidays and approved absences - the aggregated team dashboard view did not, and could show a different (too negative) balance for the same person than their personal page. Both views now compute the same way.

    Open the Knowledge Base →
  • Time tracking and documents in the portal follow the portal language again

    The time-tracking

  • HR: dialogs can now be shared

    Many forms and drawers under HR (including absences,

  • Webhook subscriptions and working-time-limit changes now record who made them (#3228)

    Creating an HR webhook subscription, editing the tenant's working-time limits, or applying a prepared limit template all worked, but silently left the "created by" / "changed by" field empty, so nobody could tell later who set them up. Both now record the acting admin.

  • Clearing a line item's unit price no longer leaves the total stuck at the old amount (#2753)

    When editing an item on a purchase request, the unit price could be explicitly cleared, but the item's total price stayed at the last computed amount - a priceless item kept showing a total that no longer matched any price. The total is now cleared in the same step whenever the unit price is cleared.

    Open the Knowledge Base →
  • Employee documents and CVs are now checked before they are stored

    An upload used to be

  • A failed calendar sync is now reported as failed

    The bulk sync behind "Sync all" always reported "Failed: 0" - even when not a single employee calendar could be synced. A run in which the stored service-account key had expired, the domain-wide delegation had been revoked or Google was unreachable therefore looked exactly like a clean run: the full headcount appeared under "Synced". From now on the run counts every employee truthfully - synced or failed - and names the first reason right in the result; when there are failures the message is no longer shown as a green success notice. The run still does not abort: one broken calendar does not stop the remaining employees from being synced. There is nothing to do - the next sync reports the new number by itself. Which employee is affected is shown, as before, in the employee list under Calendar integration in the Status column; "Show error" reveals the full text.

    Open the Knowledge Base →
  • An emptied Google calendar now releases its time again

    When every entry of an employee calendar was deleted, the events read in last stayed in the sync cache - permanently. The sync only cleaned up vanished entries while the calendar still held at least one appointment; when it came back completely empty, the cleanup was simply skipped. For appointment booking the employee therefore stayed blocked by appointments that no longer existed, with no error to show for it. This did not only hit the rare case of a fully cleared calendar, but also a calendar that is no longer shared, and any sync window that happens to be empty. From now on an empty answer counts as an answer - the cache is emptied along with it. A failed fetch still deletes nothing: if the calendar cannot be read at the moment, the previous state is kept and the failure is shown on the employee under Calendar integration. There is nothing to do: stale entries disappear on the next sync by themselves, at the latest after the interval configured there (default: 60 minutes). Approved absences are unaffected - they keep blocking time straight from the HR area.

    Open the Knowledge Base →
  • Invalid dates in absence requests, policies and blocked periods are now named instead of being rejected as a system error (#2509)

    The 2026-08-28 fix covered the team calendar, career steps, cost centres and other areas, but left the absence module out at the time because it was being worked on elsewhere at the same time. That last gap is now closed: policy assignments (effective from/to), blocked periods, and absence requests, planning and the employee portal now check a date straight away and, on an invalid entry - a typo, pasted text, a day that does not exist - name the field concerned instead of showing a generic error. Valid entries are unchanged.

    Open the Knowledge Base →
  • Pick the Microsoft target calendar by name instead of typing an id

    After connecting a Microsoft account it was still open which of that account's calendars should actually be used - and the id of an Outlook calendar is a string of well over a hundred characters that you cannot read off anywhere. Under Settings → CRM → Integrations, tab HR, card Microsoft Calendar, there is now a Target calendar section for exactly that. If several employees have connected their calendar you first choose the employee; below it the calendars of their account appear by name - the default calendar first, the rest alphabetically. A calendar that is already linked is pre-selected, so you always see what the connection points at. If the access token has expired it is renewed silently while the list loads; if consent was withdrawn at Microsoft, the section says so explicitly instead of showing an empty list. Only a calendar the connected account actually holds can be chosen - a link to somebody else's calendar is therefore impossible. What this step does not do yet: busy times are still not read and approved absences are not written back yet - both follow in the next steps. The Google connection is unaffected.

    Open the Knowledge Base →
  • The GDPR data action preview now names every level the erasure reaches (#2962)

    Before an employee record is permanently deleted or anonymised, the confirmation dialog shows you which records are affected. That list only went one level deep: it named what hangs directly off the employee record. Anything one step further out - the line items of an expense report, a compensation history, the tasks of an HR process - was deleted along with it without ever appearing in the dialog. You were therefore confirming more than the dialog showed. The full chain is now measured and listed, including which level a record is reached through. Nothing additional is deleted - what already happened is simply named in full. The dialog also states where the erasure deliberately stops: records that remain, with only their reference to the person detached, are now listed together with what hangs off them. And a case that blocks the deletion is now detected at any depth and named in the dialog, instead of aborting the run halfway through with a technical error message.

    Open the Knowledge Base →
  • The Google calendar no longer blocks time that is not taken

    Two defects in the calendar sync cache took appointments off the market that were in fact free - no error, no notice, simply no slot offered in appointment booking. First, an all-day entry blocked one day too many: Google reports the end of an all-day entry as the following day, and exactly that date was read as the last blocked day. A single all-day entry on the 5th therefore blocked the 6th as well, and a leave running to the 10th also took the 11th. Second, an entry the employee had explicitly set to "Show as: Free" in Google blocked the whole period anyway - the marking was ignored on the way in. Both are fixed: an all-day entry now blocks exactly the days it covers, and anything marked free no longer takes time away. For customers this means appointments are offered again that had silently dropped out. There is nothing to do: the cache is rewritten on every sync, so entries stored under the old reading correct themselves - at the latest after the sync interval configured under Calendar integration (default: 60 minutes). Approved absences were never affected: they keep blocking time straight from the HR area, independently of the calendar.

    Open the Knowledge Base →
  • The preview of a GDPR data action now states its scope, and a shrunken scope is refused instead of quietly executed (#2957)

    When a due data action ("delete" or "export & delete") is confirmed in offboarding, the system works out which linked records go with it by asking the database itself at the moment of execution. That is deliberate, so the list cannot go stale - but it has a flip side: if that lookup returns less because a link is missing, the run deletes less and the confirmation screen shows less at the same time. It looked exactly as complete as before, and nothing pointed at the gap. For a data-subject request that would have meant your own evidence reporting a completeness that did not happen. The deletion path now records which areas outside HR it has to cover - today appointments, CRM and the person directory. The confirmation screen names those areas, and if one of them is no longer reachable it is shown in red as a gap and execution is refused until the situation is resolved. A complete case runs unchanged: nothing different and nothing less is deleted than before. For "anonymize", an unreachable data category is shown as well, but the action itself is not blocked.

    Open the Knowledge Base →

August 2026

  • Approver and absence deputy now stand explained side by side (#1148)

    The "Position" tab of an employee showed two nearly identical people pickers with no explanation at all - which is exactly where the recurring confusion about who actually decides a request came from. Both fields now carry a hint, and above them the tab names the three roles that may decide: the approver as a rule, the absence deputy while the approver is away themselves, and the HR department, which decides company-wide through the "manage HR" permission. The old hint on the deputy field explicitly denied the deputy any say; that was no longer true - the deputy may decide, and is shown the request while the approver is away. The same hints now appear when creating an employee, and the absence deputy carries one English name everywhere ("Absence deputy" instead of "Absence Manager" in one place). Nothing changes about who may decide - only about whether the form says so.

    Open the Knowledge Base →
  • New dashboard tile "Useful Links"

    The employee portal dashboard now has a way out - a tile linking to this help centre and to the HR release notes. The release-notes link opens a new browser tab. There is deliberately no roadmap link here: the roadmap is a customer offering, not a staff area.

    Open the Knowledge Base →
  • Every dropdown in HR is now read out by name (#2859)

    After the employee list, the rest of the area follows: anyone using it with a screen reader heard nothing but "combo box" in 76 further places - with no hint of what was being selected. Practically every filter bar and form was affected: absences with their calendar, requests and carry-over, time tracking and project time, onboarding and offboarding, recruitment and the selection pipeline, training, surveys, feedback and performance reviews, compensation, salary bands and supplements, procurement, IT assets, expenses, locations, cost centres, tasks, succession planning, career frameworks, the org chart, shift planning, public holidays, the audit trail, document templates, custom fields, webhooks, workflow templates, the whistleblowing system, and self-service with residence permits, surveys and change requests. All of them now carry a spoken name in German and English. Nothing changes visually, and mouse operation is unchanged. Absences · Time tracking ·

    Open the Knowledge Base →
  • Onboarding steps now announce themselves

    Until now SCS created all steps of an induction at once, each with its own due date - and nothing happened on the due date. From now on a step that is due and still open appears as a process in the responsible person's worklist, with the name of the step, the new joiner's name and the due date. Who is responsible is decided by the step's template: the supervisor, the new joiner themselves, or HR. If it says IT or Custom without a named person, this is recorded as a defect instead of being sent to everybody. One induction produces several entries, because its steps belong to different people. The entry carries no state of its own: "done" is always read off the checklist, and the process disappears by itself once the step is completed or skipped, or the induction ends.

    Open the Knowledge Base →
  • Open timesheets now announce themselves

    Until now it only came out at some point that a month that was over had never been signed off - usually when somebody needed it for payroll. From now on a month without a sign-off appears as a process in the supervisor's worklist, with the name and the oldest missing month. It stays one process per person even when several months are missing; it then also names how many there are and only disappears once no elapsed month is left open. The running month never counts, and SCS looks back over three elapsed months. If twenty timesheets are open for one manager, they stay twenty individual entries but produce exactly one bundled mail a day. Somebody who records no time in SCS gets no notice at all; if no supervisor is on record this is noted as a defect instead of being sent to everyone with HR permissions.

    Open the Knowledge Base →
  • "Completed by" on a workflow step now comes from the sign-in (#2540)

    Who completed or skipped a step under HR › Workflows was taken from the caller's request instead of from the signed-in session. Any id at all could therefore be recorded as the completing person, and the audit trail of the personnel case then carried that entry as established fact. The completing person is now always the signed-in user. Nothing changes in the form; existing entries are untouched.

    Open the Knowledge Base →
  • A project's member list loads again (#2753)

    In project time tracking the Members tab of every project stayed empty and reported a system error - whether or not anybody was assigned to the project. The cause was a query reading the job title from a personnel-record field that never existed there, so the database rejected it on every call. Anyone who wanted to know who books time on a project had to go the long way round via the time entries. The title now comes from the position on the personnel record, the way it does everywhere else in the HR area. The list shows name, project role, job title and the hours booked so far again; members who have left stay hidden as before, and the hours they booked stay with the project. Members could always be added, changed and removed - the result simply could not be looked at.

    Open the Knowledge Base →
  • Changes to project members and tasks only report real hits (#2804)

    In project time tracking four actions reported success even when they had changed nothing at all: editing and removing a project membership, and editing and deleting a task. It affected anyone who addressed a membership or task of one project through the path of another - after switching projects in an open tab, for instance - or who used an id that no longer exists. The foreign row was never changed by this, which was and remains safe; only the feedback was misleading. The answer in those cases is now "not found". The normal path is unchanged: your own memberships and tasks can be edited, removed and deleted as before.

    Open the Knowledge Base →
  • The employee list's dropdowns are now announced by name (#2855)

    Anyone working the employee administration with a screen reader heard only "combo box" on several dropdowns, with no indication of what was being selected. This affected the department filter and the employment-type filter above the list, the document-type filter in the employee record, the role picker on the "Roles" tab, and the two dropdowns for the public-holiday calendar and for assigning a holiday by hand. All six now carry a spoken label. Nothing changes visually.

    Open the Knowledge Base →
  • The team calendar's week view no longer shifts the page sideways (#2829)

    On phone and tablet widths the whole page could be pushed to the right while the team calendar was open in its week view; measured, the content reached about 245 pixels past the edge on a 390-pixel screen and about 111 pixels past it on a 768-pixel one. The cause was an invisible screen-reader label on the weekend and public-holiday columns that escaped the grid's own horizontally scrollable box. The week grid now scrolls inside that box only, and the page itself stays put. Nothing about the calendar's appearance changes.

    Open the Knowledge Base →
  • "Requires approval: no" now actually does something

    an absence type's approval requirement could be switched off for a long time, and nothing happened. Every request was still filed as Pending and had to be approved by hand. From now on, picking a type without an approval requirement means the request is approved right away: the entitlement is booked at the same moment, the shared absence calendar is kept up to date, and nobody lands in an approver queue. While creating a request, the interface says so right below the absence-type selection. So that it stays traceable that a rule decided here and not a person, such a request shows "automatically (no approval required)" under "Approved by", and the audit trail records the event with the source System and the reason "no approval required". Types that do require approval - including the shipped defaults "Urlaub" (vacation) and "Krankheit" (sickness) - behave exactly as before. Requests already pending are not rewritten retroactively; if you set this option earlier, review it once.

    Open the Knowledge Base →
  • A newly picked absence calendar no longer stays empty

    Approved absences used to travel into the shared Google calendar only at the moment of approval. Flipping the Absence sync target switch today therefore produced an empty calendar - every leave approved earlier was missing, and stayed missing until some new request happened to be decided. Below the switch there is now Catch up existing absences: one press pushes every approved absence that still lies ahead and reports how many were transferred. The button may be pressed repeatedly - what is already in the calendar is not created twice. For a sick note the catch-up transfers only that the person is away, never the absence type; the reason stays out of the company-wide calendar. Only approved absences are caught up - a reported but undecided sick note still does not appear there. Appointment booking was never affected by the gap: it reads absences straight from the HR area and blocks the times even when the calendar does not know them.

    Open the Knowledge Base →
  • Date and time fields in HR now follow your application language

    In 29 HR screens the date fields came straight from the browser. That made the order of the numbers depend on the browser language rather than on the language you set in SCS: anyone using a German interface on an English browser saw mm/dd/yyyy inside an otherwise German form and entered dates wrongly. Your own language setting now decides the order and the separators. Affected screens include the employee record (personal data, position, contract, compensation, leave), team time tracking, the change-log export, absence planning, the holiday calendar, expenses, IT assets, remote work, goals and project time. The precision can now be stated as well: an appointment with a time of day - the workflow reminder, the scheduled feedback session, the due date of an HR task - is captured to the minute, while a plain calendar day stays day-precise. The fields behave as before otherwise: you type the numbers one after another, move between day, month and year with the arrow keys, and can count any segment up or down with them.

    Open the Knowledge Base →
  • Eight absence types are now available in every workspace

    Vacation, Sick Leave, Special Leave, Parental Leave, Unpaid Leave, Training, Remote Work and Business Trip. Until now the "Absence Types" tab was empty in newly created workspaces, and without a single type no absence request could be submitted and no quota could be set up. Existing workspaces have the missing types added once; types you have renamed, recolored or deactivated stay untouched.

    Open the Knowledge Base →
  • Expiring contracts now announce themselves

    Until now somebody had to remember that a fixed term was ending - in a calendar, in a list of their own, or not at all. From now on a fixed-term contract appears in good time as a process in the supervisor's worklist, with the name, the end date and how many days are left. The lead time is not one fixed number but the notice period of that particular contract - and never less than 30 days - so the full notice period is still available when the notice arrives. The process disappears by itself once the contract is renewed, made permanent or superseded; if the deadline has already passed while the contract is still active, it deliberately stays on the list. If no supervisor is on record this is recorded as a defect - there is deliberately no round-robin email to everyone with HR permissions.

    Open the Knowledge Base →
  • Invalid dates in the HR area are now named instead of being rejected as a system error (#2509)

    Entering something that is not a date into an HR form - a typo such as "31/13/2026", text pasted from a spreadsheet, a day that does not exist ("30 February") - used to produce a generic system error in many places. The entry was only rejected at the very end by the database, and the message named neither the field nor the fact that your input was the cause; it looked as though the system was broken. Affected areas included the team calendar, career steps, cost-centre assignments, onboarding, surveys, training sessions, HR tasks, reports, the pay-gap module, the shift overview and portal time tracking. The entry is now checked straight away: you get a response that names the field concerned, so you can correct it without guessing. Valid entries are unchanged - values that carry a time of day (an HR task's due date, a training session) still accept both a date and a time.

    Open the Knowledge Base →
  • One email a day instead of one per process, and supervisors can see their team's worklist

    Two changes to the process register, shipped together. First, the bundling: until now every process sent its own email - an approver with twenty open requests got twenty mails in a single morning. From now on you receive exactly one summary per day listing every process that has arrived since the last one, however many that is; there is no threshold and no mixed form. Your worklist is unchanged by this: every process still gets its own entry there, and the number on the bell still counts them one by one. Only the sending is bundled. The price is stated openly: in email form an urgent process waits for the next summary - on the worklist it appears without delay. A process kind you have switched off does not appear in the summary at all. Second, the team view: under Settings › Notifications › My team's worklist, supervisors can now see what is waiting on the worklists of the people who report to them. Access does not come from a new permission somebody could grant, but from the supervisor field in the employee record - if nobody reports to you, the page says so and shows nothing. Because an entry reveals who asked for what, every visit to the page is written to the audit trail, not just a change; the page says so before you look. Nothing can be decided here - "Open process" leads to the source, where the rules of the respective area apply. An absence deputy does not inherit this view: they still receive the affected processes on their own worklist and need no foreign list for that. A change of reporting line takes effect at once in both directions - hand a team over and you immediately lose sight of the old entries too; take one over and you see its open entries straight away. Finally, archive retention has been decided: nothing is deleted, and that question will be answered for every area at once rather than for the process archive separately. My team's worklist, Process notifications,

    Open the Knowledge Base →
  • Product entitlement during an impersonation session: a notice instead of an error

    While someone from operations temporarily works as another user, rights administration is blocked for the whole session - this protects the account being worked in. The "Roles & Permissions" tab offered the entitlement anyway: the checkboxes could be ticked, "Save unlocked products" could be pressed, and only then came an error. A notice now appears in that place from the start, explaining the block and naming the way that does work: from the tenant's own login, without an impersonation. The permissions below are shown but not editable during an impersonation. A failure also produces just one message instead of two, and it is in the language you have set.

    Open the Knowledge Base →
  • The Microsoft calendar can now be connected - first step: sign-in and consent

    Until now SELLERLOGIC Commerce Services only knew Google for calendars. Under Settings → CRM → Integrations, tab HR, there is now an additional Microsoft Calendar card. You enter your organisation's directory id there, along with the application id, secret and redirect address from your app registration in Microsoft Entra ID. The secret is stored encrypted in your tenant and never leaves the server. Test connection checks the credentials against Microsoft right away, and Prepare consent gives you the link an administrator of your directory uses to grant consent once for the whole organisation. An expiring access token is renewed automatically; if consent is withdrawn, the connection says so explicitly instead of failing silently. What this step does not do yet: busy times are not read yet and approved absences are not written into the Microsoft calendar yet - both follow in the next steps. The Google connection is completely unaffected.

    Open the Knowledge Base →
  • The rejection reason of an absence is now asked for, and it arrives

    Until now the reason stayed empty on every rejected absence - both the employee portal and the detail view in the administration showed "no reason given". Two things were missing: the interface never asked for a reason at all, and the text would have been discarded silently on its way to the server under a wrong field name - no error, no log entry. Both are fixed. Reject now opens a window with a Rejection reason field (optional, up to 2000 characters); whatever you enter there is shown to the requester in the employee portal and to you in the Decision section. Leave the field empty and neither place shows an empty section, and the rejection goes through as before. Approving and cancelling keep the plain confirmation.

    Open the Knowledge Base →
  • Three more pages now tell "My Area" apart from the employee portal

    "Adjust leave entitlement manually" and "Payroll" still named the employee portal as a usable surface; the page "Inbox and team status (supervisors)" described two portal cards as if they lived in the admin interface, and pointed at an admin address that does not exist. All three now carry the same "in preparation" note as the other portal pages.

    Open the Knowledge Base →
  • Two default values of the absence types are pulled forward once

    Vacation gets a cap of 30 days per year, and Sick Leave becomes approval-free. This only happens where the value is still the untouched shipping value - if you entered 25 days for Vacation, or changed Sick Leave yourself, your value stays as it is.

    Open the Knowledge Base →
  • An absence request now also reaches the deputy while the line manager is on leave themselves

    Until now a filed request landed solely in the worklist of the direct line manager. If that person is away on the day it is filed - that is, on an approved absence of their own covering today - the case additionally appears for whoever is listed under the Position tab as absence deputy. That is deliberately this person and no one else: they are also the only other person allowed to decide the request at all. The case does not move away - the line manager keeps it and finds it on their list on their return, and the three-day deadline runs on unchanged. If no deputy is recorded, everything stays as before; a request is never lost because of this. Leave the line manager has merely requested, and that has not been approved yet, does not count as being away - someone who has only asked is still at their desk.

    Open the Knowledge Base →
  • Rights in two steps - products first, permissions second

    When inviting an employee it was not possible to choose which modules they may use at all; the dialog only asked for a role, and the permissions appeared out of nowhere. The invitation dialog now asks for the products first (HR, CRM, Shop, ERP, Marketing, Tasks, Appointments, Sign, DMS, Settings) and for the role only afterwards. The "Roles & Permissions" tab of the employee record carries the same two steps: the unlocked products at the top, and below them only the permissions of those products. Removing a product revokes its permissions - including the ones an assigned role carries; the remaining products are untouched. Preset: with no choice of your own, a new employee gets the User role (read and write in their own area) and the products that have an own area. Nobody can end up in the system with an empty interface any more - the previous state looked like a broken application when it was simply a missing permission.

    Open the Knowledge Base →
  • Whoever starts a workflow no longer approves it themselves

    The approval chain of a workflow step was missing the four-eyes principle. Whoever had started a workflow could sign it off; if the workflow concerned that person, the "Manage HR" permission let them do the same. On a level requiring a single approval, that was a complete self-approval. The same rule as for absences and expenses now applies here: "Approve" and "Reject" are blocked for the creator and for the person concerned, with a hint naming the reason, and the attempt is refused through the API as well. In addition, starting a workflow now records who actually created it - that value could previously be sent along and therefore chosen freely. Tenants that switched the four-eyes principle off under "Approval settings" are unaffected.

    Open the Knowledge Base →
  • Adding a holiday now sits above the list

    In the employee file under People → Employees, tab Absence, section Holidays, the "Manual assignment" and "Self-created holiday" inputs used to sit permanently below the year list - a full German holiday calendar runs 10 to 15 rows, which you had to scroll past first. Both inputs now sit behind an "Add holiday" button in the section header and open directly underneath it, before the list - the same shape as the create form in the Contract tab (see the 2026-08-25 entry). While the form is open, the same button reads "Close". The open state is kept in the address bar, so it survives a reload and can be shared. Nothing changes about the order of the holiday list itself - it stays chronological.

    Open the Knowledge Base →
  • Approval levels block completion until they are satisfied

    Approval levels configured for a step were stored but never checked - any task could be completed without a single level having agreed. Such a step now shows its approval chain with the state of every level. Levels are decided in order, every approval is recorded under the signed-in account - each person counts once per level, and only the last satisfied level completes the task. Completing by hand is refused until then, with a hint naming the missing level; skipping remains possible.

    Open the Knowledge Base →
  • Approvals are now decided by the responsible line manager, no longer by anyone holding the permission

    Until now the approval permission alone was enough, in most HR areas, to decide any case of any person - across departments and including expense pay-outs and salary supplements. Whoever holds only the area key (for example "Approve expenses") now decides exclusively for their own employees, meaning everyone who lists them under the Position tab as line manager or absence deputy. The HR department ("Manage HR"), owners and super administrators keep their tenant-wide reach unchanged. This covers benefits, expenses, time tracking, procurement, project time, residence change requests and compensation supplements; absences have followed this rule since 25 Aug 2026. If a manager's account is not linked to an employee record, the decision is refused rather than allowed. Bulk approvals of project and working time are all or nothing: if a batch contains one foreign entry, the whole batch is refused.

    Open the Knowledge Base →
  • Balance forecast to a chosen date

    Under My absences there is now a new "Balance forecast" panel above the year view. Pick a future date and instantly see how many days remain per absence type at that point in time - including a breakdown of which approved absences were counted. An open, not-yet-approved request is shown separately and is not deducted from the projected balance. If the chosen date falls after last year's carry-over expiry cutoff, the forecast shows the expiring days. A date in the past or a year with no quota set up shows an explanatory hint instead of a wrong number. The chosen date lives in the address bar - the link can be shared.

    Open the Knowledge Base →
  • Changes to bank, tax and insurance details now appear in the audit trail

    Who changed an employee's bank details, tax data, social insurance, emergency contact, identity document, residence permit, qualification or language record could not be established afterwards - the audit trail stayed empty for these operations while looking complete. All twelve operations in these areas now write an entry with the user, the time, the kind of change and the names of the changed fields. The values themselves are deliberately kept out of the trail: IBAN, tax ID, insurance number and document numbers are stored encrypted, and in clear text in the trail they would no longer be. What is now traceable is who changed which field, and when.

    Open the Knowledge Base →
  • Conditions now actually branch the workflow

    Conditions with a follow-up step configured in a template used to be pure configuration - a completed step always led to the next step in order, whatever was configured. When starting a workflow you can now supply instance data in the form name=value; completing a step evaluates that step's conditions against it. If one matches, the steps jumped over are marked "Skipped by branching" and the configured follow-up step becomes the next open item. A branch only ever moves forward, so two conditions pointing at each other cannot send the workflow round in circles.

    Open the Knowledge Base →
  • Employee record: Finance and Qualifications are reachable again, employment type and dates editable again

    Two finished tabs were missing from the tab bar of the employee detail view - "Finance" and "Qualifications". Both existed in the system but could not be opened by any route. As a result, bank details, tax data, insurance, language skills and agent skills could not be maintained in the interface at all. Both tabs are now in the bar. In addition, employment type, hire date and end date could no longer be changed after an employee had been created - a value set incorrectly once stayed that way for good and quietly went stale when somebody moved from part-time to full-time. The three fields now sit on the "Position" tab and can be corrected there with the "edit employees" permission; without that permission they are shown read-only.

    Open the Knowledge Base →
  • Employees can now be linked to a location and a work area

    Legal entities (People → Legal Entities), locations (People → Locations) and work areas already existed in the data model, showed employee counts and offered a per-location employee list - but there was no way to actually assign an employee at all. In the employee profile, tab "Position", the fields Location and Work area now sit right next to Department and Position - both when creating a new employee and when editing an existing one. The work area only becomes selectable once a location is set, and changing the location resets an already-picked work area - so a work area belonging to a different location can never be saved in the first place. Employees -

    Open the Knowledge Base →
  • Invite to portal, forgot password, and signing out really ends the session

    Until now there was no way to obtain a first password for the employee portal at all, and a forgotten password was a dead end that not even HR could open again. New: on the personnel record, Invite to portal sends an email with a single-use link for setting a first password - and it works without an admin account, so it also covers staff who exist only in the personnel file. The portal sign-in page now offers Forgot your password?; the confirmation always looks the same, so the page cannot be used to find out who works here. And Sign Out now ends the session on the server: previously it only cleared the browser while the sign-in stayed valid for eight hours, so a lost device could not be cut off. Successful and failed sign-in attempts are now recorded in the audit trail as well.

    Open the Knowledge Base →
  • Legal entity employee count is now correct

    On the overview under People → Legal Entities, the Employees column always showed 0 regardless of the actual contract situation - as did a legal entity's employee list (empty) and the delete-guard message, which reported a legal entity with assigned employees as unused. The cause was a stale column that had stopped being written after an earlier change - the actual assignment has since lived exclusively in the employee's current contract. The counter, the list, and the delete guard now read the same current contract as the rest of employee management.

    Open the Knowledge Base →
  • One work queue instead of many lists

    Under "Waiting for me" approvers see every process that needs their decision in one place, with waiting time, a due badge and a direct jump into the process. A counter in the navigation shows how much is open.

    Open the Knowledge Base →
  • Payroll runs from before the gross pay correction can now be recomputed

    Runs completed before the miscalculation was fixed still carried the wrong amounts - paid absence days were compensated twice, unapproved time entries counted, and approved supplements were missing. Nothing could be done about it, because a completed run could not be recomputed. Affected runs are now flagged with a notice in their detail view. There, "Review difference" first shows the previous amount, the new amount and the difference for each payslip without writing anything; only "Apply correction" writes the new amounts. Every changed payslip then stays traceable under "Corrections". Approved supplements are bound to the recomputed run in the process and cannot be paid again in a following month.

    Open the Knowledge Base →
  • Reminders are now visible on the workflow

    Reminder management for a workflow had already been fully built, but was not linked from anywhere reachable in the Admin area - a reminder could previously only be created directly through the API. The workflow's side panel now shows a "Reminders" section below the task list: existing reminders with their status, and a form to add new ones.

    Open the Knowledge Base →
  • The approver of a career progression now comes from the sign-in (#2540)

    When a career progression was recorded under HR › Career paths, the approving person was taken from the caller's request. Any id at all could therefore be recorded as the approver, and the employee record then carried that entry as established fact. The approver is now always the signed-in person. Nothing changes in the form; existing entries are untouched.

    Open the Knowledge Base →
  • The employee portal now has a handbook of its own

    Looking for help inside the employee portal used to lead nowhere - the handbook pages were reachable only from the admin interface, and that requires an access employees do not have. Every portal page now carries a help button in its lower right corner; it leads to the page describing that very screen, and from there to an overview of all the portal's handbook pages. Pages appear in the language selected in the portal. Only the pages written for employees are shown.

    Open the Knowledge Base →
  • The employee record now shows key figures and leads from there into the matching list

    Until now, every question about a person meant leaving the record and finding and filtering the target page yourself - how many vacation days are left, whether requests or expenses are waiting for a decision, when the contract ends, which devices are assigned. The head of the record now carries a row of five key figures; a click opens the respective list, already filtered to this person. On the target page, "Back to «name»" sits at the top, next to a marker that makes the restriction visible and removable with one click. All filters live in the page address - a copied link shows a colleague the same view. Key figures that cannot measure anything deliberately show no zero but say why: "no entitlement maintained", "no current contract", "open-ended". Tiles for areas you may not view are not offered at all.

    Open the Knowledge Base →
  • "My Area" and the employee portal are now clearly separated

    The knowledge base used to call both surfaces the "employee portal" - self-service inside the admin interface ("My Area") and the standalone application for staff. The affected pages are corrected; remaining mentions of the not-yet-publicly-reachable employee portal now carry the note "in preparation".

    Open the Knowledge Base →
  • Adding a contract now sits above the list

    In the employee file under People → Employees, tab Contract, the "Add contract" button sits at the top right - but the form used to open below every existing contract. From two contracts onwards it was therefore off screen: the click looked like it had done nothing, and the way to the form grew with every further contract, precisely for long-serving employees. The form now opens directly under the button and before the list. While it is open, the same button reads "Close" and is therefore the visible way back on narrow screens too, without scrolling down to the "Cancel" at the foot of the form. The open state is also kept in the address bar, so it survives a reload and can be shared. Nothing changes about the order of the contract list - the currently valid contract still comes first.

    Open the Knowledge Base →
  • Adding an entitlement names the reason instead of a server error

    In the Entitlements tab, "Add Entitlement" ended with an "Internal Server Error" message whenever an entitlement already existed for that combination of employee, absence type, and year. SCS now names the reason in plain language and points you at the existing entry to edit. If the input refers to an employee or an absence type that no longer exists, that is named as well instead of surfacing as a server error. An entitlement with 0 total days and a positive carry-over can still be created as before.

    Open the Knowledge Base →
  • Already approved leave requests spanning a substitute working day are now corrected automatically

    Since the substitute-day repair the leave calculation is right - but requests approved before it kept the higher day count, because that count is stored when the request is submitted and never recomputed. Those employees' leave entitlement stayed one day too low per substitute working day, and nobody noticed: the request looked finished. The system now settles this itself. The approved request stays untouched - its day count, its approver and its timestamp are not altered. Instead a separate position labelled System correction appears in the leave account, its reason naming the holiday concerned and the cause; it is additionally recorded in the employee record's audit log. The correction only ever gives back, never at the employee's expense, never twice for the same request, and never in a leave year whose carry-over has already expired under your expiry rule. Nothing is required from you. Adjusting leave entitlement,

    Open the Knowledge Base →
  • An absence is decided by the person responsible, not by anyone holding the permission

    Until now the "Approve absences" permission was enough to decide every request in the company, including one from another department. The four-eyes principle only prevented approving your own request; whose request it was otherwise did not matter. From now on: the HR department ("Manage HR") still decides for all employees - HR is nobody's direct line manager and needs that reach. A role carrying only "Approve absences", by contrast, now decides only for its own people: everyone for whom it is entered in the Position tab as Line manager or as Absence deputy. On somebody else's request the message "This request is not yours to decide" appears. Nothing changes for the four shipped system roles, because they carry both permissions together. This requires the line manager's user account to be linked to their employee record, which happens automatically when they are invited via HR → Employees.

    Open the Knowledge Base →
  • Change-request decision email now names you (#1852)

    The email "Decision on your change request" always started with a fixed "Hallo," with no name at all, even though the recipient (you, as the person who submitted the request) is known at send time. The salutation now uses your first name; if none is on file, a general but complete salutation appears - never an open gap. Existing tenants are covered by a data migration, unless the template was customized.

    Open the Knowledge Base →
  • Clock in directly from the dashboard tile

    On My Area → Dashboard, the "Time Tracking" tile used to show numbers only - today's, this week's, and this month's totals plus the overtime balance. To clock in or out you had to switch to the Time Tracking page. The tile now carries the same button: Clock In while nothing is running, and Clock Out with a running clock and the time left today against your daily target once you are clocked in. Both paths write the same entry - what you punch on the dashboard shows up immediately on the Time Tracking page, and the other way round. If the status cannot be loaded, the tile says so explicitly instead of wrongly claiming "not clocked in".

    Open the Knowledge Base →
  • Contract type in the "Organization" tab now translated correctly

    The contract list in the Organization tab of the employee file used to show the contract type as a raw translation key instead of readable text (e.g. "contractType.freiermitarbeiter"). It now shows the same translated text as the Contract tab.

    Open the Knowledge Base →
  • Downloaded payslips now carry the right name, and the link expires

    under My Payslips (portal and self-service), the downloaded file used to land under a technical name like 3f2a...-payslip-2026-07.pdf - the browser had no display name to work with and fell back to the last segment of the storage path. The file is now named after the payslip itself, for example "Payslip July 2026.pdf". At the same time, the previously permanent, direct storage link was replaced with a signed link that expires after one hour; clicking Download again reliably returns a fresh link. Who is allowed to see which payslip has not changed - the existing ownership check was already in place and stays exactly as it was.

    Open the Knowledge Base →
  • Employee file now always shows the newest contract

    In the employee file under People → Employees, the tabs Compensation, Position, Vacation and Time could display and save values from an older contract instead of the current one - specifically when an employee had two simultaneously active contracts (for example after a contract change where the predecessor contract had not yet been deactivated). Which of the two contracts was shown used to depend on the order the API returned them in, not on the actual contract start date. The four tabs now determine the current contract exactly as unambiguously as the Contract tab does: by start date, with the creation time as a tiebreaker - regardless of the order the contracts are delivered in.

    Open the Knowledge Base →
  • Employee portal access now works right after accepting an invitation

    Anyone who

  • Employment type and contract type now explained

    In the employee list (the "All Types" filter) and in the Contract tab of the employee file, a hint text now clarifies that employment type (the employee's category, e.g. full-time/contractor) and contract type (the legal form of the individual contract, e.g. fixed-term/freelance) are two independent fields - not the same thing under two names.

    Open the Knowledge Base →
  • Expense reports are cent-exact and no longer stop half-way

    under HR → Expenses the total of an expense report used to be added up from the individual amounts before it was saved. With unlucky amounts the result was a cent off from the sum of its line items - a report over 0.10, 0.20 and 0.30 could show 0.60 and still have a different value stored. The total is now summed by the database over the line items themselves, so it is always exactly the sum of what the report contains. The same applies to mileage: distance and rate per kilometre are no longer multiplied approximately but rounded commercially to two decimals - at exactly half a cent it now reliably rounds up instead of occasionally down. In addition, four operations are now all-or-nothing: create report, submit report, approve report and create mileage expense either complete fully or not at all. If the connection drops mid-way, no report is left without its line items, no already-approved expense sits under a report that was never approved, and no mileage expense is left without its trip. The operation reports an error in that case and can simply be repeated. Existing reports are not recalculated - the correction applies to newly created reports and mileage entries.

    Open the Knowledge Base →
  • Fixed: planned-hours periods no longer overlap - and can finally be corrected

    Under People → Time tracking → Timesheet → Planned hours every save used to create an additional period without ending the preceding one. Two different planned values then applied to the same day side by side, and which one ended up in a report was decided by the order of a query instead of by a rule: the same timesheet could show two different planned hours on two visits, and in the team overview the planned hours of the month were counted twice. Because the working-time account, the overtime and the absence calculation all stand on those numbers, this was a silent corruption - with no error message. From now on the periods form a gapless chain: a new period closes the preceding one on the day before, and the same “Valid from” no longer creates a second period but corrects the existing one. The “Valid until” field is new; it normally stays empty, in which case the period runs until the next one begins. If you do enter an end that reaches into a later period, saving is refused - stating from when the period it collides with begins; what you entered is never silently shortened. The “Maintained periods” list now offers “Edit” and “Delete”: until now a typo could only be buried under another period, never corrected. On deletion the preceding period takes over the end date of the removed one so that no gap appears. Existing overlapping periods are cleaned up automatically during the update - per employee the most recently saved state wins where the start date is the same, and every period ends at the latest on the day before the next one.

    Open the Knowledge Base →
  • HR home page now shows real metrics

    On the HR home page (People → Overview, /hr), the Absence rate, Present now, and Positions tiles were structurally stuck at 0 regardless of the actual data - they read fields the called endpoints never returned. Every tile is now wired to a real data source, two new tiles (Inactive employees, Open job openings) have been added, and the Absence rate and Turnover tile captions now name the period the underlying query actually uses (year and 12 months, respectively). If a tile occasionally cannot load its data, it now shows its own error hint instead of a misleading 0.

    Open the Knowledge Base →
  • Invalid date entries in the personnel area now report a clear error

    In numerous places in the personnel area - such as contracts, absences, expenses, holidays, time tracking, compensation, succession planning and more - an incorrectly entered date (e.g. text instead of a date, or a calendar date that does not exist, like February 30) used to result in a generic server error. Date fields are now checked before saving for a valid format AND a real calendar date; an incorrect entry now returns an understandable error message naming the affected field instead.

    Open the Knowledge Base →
  • New dashboard tile "Today at the company"

    The employee portal dashboard now shows at a glance who is absent today and who has a birthday - company-wide, not just for supervisors. For a foreign person, only the state "absent" appears, never the absence type - a sick note is indistinguishable from a vacation day here. A birthday shows only the day and month, never the birth year. Whether the tile shows birthdays at all is a company-wide setting under HR → Portal Birthdays (requires "hr:manage" permission, default: enabled) - the absence display is unaffected either way.

    Open the Knowledge Base →
  • New knowledge base pages for the employee portal

    Six new pages describe the standalone staff application: home, sign-in, absences, time tracking, documents and my profile. The employee portal itself is not publicly reachable yet; the pages are marked accordingly.

    Open the Knowledge Base →
  • New: fill a timesheet automatically, and approve a period

    Under People → Time tracking → Timesheet there are two new buttons. “Fill automatically” writes the maintained planned hours onto every working day of the chosen month that has nothing recorded yet - the thing nobody confirms daily in practice, which is why the record stayed empty and the monthly balance reported the full planned time as missing. Because a timesheet is a legal record, it explicitly does not come into existence by itself: the fill never runs in the background, only when you trigger it and confirm the question. Who triggered it, when, and for which period is in the audit trail. Days that are already recorded stay untouched, days in the future are skipped, and filled days carry the permanent note “auto-filled” in the new “Origin” column - with an icon and words, not by colour alone, and in the “Remark” column of the printed timesheet as well. That keeps it distinguishable later on what somebody confirmed and what was a default. A filled day nominally starts at 09:00 and contains the statutory rest break. “Approve period” gives a month a state for the first time: above the day list it now says Open, Pending or Approved - until now a finished month looked exactly like a running one. As long as nobody has decided anything the state is derived from the calendar; opening the timesheet changes nothing about it and creates no data. After approval the time entries of that month are locked against creation, change and deletion; the card names who approved it and when. To correct something, lift the approval again via “Lift approval” - the original approval stays in the audit trail. Filling needs the “Write time tracking” permission, approving and lifting the new “Approve time tracking” permission.

    Open the Knowledge Base →
  • New: the timesheet checks the statutory working time limits

    Under HR → Time tracking → Timesheet there is now a "Statutory limit" column next to "Deviation". Until now the timesheet compared a day with the planned hours and nothing else - somebody who worked 10 hours with 10 hours planned stood out nowhere, although the German working time act draws a line right there. Planned hours and the law are two different yardsticks, which is why they now sit side by side as two separate statements. Every day row is measured against three limits: the maximum working time (section 3 ArbZG - at most 8 hours per working day, 10 as long as the average stays at 8), the rest break (section 4 ArbZG - at least 30 minutes above 6 hours of work, at least 45 above 9) and the rest period between two working days (section 5 ArbZG - at least 11 hours). Every finding names the measured value and the limit in plain words, with an icon and text rather than by colour alone, so that it survives a black-and-white printout; the number of affected days of the month is stated above the list. The timesheet blocks nothing and rejects no entry - it states what the law says about this month, the judgement stays with you. Two boundaries of the check are worth knowing: the average is taken over the working days of the displayed month (the statutory compensation window reaches up to 24 weeks, further than a monthly sheet can compute), and the rest period on the first of the month stays unchecked because the previous day lives on a different sheet.

    Open the Knowledge Base →
  • New: working time limits are maintainable

    Under HR → Working time limits you now decide yourself which statutory limits the timesheet measures every day against. Until now the same compiled-in set applied to every tenant - the German working time act for adults. That set stays the default: anybody who never opens the page notices no difference. Anybody who does open it may tighten any limit, but not loosen it. A works agreement with a seven-hour daily cap can be entered; a daily maximum of twelve hours is rejected on save, and the message names the affected limit together with the submitted and the permitted value. The same holds for the break table, including the case where a tier was not shortened but deleted entirely - the check compares the whole table against the law point by point rather than row against row. Alongside the working time act, the act on the protection of young people at work is available as a prepared template (eight hours with no averaging extension, a 30-minute break above four and a half hours and 60 above six, twelve hours of rest). Every value is shown with its unit and its reference period - "8" and "160" are not one value written two ways but a daily and a monthly figure, and in the break table the left column carries hours while the right one carries minutes. Only holders of the "hr:manage" permission may change the values; every save, every adopted template and every reset creates an entry in the audit trail.

    Open the Knowledge Base →
  • Overdue absence requests become visible - and remind by themselves

    A request could sit undecided indefinitely with nothing pointing at it: no error, no number, just an employee waiting for an answer. Under People → Absences the top of the page now carries the "Overdue requests" metric - still open although the period is already over - and in the "Requests" tab "Overdue only" filters for exactly those (the choice is kept in the address bar and can be linked). When the period of an undecided request is about to start, the direct supervisor additionally receives a reminder in their worklist; it disappears as soon as anybody decides the request. The lead time is set in the "Policies" tab under "Decision deadline" (default: 3 days). An elapsed request is still not rejected automatically - that would be a decision without a decider.

    Open the Knowledge Base →
  • Payroll: a stuck run can now be reset

    If a payroll run stayed permanently in "Processing" after a technical interruption of the calculation (e.g. a restart, a timeout), there was previously no action for it in the interface - the run was unreachable without a direct database intervention, neither recomputable nor cancellable. The run's detail view now offers a "Reset" action: it brings a stuck run back to "Draft" so it can be recomputed. If the calculation is actually still running, the system rejects the action instead of interrupting the ongoing computation. In addition, a run in "Processing" status can now also be cancelled directly. Both actions require the "Edit Payroll" permission and are recorded in the audit log.

    Open the Knowledge Base →
  • Payroll: payslips can now be published to the employee portal

    For a completed payroll run, HR → Payroll now offers a "Publish to Portal" action - it makes every payslip in that run visible at once in the portal of the employee it belongs to, and sends each employee a notification. The payslip list has a new "Portal" column showing whether an individual payslip is "Visible" or "Hidden"; the eye icon toggles visibility for a single payslip, independently of the others in the same run. Both actions require the "Edit payroll" permission, and a run that is not yet completed cannot be published.

    Open the Knowledge Base →
  • Team calendar no longer shifts the page on phones

    Under People → Calendar, "Team" tab, the page could shift horizontally on narrow screens (e.g. 390 pixels wide) instead of staying put - a long employee name or a long label in the "Calendar layers" side panel broke through its fixed width instead of being cut off. Visible content ended up off-screen without any scrollbar showing it. The side panel now always keeps its width - an overly long name is now shortened with an ellipsis. The calendar grid itself was not affected: it already scrolled sideways within its own frame before this fix.

    Open the Knowledge Base →
  • Terminating now stops when the offboarding plan can't be saved

    In the "Terminate employee" dialog of the employee record, the termination used to go through even when saving the offboarding plan failed - you only got an error message as a hint. The employee was then marked as terminated with no access-end date recorded anywhere. A failed save now blocks the termination: the dialog stays open, the values you entered are kept, and you can try again right away. Only once the plan - including the date access ends - has been saved successfully does the termination go through. Nothing else changes in how you use the dialog.

    Open the Knowledge Base →
  • The hiring event now carries department and manager

    Onboarding automations and webhook subscribers reacting to the internal "employee hired" event now reliably receive the department id, the manager id, and the first and last name of the new person. On this delivery path these fields used to stay empty every time, without any error ever showing up. The termination event now delivers first and last name just as reliably.

    Open the Knowledge Base →
  • The last sign-in in "My Profile" now names the address and explains itself (#2390)

    The field under Settings → My Profile used to show nothing but a timestamp - and that timestamp was routinely weeks older than the session you were sitting in. It looked like a defect, but it was not one: what counts is a real sign-in, and staying signed in is not one; the console extends your session in the background. The field simply never said so, which left the only means you have of noticing a sign-in that was not yours without any value. It is now called Last successful sign-in, additionally names the address the sign-in came from, and says in one line underneath what the value means and what to do if you do not recognise it. Accounts that have never been used say so explicitly instead of implying a date.

    Open the Knowledge Base →
  • The research allowance record can now be exported

    the timesheet was only available per employee and per month - but a research allowance application (FZulG) needs the hours of several employees over a freely chosen period, tied to subsidised projects. Projects can now be marked as a subsidised research project and carry a project reference. The new "R&D Allowance" tab in project time tracking exports the total hours per employee for the period, as CSV or as a print view, each carrying period, generation time and data source. If the selected period holds no hours, no file is produced on purpose - you get a hint instead. The export requires the "HR read" permission and is recorded in the audit trail.

    Open the Knowledge Base →
  • Time-tracking changes now appear in the Audit Trail

    Under People → Audit Trail, working times showed nothing at all until now - there was no way to establish afterwards who corrected a time entry, approved a booking, or reopened a month that had already been signed off. Every time-tracking operation now leaves an entry: clock-in and clock-out, creating, changing and deleting a time entry, single and bulk approvals, auto-filling a month, and approving or reopening a timesheet. Recorded are the operation, the employee concerned and the person who acted - deliberately without names, salary figures or e-mail addresses. The remaining HR areas will follow step by step.

    Open the Knowledge Base →
  • Workflow reminders are now actually delivered

    A reminder created for a workflow step used to be saved and nothing more - there was no background run that ever noticed a due reminder and sent it, no matter how long the due date had passed. Due reminders (due date reached, not yet sent) are now checked automatically in the background and delivered through the notification bell to everyone holding the "Manage HR" permission. A reminder that was already delivered is not sent twice.

    Open the Knowledge Base →
  • "Add adjustment" no longer leads into a dead end

    In the employee file under People → Employees, tab "Vacation", section Entitlement adjustments, the Add adjustment button disappeared as soon as you clicked it - and when no leave entitlement had been recorded for the selected year, all that appeared in its place was a terse note: no form, no cancel button, no way back. The section was unusable until the employee file was reopened. From the operator's point of view, nothing happened at all. It hit precisely the normal situation at the turn of the year: a new year has no entitlement recorded at first - and that is exactly when last year's remaining days get carried over. The button now always stays in place and reads Close while the section is open. If no entitlement has been recorded for the year, the section now explains that in full sentences and offers the next step right away: Create the entitlement for this year takes you straight to HR → Absences → Entitlements, already set to the selected year. Also fixed: while the entitlements were still loading, the section claimed that no absence type existed - a false statement for every employee who does have one. Loading and emptiness are now distinguishable. Whether the section is open is also reflected in the address bar: a shared link opens it the same way, and the browser's back button closes it. The adjustment itself is unchanged - fields, permissions and the audit trail stay as they were.

    Open the Knowledge Base →
  • "Redeliver" in the delivery log now asks first - and names the target address

    Redelivering from a webhook's delivery log used to fire on the first click. It is not a local retry: the payload goes to the address you configured, carrying a valid signature, and is indistinguishable there from the original delivery - depending on the receiving system it can trigger an order, re-open a case, or create a record twice. Nothing on this screen can recall it. A confirmation now appears before it is sent, naming the event and the target address the signed delivery goes to. Only confirming sends it; cancelling sends nothing. The delivery itself, the retries and the log are unchanged.

  • A request that was never decided is recognisable as such

    A request whose period has elapsed while it still awaits a decision appeared in the "Past absences" list with the same "Pending" marker as a fresh one. It now reads "Pending (overdue)" there - visible instead of lost in the past.

    Open the Knowledge Base →
  • A submitted request also becomes a real task

    besides the bell entry, the direct supervisor now receives the request as a task under Tasks → My Tasks - with the period, a link to the decision, and a due date three days after submission. The task closes itself as soon as the request is approved, rejected or cancelled, including when somebody else decided it. It never has to be ticked off - and it can never sit there open long after the matter was settled. If the responsible person is not linked to an employee record, no ownerless task is created: the system reports a defect instead, and the bell entry is unaffected.

    Open the Knowledge Base →
  • A submitted request is also delivered by email

    the supervisor now receives the request not only in the bell and as a task but by email as well. Anyone who does not want that can switch it off per process kind under Settings → Process notifications - the worklist entry always remains; only the email can be unsubscribed.

    Open the Knowledge Base →
  • An absence request now goes to the direct supervisor - no longer to everybody

    until now every holder of the "Manage HR" permission received every submitted request in their bell. With five holders, five people saw the same request and nobody owned it - what is on everybody's list is on nobody's list. From now on a request reaches exactly one person: the requester's direct supervisor, as recorded in the personnel record under Organisation. The entry additionally shows how long the request has been waiting, a deadline marker ("on track", "due soon", "overdue") and the action "Review request", which takes you straight to the decision. Who may see a request does not change - the Requests tab still shows every request to everybody with the permission; only whose worklist it lands on changes. If no supervisor is recorded, or they have no active account, the request is NOT sent to everybody as a fallback - the system reports a defect to the operator instead, so the personnel record gets completed. In that case, record a supervisor under HR → Employees → Organisation.

    Open the Knowledge Base →
  • An approved request now changes hands instead of ending in the archive

    until now a request vanished from every worklist the moment the supervisor decided it, and whether HR heard about it depended on somebody remembering. From now on the approval raises a follow-up process for the employee's HR owner: “Absence of … is approved”, with the period, a link to the request and the action “Process approval” - in the bell, optionally as a task, and by email. If a tenant has several HR owners, each of them gets their own entry - that is the normal case in larger organisations, not a fault. A rejection or a cancellation raises no follow-up, because there is nothing to process. The follow-up is ticked off by the HR owner; if the request is cancelled later, it disappears on its own. The chain is limited to two steps and cannot run in circles - that is fixed in the system and checked at startup, not left to the individual case. If no HR owner can be found, the process is NOT sent to everybody as a fallback; the system reports a defect to the operator, and the approval itself is never affected.

    Open the Knowledge Base →
  • An offboarding with a successor can be saved again

    In the "Terminate employee" dialog of the employee record, saving failed with "Internal Server Error" and "Offboarding plan could not be saved" as soon as at least one person was named as successor - that is, exactly when reports, absence approvals or the department lead were to be handed over. Without a successor, saving went through, which made the fault hard to pin down. The cause was a malformed database query used to check whether the selected successors exist at all. This mattered for security: because the plan was not saved, the date on which access ends was not recorded either - the terminated employee kept their access. Notice date, access end date, termination reason and all six successor categories are stored again and appear in the employee record afterwards. Nothing changes in how you use the dialog.

    Open the Knowledge Base →
  • Closing a whistleblower case now asks first - the closure is final

    Under HR → Whistleblowing, the button in the resolution panel closed the case on the first click. The system does not accept a second attempt: once a case is recorded as "Resolved" or "Dismissed", any further change is refused. A misclick therefore fixed the outcome and the resolution notes for good - in the one procedure where the reporting person has no second channel to object. The button is now called "Close the case for good" and asks first; the question names the case number and states that this cannot be taken back. Only the confirmation triggers it. Status and severity in the same panel are reversible and deliberately still do not ask.

    Open the Knowledge Base →
  • Compensation can now be recorded retroactively

    in the employee record under HR → Employees, "Compensation" tab, a compensation with an effective date in the past could not be entered - the input was rejected with the note that the effective date must not precede the start of the current compensation. For people hired before the switch to this system, the history therefore began arbitrarily on the day the record was migrated, which made it worthless for questions from payroll, an audit or an employment tribunal. Above the "Compensation history" list there is now "Add past period": you record a closed period with start, end, amount, commission and a mandatory reason. The end date is pre-filled with the day before the oldest existing entry starts, so the periods abut without leaving a hole. Already-closed rows can additionally be edited and removed. Periods may never overlap; gaps are allowed where an intermediate period is unknown. The running compensation ("until today") stays with the contract path as before and is deliberately locked here. All of it requires the "manage HR" permission and is fully audited - account, time, employee and period are recorded, never the amount itself. Payroll is unaffected: a completed payroll run keeps its own snapshot and is not changed by a backfilled history.

    Open the Knowledge Base →
  • Entitlement adjustments over several days - and last year's carry-over can finally be recorded

    In the employee file under People → Employees, tab "Vacation", the Entitlement adjustments area only allowed "full day" or "half day" per position. Anyone wanting to carry over five remaining days from last year would have had to create five separate adjustments - and because nobody did that in practice, affected employees ended up with a negative leave entitlement in the allowance tile, even though they were legally entitled to the days. Instead of the "Amount" dropdown there is now a Number of days field: you enter how many days to adjust - whole or half, for example 5 or 2.5, up to 365 per position. Half days therefore remain possible; only the one-day limit is gone. Second, a new Type of adjustment dropdown offers "Carried over from last year": booked that way, the carry-over appears in the allowance tile as its own, named position plus a subtotal row "Carried over from last year" below the base entitlement - separate from the current year's entitlement instead of vanishing into it as an anonymous credit. The history now states when, how much and by whom for every position; the name of the person who created it was never shown before. Also fixed: a deduction was rejected when the cover came wholly or partly from the carry-over, even though the allowance tile showed those days as available - the check and the display now use the same basis. Unchanged: every adjustment remains an immutable position - a correction of a correction is a new position, nothing is overwritten. Existing adjustments are untouched and continue to count as manual adjustments. Only people with the Manage HR permission may create one, and every adjustment is recorded in the audit trail. Adjust leave entitlement manually,

    Open the Knowledge Base →
  • New in the employee portal: inbox and team status for supervisors

    The portal dashboard (My area → Dashboard) only ever showed your own view - leave balance, time tracking, upcoming events. Anyone who leads a team learned nothing there about an absence request waiting for a decision; those requests lived exclusively in HR administration, which many line managers cannot reach. Two new cards close that gap. The inbox lists every open absence request of your employees with name, type, period, days and reason - and you decide right there, with Approve or Reject, without leaving the page. The inbox is deliberately a worklist and not a history: an entry disappears as soon as the request has been decided - including when somebody else decided it, for example your deputy or HR. The number next to the heading therefore always means "this much is waiting for me", never "this much has happened". The team status shows, for a day you pick, who is clocked in, who is clocked out, who is missing a clock-in and who is not in the office, each with a count and the people; clicking a state filters the list, and both the day and the filter live in the address bar, so the link can be shared. On data protection: you only ever see your own team. Who reports to whom is decided by the employee record (field "Manager"), and the limit is enforced on the server rather than hidden in the display - a call without leadership responsibility is refused and returns no personal data at all. If you are only recorded as an absence deputy, you see the affected requests in the inbox (marked "You are deciding as deputy") but not the team status - attendance times go further than a single leave approval. Anyone who leads nobody does not see either card; the personal dashboard is unchanged. The four-eyes principle still applies: you cannot decide on your own request here. Inbox and team status (supervisors),

    Open the Knowledge Base →
  • New: the timesheet as an on-screen view, with planned hours per weekday

    Under People → Time tracking there is a new “Timesheet” tab. It shows the proof of working hours for one employee and one month, day by day: in, out, break, hours worked and planned, and the balance per day. Above it sit the hours account across all periods, stating whether it is in credit or in deficit, the balance of the period, and the number of days that deviate. Until now the timesheet could only be opened as a finished print page in a new window, where there was no way to tell which days departed from the plan. Deviating days are now highlighted - with an icon and the words “worked more than planned” or “worked less than planned”, not by colour alone, so the marking survives a black-and-white printout. A working day with no entry at all deliberately counts as a deviation. What is also new is that the planned hours can be maintained at all: under “Planned hours” you enter the hours per weekday, valid from a date; a later change opens a new period and leaves the past untouched. Without a maintained period the timesheet assumes, as before, 8 hours from Monday to Friday, and states this above the list instead of passing the assumption off as a maintained value. Employee, year and month are kept in the address bar, so the link always returns to the same timesheet. Other people’s working hours stay hidden: without the “Read HR” or “Read time tracking” permission the request is refused, and opening the view does not alter the record. The familiar print page is unchanged.

    Open the Knowledge Base →
  • Remote work: record the agreement, count the days, report to the tax office

    People › Remote work is a new page. Until now none of this existed in the system: the employee record does hold a field for a person's permanent place of work ("Berlin office"), but nothing anywhere stated on which days somebody actually worked from home - not in time tracking, not in the time tracker, not in project time. Neither a count nor any evidence was possible. The page has three tabs. Under Agreement you record how many remote days are agreed with a person - per week, per month or per year - valid from a date and optionally limited. A later change does not rewrite the past: an evaluation of a previous year keeps using the agreement that was in force back then. Under Days you record one of three work locations per working day - home, office or other location - and above the list the counted days and the agreement, projected onto the month, sit side by side; a deviation is marked with a symbol and a word ("▲ above the agreement", "▼ below the agreement"). If no agreement is stored for a person, it reads "Not on record" rather than zero - the two are not the same statement. Under Report you see the yearly statement for everyone and export it via Export as CSV as a table a tax advisor can check. The count is country-neutral: it counts days, it does not compute tax consequences. The remote-work allowance is German tax law, but the company also employs people in other countries; the report therefore states the number of days and the person's country, and the evaluation remains the tax advisor's job. Because the report goes to an authority, every change stays traceable: creating, changing and removing a day are kept with time, author and old and new value, and that record survives even when the day itself is removed again. You find it on the Days tab under Change history. On permissions: everyone sees their own figures in the employee portal; other people's figures require read HR, recording requires manage HR. A call without the required permission is refused on the server and carries no figures with it. Working hours stay where they are - how long someone worked remains in time tracking; the new page only says where. Remote work,

    Open the Knowledge Base →
  • Settled requests disappear from the bell

    once a request is approved, rejected or cancelled, its entry is gone from the worklist - including when somebody else decided it. Until now it stayed there until someone marked it read by hand, long after the decision had been made.

    Open the Knowledge Base →
  • Substitute holidays now apply to employees with an assigned holiday calendar too

    In countries with a statutory weekend transfer (Ukraine, Japan, United Kingdom, South Korea) a holiday falling on a Saturday or Sunday moves to the next working day - that substitute day is the day off. For employees with an assigned holiday calendar that transfer never reached the leave calculation: it used the statutory holiday date, the Saturday or Sunday nobody works anyway. The substitute Monday counted as an ordinary working day and was deducted from the leave entitlement - at the employee's expense. The holiday list in the employee file and the team calendar showed the substitute day correctly all along; only the deduction disagreed. For Ukraine in 2026 this affected three days: Mon 09.03. (Women's Day), Mon 11.05. (Day of Victory over Nazism) and Mon 29.06. (Constitution Day). From now on both cases calculate alike: an employee with an assigned calendar consumes exactly as many vacation days for the same period as one without. Carried along as well: holidays suspended by law ("(призупинено)") now count as working days with an assigned calendar too and are deducted from the leave entitlement. Important for requests already approved: the change applies to new calculations. A request approved before the switch that spans one of those substitute Mondays keeps the day count stored back then - correct it if needed via Adjusting leave entitlement. Calendar & holidays,

    Open the Knowledge Base →
  • Suspended Ukrainian holidays cost a leave day again

    The Orthodox holidays Easter and Trinity are suspended by law in Ukraine for 2026 - they are meant to stay visible but must not count as days off. In the leave calculation the suspension did not take effect: in 2026 both days fall on a Sunday (12.04. and 31.05.), the Ukrainian weekend transfer moved them to the following Monday (13.04. and 01.06.) and occupied that Monday as a day off. A leave request spanning one of those Mondays therefore consumed no vacation day although it should have. The cause: the suspension was maintained at the substitute date while the check ran against the statutory holiday date, so the two never met. From now on the suspension applies at the statutory holiday date: no substitute Monday is created any more, Mon 13.04.2026 and Mon 01.06.2026 are ordinary working days and are deducted from the leave entitlement. In the holiday list of the employee file and in the team calendar the "Suspended" label now appears on the Sunday (12.04. and 31.05.) instead of the Monday. Valid holidays are unaffected: a Ukrainian holiday that is not suspended is still moved to the next working day and stays free (example: Constitution Day Sun 28.06.2026 to Mon 29.06.2026). Past years do not change either: no suspension is on file for 2023 to 2025, and the calculation returns unchanged values there. If one of those two Mondays should still be a day off at your company, add it manually via Add holiday - a manual entry always wins. Calendar & holidays,

    Open the Knowledge Base →
  • The "Planned" metric now says what it counts

    It read 0 even though several requests were listed below it - because it counted only approved future days, not the requested ones. The number was right; the label lied. The metric is now called "Approved and planned", and whenever undecided requests are still open a "+ N requested" line appears underneath it. Number and list can no longer contradict each other.

    Open the Knowledge Base →
  • The absence overview's legend and calendar match again - and are readable without colour

    In the year view (employee file, "Vacation" tab, and in self-service under My absences) the legend showed a different colour from the calendar below it: it named the colour of the first absence type while the calendar drew the colour of the type actually booked. Anyone maintaining two types - vacation in green and sick leave in yellow, say - could not find the legend's colour in the calendar. Legend and calendar now read from one single source; a state can no longer look different in the two places. On top of that, no state rests on colour alone any more: hatching always means "not a working day under the contract", a border in the type's colour always means "something is booked or requested here". All six states therefore have their own pattern, recognisable in greyscale too. Each day's tooltip also names the state in words, in the same wording as the legend (for example "Vacation - Requested"); screen readers announce the same text.

    Open the Knowledge Base →
  • The employee column in the shift planner now stays put on a phone

    Under People → Shift planning the plan can be swiped sideways on a narrow screen, because a week of seven days - and a month of up to 31 - does not fit the width of a phone. The left-hand column with the names is meant to stay in place so it is clear whom a shift belongs to. Instead it travelled out of view with everything else: anyone swiping to the end of the week saw a row of shifts with no name beside it and had to swipe back to get their bearings. Name and department now stay at the left edge in both the week and the month plan while the day columns scroll past - the header cell and the cells below it together. Nothing else about the operation changes, and on wide screens the plan looks exactly as before.

    Open the Knowledge Base →
  • The employee list is now sorted alphabetically - and remembers your choice

    The overview under HR › Employees used to order employees by hire date - unusable for finding a specific person. A new toggle next to the filters now sorts the list by last name (default) or first name, ascending or descending. Your choice is saved and applied automatically the next time you open the page - even after signing out and back in. A shared link with an explicit sort still shows exactly that sort, without changing the recipient's saved preference. Names with accents or umlauts (e.g. "Sánchez", "Müller") now sort into their linguistically correct place instead of landing after every unaccented name.

    Open the Knowledge Base →
  • "Send invitation by email" works again - and names the reason when something blocks it

    The button in the employee record used to fail every single time, in every workspace. A newly created employee could not get access at all, because this is the only route to it. The cause was a piece of information the system needs when issuing the invitation secret, but which had never been created in the data store; this change adds it. That information is what separates an invitation from a password reset link - keeping the two apart matters: a reset link must never pass as account setup. On top of that, the interface now shows the reason when an invitation cannot go out: if the workspace's admin URL or the employee's email address is missing, the notice says so and how to fix it, instead of just "an error" as before. When no reason can be named, the notice gives an identifier you can quote when reporting it. Invitations already sent stay valid.

    Open the Knowledge Base →
  • A contract created on the same day now reliably sorts to the top

    In the "Contract" tab of an employee record, contracts are sorted by start date, newest first and labeled "Current". If a newly created contract shared its start date with an existing one - for example, both starting "today" - the order between the two was not determined: the just-created contract could end up below the older one, making the creation look as if it had gone nowhere. When start dates tie, the creation time now breaks the tie - the most recently created contract sorts to the top.

    Open the Knowledge Base →
  • Create and strike holidays per employee

    In the employee record under HR › Employees, "Leave" tab, section Holidays, you could only assign holidays that already existed in the country's holiday list. If a day was missing there entirely, it was unreachable from the employee record - exactly what happened with four Ukrainian substitute Mondays in 2026 (9 Mar, 13 Apr, 1 Jun, 29 Jun). Create a holiday now lets you enter a day directly with a date and a label, optionally as a half day. The day applies to this person only, appears in their holiday list, and counts in the leave calculation like any other holiday: a leave request covering it consumes no leave day (half a day when marked as a half day). Label and half-day flag can be changed later via the pencil icon; the bin icon takes the day back. Secondly, striking a holiday used to require an assigned holiday calendar - without one, the "count as working day" button was missing on every single day even though the list was populated. It is now available on every day, with or without a calendar. That also makes it possible to remove a holiday that the calendar lists but that does not apply to this person - a day suspended by law, for instance. All of it requires the "Manage HR" permission and is fully audited. Employees,

    Open the Knowledge Base →
  • Deleting a shared calendar now asks first

    Under HR › Shared calendars, the "Delete" button at the bottom of the detail view fired on the very first click. Deleting the calendar takes its member list and its appointment links with it, and nobody can bring those back - not the operator either. A confirmation window now appears first, naming the calendar and saying what goes with it. "Cancel" leaves everything as it is. Creating and editing are unchanged - both still work without an extra question.

    Open the Knowledge Base →
  • Legal entity on the contract - and safer maintenance of companies

    Until now a contract did not say which company a person works for. Whether somebody is employed by SELLERLOGIC GmbH or works for it as a freelancer could not be derived from employment type and contract type - those answer two different questions (how much somebody works, and under which legal form), not the question of which company. The employee file under HR → Employees, "Contract" tab, now has a Legal entity field for exactly that. It is available when creating and when editing a contract and lists every active company from HR → Legal entities. Existing contracts start out unassigned and show "Not assigned" until you set them. Because the field sits on the contract rather than on the employee, it stays traceable which company an earlier contract was signed with even after somebody moves. In the employee list the legal entity of the current contract now appears in the "Employment" column below status and employment type. Second, maintaining the companies themselves has become safer. The bin icon used to appear on every row but did not actually delete anything: the company was merely deactivated and stayed in the list unchanged. Now, if nothing references a company, deleting removes it permanently. If a contract, employee, location or cost center points at it, deletion is refused and the reason is stated - contracts are subject to statutory retention periods, and a deleted company would rob the retained contract of the information about who it was signed with. For that case there is Deactivate: the company is no longer selectable for new contracts, every existing entry stays unchanged and readable, and the step can be undone at any time. The list gains a Contracts column, a Status column and a status filter (all / active / deactivated). Maintaining all of this still requires the corresponding permission, and every change is logged. Legal entities,

    Open the Knowledge Base →
  • The employee portal is usable on a phone again without the page sliding sideways

    On a phone-sized screen (390 pixels wide) the portal was skewed on four pages: Payslips, Documents, Absences and Time tracking were wider than the screen, so the whole page could be pushed to the right - header and menu button included. Swiping right to see a table column pushed the navigation out of view, and you had to swipe back before you could use it. Measured, the payslips page was 903 pixels wide instead of 390, documents 800, absences 687 and time tracking 638. All four now sit exactly within the screen width. Wide tables are not cut off - they scroll horizontally inside their own box, so you still swipe across to the right-hand columns while the page around them stays put. The other four portal pages (Dashboard, My Profile, Shifts, Performance) were already fine and have stayed that way.

    Open the Knowledge Base →
  • The invitation link for new employees no longer carries its secret visibly in the address

    When you invite somebody to sign in, the email contains a link the invited person uses to set their password and activate their account. That link is worth as much as a password - whoever holds it sets up an administration account with it. Until now the secret sat in the query part of the address (behind the question mark), which meant it was written down in places nobody treats as a secret store: the access logs of the servers along the way, the browser history and the session restore on the invited person's device. It now sits behind a hash sign - a part of an address that browsers never send to a server at all, so it cannot end up in any log. On top of that, the secret disappears from the address bar once the page has loaded: copying the address or sharing the screen no longer passes it on. Nothing changes in how you work - you still invite via "Invite to sign in". Invitations already sent stay valid and keep working unchanged until their seven days are up; nobody has to be invited again.

    Open the Knowledge Base →
  • The team calendar now sets weekends and public holidays apart

    In the Team tab under HR → Calendar & Holidays, a Saturday looked like a Tuesday, and a public holiday was only recognisable if an entry happened to fall on it. In the month and week views, every weekend now carries a slightly offset background colour and every public holiday a distinct one of its own. Which holidays show depends on the people currently in view: filter the sidebar down to one colleague and you see exactly their holidays - if they live in another country, you see that country's holidays, not yours. With the whole team shown, a day is marked as soon as it is a day off for at least one visible person; the day's hint names who that is, and screen readers read it out too - colour is never the only carrier of the message. Who is entitled to which holiday is decided by the same chain that vacation accounting and absence planning use (approved residence before assigned holiday calendar before the person's country), not by a second rule inside the calendar. Weekend, holiday, and absence stay three different things: the first two tint the day, an absence remains an entry inside the day.

    Open the Knowledge Base →
  • The employee portal now asks before irreversible steps

    Two buttons in the employee portal used to fire on the very first click - "Cancel" in the list of your absence requests and "Acknowledge review" under "Performance". Neither can be undone: a withdrawn request goes to HR and retracts the entry in the shared calendar, and an acknowledgement is visible to your manager at once. A misclick could not be caught. Both buttons now open a confirmation window first, one that names the consequence - with the date range of the request concerned, or the name of the review cycle - and only acts on the second click. Choose "Cancel" and nothing has happened. The same question now also stands in the HR area of the admin before "Acknowledge" on a submitted review (People › Performance) - acknowledging is the other side of the same act, it can be taken back just as little, and the window names the person concerned. Plain saving is unchanged: submitting a new absence request or sending your self-assessment still goes straight through, with no extra question. My Absences,

    Open the Knowledge Base →
  • Dates in the HR area no longer convert to world time

    a date the system fills in itself - the hire date of a newly created or invited employee, the effective date of a termination, a probation or status change, the effective date of a compensation adjustment, the reference day of a backdated absence, the report date of the pay-gap report, the day printed into a generated personnel document, and the bounds of the HR reports - used to be cut out of world time (UTC). Between midnight and 02:00 German time that was the previous day. Creating an employee at 00:30 produced a hire date of yesterday, which carries into the end of probation, length of service and the pro-rata holiday calculation; the 30-day reports ended on the previous day, so the current day appeared in no figure at all. All of these now come from the tenant's time zone (Settings > Time zone). Nothing is rewritten retroactively - dates already stored stay as they are.

    Open the Knowledge Base →
  • Employee portal: dates follow the portal language, and the day is right again

    Under Absences and My profile in the employee portal, dates were always shown in the German format - including for everyone who had switched the portal to English, so an English caption sat next to a German date. Dates now follow the portal language. A second defect at the same places was fixed along with it: the hire date and the start and end of an absence are plain calendar days without a time, but they were read as midnight UTC and rendered in the viewer's own time zone. Anyone west of Greenwich therefore saw the previous day. The day now shown is the one held in the record. For the time a request was created the viewer's own zone deliberately still applies, because that names a moment rather than a calendar day.

  • Field captions in HR are now linked to their field

    Across the HR pages - absences, time and project tracking, payroll, compensation, recruitment, performance reviews, training, locations and legal entities, cost centres, shift planning, calendars, document templates and surveys - the input fields carried a caption above them that was not technically linked to the field. That had two noticeable consequences: clicking the caption did not put the cursor in the field, and a screen reader announced the field without a name. 264 fields now carry that link. Nothing changes visually - captions, spacing, colours and field sizes are unchanged. Fifteen places sound different: where the heading sits above a read-only value only - such as the requested field name and current value of a change request in the employee portal, or the colour preview of a shift template - it is now read out as ordinary text instead of as the caption of a field that does not exist. Where what follows is a group of several buttons - such as the colour pickers for teams, calendars and absence types, the weekday picker in the working-time model, the star rating in recruitment, or a webhook's event selection - a screen reader now announces a group with that name. Two choice fields were also wired to the wrong element: for the region and currency pickers the link landed on the surrounding frame instead of the search field; it now sits on the field itself.

    Open the Knowledge Base →
  • Inviting an employee: right after creating them, and without a detour through a setting

    Two things stood in the way. First, creating an employee ended in a notice only - the invitation then had to be started separately from the employee overview, and nothing said that this second step existed. The invite dialog now opens directly after creation, with the role selection as before. Second, in newly set up workspaces the invitation aborted with "Admin URL not configured" and pointed at a setting nobody had been shown. That address belongs to your workspace anyway and is now used automatically when you have not stored one of your own; an address you entered yourself still takes precedence. You do not need to do anything. If no address can be determined at all, the message now says what it is needed for and where to enter it (Settings → Domains & URLs).

    Open the Knowledge Base →
  • The captions under "My Profile" are now linked to their control

    On the account page My Profile (Settings › Profile) the controls carried a caption above them that was not technically linked to them. Clicking the caption therefore did not put the cursor in the field, and a screen reader announced the field without a name. Four captions now carry that link. Nothing changes visually. Three places sound different: date format, time format and start of week each sit above a group of several choice buttons rather than above a single input field; a screen reader now announces a group with that name.

    Open the Knowledge Base →
  • The HR area now asks before something is deleted or leaves the house

    Across 48 HR screens - absences and absence types, teams and cost centres, payroll, time tracking, expenses, benefits, compensation, onboarding, shift planning, surveys, feedback, recruitment, IT assets, the employee file and the workflow building blocks - 85 buttons used to fire on the first click: a deleted time entry, an approved or rejected expense report, a terminated employment, an invitation on its way. Each of these now shows a confirmation that names the consequence - the affected record by name, the number of records for bulk actions, and the recipient wherever something goes outside. Eight places deliberately get no extra dialog, because you have already filled in fields there and the send button itself is the confirmation: payroll mail dispatch, replying in the whistleblowing inbox, terminating an employment, inviting an employee, rejecting a profile change request, rejecting a residence permit request, the payroll office export, and messaging an applicant. Those eight panels now also respond to the Enter key. On top of that, every browser window has disappeared from the HR area - confirmations are now dialogs of the interface everywhere, which makes them consistent in the dark appearance and with screen readers.

  • The locked “Work Email” field in the personnel file now states why it is locked

    Under Personal details ‣ Contact the work email address could not be edited and nothing said why. Together with the fields of a freshly created employee, which are simply still empty and therefore look grey too, this gave the impression that the whole edit area accepted nothing. Every other field was and is editable - phone, private email, street, postal code, city, region and country. Only the work address is locked, and it now carries its reason: it belongs to the employee's sign-in account, and changing it in the personnel file alone would diverge from the sign-in address. A dedicated way to change that address is being prepared.

    Open the Knowledge Base →
  • Two field captions in the employee portal are now linked to their field

    the year filter under Payslips and the self-assessment comment box under Performance carried a caption that was not technically linked to the field. Clicking the caption therefore did not put the cursor in the field, and a screen reader announced the field without a name. Both are fixed; nothing changes visually.

    Open the Knowledge Base →
  • The employee portal now uses the shared interface controls throughout (technical, #1798)

    In the employee portal - sign-in, My profile, absences, time tracking, shifts, documents, payslips and performance - buttons, text, choice and multi-line fields, checkboxes and all four list tables now come from the shared interface toolkit instead of each page carrying its own code. That makes the portal the first of six surfaces to be fully converted. What stays the same: layout, labels, colours and workflows; input fields keep their familiar height and text size, so they stay easy to hit on a phone and tapping one does not zoom the view. What visibly changes: the four lists (absence requests, time entries, documents, payslips) now use the shared table presentation - slimmer uppercase column headings, a paging bar that also shows "of how many", and placeholder rows while loading instead of the "Loading..." line. The rejection reason of a declined request still sits directly beneath the request and does not have to be expanded. What becomes consistent: keyboard focus, contrast in dark appearance and the behaviour of disabled fields; the star rating in the self-assessment and the menu button in the mobile header also carry a screen-reader name for the first time. Nothing changes about permissions, data or calculations. My Area, My Absences,

    Open the Knowledge Base →
  • "My area" stays usable when a single section is stuck – and the presence switch explains itself

    On the employee-portal home page (My area), a single unavailable tile used to tip the entire page into "Failed to load overview" – taking five working tiles with it. Now: the page still loads, shows every tile it can retrieve, and puts a note "Some sections are unavailable" above them that names the affected section (e.g. "Open surveys"). You can see at a glance which figure is missing and which one is correct, instead of facing an empty page. Second: the "Available / Away" switch in the user menu was already hidden for accounts with no linked employee record – typically the owner login right after setup – but the interface still queried the state on every page load and ran into an error doing so. It no longer asks at all when the HR area is switched off for the workspace, and otherwise receives a clear "this account has no employee record" answer instead of an error. Nothing changes about permissions, data or calculations.

    Open the Knowledge Base →
  • Google Calendar: callbacks from Google now have to prove themselves

    The address Google uses to tell us "something changed in this calendar" was previously open to anyone who knew the internal identifier of a watch channel - such a call triggered a full sync with Google. Nobody could read or change anything that way: the response carries no appointments, and the sync only pulls data from Google to us. What it did allow was burning through your Google account's request quota; once that is exhausted, the calendar connection fails for every employee. A callback is now only accepted if it carries the proof Google received from us when the channel was set up - a separate value per channel, which we ourselves only store as a checksum that cannot be reversed. Everything else is rejected and recorded in the operations log. Nothing changes in how you work. One-off, appointment changes may take up to an hour to appear - via the next regular sync rather than immediately: channels set up before this change do not carry the proof yet and are renewed automatically.

    Open the Knowledge Base →
  • Google Calendar: real-time connections are renewed instead of multiplied

    On every sync run - hourly by default - SCS opened a new real-time connection to Google for every synced person instead of keeping the existing one, and never cancelled the superseded one at Google. Since each connection is valid for seven days, up to 168 simultaneously active connections per person and calendar accumulated; 167 of them were no longer recorded in SCS at all and still reported every calendar change. The consequences were needless consumption of your company's Google quota - in the worst case up to a lockout of the calendar connection for all employees - and a permanently open security notice in the operations log that looked like an attacker even though SCS was knocking on its own door. From now on: a connection still valid for more than a day is kept as it is; renewal happens shortly before expiry, and the superseded connection is stopped at Google in the process. The connections that have already accumulated are cleared up automatically: as soon as one of them reports in again, it is recognised and stopped - with no operator action. Such own leftover connections are now unambiguously distinguishable from a genuine foreign access in the operations log; both continue to be rejected. Nothing changes in how you use the feature - events appear in the team calendar unchanged and just as quickly. The response of "renew real-time connection" now also names how many connections were skipped and how many old ones were stopped.

    Open the Knowledge Base →
  • HR area and time-tracking tools moved to the shared interface controls (technical)

    In the HR area - including employee records, benefits, succession planning, career frameworks, shift planning, recruitment, team/company calendars, tasks, templates and "My area" - as well as in the time-tracking tools (time-entry editor), buttons as well as text, choice and multi-line fields now come from the shared interface toolkit instead of each component carrying its own code. Look and handling stay the same; what becomes consistent is keyboard focus, contrast in dark appearance and the behaviour of disabled fields. The tables on the shift-planning, cost-centre, reports and absence-planning pages, and four choice/multi-line fields with a distinct look (benefits, career frameworks, org chart, succession planning), are not yet converted and will follow later.

    Open the Knowledge Base →
  • Unique page titles

    Several help pages carried exactly the same name as a page of the same name in another area, which made them impossible to tell apart in search results and listings. Affected in this area: Tasks (HR) and Locations (HR). The page addresses do not change, so saved links and bookmarks keep working.

  • Whoever registers a workspace now has their own employee record

    Until now, registration created only the administrative owner login – HR → Employees was empty, and the employee portal home page (My Area) stayed blank for the only person in the workspace; the "Available / Away" switch did not appear at all. New: creating the workspace now also creates the matching employee record, linked to the owner login. Only what was entered during registration is carried over – first name, last name and email address. The hire date is set to the registration date; if that is not the actual start date, change it in the employee record. Every other field (address, phone, date of birth, bank details, department, position) stays empty – nothing is invented. The email address is stored encrypted, as in every employee record. Existing workspaces are filled in automatically, with no operator action required; anyone who already has an employee record, or deliberately removed one, gets neither a second one nor it back. If the HR area is not enabled for the workspace, the record is still created – it costs nothing and prevents exactly this dead end once the area is switched on. My Area,

    Open the Knowledge Base →
  • "My Profile" is now either "My Profile (Account)" or "My Profile (Personnel Data)"

    Two different Knowledge Base pages carried the same title "My Profile" - one for your sign-in and account settings (password, passkeys, language and time zone), one for your own personnel record (identity, contact details, employment, bank details). In Knowledge Base search and in search engines the two results were impossible to tell apart. The titles now say which is which. Nothing changes about the content, the addresses or any link - only the heading and the title in the result list. My Profile (Account),

    Open the Knowledge Base →
  • Change-request notification now names the workspace and the person

    The email to the reviewer ("New change request from …") had four flaws. The sender read "Mein Shop" - the factory default of the workspace name that nobody ever typed - and the same placeholder appeared in the body text ("… requested a change at Mein Shop"). The salutation was a bare "Hallo," with no name, even though the recipient is known - they are the person approving the request. And in the footer the product name "SELLERLOGIC SCS" sat as a loose grey line above the provider identification, unlinked and visually cut off. If a workspace name is set, it now appears in both the sender and the body; if none is set, the product name appears instead of a placeholder. The salutation uses the reviewer's first name - if no first name is on file, a general but complete salutation appears, never an open gap. The footer is a designed unit and the product name links to the product page. The template is now also available in English. The sender name affects all outgoing emails, not just this one: workspaces without a name now send under the product name instead of "Mein Shop"; a self-chosen name is untouched.

    Open the Knowledge Base →
  • Earlier compensation periods can now be backfilled, corrected and removed

    The compensation history in the employee file (Personnel → Employees, "Compensation" tab) could previously only be carried forward. Anyone who only received the most recently maintained amount at go-live ("Not stated") could not add older pay steps - and a typo in a recorded period stayed there for good. Closed periods in the past can now be backfilled, edited and removed. Three rules apply: start and end are both mandatory (a backfilled period is always closed - there is no "until today" here), a reason is mandatory just as for any change, and periods must not overlap - they may be adjacent, and gaps are explicitly allowed: if an intermediate period is unknown, that does not block backfilling the older ones. The currently valid compensation ("until today") stays locked on this path and is still carried forward exclusively through "Adjust compensation" on the contract; a backfilled period must end before it starts. A pay rise in the middle of an already recorded block is modelled in two steps: shorten the existing period to the day before the rise, then backfill the new period with the higher amount. All of this requires the "manage HR" permission; amounts remain encrypted, and the audit log records who created, changed or removed which period and when - without the amount. Rollout status: the capability is available through the API first; the controls in the "Compensation" tab follow with the next release.

    Open the Knowledge Base →
  • Year calendar legend now shows the actual colours

    Under My area → My absences (and in the employee file, "Vacation" tab), the six colour patterns in the legend below the year calendar did not match what the calendar days actually showed: the legend displayed a fixed indigo for "Absence", "Absence on a non-working day", and "Requested", while the calendar days themselves used the real colour configured for that absence type - typically green for vacation or yellow for sick leave. Anyone using the legend to read the calendar could not find the colour they were seeing. The three affected legend entries now show the same colour as the calendar days; for a tenant with no configured absence type, the previous placeholder colour remains. Requested and approved absences remain distinguishable as before - approved days are filled solid, requested days are only outlined; that distinction was not affected by the colour issue.

    Open the Knowledge Base →
  • Cards and rows in several personnel areas now work fully with the keyboard

    A number of clickable cards, rows, and toggles previously responded only to a mouse click - anyone navigating by keyboard (Tab key) could not reach them. This affected, among others, the entries in the audit trail, the team cards under Personnel → Teams, the competency cards, and the candidate and evaluation cards in the recruitment pipeline, as well as the "holidays count as a workday" toggle in an employee's time tracking. These elements can now be tabbed to and activated with the Enter key - exactly like a mouse click. Nothing changes in the behavior itself. In addition, the invisible click-outside areas that close a dialog or dropdown were cleaned up in many places - these were previously mistakenly exposed as an operable control, even though closing was always already possible via the visible close button. Audit Trail, Teams, Performance Reviews,

    Open the Knowledge Base →
  • Employee search finds long-standing existing employees again

    The search under Personnel → Employees returned no match for people created before the switch to the encrypted personnel file - even though the record existed and could be opened from the list. For data-protection reasons the search does not work on the plain text but on an encrypted search value per field (first name, last name, employee number, business email); that search value was missing for existing records. A follow-up run now fills it in automatically during rollout - without any operator action and without changing the data itself. Also fixed: if the follow-up run could not process a tenant system, that system was still permanently marked as done and never retried - the search would have stayed empty there forever. Such cases are now detected and picked up automatically on the next start. Nothing changes in how you work; the search behaves exactly as before, but finds all employees again.

    Open the Knowledge Base →
  • Bank details, ID numbers, insurance and emergency-contact data: existing records are now encrypted too

    Details newly entered in the personnel file under Personnel → Employees - bank details (IBAN, BIC, account holder), ID and passport numbers, health, pension, unemployment and care insurance, plus the name, phone and email of the emergency contact - have been stored encrypted for some time. Records created before that change, however, were still held unencrypted in the database. A conversion run is now available which your operator triggers per tenant; it converts the existing records and removes the unencrypted copy. Nothing changes for you in day-to-day use: every field is displayed and edited exactly as before, both before and after the run. The payroll export to tax advisors and payroll offices also still contains the health insurer in full - it previously read only the unencrypted copy and would have left the field empty after the run. Employees,

    Open the Knowledge Base →
  • Document templates: the email placeholder shows the address again

    When a template under Personnel → Document templates contained the {{employee.email}} placeholder, the generated document did not show the email address but an unreadable string such as "enc:v1:…". The reason: the work email address is stored encrypted in the employee record, and document generation copied the stored value into the placeholder without decrypting it first - unlike the date of birth, which was already handled correctly. Newly generated documents now carry the address in plain text. Documents generated earlier are not changed retroactively; regenerate them if needed. No other placeholder was affected - street, city and postal code are stored as plain text, and the date of birth was already decrypted correctly.

    Open the Knowledge Base →
  • Employee lifecycle: creating events, terminations, and probation periods works again

    Creating a lifecycle event, a termination, or a probation period under Personnel → Lifecycle used to fail with a server error - the page itself loaded, but every write action failed. The cause was an internal programming error: resolving the acting user came up empty, so no record could be created. All write actions work again now and reliably record the acting user. Without a valid session the endpoint now responds cleanly with "not authenticated" instead of a server error. The same defect also affected approving/rejecting procurement requests (the actor column stayed empty), IT asset actions - assign, unassign, retire, maintenance - (actor column stayed empty), and creating shared calendars (creator stayed empty); those are fixed as well. Employee Lifecycle, IT Assets,

    Open the Knowledge Base →
  • Payroll: gross pay is calculated correctly again

    The payroll run under Personnel → Payroll was wrong in three ways. First, paid absence days were paid twice: the run applied the full monthly salary and then added the absence days on top - on a 60,000 € annual salary with five paid absence days that produced 6,153.85 € instead of 5,000 €. Paid absence is already covered by the monthly salary; it is now only shown as a separate "Absence Pay" line and deducted from base pay by the same amount - the two lines add up to the monthly salary again. Second, time entries still in "Draft" fed into the run even though they had never been submitted or approved; only approved time entries are counted now. Third, an approved supplement never appeared on any payslip - amounts approved under Compensation → Supplements were never read by the payroll run. Approved supplements now increase gross pay, appear as their own column in the payslip list, as their own line on the PDF payslip, and as their own wage type in the DATEV/CSV export; after the run they are set to "Processed" and are not paid out again the following month. Important for runs already completed: their amounts were produced by the old calculation and do not change retroactively - a recalculation of existing runs will be provided separately. Payroll,

    Open the Knowledge Base →
  • Team calendar and absence planning: weekends and holidays are no longer colored as a vacation day anywhere

    An approved or requested vacation spanning a weekend used to show every day of the range as filled/red in the team calendar (Personnel → Calendar & Holidays, "Team" tab) and in Absence planning - including Saturday, Sunday, and holidays that never cost a vacation day. Both views now show only actual working days as an absence; a holiday inside the period stays recognizable as such (green) instead of appearing as the person's vacation day, and absence planning now marks holidays even on days without an absence entry. The team calendar resolves each person's own holiday calendar individually - two employees with different countries now see their own holidays in the same period instead of German holidays applied to everyone. The underlying vacation calculation itself is unchanged - it was already correct; only the display was brought in line with it. Calendar & Holidays,

    Open the Knowledge Base →
  • Employee portal: the worst mobile layout breaks are fixed

    The shift plan showed its week view in seven side-by-side columns even on a phone, each column about 38 pixels wide and therefore unreadable; the days now stack and only move back alongside each other on wider screens. The three tiles of the overview bar on the home page stack as well, instead of sharing a narrow screen between them. The menu can be hit reliably with a finger and scrolls on its own on short screens instead of being cut off at the bottom. Long e-mail addresses, personnel numbers, shift names and goal descriptions now wrap instead of running past the edge. The wide tables (payslips, time tracking, absences, documents) still scroll sideways - but only the table itself, no longer the whole page.

    Open the Knowledge Base →
  • Downloaded files now carry the display name

    Report exports are named after the report itself instead of “hr-report-…” with a timestamp. Documents from the personnel file and the employee portal are named after their document title, and CV downloads after the candidate (“Lebenslauf-<name>”). Umlauts and spaces are preserved.

  • Backdated absences no longer sit around as "Pending"

    When you recorded an absence after the fact whose period was long over - say a vacation day of 15 April entered in August - you got an ordinary request in status "Pending". It then sat under "Past absences" waiting for an approval on a period that was no longer up for decision, and the entitlement stayed untouched in the meantime. Now, when the entry is made by someone who may approve absences (permission "Manage HR" or "Approve absences"; owners and super administrators anyway), it is created as "Approved" straight away and the entitlement is booked in the same step. The entry permanently carries the marker "Backdated", and the event is logged separately - so a backdated entry stays distinguishable from a regular approval. Without the approval permission nothing changes: the request goes to review as "Pending" - there is deliberately no self-approval loophole. The reviewer now sees it clearly marked, though: next to the status it reads "Backdated entry - lies in the past", both in the request list and in the detail panel. Requests for the future do not change - they go through approval unchanged, even when the requester would be allowed to approve. If an absence type explicitly requires the four-eyes principle, a backdated entry for your own period still needs an approval. Requests for past periods that are already pending stay untouched and can be approved as usual; the day count is unaffected (weekends and public holidays are deducted as always). Manual,

    Open the Knowledge Base →
  • Changing compensation: with a reason, an effective date - and a full history

    In the employee record under HR → Employees, tab "Compensation", the amount could previously only be overwritten. Why it had changed, from when the new amount applied and what applied before was afterwards nowhere to be seen - unless you created a whole new contract for it. When you now change the compensation, the commission amount or the commission type, the form asks for two additional entries: a reason for the change (mandatory, e.g. "Pay rise from target agreement") and an effective from date, pre-filled with today and selectable in the future as well. Below the fields you now find the compensation history: a list of all compensations with period, amount, commission and reason, newest first; the currently valid entry runs open as "until today". On saving, the previous entry ends on the day before the effective date and the new one starts on that date - with no gap. Each employee's most recently maintained compensation was carried over automatically as the first entry when this shipped, with the contract start as its start date and without a reason ("Not stated"), because none was recorded for the past. If a change does not touch the compensation at all - a mere title correction, say - no reason is required and no entry is created. Changing it still requires the "manage HR" permission; amounts are stored encrypted in the history just as on the contract, and every change is written to the audit log.

    Open the Knowledge Base →
  • Consistent wording for compensation, employees and tasks

    The same thing used to go by different names depending on the page - "Gehalt", "Lohn" or "Vergütung" in German; "Employee", "Staff" or "Team member" in English; and the German interface said "Tasks" in some places and "Aufgaben" in others. This is now unified, with no change in behaviour whatsoever. In the HR area the umbrella term is "Vergütung" everywhere in German (e.g. the contract field, the "Vergütungsänderung" event, the sidebar group); "Gehaltsabrechnung" still means the payroll run and the payslip document, the individual runs are now called "Abrechnungsläufe", and the export for tax advisors and payroll offices is the "Abrechnungsexport". Payslips now simply say "Brutto" instead of "Bruttolohn", in the employee portal as well. Established external terms such as "Lohnbüro", "Lohnbuchhaltung" or the DATEV payroll remain deliberately unchanged. The English interface consistently says "Employee" instead of "Staff" or "Team member" - including appointment scheduling and telephony, where the very same people are meant. And the German interface consistently says "Aufgaben"; English keeps "Task". All of this is backed by a new, binding terminology glossary that automatically prevents future drift. Employees,

    Open the Knowledge Base →
  • Employee record: clearer label for the work email

    In the German interface the field for the work email address in the employee master data is now labelled Geschäftliche E-Mail. The English label ("Work Email") is unchanged; only the German wording changes.

  • Rejected and cancelled requests no longer disappear without a trace

    Under My area → My absences, the year overview only ever showed approved and pending requests - a rejected or cancelled request was then nowhere to be found, with no indication of why. A new "All requests" tab now shows every request without exception, filterable by status, with a text-labelled status badge. Clicking a request opens a detail panel with the date range, days, reason, and - for rejections - the stored rejection reason and who decided; for cancellations, whether you cancelled it yourself or HR did. The year overview itself stays unchanged, focused on approved/pending days - that remains intentional. In the employee portal (My absences), the rejection reason is now also shown directly in the request list.

    Open the Knowledge Base →
  • A failing document download now tells you why

    Under My area → My documents, clicking "Download" could fail with a generic server error. All you saw was "Download failed" - indistinguishable from a mistake on your side, and with no hint whether trying again would help. You now read what actually happened: if the file is no longer present in the document storage, the message reads "The stored file is no longer present in the document storage. Please contact HR." - trying again does not help in that case. If the storage is only temporarily unreachable, you are asked to try again in a few minutes. Both cases are additionally recorded for operations so the cause stays traceable. Nothing changes about the document entry itself or about your access rights.

    Open the Knowledge Base →
  • Adjust leave entitlement manually - traceable and immutable

    In the employee file under People → Employees, "Vacation" tab, you can now manually adjust an employee's leave entitlement up or down - in whole or half days, with a mandatory reason and for a specific year. Typical case: someone works on a public holiday and is credited a day for it. Every adjustment is its own immutable position (who, when, how much, why); a correction of a correction is a new position, nothing is overwritten. The allowance tile now shows the base entitlement and, beneath it, each adjustment individually - in the employee file as well as in the employee portal. The remaining entitlement and the vacation calculation take the adjustments into account automatically. Only people with the "Manage HR" permission may create an adjustment; every change is recorded in a tamper-evident audit log. Adjust leave entitlement manually,

    Open the Knowledge Base →
  • Create, edit and suspend holidays manually - and mark them as half days

    In holiday management (HR → Calendar & Holidays, "Holidays" tab) you can now fully maintain your own holidays: create, edit and suspend or reactivate them per row. Two new markers are added. Half day off deducts only half a working day in the leave calculation (0.5 instead of 1.0). Suspended keeps a holiday visible and labelled but does not count it as a day off - meant for holidays suspended due to war or by the authorities (e.g. "(призупинено)" in Ukraine). Manually maintained holidays flow into the holiday list, team calendar and leave calculation through the same path as the automatically imported ones: if you add a missing Ukrainian substitute holiday, for example, a leave request spanning that day then consumes no vacation day. The automatic reconciliation with the official source never overwrites your manual entries. All of this only with the "Manage HR" permission and fully audit-logged.

    Open the Knowledge Base →
  • HR documents download under their display name

    An HR document is given a display name in the employee file (HR → Employees, "Documents" tab) - for example "Arbeitsvertrag.pdf". On download, however, the file landed on disk under its internal storage name - such as "document.pdf" - so the name you had assigned was lost. This affected both the employee file and the employee portal under My area → My documents. The file now carries the display name in both places; umlauts and special characters (for example "Gehaltserhöhung Müller.pdf") are preserved correctly. If no display name is set, the original file name is used as before. Manual,

    Open the Knowledge Base →
  • Ukrainian substitute holidays now appear automatically, and the calendar dropdown matches the country

    For employees with country Ukraine, the substitute Mondays were missing from the holiday list in the employee file ("Vacation" tab): when a holiday falls on a weekend, the day off is moved to the next working day under Art. 73 of the Labour Code (e.g. Women's Day Sun 08.03.2026 → Mon 09.03.2026, Constitution Day Sun 28.06 → Mon 29.06). This transfer now works the same everywhere - in the holiday list, the team calendar and the leave calculation: a leave request spanning such a substitute Monday no longer consumes a vacation day. The church holidays suspended due to the war ("(призупинено)", e.g. Orthodox Easter Monday and Whit Monday 2026) are still shown, visible and labelled "Suspended", but do not count as days off. Secondly, the calendar assignment dropdown previously offered a Ukrainian employee only the 16 German federal-state calendars; it now shows only calendars of the employee's country. A manually maintained holiday still always wins over the automatic derivation.

    Open the Knowledge Base →
  • Compensation shows up in the employee portal again - and is called the same everywhere

    Under My area → My profile the "Salary" field stayed empty even though the employee file showed an amount on the "Compensation" tab. The cause was the wrong data source: the page read an old employee column, while the amount is maintained on the active contract. The portal now reads the same source as the employee file - a change there is visible immediately, with no extra step - and shows the amount as a formatted currency value. At the same time the entry is called "Compensation (monthly)" in both surfaces instead of "Salary" in one place and "Base salary" in the other. Access is unchanged: you only ever see your own compensation, and you still cannot edit it there. Manual,

    Open the Knowledge Base →
  • New: absence planning - agree before you request

    Under My area → Absence planning there is a new, company-wide board: one row per person, one column per day. You see who is away when and in which state - solid = approved, outlined = requested, hatched = planned. The state planned itself is new too: you add your time off via "Add planning entry" without any commitment - no approval run, no deduction from your allowance, changeable and deletable at any time - agree it with your colleagues, and then turn the entry into an ordinary request via "Submit as request now". From there everything works as before. The board is deliberately company-wide and reachable by every employee; team and department filters are convenience only. You can see other people's entries, but you can only change and delete your own. On data protection: for colleagues you only ever see the period and the state, never the absence type; and only types released for planning appear at all - as delivered, holiday only. A sick note therefore does not show up for others in the first place. Your own entries, by contrast, always stay fully visible to you. Which types take part is configured by HR per type (Absences → Types, "Take part in absence planning").

    Open the Knowledge Base →
  • Public holidays in the team calendar: once, and in your language

    In the team calendar (HR → Calendar & holidays) regional public holidays appeared twice and always in English - Assumption Day on 15.08.2026 was listed twice below each other, in the detail panel as well. The cause was not a duplicate entry in your data: holidays that apply only in certain federal states are stored per state, and the calendar showed each of those rows separately. Assumption Day applies in Bavaria and Saarland, hence two rows. Both are correct and are kept. The calendar now collapses them into one entry and shows the name in the language of your interface ("Mariä Himmelfahrt" in German, "Assumption Day" in English). The detail panel now has an Applies in line telling you which regions the holiday counts for. The holidays themselves and the vacation calculation are unchanged.

    Open the Knowledge Base →
  • Requested vacation shows up in the year calendar right away, and weekend holidays stay visible

    The absence year view (employee portal under "My absences" and the employee file, "Vacation" tab) had two annoyances. First, a request you had just submitted did not appear in the twelve-month calendar. The allowance cards and the request list updated, but the calendar kept showing the state from before the request - only reloading the page brought it up. The request was never lost; the view simply was not refreshed after submitting. It now updates immediately, showing the requested period as outlined days. Second, public holidays that fall on a non-working day - 3 October or 26 December on a Saturday, for instance - disappeared behind the non-working-day colour and were no longer recognisable as holidays. They now stay red, additionally get a border in the non-working-day colour and are called "Holiday on a non-working day" in the legend; the tooltip names the holiday plus the qualifier "Non-working day". Neither change affects the vacation calculation: requested days are still not deducted, and a holiday on a day that is free anyway still costs no vacation day. Manual,

    Open the Knowledge Base →
  • Requests in the year view are now clickable

    In the absence year view (employee portal under "My absences" and the employee file, "Vacation" tab) the entries in the lists "Current & upcoming absences" and "Past absences" used to be display only - matching a calendar entry to a request meant comparing dates by hand. Clicking a list entry now highlights the request: its days and the affected months get an outline in the year calendar, the first affected month scrolls into view, and if the request lies in a different year the view switches there automatically. Clicking the same entry again removes the highlight. The selection is part of the address bar - the link can be shared and the highlight is preserved. Manual,

    Open the Knowledge Base →
  • The two absence lists now sit side by side on wide screens

    In the absence year view (employee portal under "My absences" and the employee file, "Vacation" tab) "Current & upcoming absences" and "Past absences" were stacked on top of each other precisely on large monitors, even though there was free space next to them. Both lists now sit side by side as soon as the area is wide enough - this no longer depends on the window size alone, but on how much space is actually available (pinned sidebar, employee file). If it is too narrow they still stack, so that date, number of days and status badge stay readable on one line and no sideways scrolling appears. Manual,

    Open the Knowledge Base →
  • Absence lists now sit at the top next to the allowances

    In the absence year view (employee portal under "My absences" and the employee file, "Vacation" tab) the lists "Current & upcoming absences" and "Past absences" were at the very bottom - you had to scroll past the whole twelve-month calendar to see what was coming up next, while the space to the right of the allowance tiles stayed empty. On wide screens both lists now sit directly to the right of the allowances and the calendar moves below them. In narrow windows the blocks still stack underneath each other, and no sideways scrolling appears. Numbers and behaviour are unchanged. Manual,

    Open the Knowledge Base →
  • Bulk actions in project time tracking work again

    Under People → Project time tracking, "Submit", "Approve" and "Reject" failed with a server error whenever they were applied to several selected time records - in the admin area as well as in the employee portal. Individual records could still be edited; only the bulk action always came up empty. The cause was a faulty hand-over of the selection to the database, so the action never ran at all. All three bulk actions now go through again. This also restores the employee-portal rule that you can only submit your own drafts there.

    Open the Knowledge Base →
  • HR area without initials circles

    The colored initials circle shown before names has been removed throughout the HR area: from the employee list and table, the employee detail view, the offboarding list, teams, time tracking (team weeks and live presence), the org chart, the team calendar (filter list, list view, event detail) and the social feed. Rows take up less horizontal space and the names are shown directly; a stored profile picture is still displayed. In live presence a green dot now marks who is currently clocked in.

    Open the Knowledge Base →
  • Reviewers are notified about change requests again

    When an employee submitted a change request for their own master data or their residence permit in the portal, sending the notification to the responsible reviewers failed with a server error. The request itself was stored and visible in HR administration, but nobody was actively told about it - so requests often sat untouched for days. The cause was a faulty hand-over of the recipient list to the database. Managers, deputies and holders of the "Manage HR" permission are now notified reliably again. Manual,

    Open the Knowledge Base →

July 2026

  • Requested vacation is finally visible

    Anyone who submitted a request under Employee portal → My absences could not see it anywhere afterwards - neither in the year calendar nor in either list. It only appeared once it had been approved; until then there was no confirmation that the request even existed. Pending requests now show up immediately: in the year calendar as outlined days in the colour of the absence type (approved days stay filled in solid), and in the list with the Pending marker. The legend calls them "Requested". A public holiday stays red even when a request runs across it. Approvers see their employees' open requests in the vacation tab of the employee file in exactly the same way. This does not change your balance: "Available" and "Planned" still count approved days only - a request books nothing. The number of requested days is shown in the info panel of the balance card as of which requested.

    Open the Knowledge Base →
  • The "Urlaub" tab is now called "Absence"

    In the employee file, the tab holding entitlements, the year calendar and the requests was labelled "Urlaub" (leave), even though it always showed every absence type - including sick leave and parental leave. It is now called "Absence" ("Abwesenheit" in German). Saved or shared addresses remain valid; only the label changes.

    Open the Knowledge Base →
  • Year calendar: absences are now visible on non-working days as well

    On weekends and other non-working days, grey used to win - a holiday spanning a weekend visually broke apart in the calendar. A clear order now applies: public holidays are always red and beat everything, including vacation or sick leave falling on the same day. Vacation (green) and sick leave (yellow) are now visible on non-working days too, shown there in a lighter shade of the same colour so it stays recognisable that this is not a working day. Non-working days without an absence stay grey. This works for every absence type in its own colour. Nothing changes in the calculation: weekends and public holidays are still not deducted from the entitlement - the lighter shade is exactly the cue for that. This display supersedes the rule of 2026-07-29, under which weekends inside a vacation stayed grey.

    Open the Knowledge Base →
  • "Manager" is now called "Approver"

    In the employee record under "Position" the field was labelled misleadingly. It determines who decides this employee's requests - the same person also forms the reporting line in the org chart. Nothing changes in behaviour, only the label.

  • "Manager" is now called "Approver" everywhere

    The field was labelled differently depending on the view - already "Approver" in the employee record under Position, but still "Manager" in the organisation tab, the employee list, the create form and the employee portal. All views now use the same name. It determines who decides this person's requests; the same person also forms the reporting line in the org chart. Nothing changes in behaviour.

  • "My profile" now shows every stored detail

    Fields stayed empty in the employee portal even though the employee record had values. Affected were position, approver, emergency contact, bank details including IBAN, nationality, pronouns, and start/end date. The cause was an outdated field list in the portal query; it is now tied to the employee record so new fields carry over automatically.

  • Absence calendar shows type, colour and half days

    In the monthly calendar under People → Absences, every entry carried the same colour, the tooltip ended after the dash without the absence type, and whether someone took a half or a full day was not visible at all. Each absence type now has its own colour again, the tooltip names the type, and every bar carries on its right whether it is a full day (1) or a half day (½) - visible without hovering. In the request list, "Yes" and "-" have been replaced by "full day" and "half day".

  • Absence calendar: the month in the address bar now counts 1 to 12

    The page address used to carry the month the way programs count - ?month=0 was January, and there was no month 12. It now shows the month the calendar shows: 1 for January through 12 for December. Saved or shared addresses from before will land one month early for February through December; just set them again.

  • Absence calendar: weekends are no longer coloured as vacation days

    When a weekend fell inside an approved absence, the year calendar coloured Saturday and Sunday green like a vacation day. They were never deducted, so the display contradicted the number beside it. They now appear grey as non-working days. The same applies to public holidays inside an absence: they keep their own colour. Which weekdays are non-working follows the contract; someone who works Saturdays per contract still sees Saturday as a vacation day.

    Open the Knowledge Base →
  • Absence types in your interface language

    The standard types "Urlaub" and "Krankheit" now appear in the language of the interface - in the English view "Vacation" and "Sick leave" instead of the previously fixed German name. Types you created yourself keep the name you gave them. This applies to the vacation tab of the employee file, the employee portal and the absence list.

    Open the Knowledge Base →
  • Approve, reject and cancel take effect immediately

    In the request list, the row kept showing its old state after clicking Approve/Reject/Cancel - the action had run, the view just did not show it. The cause was a wrong key when refreshing the data. The request list, calendar, key figures and remaining entitlements now update right away. In addition, a short message confirms every action, and if the server refuses it (e.g. no remaining entitlement, a blocked period or the four-eyes principle), the reason is shown - until now a refused click stayed completely silent.

    Open the Knowledge Base →
  • Clear colour code in the vacation calendar

    Public holidays are now marked red (previously orange), vacation stays green, and the standard type "Krankheit"/sick leave changes from red to yellow - so holidays and sick days can be told apart at a glance. If you changed the colour of an absence type yourself, your choice is kept.

    Open the Knowledge Base →
  • Contract row: edit and delete as icons

    In the "Contract data" tab, the words "Edit" and "Delete" sat next to every contract. They were the loudest element in the row and drew attention away from contract type, period and status. There is now a pencil and a bin icon; the wording appears as a tooltip on hover and stays fully readable for screen readers.

    Open the Knowledge Base →
  • Employee record: error page on opening fixed

    Opening an employee record occasionally showed "Error loading" instead of the record, and only a retry helped. The cause was a loading-order fault that struck exactly when the employee's data arrived slightly later than the view itself. The record now opens reliably.

    Open the Knowledge Base →
  • ID documents: up to 5 files instead of one

    The employee profile allowed exactly one scan on the ID document - not enough for front and back, a passport in addition to the ID card, or expired predecessors. Up to 5 files can now be uploaded (multi-select in the file dialog) and are listed one below the other with name, download and delete. The first file is marked as the primary document - the one the payroll export reads; if it is deleted, the next one takes over. Previously "Remove link" only detached the reference and left the file behind invisibly; "Delete" now really removes it.

    Open the Knowledge Base →
  • New: manage departments and positions yourself

    Under HR > Departments & positions there is now a dedicated page for creating and editing both master records. Until now there was no interface at all - departments and positions appeared everywhere as pick lists but could not be filled anywhere; without entries you saw empty dropdowns throughout. The page has two tabs (Departments, Positions) with search, an employee count per entry, and the head or owning department. Positions may deliberately exist without a department (e.g. managing director). The tab and search term live in the address bar, so a shared link reopens the same view.

    Open the Knowledge Base →
  • No more sick note for vacation

    Vacation requests of three calendar days or more arrived in the request list flagged red with "Sick note missing". The cause was the per-employee setting "Sick note from day": it is meant as a sickness rule but was applied to every absence type. The sick-note requirement now applies only to absence types recognised as sickness. For vacation, parental leave and all other types it is triggered only if you set the threshold explicitly on the type itself (e.g. for a rehab stay). Requests already flagged incorrectly are cleaned up automatically with this update - requests with an uploaded sick note are left untouched.

    Open the Knowledge Base →
  • Non-working days are color-coded in the year view

    The 12-month calendar on the "Leave" tab (and in self-service) now highlights non-working days in neutral gray, clearly distinguishable from public holidays (amber) and absences. The legend calls them "Non-working day".

  • Preferred name is finally saved

    The "preferred name" field could be filled in, but the value vanished on save because the database had no field for it. It has been added. You can now change your preferred name yourself and it shows up in your profile afterwards.

  • Preferred name is now in the employee record too

    The "preferred name" field existed only in the employee portal, and the value vanished on save there. In the employee record under Personal details you can now enter, see and change it. It does not replace the first name; it records how the person prefers to be addressed day to day.

  • Public holidays now apply even without an assigned holiday calendar

    On the employee profile under "Leave", the page showed "No calendar" and an empty holiday list whenever no holiday calendar was assigned - even though a country was stored on the profile (e.g. UA) and the leave calculation had been deducting its holidays all along. Without a calendar, the employee's country (and state) now applies automatically, and a note above the list names the source. An assigned calendar still takes precedence. Only when neither a calendar nor a country is stored does the list stay empty, with a matching note.

    Open the Knowledge Base →
  • Requests show who decided

    The detail panel of an absence request has a new Decision section with the name and timestamp for approval, rejection and cancellation - plus the stored comment on a rejection. If an already approved request was cancelled later, both events are listed. Background: approvals and rejections were stored but shown nowhere, and cancellations were not recorded at all - the only status change without an actor, even though it credits entitlement days back. If the employee cancels in the employee portal, that is marked separately. Older cancellations show "not recorded"; the actor cannot be reconstructed retroactively.

    Open the Knowledge Base →
  • The request list now shows who decided

    Under Absences → Requests the list has a new Decision column with name and timestamp. This was previously only in the detail panel, so every request had to be opened individually. For a request that was approved and later cancelled, the column shows the cancellation; both events side by side remain in the detail panel.

  • Vacation days follow the contractual working days

    Which weekdays are days off now comes from the working days on the active contract (employee profile, "Time" tab) instead of a fixed "Monday to Friday". Someone who works Saturdays now correctly spends a vacation day on a Saturday off; a part-timer with Wednesdays off spends none on a Wednesday. This applies to newly submitted requests as well as to the color coding in the year calendar. Without maintained working days, Monday to Friday still applies - so nothing changes for most employees.

    Open the Knowledge Base →
  • Contracts can be deleted

    A contract in the "Contract data" tab can now be removed again - until now it could only be created and edited. A confirmation prompt comes first. An uploaded contract file stays in the employee's document list.

    Open the Knowledge Base →
  • Position and manager are shown again

    In the employee profile and under "My profile", the Position and Manager fields stayed empty even though the data was on file. Both are displayed correctly again.

    Open the Knowledge Base →
  • The ID number now stays

    An ID document number appeared empty again after saving. The number was in fact stored but no longer displayed - both are fixed.

    Open the Knowledge Base →
  • Contracts: all contracts visible + contract document on the contract

    The "Contract" tab previously hid every contract except the most recent one - adding a new contract therefore looked as if it had overwritten the previous one (older contracts were stored, just invisible). All contracts are now listed one below the other, most recent first and marked "Current"; each contract can be edited individually. In addition, a contract file uploaded when creating the contract was not visible at all in the Contract tab (it only appeared under "Documents"). The file is now shown on its contract and can be downloaded there.

    Open the Knowledge Base →
  • Employee overview: new list view with a List/Cards toggle

    The employee overview can now be shown either as a compact list (table) or as the card overview. Switch between them with the new "List / Cards" toggle to the right of the filters; the list view is the new default. The list shows, per employee, the name and employee number, position, department, hire date, access (IAM or "Invite"), and status plus employment type. Clicking a row opens the detail view - just like clicking a card; the status tabs, search and filters behave the same in both views. The selected view is stored in the page address (URL), so a shared or bookmarked link reopens the same view.

    Open the Knowledge Base →
  • Employees can edit their own absence requests

    As long as a request has not been decided, it can be adjusted directly in the list in the employee portal (change the date range) or withdrawn. Approved requests stay unchanged and can still only be cancelled.

  • ID documents can be uploaded again

    Uploading an ID document in the employee profile failed with an error. The cause was a setting in the document store that rejected this one document type - all other types (employment contract, payslip, onboarding document, certificate, other) were unaffected. ID documents are now stored normally.

  • Multiple requests in parallel

    An open request no longer blocks further requests for other date ranges. A message appears only for a genuine overlap - and it now names the conflicting request with its date range and status instead of rejecting without detail.

  • New: "Offboarding" tab on the employee

    The employee detail view now has an Offboarding tab where you plan a departure: termination dates (notice given on / effective), the end of SELLERLOGIC SCS access, the planned handling of the personnel data (retain, anonymize, delete or export & delete) including an action date, plus succession for six responsibility areas (direct reports, absence approvals, department lead, open tasks, tickets, document ownership). This step only stores the plan - access is not disabled, responsibilities are not reassigned and data is not anonymized or deleted; the actual execution follows in a later, separate step (a note in the tab points this out). For any data handling other than "Retain data" an action date is required; the departing employee cannot be chosen as their own successor.

    Open the Knowledge Base →
  • Notification for new absence requests

    When an employee files a leave or absence request, everyone with the personnel-management permission now receives a notification in the bell menu - including name, period, and a direct link to the request. Previously a new request went unnoticed until someone opened the request list on their own.

  • Offboarding: automatic access deactivation + due list for data actions

    Offboarding now executes the plan. When the "access ends" date is reached, the system deactivates the employee's access automatically (staff and admin account locked, status "Terminated", recorded in the audit trail). The GDPR data actions, by contrast, never run automatically: once a plan's action date is reached, the case appears in the new "Offboarding due" view of the employee overview. There you confirm each action individually - with a preview (which data is affected, including blocking references for deletions) and a clear finality warning. Anonymize irreversibly overwrites all personal fields and deletes bank, tax and family data (the employment history is retained in anonymized form); Delete removes the employee including linked personnel data entirely; Export & delete downloads a data export as a file before deletion. Every execution requires the "Manage HR" permission and is recorded in the audit log.

    Open the Knowledge Base →
  • Offboarding: transfer succession with a click

    The succession chosen in offboarding can now actually be carried out via Transfer responsibilities. A click first shows a preview (how many entries would be re-pointed per area), then you confirm in a dialog - with a clear notice that live data is changed and this cannot be undone with a click. What gets transferred: direct reports (new manager), absence approvals (new approver), department lead, open tasks, open/unresolved tickets and document ownership. Nothing is deleted - only the responsibility changes hands; a re-run finds 0 entries (idempotent). For tasks, tickets and documents the successor needs a matching system account - if it is missing, that area is skipped with a note while the others are still transferred. The action requires the "Manage HR" permission and is recorded in the audit log.

    Open the Knowledge Base →
  • Paging in the request list fixed

    With more than one page, the list in the portal could not be paged.

  • Termination dialog now shows the offboarding fields directly

    When terminating an employee you now enter the offboarding details right in the confirmation dialog - no longer only in the separate "Offboarding" tab. The dialog contains (top to bottom): Notice date, End access on (required - drives the automatic access deactivation), Termination effective date, Reason for termination (required), Specify the reasons, and Reassign reports and responsibilities to. As soon as you pick a successor, the further reassignments appear below (absence approvals, department lead, open tasks, tickets, document ownership), each pre-filled and individually adjustable. A note explains that the employee notices no change until the termination date and loses access to SELLERLOGIC afterwards. All entries are saved into the same offboarding plan as the "Offboarding" tab - no second record is created, and access deactivation, data actions and successor reassignment work unchanged.

    Open the Knowledge Base →
  • The absence deputy field is now labelled correctly

    On an employee's "Position" tab, the absence deputy field was mistakenly labelled "Approver". It is now called "Absence deputy" and carries an explanatory hint. Stored data is unchanged. For clarity: the manager approves absence requests, the absence deputy covers while the employee is away.

  • Bank details: IBAN is shown (masked) and validated

    The employee overview now reliably shows the IBAN and bank name (a saved IBAN previously stayed empty as "–"). For privacy the IBAN is displayed masked - only the first and last four characters are visible, the rest is covered with \\\\ - and formatted in groups of four. On input, SCS now validates the IBAN (format and checksum) and only saves valid values. IBAN, BIC and account holder remain stored encrypted.

    Open the Knowledge Base →
  • Created contracts are now displayed

    After creating a contract the "Contract data" tab stayed empty ("No contracts") even though the contract was saved - the view evaluated the internal "active contract" flag incorrectly. Contracts now appear reliably; the same fix also applies to Position, Compensation, Time, Leave and Organisation.

    Open the Knowledge Base →
  • Creating a contract works again

    Saving a new employee contract aborted with a server error because an internal mandatory field (notice period) was not correctly filled with its default when creating. New contracts can be saved again; if left unspecified the notice period is automatically set to the default (30 days), and any value you enter is kept.

    Open the Knowledge Base →
  • Editing "Personal data" now shows the saved values

    When opening an employee for the first time, "Edit" in the personal data could show empty fields (e.g. bank details, ID document or insurance data) even though the values were correct in the read view - the edit fields were populated before the data had finished loading. The edit form now reliably picks up the loaded values, so nothing appears wrongly empty when editing.

    Open the Knowledge Base →
  • Empty date fields in the personnel area no longer cause an error

    In several places in the employee area, leaving a date field empty could cause a server error on save, because the empty field was not correctly treated as "not set". Affected were, among others, the contract end date / end of probation (e.g. permanent contracts) and the expiry date in the ID documents. Empty date fields are now reliably stored as empty everywhere - contracts and ID document data can again be saved without these entries.

    Open the Knowledge Base →
  • Nationality: searchable country picker instead of free text

    The "Nationality" field in an employee's personal data is now - like "Country of birth" - a searchable country list based on the international standard (ISO 3166), instead of a free-text field. Just type the country name or code and pick it; this avoids inconsistent spellings. The picker is used consistently across employee management, the create wizard and the self-service change request. Existing inconsistent entries are preserved and normalised to the country code on the next save.

    Open the Knowledge Base →
  • Contract creation: larger documents and clear feedback

    When creating an employee contract you can now upload contract documents up to 25 MB (previously 10 MB), which covers scanned contracts. If a file is too large, a clear message appears immediately and the contract is not created, so no incomplete duplicate contracts are left behind. If the upload fails for another reason, you now see an error message instead of a form that silently stays open.

    Open the Knowledge Base →
  • Permanent contracts without an end date

    For an open-ended (permanent) contract type, the "Contract end" field is hidden - permanent contracts have no end, and the contract can now be saved without an end date.

    Open the Knowledge Base →
  • Absence types now follow the interface language

    Absence type names (e.g. "Urlaub"/"Vacation") are now displayed in the selected interface language across tables and pickers in the Absences area; the type editor still shows the other-language name as a hint in parentheses, since both name fields are maintained there.

    Open the Knowledge Base →
  • Carry-over expiry: default for all absence types + safe cut-off dates + expiry date in the year view

    The carry-over expiry (Holidays → "Carry-Over" tab) has been improved in three places. (1) Default for all types: In the new section at the top you define an expiry rule that applies to every absence type without its own configuration - cut-off date (month/day), maximum carry-over days, and auto-expire. Type-specific configurations still take precedence over this default. (2) Protection against invalid cut-off dates: The expiry day now automatically adjusts to the selected month - an April 31 or February 30 is no longer possible. February 29 remains allowed; in non-leap years, February 28 applies automatically (a note in the form reminds you of this). (3) Expiry date visible: In each employee's year view, the allowance card's info tooltip now shows when the prior-year carry-over expires ("Expires on …") - or the note "Does not expire" if no expiry rule applies.

    Open the Knowledge Base →
  • Employee detail: "Notes" tab works again

    The tab showed an empty area. Notes about an employee can now be entered and saved there as intended.

  • eNPS score explained

    The surveys help page now shows the exact calculation of the eNPS score and response rate, plus ways to improve eNPS.

  • Entitlements: find employees via a search picker instead of free text

    In the "Entitlements" tab, the employee filter is now a searchable picker with live search by first name, last name, or position - instead of typing a name into a text field. The same search picker is also available when creating or editing an entitlement.

    Open the Knowledge Base →
  • Holidays: daily comparison against an official source

    A new verification job compares the stored holidays every night against government-fed holiday data and reports differences for review - nothing is overwritten silently. The check can also be triggered manually per country and year ("Verify against official source").

    Open the Knowledge Base →
  • Municipal holidays with manual assignment

    Holidays that only apply in certain municipalities (e.g. Corpus Christi in parts of Saxony and Thuringia) can now be created as a "municipal holiday" and manually assigned to individual employees in the "Vacation" tab - they never count automatically for the whole region. Manually created holidays and manual assignments are never overwritten by automatic updates.

    Open the Knowledge Base →
  • Nationality change requests now work reliably

    Requests with free-typed values such as "Spanish" could not be approved ("Internal Server Error"). Such values are now validated on submission and automatically translated to the correct country code (e.g. "Spanien", "Spain" or "Spanish" → ES); existing free-text requests are translated automatically on approval. Unrecognizable values get a clear error message instead of a server error.

  • Regional holidays: region as a dropdown + reliable matching

    State or region is now picked everywhere - on the employee, in the holiday calendar and for the approved residence - from a dropdown containing the official regions of all countries (e.g. Thuringia, Catalonia) instead of free text. Existing free-text values were converted automatically. Regional holidays such as World Children's Day (Sep 20, Thuringia), Reformation Day (Oct 31) or the Catalan holidays now reliably count for the right employees.

    Open the Knowledge Base →
  • Security: access to salary data is now logged

    Every read and export access to compensation and payroll data (including salary overviews, salary history, payroll runs, payslips, and DATEV/CSV and email exports) is now recorded in the tamper-evident audit log - with timestamp, accessing person and affected employee. Salary amounts themselves are never written to the log. Nothing changes for you in day-to-day use.

  • State/region and currency as searchable dropdowns

    The state/region and currency fields across the HR area are now searchable dropdowns instead of free-text input - this affects locations, the self-service residence page, the profile, personal details on the employee form, as well as legal entities, cost centers and salary bands. For the region field, just type e.g. "Bavaria" and pick it from the list; for countries without a stored region list, the previous free-text input remains available. For currency, you pick from the international currency codes (e.g. "EUR").

    Open the Knowledge Base →
  • Vacation days can now be edited directly on the contract

    In the employee profile, the "Leave" tab now lets you edit the annual vacation entitlement directly - it is no longer just a read-only display of the contract value. The entry is saved on the active contract.

    Open the Knowledge Base →
  • Vacation entitlement is now derived automatically from the contract

    When SCS creates a yearly entitlement for the vacation type automatically (e.g. on the year's first request or during the carry-over calculation), the vacation days from the employee's active contract now count first, then the assigned policy, and finally the absence type's default value. If you change the vacation days on the active contract, SCS automatically updates the current year's entitlement - but only as long as it still matches the previously derived value; manually maintained entitlements as well as carry-over and used days remain untouched.

    Open the Knowledge Base →
  • Approval principle now selectable per absence type

    Previously the four-eyes principle (approver ≠ requester) for absences was governed company-wide by a single switch. From now on you can additionally set it per absence type: "Default (tenant setting)", "Two-eyes (self-approval allowed)", or "Four-eyes (approver ≠ requester)". You make the choice in the Absence area under "Types" in a type's edit dialog (only relevant when the type requires approval). The per-type setting takes precedence over the company-wide switch - a type set to "four-eyes" always blocks self-approval, a type set to "two-eyes" allows it; the normal approval permission is still required in every case. Applies to absences only (expenses and compensation unchanged).

    Open the Knowledge Base →
  • Approving an absence: now works even without a configured allowance

    An absence request could previously only be approved if an allowance row already existed for the employee, absence type and year - otherwise approval failed with an error. The system now provisions a missing allowance automatically on request and approval: either from the assigned absence policy (days per year) or from the absence type's annual cap. Types with no allowance at all (e.g. sick leave) are still approved without deducting days, instead of failing on a missing row. In addition, the public holidays of a holiday calendar assigned to the employee now count reliably when the absence days are calculated.

    Open the Knowledge Base →
  • Clear message for expired invitation links

    Opening an invitation link from an older email and submitting the form previously showed only "Internal Server Error". Now a clear message appears: the link is invalid or expired - please use the link from the latest invitation email.

    Open the Knowledge Base →
  • Country selection as a searchable dropdown

    Everywhere an address is entered, you no longer type the country as a code ("DE") by hand - you pick it from a searchable list instead: type "Germ", for example, and choose "Germany (DE)". Country names appear automatically in your selected language. The internationally standard country code is still what gets stored. This applies, among other places, to legal entities and locations in HR, to employee addresses and country of birth (in the employee form, in the personal data, and in employee self-service), and to the country picker in the holiday calendar (limited to the supported countries). Optional fields may still be left empty.

    Open the Knowledge Base →
  • Display glitch fixed - status switcher

    In the user menu at the top right, the "Away" option no longer fit fully inside the menu and was cut off. The "Available/Away" switcher is now displayed correctly and completely.

  • Employees: contract type now saves reliably

    When editing a contract, the selected contract type (e.g. "Permanent Full-time") was previously rejected by the system and not saved - this is fixed. When creating a new contract, the same complete value list is now available as when editing (incl. "Apprenticeship"). Existing contracts with old contract types were migrated automatically to the new names.

    Open the Knowledge Base →
  • Employees: ID document scan directly on the ID document

    In the personal details, a scan (PDF/JPG/PNG) can now be uploaded, downloaded and removed directly on the ID document. The file also appears in the "Documents" tab under the new type "ID document".

    Open the Knowledge Base →
  • Employees: probation period in months

    The probation period is now entered as "x months"; the system calculates the end date automatically from the start date and shows both (e.g. "6 months (until 01.02.2027)"). Existing probation end dates were converted back into months.

    Open the Knowledge Base →
  • Fixed: self-service homepage shows upcoming absences again

    On the employee self-service homepage, upcoming absences were not loading due to an internal error - they are now displayed reliably.

  • HR area: modernized, unified controls

    The buttons, input, select and text fields across the entire HR area - including employee administration, self-service, recruiting, performance, compensation/payroll, time tracking, shift planning, absences, workflows and compliance - have been switched to the unified system controls. Operation, appearance and functionality remain unchanged; special views such as the org chart, calendars, recruiting board and history timeline keep their familiar layout.

  • Legal entities, locations & cost centers: "Edit" now shows the saved values

    Opening the edit panel previously showed empty fields; saving then unintentionally overwrote the stored data with blanks. This is fixed - the form now always shows the current record. The edit panel also has its own web address now: the link can be shared, and the browser back button closes the panel.

    Open the Knowledge Base →
  • New: differing place of stay - request temporary or permanent whereabouts

    Employees can now request a place of stay that differs from their registered address - either temporary (with a start and end date, e.g. for a workation) or permanent. The whereabouts is deliberately not directly editable: every request includes a mandatory reason and is reviewed by the responsible manager, who approves or rejects it (four-eyes principle - nobody decides their own request). The employee profile shows the currently effective place of stay with a "Differs from registered address" note and its validity period. All address data is stored encrypted.

    Open the Knowledge Base →
  • New: Sickness package - sick-note requirement, quota and unpaid overflow, configurable per employee

    For sick leave you can now control three things - each individually per employee, with defaults. (1) Sick-note requirement: decide from which calendar day a doctor's note is required - as a default on the absence type, overridable per employee (employee profile → Vacation → Sickness). Affected requests show "Sick note required"; until one is attached, "Sick note missing", after upload "Sick note submitted". (2) Sickness quota: an optional default quota (days/year) on the type; a dedicated per-employee quota row takes precedence. (3) Overflow → unpaid: once the quota is used up, excess days are automatically marked unpaid on approval (on the request, in the year view and in the payroll export) - on by default for sickness types, switchable off per employee; when off, the hard quota limit applies again. The cascade applies everywhere: employee value over type default over tenant default; an empty field inherits and shows the inherited value as "Default: …".

    Open the Knowledge Base →
  • Passkeys now for every employee - password-free sign-in

    Passkeys (fingerprint, face recognition, or a hardware security key) were previously only available to platform accounts. From now on, every employee can create their own passkeys in the profile under "Two-Factor Authentication" - each with its own device name - and sign in directly on the login page via "Sign in with passkey", with no password. Sign-in works either with an email address entered beforehand or without one at all (your device then lists the matching passkeys to choose from). Your password always remains available as a sign-in method; passkeys are an additional, convenient option and can be removed again at any time.

    Open the Knowledge Base →
  • Time tracker quick access in the header

    The top right now shows a "+" icon that leads directly to the time tracker. Green means automatic capture is running; grey means no active capture. The former floating "Track time" widget in the bottom right corner is gone. The linked transparency page in the time tracker explains what is captured.

    Open the Knowledge Base →
  • Time tracker: "Automatically captured" list

    The time tracker's day view now shows which items (tickets, companies, contacts, tasks) the system registered activity on for you that day - aggregated per item, with total duration and a direct link to the item. Activity below the 2-minute threshold (which does not yet create a suggestion) is visible there too, keeping the capture fully transparent.

    Open the Knowledge Base →
  • Time tracker: automatic capture per admin area

    Automatic activity capture now also recognises which admin area (e.g. "Products" or "Orders") you are working in - no longer only on the four detail views ticket/company/contact/task. Only the area name is stored, never contents or inputs. While an item is open or a stopwatch is running, only that one counts - nothing is counted twice. The transparency page explains all rules.

    Open the Knowledge Base →
  • Time tracker: phone calls are captured automatically

    Completed calls from the phone system (and calls completed in the CRM) now automatically appear as captured time for the employee who handled them - with duration and phone number or subject, each call exactly once. Call time takes precedence over area time so nothing is counted twice.

    Open the Knowledge Base →
  • Whereabouts: contract address visible and pre-filled by default - public holidays follow the place of stay

    On "My Whereabouts", a card at the very top now shows your currently effective place of stay with its source ("Registered address from your contract", "Approved request (temporary until …)" or "(permanent)"). When you submit a new request, the form is pre-filled with that location - by default your contract address; you only change what differs. New as well: public holidays and the calendar now follow the place of stay - on days with an approved whereabouts, the public holidays of that country (and, if given, state/region) apply day by day, which affects the year and calendar views as well as the calculation of your absence days. Order of precedence: place of stay before assigned holiday calendar before country from the master data; if no holidays are stored for the place-of-stay country, your existing rules remain in effect.

    Open the Knowledge Base →
  • Interactive tour "Request an absence"

    The absences manual page now offers a Start tour button - it walks you step by step through the real interface with a spotlight.

    Open the Knowledge Base →
  • Request an absence: all types selectable

    The "New absence request" dialog now offers all active absence types - including ones without a fixed annual allowance (e.g. sick leave). For types with an allowance, the dropdown also shows your remaining balance (e.g. "Vacation - 12 days left"). If no type is configured at all, an explanatory note appears instead of an empty dropdown.

    Open the Knowledge Base →