Time tracking

Overview
This is where time is recorded — against a work item, that is a task or a ticket. The list shows date, employee, work item, project, category, duration, billability and status, plus a total for the chosen period.
One principle shapes the whole surface: booked time is not deleted but reversed. A locked entry can only be corrected through a negative counter-entry. That is inconvenient and right — an hour sitting in an invoice must not disappear retroactively.
Core tasks
Record time. Log time requires date, category, work item, duration and optionally a description; billability can be set.
Work with the stopwatch. Start stopwatch runs alongside, pauses, and becomes a time entry through Stop & book.
Particularly useful is the parked timer: start without a work item when you are in the middle of something and do not want to search first — you assign it afterwards. That is the difference between recorded and estimated time.
Reverse. Reverse creates a counter-entry; the original entry stays readable. Reversal entries themselves are write-protected.
Understand the status. Five states: Draft, Submitted, Approved, Invoiced, Locked. From Locked onwards, only the reversal route remains.
Fields in detail
The What it does column answers what changes in the system — not what the field is called. The grey name behind the label is the API field: the same thing runs under that name through automation, import and AI tools.
Recording and editing time
| Field | Required | Values / format | What it does |
|---|---|---|---|
Employee employeeId | yes | an employee | Whose time is recorded. For your own time time.entry.create_own is enough; recording for others or changing their entries needs time.entry.edit_any. |
Date workDate | yes | date | The working day. It decides the week of the timesheet and whether the time would fall into an already approved week — in which case it is rejected. |
Task workItemUlid | no | identifier of a task or ticket | What is booked on. Through the task the time inherits project and customer — which is why this is the usual route rather than a free description. |
Duration (minutes) durationMinutes | yes | 0 or more | How long the work took. The rounding rule of the project or contract applies on saving, not while typing. |
Duration (hours) durationHours | yes | decimal, 0 or more | The same entry in hours. Both fields write the same value — you record the way you think, the system calculates in minutes. |
Start startedAt | no | timestamp | When the entry begins. The duration stays the authoritative figure — start and end are the addition that puts the entry in the right place on the day's timeline. Without them it sits nowhere there. |
End endedAt | no | timestamp, not before the start | When the entry ends. Together with the start it forms the span on the timeline. |
Billable billable | no | yes/no | Whether the time may go on an invoice. Pre-filled from the category; the decision in the individual case belongs here. Non-billable time still counts towards utilisation and project effort. |
Category categoryId | no | master data "time categories" | The kind of activity (consulting, development, travel …). It supplies the default for billable and the axis of every report. |
Description description | no | text, max. 5000 characters | What was done. It appears on the service record when that is generated from time entries — a full sentence pays off here. |
Interface and automation only
| Field | Values / format | What it does |
|---|---|---|
workItemId | internal identifier of a task | The same target as workItemUlid, addressed by the internal number. |
rejectNote | text, max. 5000 characters | The reason an approver rejects a time entry with. It goes to the person who recorded it and stays on the entry. |
Settings & permissions
- Module
module.timetracking. - Finely cut permissions:
time.entry.view_own,time.entry.create_own,time.entry.edit_own,
time.entry.delete_own for your own time; time.entry.view_project for a project's time and time.entry.edit_any for other people's. time.entry.invoice for invoicing.
- An account needs an employee profile. Without the link — see Users —
there is nobody to book against.
- Billability can be inherited. An activity type without its own setting takes it from the project
type, see Time tracking settings.
FAQ & troubleshooting
I cannot change an entry. Then it is locked or already invoiced. Correct it by reversal and book anew.
The stopwatch ran but nothing was booked. A timer only becomes an entry through Stop & book. A parked timer additionally waits for a work item to be assigned.
Time is wrongly marked as not billable. Check the activity type: if it inherits from the project type, that type's setting decides.
I cannot find the work item. Time is booked against tasks and tickets. If none exists, create one — time without a reference cannot be attributed to anyone later.