Timesheet statement reminder
Notifies employees when a timesheet statement reaches its submission deadline, and keeps reminding them — on their working days only — for as long as it stays overdue.
How it works
The job walks through every pending, ready or overdue timesheet statement in the workspace and moves it one step further along its lifecycle:
- Pending → Ready — when today is on or after the last working day of the period, the statement is marked ready and the employee is notified that the deadline has arrived. This threshold follows the employee’s own schedule, so approved full-day time-off at the end of the period pulls the deadline earlier — the employee is told before they leave, not while they are away
- Ready → Overdue — the calendar day after the period ends, regardless of the employee’s schedule. Time-off straight after the period end does not push this back: the manager’s missing-submission entry depends on it, and it has to appear on a predictable day
- Overdue → reminded, every working day — while the statement stays overdue, the employee’s reminder is brought back to the top of their notifications and one email is sent on each of their working days. Weekends, public holidays and approved full-day time-off are skipped, so nobody is chased while away. The first reminder uses the general “your timesheet is overdue” wording; every reminder after that names the manager waiting for it
Reminders stop as soon as the employee submits: the recurring reminder is dismissed and the manager’s entry becomes a normal approval.
An ongoing absence with no end date — an open sick period, for example — does not move the deadline. Such an absence is only known to cover days up to today, so the days after it still count as working days and the deadline stays on the period’s real last working day.
The job uses “>=” rather than “==” on each threshold, so a statement that missed its exact day (job outage, period predates the feature) catches up on the next run. Events have deterministic IDs, so re-runs do not produce duplicate notifications.
Example: time-off across the period end
A monthly period covering 1–31 August, with approved time-off from 24 August to 7 September:
| Day | What happens |
|---|---|
| Fri 21 Aug | Last working day before the time-off, so the statement becomes Ready and the employee gets the deadline notification — while still at work |
| Tue 1 Sep | The day after the period ended, so the statement becomes Overdue and the missing submission appears in the manager’s approvals inbox |
| 1–7 Sep | The employee gets no reminders (all days are time-off). The manager’s daily digest lists the missing submission from 1 September onwards |
| Tue 8 Sep | First working day back: the employee’s overdue reminder and email start, and repeat every working day until the timesheet is submitted |
When it runs
The job runs automatically and only triggers when at least one pending, ready or overdue statement exists for the workspace.
Parameters
This job has no parameters.
Job results
| Metric | Description |
|---|---|
processed | Number of statements evaluated |
ready_emitted | Number of statements promoted to ready (deadline reached) |
overdue_emitted | Number of statements promoted to overdue (day after the period ended) |
reminded | Number of overdue reminders sent this run (one per overdue statement whose employee works today) |
skipped | Statements not yet at any threshold, already past it (dedup hit), or whose employee is not working today |
errors | Failures during processing |
Who gets notified
- The employee gets the deadline notification when the period becomes ready, then one overdue reminder per working day until they submit. They are never reminded on a day off.
- The manager sees the missing submission in from the day after the period ended, and in their daily Manager digest. This is not gated on anyone’s calendar — a manager will see (and be emailed about) a missing timesheet for an employee who is still on holiday, and will keep seeing it until the employee returns and submits.
- A manager who is away should set up an approval delegation: their digest is held while the delegation is active, their delegates receive it instead, and a catch-up summary arrives on the manager’s first working day back.
The lifecycle events also carry the employee’s direct manager as a target — this is how the manager’s approvals inbox gets populated on rebuild.
Troubleshooting
| Issue | Solution |
|---|---|
| No deadline notification | Check that the statement is in “pending” state and that today is on or after the last working day of the period for that employee |
| No overdue notification | The statement must be in “ready” state and the period must have ended. Note the promotion happens the day after the period ends — it is never delayed by time-off |
| Employee on leave received no reminder | Expected. Overdue reminders are only sent on the employee’s working days; they resume on their first working day back |
| Manager chased about an employee who is away | Expected — the missing submission is raised the day after the period ends regardless of the employee’s time-off. The employee is reminded when they return |
| Manager receiving digests while on holiday | Set up an approval delegation for the absence; digests then go to the delegates and the manager gets a catch-up summary on their return |
| Manager inbox empty after a rebuild | Re-run the Rebuild employee projections job, then re-run this job to re-emit lifecycle events with target manager IDs |