Lesson 1 — Opt-in by design: nothing changes until you say so
Install the module, read nothing else, and your payroll is exactly what it was yesterday. That is the design, and it is worth understanding before anything else in this course.
The obligation. Federal Decree-Law 33/2021 and Cabinet Resolution 1/2022 govern private-sector employment on the UAE mainland: what counts as the wage, what overtime is worth, how sick and annual leave are paid, and what may lawfully be taken out of a salary. They bind your company whether or not your payroll system has heard of them. Software does not make you compliant. It makes the arithmetic reproducible, the base of every calculation explicit, and the result explicable a year later when somebody asks how a figure was reached. Source: Federal Decree-Law 33/2021 and Cabinet Resolution 1/2022.
The mental model. Opting in is an act you perform on one contract at a time, not a switch you throw for the company. The module's promise is stated plainly in its own guide: an expatriate employee with no configuration produces exactly the payslip they produced before. Installing changes nothing. Setting the company defaults changes nothing on its own. The moment a UAE rule starts applying to a particular person is the moment you set that person's salary structure to UAE Monthly Payroll (Mainland). That single choice is the boundary between before and after, and it sits on the contract where an auditor can see who is in and who is out.
The click path. Install Odoone UAE Payroll from Apps. It depends on the Odoone payroll engine, the End of Service module, the UAE localisation pack and the UAE identifier registry, so those install with it. Open Settings › Payroll and read the UAE section — Lesson 2 goes through it setting by setting. Then, for each employee you are ready to move, open the contract and set the salary structure to UAE Monthly Payroll (Mainland). Nothing else is required to begin.
The worked example. Take a company of 40 employees moving onto UAE payroll in the middle of a year. Because opting in is per contract, the sensible shape of that move is a pilot rather than a switch.
| Month | Contracts on UAE Monthly Payroll (Mainland) | Contracts untouched | What you are testing |
|---|---|---|---|
| Month 1 | 3 | 37 | One employee with overtime, one with a sick absence, one with neither |
| Month 2 | 12 | 28 | A whole department, including the contracts you already know are awkward |
| Month 3 | 40 | 0 | The full run, with two months of reference behind you |
Run each pilot month twice — once on the structure the employee was already on, once on the UAE structure — and compare the two payslips line by line. Every difference should be explainable by a rule in this course. A difference you cannot explain is either a configuration error or something you did not know about your own payroll, and both are far better found in a pilot than in a wage transfer file.
The failure mode. There are two, and they are opposites. The first is the big-bang rollout: 40 contracts moved on the same day, and the first surprise lands on the payslip of someone whose overtime pattern nobody had looked at closely. The second is quieter and worse — assuming the module is protecting an employee you never opted in. A contract still on its old structure is getting no Article 19 overtime, no Article 25 cap and no leave tiers, and nothing on that payslip announces it. When you audit the rollout, audit the salary structure field on every contract, not the list of installed modules.
One installation-time error is worth naming here so you do not misdiagnose it. If a payslip fails with a message about a wrong python condition on a salary rule, that is a payroll engine version problem rather than a UAE rule problem: engine versions before 19.0.1.3.0 hit it on every rule that carries a python condition. Upgrade the Odoone payroll engine and the message goes away.