| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Time Off (hr_holidays)
• Discuss (mail) • Calendar (calendar) • Employees (hr) |
| Community Apps Dependencies | Show |
| Lines of code | 3883 |
| Technical Name |
eh_hero_leave |
| License | OPL-1 |
| Website | https://www.erpheritage.com.au/ |
| Versions | 16.0 17.0 18.0 19.0 |
Employment Hero Leave
Mirror leave categories, requests and balances from the people platform into Odoo Time Off, with field mappings you tune as data.
Store price is USD 117 all-in: installing this also pulls the 2 paid ERP Heritage modules it depends on.
Why this module
Employment Hero Leave
Three leave objects, one mapping layer
Leave categories land in hr.leave.type, leave requests in hr.leave with the type and employee resolved through the cross reference, and per employee balances in a dedicated reference model that sits alongside the Odoo allocation engine without overwriting it.
Configuration, not a code fork
Endpoints, field mappings and sync jobs ship as data rows. Adjust a source path or add a mapping line from the user interface to match your organisation's payload shape, and the change survives upgrades because the starter records are marked no update.
Idempotent and audited by the engine
Every record is keyed by its Employment Hero id, so a re-run updates in place and an unchanged payload is skipped. Each run records created, updated, skipped and failed counts with per record lines, and one bad record is isolated rather than aborting the batch.
Day in the life
A scheduled leave sync, start to audit
The leave types job runs first so categories exist in hr.leave.type before any request references them. The leave requests job then pulls changes since the last run, mapping each into hr.leave with the leave type and employee resolved through the external id cross reference. New requests are created, changed ones updated in place, unchanged ones skipped, and balances refresh into the reference model. A record that fails validation is logged on its own line and the run finishes partial instead of failing whole. When the optional push leg is enabled and its domain narrowed, Odoo leave is created back on the people platform under the employee, with an idempotency key so a retried create is never duplicated. The run row carries the counts and duration for the audit.
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.
Records are keyed by Employment Hero id through eh.external.id. Running a leave job twice updates the existing hr.leave or hr.leave.type instead of creating a second copy, and a payload whose hash matches the last sync is skipped as unchanged.
The per record hash folds in a fingerprint of the mapping. Add a line or change a transformer and existing records are rewritten on the next run rather than wrongly skipped as unchanged.
Each record runs inside its own savepoint. A leave request that fails to write (for example an integrity error) rolls back only that record, is logged as an error line, and the run ends partial while every other record still applies.
The leave types job is sequenced ahead of the requests job so the request to leave type relation resolves through the cross reference. A request whose employee or category has no external id yet fails its own line cleanly instead of corrupting the batch.
The delta cursor advances only to the high water mark of records that processed successfully and never past a failed or timestamp-less record, so a failure is re-fetched next run rather than skipped forever.
When the push leg is enabled, creates and updates carry a stable Idempotency-Key, so a retry after a network blip is deduplicated by the platform instead of creating a duplicate leave request.
Category, request and balance endpoints page through results in batches and stop on a short or empty page, with a page cap that warns loudly rather than silently truncating.
Employment Hero balances populate a dedicated reference model for reporting and never overwrite Odoo's own allocation and balance computation in hr_holidays.
What is inside
Built to do the job, end to end.
- Leave categories into hr.leave.type. A pull job maps the category name and display colour into Odoo leave types, registering each one in the cross reference so later requests can resolve to it.
- Leave requests into hr.leave. A two way capable job pulls requests into hr.leave, mapping the leave category to holiday_status_id and the employee through the external id cross reference, with start and end dates and an optional reason note.
- Leave balances into a reference model. A pull job fills eh.hr.leave.balance per employee with the reported balance, unit, accrual rate, accrued this period, accrual period and as of date, kept alongside Odoo's own allocation engine for reference and reporting.
- Endpoints and mappings as data. Leave category, leave request create, leave balance and unavailability endpoints ship as records, and every field mapping is a tunable row marked no update so deployment edits survive upgrades.
- Sequenced sync jobs. Jobs ship preconfigured with the external id path, conflict policy and, for requests, the updated_at path for delta runs and the push endpoint, path parameter and id path for the optional push leg.
- Runs on the suite sync engine. Inherits idempotent upsert, delta cursors, per record savepoints, dry run preview, retry with backoff, rate limiting and audited run and line records from the underlying sync engine and connector.
Honest about the edges
What this does not do, so nothing surprises you.
- Depends on eh_hero_sync and hr_holidays. The sync engine and connector are required and pull in eh_hero_base.
- Inbound webhooks (HMAC verification, replay protection, event routing) and the in database retry queue with dead letter are separate modules in the suite, not part of this module or its dependencies. Out of the box this module syncs on a schedule or on demand.
- The leave request push leg ships disabled in effect: its push domain is empty, so a deployment must narrow the domain and confirm field mappings before enabling outbound creates.
- Starter mappings assume a representative Employment Hero payload shape. Source paths are tunable and should be checked against your organisation's actual API response before relying on a field.
- Leave balances are stored in a dedicated reference model for reporting. They are not written into Odoo's allocation or balance engine.
- The leave balance job pulls per employee because the endpoint is an employee sub resource, so a deployment drives it with the employee id as a path parameter.
- This is an integration layer, not a leave management product. Approval flows, allocation rules and accrual logic remain Odoo's standard Time Off behaviour.
- Distributed under OPL-1. A valid licence is required for use.
Employment Hero leave integration, Odoo Time Off sync, Employment Hero Odoo connector, leave request sync Odoo, hr.leave.type import, leave balance import Odoo, HR platform leave sync, Odoo hr_holidays integration, idempotent leave sync, people platform leave connector, Odoo Community HR integration, leave category mapping, data driven sync jobs, OPL-1 Odoo module
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.
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.
Modules teams pair with this one.
Premium ERP Heritage modules that extend the same stack, each built to the same engineering bar.
Sync attendance clock events from the Employment Hero people platform into the stock Odoo Attendances app, keyed...
The Singapore country pack for the ERP Heritage Employment Hero integration
The complete ERP Heritage Employment Hero integration in one install
Inbound webhook receiver for the Employment Hero people and payroll platform on Odoo 19 Community
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Time Off (hr_holidays)
• Discuss (mail) • Calendar (calendar) • Employees (hr) |
| Community Apps Dependencies | Show |
| Lines of code | 3883 |
| Technical Name |
eh_hero_leave |
| License | OPL-1 |
| Website | https://www.erpheritage.com.au/ |
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module