Markus Michalski FAQ

LeaveFlow: Troubleshooting

LeaveFlow troubleshooting: setup, emails, scheduled tasks, sign-in, leave requests, integrations, API and known limitations.

Deutsche Version

Back to overview

LeaveFlow: Troubleshooting

Installation and configuration

The setup wizard cannot be submitted

Cause: At least one system check is red. Solution: Read the note next to the entry. Apply pending migrations with docker compose exec -u app app php bin/console doctrine:migrations:migrate --no-interaction. An unreachable database is usually caused by DATABASE_URL or by the database container not being ready yet. The writable directories must be var/ and public/uploads/.

Settings from .env.local have no effect

Cause: compose.yaml hard-sets DATABASE_URL and MAILER_DSN as container environment variables, and these take precedence. Solution: Change the values in compose.yaml (see Installation).

Slack token or LDAP bind password cannot be saved

Cause: APP_LDAP_ENCRYPTION_KEY is empty or not a valid 32-byte Base64 key. Solution: Generate and set a key (command on the Installation page). If you changed the key after values were stored, the LDAP login fails with a connection error and you must re-enter the bind password, Slack token and signing secret.

Signing in does not work over HTTP

Cause: The PHP configuration sets session cookies with the Secure flag. Solution: Run the instance behind HTTPS outside localhost.

Emails and scheduled tasks

No emails arrive

Check:

Warnings, escalations and illness alerts do not appear

Cause: No Messenger worker runs for scheduler_notifications, or the job is disabled. Solution: Set up the worker (Operations) and check the status at /admin/scheduled-jobs. The escalation only applies to requests with status "Pending" and runs once per request.

The year transition did not happen

Cause: The worker scheduler_maintenance was not running on 1 January at 01:00. The scheduler does not catch up on missed ticks. Solution: Run app:entitlement:year-transition --year=<previous year> manually. The command skips entries that already exist.

Sign-in

"Sign in with Google" or "Sign in with Microsoft" is rejected

Possible causes:

After login it says "No employee profile is linked to your account"

Message: "No employee profile is linked to your account. Please contact your administrator." Cause: The user account is not linked to an employee. Solution: In the admin under Employees edit the record and select the account in the field "Linked user".

A user lost their 2FA device

Solution: They use a backup code. If none are left, an admin resets 2FA under Users with "Reset 2FA".

Leave requests

"No leave entitlement exists for yet."

Message: "No leave entitlement exists for yet. Please contact your administrator." Cause: The employee has no leave balance for the year. Solution: The admin creates an entry under Leave balances. The message only applies to absence types that deduct from the leave balance.

"Your leave balance is insufficient"

Message: "Your leave balance is insufficient: h requested, h available (including pending requests)." Cause: The requested hours exceed the available balance including the hours of pending requests, during probation only pro-rata earned hours count. Solution: Shorten the request or have the balance checked.

The request cannot be submitted: blackout period or backdated

Cause: The period overlaps a blackout period, or the start date is in the past. Solution: Choose another period. The admin handles corrections for the past.

A manager does not see a request

Check:

Nobody was notified about a new request

Cause: There is no active team lead or deputy who is not the requester. Admins see the requests in the approval list, the escalation reports them after the escalation threshold.

Integrations and API

Slack says "Dein Slack-Account ist nicht mit LeaveFlow verknüpft"

Cause: No Slack user ID is stored on the user. The interface offers no field for it, see Sign-in and integrations.

Slack commands answer with 503 or 403

Cause: 503 means the integration is not active or the signing secret is missing. 403 means the signature is invalid or the request is older than five minutes. Solution: Check the signing secret and compare the server time.

The API answers with 401

Cause: The token is invalid, revoked or expired, or the header does not use the Bearer scheme. Solution: Create a new token under API Access Tokens.

Known limitations