Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Employees
  3. EH HR Document v 16.0
  4. Sales Conditions FAQ

EH HR Document

by ERP Heritage https://erpheritage.com.au
Odoo
v 16.0 Third Party 20
Download for v 16.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Versions 16.0 17.0 18.0 19.0
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Employees (hr)
• Discuss (mail)
Community Apps Dependencies Show
• EH HR Compatibility
• EH HR Platform Core
Lines of code 1065
Technical Name eh_hr_document
LicenseLGPL-3
Websitehttps://erpheritage.com.au
Versions 16.0 17.0 18.0 19.0
ERP Heritage · HR Platform
ERP Heritage . HR Platform

EH HR Document

Employee documents with live expiry tracking, on an audited HR platform.

Free · LGPL-3Odoo 16 CommunityLGPL-3v1.0.0
Passport, visa, licence, contract, certificate
Live valid / expiring / expired status
Daily expiry check cron
Strict multi-company scoping
Hash-chained audit trail

Why this module

EH HR Document

Always current

Status that recomputes itself

Days to expiry and the valid, expiring or expired status are computed on read, not stored, so the figure is right every time you open the list even as the calendar advances. Nothing to recalculate, nothing to refresh.

Audited

Every change on the record

Create, write and delete are written to an append-only, hash-chained log shared across the platform. You can verify the chain on demand to show who recorded which document and when, without bolting on extra tooling.

Company-safe

Records that stay in their company

Each document is owned by a required company and cross-company writes are refused by default, even under sudo, unless an explicit audited override is used. No null-company records leaking between companies.

Day in the life

A licence that almost lapsed

An HR officer records a driver's licence with its expiry date; the document shows green as valid. Weeks later it crosses into the 30 day window and the nightly check posts a note on the document chatter that it expires soon, while the list flags the row amber. The officer renews it and updates the date before it ever turns red, and the whole sequence sits in the audit log.

Edge cases

The cases most modules quietly ignore.

In the shipped code today, each one a place where a cheaper module silently does the wrong thing.

Cron isolation

The daily check searches only documents whose expiry falls inside the forward 30 day window and posts a chatter note on each; it returns the count it touched, so a run with nothing due is a clean no-op rather than a failure.

Live clock

Status and days to expiry are non-stored computes keyed on expiry date, so a document that tips from valid to expiring or expired overnight reads correctly the next morning with no stored value to drift or rebuild.

No expiry

A document left without an expiry date is treated as never expiring: its status is shown as no expiry and it is excluded from the daily check rather than being flagged in error.

Cross-company write

Reassigning a document to a company the user does not belong to is refused with an access error, even under sudo, and any permitted company change is itself written to the audit log with the affected record ids.

Append-only audit

Each audit row hashes the previous row's hash, and appends are serialized with a transaction-scoped Postgres advisory lock so concurrent writes cannot fork the chain; a later edit to any row is caught by the on-demand chain check.

Employee deletion

A document is tied to its employee with an on-delete cascade, so removing the employee removes their documents cleanly, and the deletions are recorded in the audit trail before the rows go.

What is inside

Built to do the job, end to end.

  • The document register. Adds the eh.hr.document model: title, employee, document type (passport, visa or permit, licence, contract, certificate or other), official document number, issue date and expiry date, with list and form views and a menu under Employee Requests.
  • Live expiry status. A days to expiry integer and a four-state status (no expiry, valid, expiring soon, expired) computed from the expiry date against a 30 day window, with the list colouring expiring rows amber and expired rows red.
  • Daily expiry check. A code cron that runs once a day, finds documents entering the 30 day window and posts a dated note to each document's chatter. It is shipped active and isolated to this model.
  • Platform audit and scoping. Inherits the platform's audited and company-aware mixins, so every change is captured in the hash-chained audit log and each record is locked to its owning company. mail.thread gives each document its own chatter.
  • Role-based access. Three access levels out of the box: HR admin with full control, HR officer who can create and edit but not delete, and employee self-service with read-only visibility, all keyed to the platform's HR groups.

Honest about the edges

What this does not do, so nothing surprises you.

  • This module records document metadata and dates, not the document file itself; there is no dedicated attachment or upload field, though the chatter accepts attachments like any Odoo record.
  • The reminder is a note posted to the document's chatter by the daily cron; it does not send email or push notifications on its own.
  • The expiring window is fixed at 30 days in code and is not exposed as a setting in this module.
  • There is no approval workflow, escalation ladder or renewal process here; it tracks status, it does not route documents for sign-off.
  • Document numbers are stored as free text and are not validated or checked for uniqueness.
  • It depends on eh_hr_core and eh_hr_compat, so the audit log, company-scope rules and HR groups come from the platform rather than this module alone.
Search

employee document management Odoo, document expiry tracking, passport visa licence tracker, HR document register, contract and certificate expiry, employee compliance documents, Odoo 16 HR documents, document expiry reminder cron, multi-company employee records, hash-chained HR audit log, self-hosted HR document module, LGPL-3 Odoo HR

Work with ERP Heritage

Need this fitted to the way you work?

ERP Heritage delivers end to end Odoo work: Odoo Implementation, Customization and Development, Integration, Migration, Consultation, Support and Training. We help teams put this module into production, shape it to their process, and keep it running.

Build and tailor
Odoo Implementation, Customization and Development, scoped to your workflow.
Connect and move
Odoo Integration and Migration across systems and Odoo versions.
Run and support
Odoo Support and Training so your team stays productive after go live.
Plan and advise
Odoo Consultation and ERP Consulting, from discovery to roadmap.

We work with businesses across Australia (Melbourne, Sydney, Brisbane, Perth, Adelaide, Canberra) and the Middle East (Dubai, Abu Dhabi, Riyadh, Jeddah, Doha, Kuwait City, Muscat). Start a conversation at erpheritage.com.au or email info@erpheritage.com.au.

Languages

Available in 19 languages

The interface ships translated out of the box. Switch language in Odoo and the fields, menus, and messages follow.

ArabicChinese (Simplified)Chinese (Traditional)DutchFrenchGermanHindiIndonesianItalianJapaneseKoreanPolishPortuguese (Brazil)RussianSpanishSwedishThaiTurkishVietnamese
ERP Heritage

Production-grade Odoo HR, built to an engineering bar and documented honestly. Support: info@erpheritage.com.au
Developed by Odoo Implementation Australia • LinkedIn

v1.0.0 · LGPL-3 · Odoo 16 Community

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with