| 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 | 3869 |
| 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 Sync
Bring Employment Hero leave categories, requests and balances into stock Odoo Time Off, mapped from the user interface with no code.
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 Sync
Reads into the app you already use
Leave categories, requests and balances land in stock Odoo Time Off through ready made mappings. No parallel leave module to learn, no Enterprise dependency.
Idempotent, isolated, resumable
Records match by Employment Hero id, so re running never duplicates. One bad record is logged and skipped inside its own savepoint while the rest of the batch completes.
Mappings you edit, not code you fork
Endpoints, field mappings and sync jobs ship as data you adjust from the user interface. Source paths align to your organisation's payload shape without touching Python.
Day in the life
A scheduled leave pull, start to finish
The job fetches leave categories first so types exist, then pulls leave requests page by page. Each request resolves its leave type and employee through the external id cross reference, gets hashed against the last synced value, and is created, updated or skipped as unchanged. A per employee balance pull lands current figures, accrual rate and as of date in a reference model next to Odoo's own allocations. A record that fails to map is logged as an error line and the run ends partial, never aborting the whole batch. The delta cursor advances only to the high-water mark of records that succeeded, so anything that failed is re fetched next run rather than silently missed.
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.
Re running a job is a no op for unchanged records. Each record is keyed by its Employment Hero id and skipped when its mapped payload hash matches the last sync.
A record that fails to map or write rolls back inside its own savepoint and is logged as an error line. The run continues and ends in a partial state instead of aborting.
The cursor advances only to the latest successfully processed timestamp that is strictly before the earliest failure, so a failed or out of order record is re fetched next run, never skipped forever.
A leave request whose employee or leave type has no cross reference yet fails cleanly with a clear message rather than creating an orphaned record.
The per record hash folds in a fingerprint of the mapping, so adding a line or changing a transformer rewrites existing records on the next run instead of treating them as unchanged.
The shared transport retries 5xx, timeouts and 429 with exponential backoff plus jitter, honouring a clamped Retry-After header, so a rate limit or blip does not lose the run.
Leave categories, requests and balances are walked page by page with the configured page size, so large organisations sync without loading everything at once.
Balance records carry a company_id and the company column is shown only when multi-company is enabled.
On OAuth2 connections the engine refreshes access tokens lazily and proactively, so a long running schedule does not stall on an expired token.
What is inside
Built to do the job, end to end.
- Leave category sync. Pulls Employment Hero leave categories into hr.leave.type, including the display colour when the category carries one, so requests have real types to attach to.
- Leave request sync. Maps leave requests into native hr.leave with date from, date to, reason and the leave type and employee resolved through the cross reference. The job ships as a two way job with the inbound pull enabled and a dormant create-back leg a deployment can narrow and switch on.
- Leave balance reference. A dedicated eh.hr.leave.balance model carries the Employment Hero balance, unit, accrual rate, amount accrued this period, accrual period and as of date alongside Odoo's own allocations, for reference and reporting without overwriting the allocation engine.
- Editable mappings and jobs. Endpoints, field mappings and sync jobs are shipped as data marked so an upgrade will not overwrite your tuning. Adjust source paths to your organisation from the user interface.
- List, form and menu. Leave balances get a list and form view and a menu under Time Off, with the company column gated behind the multi-company group.
- Tested against a fake API. A shipped test drives the leave type then leave request flow end to end against a stubbed Employment Hero session, proving the categories sync and every relation resolves before a request is written.
Honest about the edges
What this does not do, so nothing surprises you.
- The push leg of the leave request job ships dormant: direction is two way but the push domain is empty by design, so a deployment must narrow it and enable the create-back endpoint before any leave is written to Employment Hero. Out of the box the module reads into Odoo.
- Leave categories, requests and balances sync on a schedule or on demand through the sync engine. Near real time delivery by webhook is a separate module in the suite and is not included here.
- Leave balances are stored in a dedicated reference model for reporting and do not change Odoo's own allocation or accrual calculations.
- The shipped field mappings are starter mappings aligned to a typical payload shape. Source paths may need adjusting to match your specific Employment Hero organisation, which is done from the user interface.
- Requires the suite base and sync modules and the stock hr_holidays app. It does not bundle the connection or webhook layers, which are configured once at the suite level.
- Creating a posted leave for real depends on the customer's own allocation configuration in Odoo, which is outside the scope of the integration.
Employment Hero Odoo integration, Employment Hero leave sync, Odoo time off integration, leave request import Odoo, hr.leave.type mapping, employee leave balance Odoo, Odoo 18 HR integration, people platform connector, leave category sync, Odoo Community time off, HR data sync Odoo, annual leave sync
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 18 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 | 3869 |
| 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