| 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 | 3644 |
| 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 for Odoo
Pull Employment Hero recruitment job openings into the standard Odoo Recruitment app, mapped onto hr.job with the department resolved by name.
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 for Odoo
Lands in stock Recruitment
Job openings become ordinary hr.job records in the Community Recruitment app, with no custom screens to learn and no Enterprise dependency. The advertised opening count and department flow through with the title, description and requirements.
Idempotent by external id
Each opening is linked to its Employment Hero id through a unique cross reference, so re running the job updates the matching record instead of creating a duplicate. An unchanged payload is recognised by hash and skipped as a no op.
Tune it without code
The endpoints, the field mapping and the pull job ship as data records. Adjust a source path, point a field somewhere else or change the conflict policy from the interface, and an upgrade will not overwrite your changes.
Day in the life
Recruitment kept current from one connection
You create an ATS connection with the product set to ATS and an ATS token, then run the ATS Jobs pull. The engine walks the job openings page by page, maps each onto hr.job, resolves the department against your existing Odoo departments by name and links every opening to its Employment Hero id. The first run creates the open positions; later runs update the ones that changed and leave the rest untouched. A job that references a department you have not created yet is logged on its own line while the rest of the run finishes, so you fix one record rather than rerunning everything. Because the work is plain Odoo records, your recruiters work the pipeline in the standard app while the openings stay in step with Employment Hero.
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.
Every opening is keyed by its Employment Hero id through a unique cross reference, so re running the pull never duplicates. An unchanged payload is detected by hash and skipped as a no op.
Each record is processed inside its own savepoint. One failed write, for example an unresolved department, rolls back just that record, is logged as an error line and the run finishes in the partial state instead of aborting.
Server errors, timeouts and rate limit responses are retried with exponential backoff and jitter. A Retry-After header is honoured and clamped to a safe ceiling so a stray header cannot park a worker for hours.
Job openings are walked page by page using page index and item per page parameters, reading items from the data envelope. A page cap guards against a runaway loop and warns loudly when results would be truncated.
The department on an opening is matched to an existing Odoo department by name. When no department matches, that line is reported rather than silently inventing one.
The change hash folds in the mapping definition, so editing a mapping line forces existing jobs to be rewritten on the next run rather than being skipped as unchanged.
A connection belongs to a company and the external id links are scoped to it, so the same Employment Hero id can be tracked independently across companies on one database.
The ATS API authenticates with a configurable header token rather than Basic or Bearer, sent on every request and on each retry of a call.
What is inside
Built to do the job, end to end.
- Three ATS endpoints. Job openings, departments and countries are shipped as endpoint records under the ATS embedded path, each with page based pagination, the data envelope item path and a shared rate group.
- Job to hr.job mapping. A pull mapping with five lines: title to name, description, requirements, the advertised opening count to the recruitment count, and the department resolved against hr.department by name.
- One pull sync job. A single ATS Jobs pull job binds the openings endpoint, the mapping and hr.job, keys records by the source id and defaults to Employment Hero as the authority on import.
- Shared suite engine. Pagination, retry with backoff, client side rate limiting, idempotent external id linking and per record isolation come from the suite connection and sync modules this add on depends on.
- Configurable data records. Endpoints, mapping lines and the pull job are data you can edit from the interface. The mapping ships with no update so a deployment can tune it without an upgrade overwriting it.
Honest about the edges
What this does not do, so nothing surprises you.
- Pull only. The published embedded ATS API is read only, so this module imports from Employment Hero into Odoo and does not write recruitment data back.
- Job openings only. There is no public candidate or application endpoint in the embedded ATS API, so candidates, applications and pipeline stages are not synced.
- No webhooks for ATS. The ATS surface offers no inbound delivery, so updates arrive when the pull job runs rather than in real time.
- The shipped ATS job runs a full pull by default. Delta mode exists in the engine but needs a source last modified path configured, since the ATS job object is not assumed to carry one.
- Departments are matched to existing Odoo departments by name. Create the department first, or that line is reported as needing attention.
- Requires the suite connection module and stock Community Recruitment. It is not part of the main Employment Hero Suite bundle and is installed separately.
- Built and tested for Odoo 17 Community.
- You supply your own Employment Hero ATS access and token. This module is the integration layer, not the recruitment service.
Employment Hero ATS Odoo, Employment Hero recruitment integration, ATS to hr.job sync, Odoo 17 recruitment connector, Employment Hero job openings import, Odoo recruitment data sync, X_ATS_TOKEN header auth, Employment Hero Odoo suite, hr.job import Odoo, paginated ATS API sync, Odoo Community recruitment add on, idempotent job sync 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 17
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 | 3644 |
| 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