| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Recruitment (hr_recruitment)
• Discuss (mail) • Calendar (calendar) • Employees (hr) |
| Community Apps Dependencies | Show |
| Lines of code | 3605 |
| Technical Name |
eh_hero_ats |
| License | OPL-1 |
| Website | https://www.erpheritage.com.au/ |
| Versions | 16.0 17.0 18.0 19.0 |
Employment Hero ATS
Pull recruitment job openings from the Employment Hero ATS into standard Odoo Recruitment, idempotently and on a schedule.
Store price is USD 137 all-in: installing this also pulls the 2 paid ERP Heritage modules it depends on.
Why this module
Employment Hero ATS
Open roles land in Odoo on their own
Job openings advertised in the Employment Hero ATS are pulled into Odoo Recruitment as hr.job records, so a talent team stops re entering the same roles into a second system.
Safe to run as often as you like
Every opening is keyed by its ATS id through a cross reference table. Re running the job reconciles the same records in place, an unchanged opening is skipped, and nothing is duplicated.
Change the mapping without a deployment
Endpoints and the job field mapping ship ready to use and live as data rows. Adjusting which ATS field lands where is a configuration change, not a code release.
Day in the life
A morning sync, no manual entry
Overnight a recruiter opens three new roles in the Employment Hero ATS. The scheduled pull job runs, fetches the job openings page by page, maps each one onto an hr.job record, and resolves its department against your Odoo departments by name. The three new roles appear in Odoo Recruitment, the two unchanged roles are skipped as already in sync, and the run records how many were fetched, created, updated and skipped along with its duration. Nobody re keyed anything, and running the job again later that day changes nothing because every opening is already reconciled by its ATS id.
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.
Each opening is keyed by its ATS id through a cross reference, and a content hash detects no change, so re running the job upserts in place and skips unchanged records instead of duplicating them.
Each record is processed inside its own savepoint. One opening that fails to write, for example an integrity error, is rolled back and logged as an error line while the rest of the batch continues, and the run ends in a partial state.
Transient failures, timeouts and HTTP 429 are retried with exponential backoff plus jitter. A server supplied Retry-After is honoured and clamped so a bad header cannot park a worker for hours.
Job openings are fetched page by page using the ATS page index and items per page parameters, stopping on a short or empty page, with a page cap that warns loudly rather than silently truncating.
The department is resolved against existing Odoo departments by name. A non required field that is absent from the ATS payload is simply skipped rather than failing the record.
The ATS API authenticates with a configurable header token rather than Basic or Bearer auth, and the token rides only in that header and is never written to logs.
Cross references and connections carry a company, so a job uses the connection for its product and company and external ids never collide across companies.
The published ATS API exposes no candidate or application endpoint, so the module pulls job openings only and does not invent a candidate sync the API cannot back.
What is inside
Built to do the job, end to end.
- ATS endpoints as data. Pre configured endpoints for ATS job openings, departments and countries, each with its page based pagination, items path and rate group, defined as data rows you can inspect and extend.
- Job field mapping. A ready to use mapping from the ATS job object onto hr.job: title to name, description, requirements, number of openings to recruitment count, and department resolved by name. Shipped with noupdate so your edits survive an upgrade.
- A single pull job. One sync job, ATS Jobs (Pull), wired to the job openings endpoint and the job mapping, keyed on the ATS id, ready to run manually or on a schedule.
- Shared sync engine. Depends on the suite sync engine and connector for the cross reference table, idempotent upsert, per record isolation, audited run and line records, and the header token transport with retry and rate limiting.
Honest about the edges
What this does not do, so nothing surprises you.
- One direction only. Job openings are pulled from Employment Hero into Odoo. The module does not push Odoo recruitment changes back to the ATS.
- Job openings only. The published ATS API is read only and exposes no candidate or application endpoint, so candidates, applicants and application stages are not synced.
- Not part of the suite bundle. This is an optional add on. Install it only when you use Employment Hero recruitment.
- Departments are matched by name. An ATS department with no matching Odoo department by the same name is left unset on the job rather than created automatically.
- Requires a configured Employment Hero ATS connection with an ATS product token. It does not provision Employment Hero access or create the ATS token for you.
- Depends on eh_hero_sync and the stock hr_recruitment app. It reuses their models and does not reimplement recruitment.
- This listing describes Odoo 16 Community. Install the build that matches your Odoo version.
employment hero ats odoo, employment hero recruitment integration, odoo recruitment sync, ats job openings odoo, hr.job import odoo, employment hero connector odoo 16, recruitment job sync, header token api odoo, idempotent sync odoo, scheduled recruitment import, odoo community recruitment integration, talent acquisition odoo 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 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 16
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 New Zealand country pack for the ERP Heritage Employment Hero integration
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Recruitment (hr_recruitment)
• Discuss (mail) • Calendar (calendar) • Employees (hr) |
| Community Apps Dependencies | Show |
| Lines of code | 3605 |
| Technical Name |
eh_hero_ats |
| 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