Skip to Content

Lesson 5 — Employee identifiers, and the two questions everybody asks

An employee record already carries most of what UAE compliance asks about a person. The Emirates ID, passport, work permit and visa numbers are core fields and have been for a long time. What has been missing is not storage — it is one place to see them together, and an honest answer to the two questions that come up every time somebody looks at an Emirates ID in a system.

The mental model: surfaced, not stored. The UAE IDs group on the employee Work tab shows the Emirates ID number (core identification_id), the passport number, the work permit number, the visa number and the visa expiry. Every one of those is an existing core field; the bridge creates no new employee identity field, and never relabels or restricts a core one beyond what core Odoo already does. It adds real value-registry storage for exactly one identifier: the GPSSA Insurance Number, which has no field of its own anywhere in the suite.

The click path. Open an employee's form, go to the Work tab and find the UAE IDs group. Values entered before the module existed are already there, because they were always on the same fields. In the catalog, four more rows now stand against hr.employee — Emirates ID Number, Passport No, Work Permit No and Visa No — each pointing at the existing core field, never at a new one.

A generic table that used to sit there was removed. Under the group there was once a general registry table, and it went, because its type list was not filtered by holder: it offered company identifiers such as the VAT TRN, the Trade Licence and WPS employer codes on an employee record. A picker that lets you file a trade licence against a payroll clerk is worse than no picker, and removing it is the same discipline that keeps the registry small.

Why the Emirates ID is not validated. No check-digit algorithm for the Emirates ID is published by any UAE authority, and the popular reading that 784-YYYY encodes the holder's year of birth was refuted on the record by a named EIDA official. The row therefore ships with descriptive help text and never a rejecting format. A validator built on a rumour would eventually reject a genuine card, and the person holding that card would be told by your system that their government document is wrong.

Why there is no separate Unified Number field. The Executive Regulations make the Unified Number legally the same thing as the Emirates ID Number, so a separate field would store the same value twice. Worse, it would invite confusion with a different and unrelated immigration reference that some people call by the same name. One field, correctly named, prevents an argument that is otherwise had once a year in every HR department in the country.

The GPSSA Employer Number ships inactive, with an unconfirmed name. GPSSA names no employer identifier on any page this programme could verify, so the row ships inactive and clearly labelled as unconfirmed rather than carrying an invented name that would look authoritative. With the Corporate Tax GIBAN from Lesson 4, that makes two rows the module deliberately refuses to guess at — and both will be switched on the day a primary source settles them, not before.

One honest gap in this release. All Identifiers gains an Employee column, visible only to the Employees / Officer group, so an employee-held registry value is read and set from that generic screen. This release ships no menu entry for it: reaching it needs a saved action or a direct link until the dedicated surface is added. If you are going to enter GPSSA Insurance Numbers regularly, ask your administrator to save that action to a favourite now, before the first payroll cycle needs it.

Worked example. The HR administrator at Marina Ridge Trading LLC opens a new joiner's record, goes to the Work tab, and fills the UAE IDs group from the documents in front of them — Emirates ID number, passport number, work permit number, visa number and visa expiry, in one pass on one tab. The GPSSA insurance number the company was given for that employee is entered on the generic screen, through the saved action the consultant set up in the morning.

The failure mode. "This module did not install even though both dependencies are present." Run -u odoone_uae_identifiers_hr, or upgrade any module, to let Odoo re-evaluate auto_install — it does not always fire immediately on installing an unrelated module. And "a second active GPSSA Insurance Number for the same employee is refused" is the same one-active-value rule from Lesson 4, seen from the employee side: archive the old one first.

Commenting is not enabled on this course.