Troubleshooting
What goes wrong with Employee Document Expiry, how to recognise it, and what to do.
No reminders are arriving
Work through these in order.
1. Is the scheduled action running at all? Settings → Technical → Automation → Scheduled Actions → Employee Documents: Check Expiry. It must be Active, and Next Execution Date should be in the near future rather than stuck in the past. A Next Execution Date that never moves means Odoo's cron worker is not running — check that your server is started with at least one cron worker (--max-cron-threads greater than zero; it is 2 by default, but some deployments set it to 0).
2. Is anything actually due? A document only produces a reminder once it is inside its type's first reminder window. Open Employees → Documents → Expiring & Expired. If that list is empty, the module is working and there is genuinely nothing to say.
3. Has the reminder already been sent? Enable developer mode and open the document's Reminders tab. If First Reminder Sent is ticked, that threshold has already fired and will not fire again. Untick it to force a resend.
4. Does the document have a Responsible? Reminders are addressed to the Responsible user. A document with none falls back to the user the cron runs as, which nobody watches. Set one.
5. Is it an email problem rather than a reminder problem? Check Settings → Technical → Email → Emails for queued or failed messages. If the activity exists on the document but no email arrived, your outgoing mail server is the problem, not this module.
The menus are missing
The user needs the Employee Documents / User or / Manager group. Settings → Users & Companies → Users → (user) → Employee Documents.
"You are not allowed to access Employee Document"
The same cause. Being an HR Officer is not enough — see SECURITY.md for why that is deliberate.
A user can see the menu but the list is empty
Record rules are doing their job. A User sees only their own documents and those of their direct reports. If they should see more, give them Manager.
Also check the employee record actually has user_id set to that user, and that parent_id is set on their reports — the rule matches on those two fields.
"expires before it was issued"
Exactly what it says: the expiry date is earlier than the issue date. Usually a year typo.
"is a document type that expires, so it needs an expiry date"
The type has Expires ticked. Either supply the date or, if this kind of document genuinely never lapses, untick Expires on the type.
"The second reminder must come closer to expiry than the first"
The second reminder is a later nudge, so its lead time must be the smaller number: first 90, second 30 — not the other way round. Use 0 to disable it.
Statuses look wrong after changing a lead time
Statuses recompute when the document is touched or when the daily cron runs. To refresh everything immediately, run the scheduled action manually: open it and press Run Manually.
Duplicate document error on save
There is a uniqueness constraint on employee + type + number. You are recording a document that already exists. Search for the number first — it is usually a renewal that was entered twice.
Performance
The status and days-left fields are stored and indexed, so filtering and grouping are index scans rather than table scans. The employee-form counts use a single grouped query for the whole list, not one per row. If the employee list view feels slow, this module is not the cause — check for other stored computes or a heavy hr.employee inherit.
Still stuck
Email info@technovision.dev with your Odoo version, the module version, and the relevant lines from the server log. If it is a reminder problem, the output of the scheduled action's Run Manually with the log at INFO level is the most useful thing you can send.