Employment Hero Singapore
NRIC/FIN and CPF on the employee, encrypted at rest, pulled from Employment Hero.
Store price is USD 175 all-in: installing this also pulls the 4 paid ERP Heritage modules it depends on.
Why this module
Employment Hero Singapore
The two identifiers Singapore payroll needs
Adds NRIC/FIN and CPF Number to the employee record so a Singapore payroll integration has the local statutory identifiers in the place Odoo already expects them, instead of custom fields and one off scripts.
Encrypted at rest, HR users only
Both identifiers are stored as ciphertext and decrypted on read for HR users alone. A database dump carries no clear NRIC or CPF, and a general internal user cannot read either field.
Mapping rows you can tune
The Employment Hero payload keys map to these fields through shipped configuration rows, both pull only. Adjust the source paths to your own payload without a code change or a redeploy.
Day in the life
An employee record comes through from Singapore
The connector fetches an employee from Employment Hero and the sync engine maps it. Because this pack is installed, the Singapore profile is registered and the two extra mapping rows are active, so the NRIC/FIN and the CPF Number land on the employee alongside the standard fields. Each value is encrypted before it is written. An HR user opening the employee form sees the cleartext under the Employment Hero (Singapore) group; a non HR user does not. Run the same sync again and the engine upserts against its external id cross reference, so the record updates in place and never duplicates. Nobody touched code, and the identifiers never sat in the database in clear.
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.
When a payload has no NRIC or CPF value, the mapping row is marked skip if empty, so the engine leaves the existing field untouched rather than blanking it. A record stays valid when a value is absent.
If the encryption key cannot be loaded on read, the field renders a safe placeholder instead of raising or leaking ciphertext, and the pull only mapping never tries to push that placeholder back to Employment Hero.
The included migration reads any old plaintext NRIC and CPF columns from an earlier build, encrypts each value into the new ciphertext column, and drops the clear columns, so an upgrade leaves no identifier behind in the open.
The engine this pack feeds upserts against an external id cross reference, so a second sync of the same employee updates the existing record with the latest Singapore identifiers and never creates a duplicate.
The orchestrator wraps each record in a savepoint, so a write that fails on one employee rolls back only that record and the rest of the batch, including their Singapore fields, still commits.
The NRIC/FIN and CPF fields are restricted to the HR user group at the field level, so a user without HR rights cannot read either identifier on the form or through the ORM.
What is inside
Built to do the job, end to end.
- Two encrypted employee fields. hr.employee gains NRIC/FIN and CPF Number as computed fields over ciphertext columns. Writing a value encrypts it through the suite crypto service; reading decrypts it for HR users only.
- Singapore country profile. A noupdate eh.country.profile record for Singapore with the SG code and a sequence, so the shared engine recognises the country and applies the right local mapping.
- Two pull only mapping rows. eh.mapping.line records bind the Employment Hero payload keys for the NRIC and the CPF account number to the new fields. Both are direction pull and skip if empty, with tunable source paths.
- Form view extension. An Employment Hero (Singapore) group is added to the HR Settings page of the employee form, exposing the two identifiers where HR users expect them.
- PII upgrade migration. A post migration script encrypts any legacy plaintext NRIC and CPF values from an earlier build and removes the old clear columns.
- Automated tests. The pack ships tests that assert the Singapore profile is registered with the correct country and code and that the encrypted identifier field is present on hr.employee.
Honest about the edges
What this does not do, so nothing surprises you.
- This is a country data and field pack only. The connection, the queue, the mapping engine, the webhook receiver and the audited sync runs live in the suite modules it depends on, not in this module.
- Direction is pull only. Employment Hero owns the NRIC/FIN and the CPF number, and this pack reads them into Odoo. It does not push these identifiers back, and there is no two sided conflict resolution for them.
- It does not validate the format of the NRIC, FIN or CPF number. The fields accept what the payload or an HR user supplies; format checking is not performed.
- The shipped mapping source paths reflect a representative Employment Hero payload and are tunable configuration. You may need to adjust them to match the exact keys your account returns.
- It depends on eh_hero_country_base and eh_hero_hr, which in turn pull in the connector and sync engine. It is not a standalone integration and does nothing on its own.
- It does not compute CPF contributions, generate IRAS or CPF filings, or perform any Singapore payroll calculation. It supplies the identifier fields a payroll integration consumes.
Employment Hero Singapore Odoo, NRIC FIN field Odoo, CPF number Odoo HR, Singapore payroll integration Odoo, encrypted employee PII Odoo, Odoo 18 Singapore HR localisation, Employment Hero connector Singapore, Singapore country pack Odoo, HR user restricted fields Odoo, data driven field mapping Odoo, idempotent employee sync Odoo, Odoo Community HR integration
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 employees, departments and payroll bank details into standard Odoo Community HR over the pla...
Inbound webhook receiver for the Employment Hero people and payroll platform on Odoo 18 Community
Real-time fiscalisation of customer invoices and credit notes with the Mauritius Revenue Authority e-Invoicing (E...
The Canada country pack for the ERP Heritage Employment Hero integration
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Employees (hr) |
| Community Apps Dependencies | Show |
| Lines of code | 4167 |
| Technical Name |
eh_hero_country_sg |
| 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