Skip to content

Absences and deputies

How users record an absence and choose a deputy is described under Absence. This page describes what happens in the background.

Every absence a user records is stored as an entry in the biz.OutOfOffice table. invoiceR therefore knows at any point in time whether a user is present or absent.

In the task list you can show the Deputy column. It shows the deputy entered for each task. However, the deputy only sees the task and can only open the document while the actual owner of the task is absent.

In most steps, invoiceR enters the deputy as soon as the task is created, that is when the document arrives in the step. This also happens if the owner is present and has no absence planned.

In the approval step, invoiceR does not enter a deputy while the owner is present. When an absence begins, a background job checks which tasks this user owns and passes these tasks through the step again. Because the absence is now active, the deputies are entered and can see the document.

The reason for this special handling: an absence can change the number of tasks. Example: accounting results in three approval groups, all with User A as approver but with three different deputies. While User A is present, one task for them is enough. If they are absent, three tasks are needed, one for each deputy.

Which deputy applies during approval is defined per level in the approval rules (If User absent).

The App.OutOfOfficeChange job processes absences that have started, ended or been deleted, and sets missing deputies on blocked tasks. It only runs if it is turned on. The settings are in the OutOfOfficeChange section of appsettings.json (or per tenant in the database):

SettingDefaultMeaning
JobEnabledfalseturns the job on
CronExpression10 2 * * *when the job runs (default: daily at 02:10)
NodeGuidsapproval stepIds of the steps whose tasks are passed through again when an absence changes
NodeGuidsNotVisaaccounting, final checkIds of further steps in which the personal deputy is set. Do not enter the approval step here.
RequirePersonalDeputytruewhether a personal deputy is mandatory when recording an absence under My settings
{
"OutOfOfficeChange": {
"JobEnabled": "true",
"CronExpression": "*/15 * * * *"
}
}

If an absent user changes their personal deputy, invoiceR immediately updates the blocked tasks in the steps listed in NodeGuidsNotVisa.