Length of Employment & Leave Grade Allocation Logic
This page explains how the system evaluates the Length of Employment condition and decides which Leave Grade applies when matching an employee against the Employee Entitlement rows of a leave type. For the field list itself, see Leaves > Leave Type Setup.
In short
To decide how many days an employee is entitled to in a given month, the system:
- Counts the employee's months of service from a join date on the profile.
- Reads the employee's leave grade from the profile. This is set manually — it is not derived from length of employment.
- Applies the first Employee Entitlement row whose conditions are all true.
That last point causes most support cases: an employee matches a row only when every condition on it is true, so length of employment can be correct while the grade condition silently fails.
What you set up, and where:
| What | Where | Scope |
|---|---|---|
| Join Date for Leave Entitlement (falls back to Join Date) | Profile > Hire Detail | Per employee |
| Leave Grade rows — a title plus a Start Date | Profile > Assignment > Leave Detail | Per employee |
| Employee Entitlement rows and their conditions | Leaves > Leave Type Setup | Per leave type |
| Cut-off date for new join and Cut-off date for leave grade change | Leave Type Setup > Entitlement History & Planning | Per leave type |
Set them up in that order — create the leave type and its Entitlement History & Planning record first (its From/To Effective Year must cover the years your employees joined), then the entitlement rows, then the profile fields.
Which join date is used
The system reads the employee profile in this order:
- Join Date for Leave Entitlement — Profile > Hire Detail > Dates for Configuration.
- Join Date — Profile > Hire Detail > Join Date & Confirmation, used only when the first is empty.
Only the calendar date is used, so an employee is always counted as joining on the date entered. If both are empty, length of employment is unknown and any row requiring a minimum length of employment will not match.
Join Date is the real hire date used everywhere else in the system; Join Date for Leave Entitlement overrides it for leave only. That override is what handles transfers.
How the length of employment is counted
Length of Employment is entered as a minimum and maximum number of years but evaluated in months of service:
- Minimum = N years → months of service must be greater than
(N - 1) x 12. - Maximum = M years → months of service must be less than or equal to
M x 12. - Leave either side blank when it should not apply — the Employee Entitlement row for long-serving employees has Maximum blank, so it has no upper limit.
The Minimum counts the year the employee is in, not years completed. Minimum 3 means "in their 3rd year or beyond", so it starts matching at month 25 — not month 37. Read it as more than N − 1 years:
Minimum Reads as Starts matching at 1 in their 1st year month 1 2 in their 2nd year month 13 3 in their 3rd year month 25 5 in their 5th year month 49 If you want a row to start only after N completed years, enter Minimum N + 1. For a step-up after 3 completed years (month 37), enter Minimum 4.
To make the Employee Entitlement rows join up with no gap or overlap, set each row's Minimum to the previous row's Maximum + 1 — Maximum 2 is followed by Minimum 3, Maximum 4 by Minimum 5.
The joining month and the cut-off day
Months are counted from the join date up to the month being calculated. Cut-off date for new join decides whether the joining month itself counts:
- Joined on or before the cut-off day — the joining month counts as month 1.
- Joined after the cut-off day — the joining month does not count; counting starts the following month.
The same comparison decides whether leave is allocated for the joining month.
The cut-off day comes from the Entitlement History & Planning record whose From/To Effective Year covers the year of the join date. When Is Cut-off Day Applicable is NO, or no record covers that year, no cut-off applies and the joining month always counts.
With Cut-off date for new join = 15, two employees joining ten days apart stay one month apart for good:
| Month calculated | Joined 10 March 2023 (day 10 ≤ 15) | Joined 20 March 2023 (day 20 > 15) |
|---|---|---|
| March 2023 | 1 month | 0 months |
| March 2024 | 13 months | 12 months |
| March 2025 | 25 months — crosses into Minimum 3 | 24 months — does not |
Which leave grade applies
The grade comes from the Leave Grade table on Profile > Assignment > Leave Detail. You enter a Leave Grade Title and a Start Date per row; End Date is filled in automatically as the day before the next row's Start Date, and the last row stays open-ended:
| Leave Grade Title | Start Date (you enter) | End Date (automatic) |
|---|---|---|
| Grade A | 10 March 2023 | 9 March 2025 |
| Grade B | 10 March 2025 | 9 March 2027 |
| Grade C | 10 March 2027 | open-ended |
Because End Dates follow from the next Start Date, you change when a grade ends by editing the next row.
For the month being calculated, the system resolves the effective grade using the cut-off day for grade changes:
- Start Date day after the cut-off day → the grade starts the month after the Start Date; otherwise it starts in the Start Date's own month.
- End Date day before the cut-off day → the grade ends the month before the End Date; otherwise it ends in the End Date's own month.
- The row whose resulting month range contains the month being calculated supplies the grade.
That cut-off day is Cut-off date for leave grade change on the Entitlement History & Planning record for the relevant year. When it is not applicable, the system uses the day of the month of the employee's join date instead.
The entitlement row's Leave Grade condition is then matched against that grade: IS accepts the selected grades, IS NOT excludes them, and the comparison ignores letter case.
Worked example
Annual Leave, Cut-off date for new join = 15, employee joined 10 March 2023. Day 10 is on or before 15, so March 2023 is month 1.
Entitlement rows on Employee Entitlement:
| Row | Length of Employment (years) | Matches at | Entitled |
|---|---|---|---|
| 1 | Minimum 0, Maximum 2 | up to 24 months | 12 days |
| 2 | Minimum 3, Maximum 4 | 25–48 months | 14 days |
| 3 | Minimum 5 | 49+ months | 16 days |
Grade Start Dates on Leave Detail are set to 10 March 2023, 10 March 2025 and 10 March 2027 so the grade steps up alongside the Employee Entitlement rows. The result:
| Month calculated | Months of service | Row | Entitled |
|---|---|---|---|
| March 2023 – February 2025 | 1–24 | 1 | 12 days |
| March 2025 – February 2027 | 25–48 | 2 | 14 days |
| March 2027 onwards | 49+ | 3 | 16 days |
Since the joining month counts only when the employee joins on or before the cut-off day, changing the cut-off day can shift each step-up by a month. Confirm the boundary month against the real join date before going live.
Transfers from another subsidiary
When an employee transfers in, HR usually wants them to keep a long-serving employee's entitlement and to be able to take leave straight away. Both come from one setting: Join Date for Leave Entitlement. Set it to the employee's original start date and the system counts the full length of employment — the employee is not a new joiner at all, so it matches the intended Employee Entitlement row and receives normal monthly allocation from its first month.
Leave it empty and the system falls back to the transfer date. Using the rows above, an employee with seven years at the previous subsidiary transferring on 20 April 2026 would be month 0 in April 2026: 12 days instead of 16, and because day 20 is after the cut-off day 15, no allocation for April at all.
Setting it up — employee started at Subsidiary A on 1 June 2019, transfers to Subsidiary B on 1 April 2026:
- Join Date = 1 April 2026 — the real hire date, used everywhere outside the Leave module.
- Join Date for Leave Entitlement = 1 June 2019 — the Leave module now counts from here.
- Check an Entitlement History & Planning record covers 2019. The cut-off day is read from the record covering the year of the join date in use — now 2019, not 2026. Easy to miss.
- Add a Leave Grade row on Profile > Assignment > Leave Detail, carrying the Leave Grade Title that the intended Employee Entitlement row expects, with a Start Date whose effective range covers the first month to be calculated.
- Verify: April 2026 should show 83 months of service, counted from June 2019 as month 1 → row 3 → 16 days, the same as a colleague who never moved.
Where the previous leave grade comes from
Nowhere automatic. The system holds no record of a grade the employee held at another subsidiary, and it does not derive one from the length of employment. The Leave Grade table on Profile > Assignment > Leave Detail is its only source, so the grade is whatever HR enters there — the transfer is the point at which someone has to decide which Leave Grade Title the employee should now be on and add the row.
What that means in practice:
- For the entitlement to be right from the transfer onwards, you only need a row whose effective range covers the first month being calculated. A single row starting at the transfer date is enough for that.
- Backdating the first row to 1 June 2019 re-creates the earlier grade history. Do this when the earlier months are themselves being calculated, or when you want the profile to show a complete grade timeline. Since End Date is filled in automatically from the next row's Start Date, entering the historical rows oldest-first produces the full progression.
Confirm this before you backdate. Setting Join Date for Leave Entitlement to 1 June 2019 makes the Leave module treat those earlier months as length of employment. Whether it also allocates leave for them — which could credit several years of leave in one go — is not covered by this page. Test one employee outside production first and check both the entitlement shown and the resulting balance. That result is also what decides whether you need the backdated Leave Grade rows above or just one from the transfer date.
Crediting only part of the previous employment: the field is simply the date the module counts from and need not be a date the employee actually started anywhere. To credit five years at a 1 April 2026 transfer, enter 1 April 2021.
Two things to settle separately. These steps set the entitlement rate, not balances — how an unused balance from the previous subsidiary is carried across is outside this page, so confirm your organisation's handling of opening balances. And because Join Date for Leave Entitlement is one field on the profile, it applies to every leave type; where one leave type should honour the previous employment and another should not, handle that through those leave types' Employee Entitlement rows and Leave Grade conditions.
When the result is not what you expected
| What you see | Most likely cause |
|---|---|
| No entitlement, or only rows without a length-of-employment condition match | Both join date fields are empty, so length of employment is unknown. |
| Two employees who joined in the same month step up in different months | One of them joined after the Cut-off date for new join, so their joining month was not counted as month 1 and counting started the month after. Every milestone for that employee falls one month later, permanently. |
| The entitlement increases about a year earlier than intended | Minimum N means "in their Nth year" — more than N − 1 years — not N completed years. Minimum 3 starts at month 25, just past two years, not month 37. Enter Minimum 4 for a step-up after three completed years. |
| An employee gets no entitlement for a stretch of months, then picks up again later | There is a gap between the Employee Entitlement rows, so nothing matches in between. A row with Maximum 2 (up to month 24) followed by one with Minimum 4 (from month 37) leaves months 25–36 uncovered. Set each Minimum to the previous row's Maximum + 1 — here, Minimum 3. |
| The cut-off day seems ignored | Is Cut-off Day Applicable is NO, or no Entitlement History & Planning record covers the join year. |
| The months of service are right but the days are wrong | The Leave Grade condition is not matching — check the Leave Grade rows on Profile > Assignment > Leave Detail for the month being calculated. |
| A transferred employee is back on the new-joiner Employee Entitlement row | Join Date for Leave Entitlement is empty, so the Join Date was used. |
| A transferred employee has the right months of service but the wrong days | No Leave Grade row covers the month being calculated, or the row carries a grade the intended Employee Entitlement row does not accept. The system has no grade from the previous subsidiary — it must be entered. |
| One employee differs between two leave types | Cut-off days and Employee Entitlement rows are per leave type — compare the two Entitlement History & Planning records. |

