Employment Hero HR Sync for Odoo
Bring employees and departments from the Employment Hero people platform into standard Odoo HR, with idempotent sync you tune as data, not code.
Store price is USD 157 all-in: installing this also pulls the 2 paid ERP Heritage modules it depends on.
Why this module
Employment Hero HR Sync for Odoo
Map fields without writing code
Endpoints, field mappings and sync jobs ship as configuration rows. Adjust which source field lands on which Odoo field from the user interface, with no upgrade and no Python edit.
Idempotent by external id
Every employee and department is keyed by its Employment Hero id through a unique cross reference. Run a job twice and an unchanged record is a no op, never a second copy.
One bad record never sinks the run
Each record is processed in its own savepoint. A single failure is logged as an error line and the run finishes in a partial state, so the rest of the batch still lands.
Day in the life
A new hire and a transfer, handled while you sleep
Overnight the scheduled job runs. Departments pull first so the team structure is current, then employees, with the new joiner created in hr.employee and linked by external id. A colleague who moved teams in the platform has their department reassigned through the cross reference, not duplicated. A record whose payload did not change is skipped as unchanged. In the morning the sync run shows the counts: created, updated, skipped, with a per record line for each, so HR can see exactly what moved and why without exporting anything.
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, or replaying the same data, never duplicates: an unchanged mapped payload is detected by hash and skipped, and existing records are matched by their unique external id cross reference.
Each record syncs inside its own database savepoint, so an integrity error or bad value on one record rolls back only that record. The run continues and ends in a partial state with the failure logged as a line.
Delta mode advances the changed since cursor only to the high water mark of records that succeeded, and never past a record that failed, so a failed or concurrently changed record is re fetched next run instead of being skipped forever.
List reads page through the platform with a configurable page size and a hard page cap that warns loudly rather than silently truncating, so large employee sets pull completely.
The transport retries only transient failures and rate limit responses with exponential backoff and jitter, honours and clamps a server Retry-After, and carries an idempotency key on writes so a retried create is deduplicated by the platform, not duplicated.
Departments sync before employees so the employee to department link resolves through the external id cross reference. A best guess primary team mapping is shipped and noted so a deployment can point it at its own payload shape.
Conflict handling is an explicit rule per job rather than a silent last write. A record changed on both sides is resolved by the policy you chose, and a webhook triggered run is forced to newest wins with out of order protection.
The synced bank account number is encrypted in the database, decrypts only for HR users, and is pull only. An upgrade from an older plaintext install runs a shipped migration that encrypts the legacy column and drops it, proven by an automated test.
What is inside
Built to do the job, end to end.
- Employee and department sync. Pull jobs for hr.department and hr.employee, with the name composed from first and last name and work email, job title, mobile, work and private phones, private email and date of birth mapped across. The department relation resolves through the external id cross reference.
- Mappings, endpoints and jobs as data. Department, employee and bank account mappings ship with noupdate so your tuning survives upgrades, alongside the create, update and read endpoints and the scheduled jobs. Adjust source paths to match your organisation's payload from the interface.
- Optional two way push. The department and employee jobs are configured two way against the platform create and update endpoints, shipped with an empty push scope so the write back leg stays off until a deployment narrows which records may be pushed and enables it.
- Bank account model with encrypted number. A lightweight eh.hr.bank.account record holds account name, bank, branch or routing code, allocation percentage and primary flag, with the account number encrypted at rest, gated to HR users, and a per employee pull job and mapping ready to run.
- Audited sync runs. Every run records created, updated, skipped, deleted and failed counts with a per record line carrying the operation, external id and any message, so a run reads straight into a compliance audit without preparing exports.
- Broad endpoint catalogue. Beyond the active jobs, the module registers read endpoints for bank accounts, emergency contacts, custom fields, employment and contractor histories, cost centres, employing entities, positions and kiosk members, extending coverage for further mapping.
Honest about the edges
What this does not do, so nothing surprises you.
- This module ships pull jobs that are active out of the box; the two way push leg is configured but intentionally disabled, with an empty push scope you must narrow and switch on before any data is written back to the platform.
- Real time webhook delivery and the in database retry queue live in separate modules of the suite, not in this one. The sync engine supports a webhook triggered targeted pull, but this module ships no webhook subscription or single record endpoint wiring.
- The employee display name is composed read only from first and last name on pull; it is not split back into parts on push.
- The shipped employee to department mapping reads a primary team field as a sensible default. Where your organisation's payload differs, adjust the source path from the interface to match.
- The bank account number is pull only and never pushed back to the platform.
- Country specific identifiers such as tax file numbers, national insurance or social insurance numbers are provided by the separate country modules in the suite, not by this base HR module.
- This is an integration that maps the published Employment Hero API into Odoo. It does not replace Employment Hero, and a valid connection configured in the connector module is required.
Employment Hero Odoo integration, Employment Hero HR connector, Odoo HR sync, hr.employee import Odoo, hr.department sync, HRIS Odoo integration, employee sync Odoo Community, Odoo 18 HR connector, headcount sync Odoo, joiners movers leavers, idempotent sync Odoo, people platform integration Odoo
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 Employment Hero leave categories, leave requests and leave balances into the standard Odoo Time Off app, wit...
Show the Hijri (Umm al-Qura) date alongside Gregorian dates across Odoo 18
Connect Odoo partner records to the Saudi SPL National Address service and the Wathq commercial registry
One click install of the full Employment Hero integration for Odoo Community, covering the connector, two way syn...
The Malaysia country pack for the ERP Heritage Employment Hero integration
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Employees (hr)
• Discuss (mail) |
| Community Apps Dependencies | Show |
| Lines of code | 4009 |
| Technical Name |
eh_hero_hr |
| 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