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 Employee History v 18.0
  4. Sales Conditions FAQ

EH HR Employee History

by ERP Heritage https://www.erpheritage.com.au/
Odoo
v 18.0 Third Party 21
Download for v 18.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 1043
Technical Name eh_hr_employee_history
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
Versions 16.0 17.0 18.0 19.0
ERP Heritage · HR Platform
ERP Heritage . HR Platform

EH HR Employee History

A clean, audited timeline of every employee milestone, kept inside Odoo.

Free · LGPL-3v 1.0.0LGPL-3v1.0.0
Audited
Company-scoped
Six event types
Before and after values
Chatter on every entry

Why this module

EH HR Employee History

Tamper-evident

Every entry lands in a hash-chained log

Create, edit and delete on a history entry write to an append-only audit log where each row is sha256-linked to the one before it. Run the chain verification on demand to prove nothing was altered after the fact. The history module owns no audit code of its own, it stands on the shared platform engine.

Multi-company safe

Strict company scoping, no leaks

Each entry is owned by a company and that ownership is required, not optional. Writing an entry into a company the user is not a member of is refused, even under sudo, unless an explicit override is set and itself written to the audit log. No null-company records quietly visible everywhere.

No new system

One job, done inside Odoo

A focused log that replaces the side spreadsheet or separate tool. It installs from the Apps menu, pulls only its dependencies, and behaves like the modules beside it from day one. No build to commission, no integration to keep alive.

Day in the life

From annual review to a record that holds up

An employee is promoted at their annual review. An HR officer opens Employee History, picks the employee, sets the event type to Promoted, dates it, and types the old title and new title with a short note on why. The entry saves with the company stamped on automatically and a row written to the hash-chained audit log. Months later an auditor asks who recorded the change and whether it was edited since. The chatter on the entry shows the conversation, the audit log shows the create event with the before and after values, and verifying the chain confirms the row was never touched after it was written. Self-service users can read the timeline but cannot change it.

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.

Concurrency

Two entries saved at the same moment cannot fork the audit chain. Each append takes a Postgres transaction-scoped advisory lock, so chain rows are written in strict order and the lock releases on commit or rollback.

No-op writes

Re-saving an entry without changing any captured field writes no audit row. The mixin compares the before and after of the audited fields and skips emission when they match, so the log stays signal, not noise.

Self-approval is not a concept here

There is no approval workflow to game. A history entry is a flat, audited record, so the integrity story is the audit chain and company scoping, not a state machine. The listing does not pretend otherwise.

Cross-company override

Moving an entry to another company is refused by default, even for a sudo caller. It succeeds only with an explicit allow-cross-company context, and that elevation is itself written to the audit log with every affected record id.

Employee deletion

Entries are linked to the employee with ondelete cascade, so removing an employee removes their history rows, and each removal still emits an unlink event into the audit log before the row is gone.

Audit chain survives the company column

The owning-company field on audit rows is deliberately outside the hash material, so introducing it never invalidates pre-existing rows and the chain stays verifiable across the upgrade that adds it.

What is inside

Built to do the job, end to end.

  • One model: eh.hr.employee.history. A single record type with a title, the employee, an event date defaulting to today, an event type, a description, and an old value and new value. Ordered newest first. No parallel copy of standard HR data.
  • Six event types. Joined, Promoted, Transferred, Salary change, Role change and Left, with Joined as the default. Search ships with quick filters for Joined and Left and group-by on employee and event type.
  • Audited and company-scoped by inheritance. The model inherits the platform audited mixin and the strict company-aware mixin, plus mail.thread for chatter. The seven captured fields are whitelisted explicitly, so the audit log records exactly what matters.
  • Role-based access, self-service read-only. HR admins and officers get full create, read, write and delete. Self-service employees get read-only. The menu sits under Records and Compliance and is officer-gated.
  • Tested behaviour. Ships with automated tests covering field capture and the automatic company stamp, the Joined and today defaults, and the newest-first ordering.

Honest about the edges

What this does not do, so nothing surprises you.

  • This is a manual log, not automatic capture. Entries are created by HR, the module does not watch contracts or job positions and write history rows for you.
  • It does not project into the standard hr.* records. Entries live in their own table linked to the employee, they do not rewrite the employee form or contract.
  • There is no approval workflow, escalation ladder or state machine on a history entry. It is a flat, audited record by design.
  • The audit log and company-scope engines live in eh_hr_core, which this module depends on. Installing this module alone still pulls eh_hr_core and eh_hr_compat.
  • Old value and new value are free-text fields. They hold whatever you type, the module does not validate them against the linked record.
Search

employee history odoo, hr change log, employee timeline, employee milestone tracking, career history odoo, promotion history, salary change log, audited hr records, hr audit trail odoo, before and after values, multi-company hr, odoo 18 hr, employee record keeping, transfer history, hr compliance log

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 ERP Heritage - Odoo Implementation • LinkedIn

v1.0.0 · LGPL-3 · Odoo 18 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