Contracts is where you keep track of every employee's employment contract: how long it runs, when it started, when it ends, and every renewal since. It warns you about contracts that end in the next 30 days, lists the ones that have already ended, and lets you renew a contract in one step, with an optional new salary.
Use it when you need to answer "whose contract ends this month?", to renew a contract before it lapses, or to see a person's renewal history. HR officers and owners use it weekly. Managers with records access use it before contract-end conversations.
There is no separate contract record in SolaHR. A contract is the set of contract fields on the employee record (start date, end date, period, signed date, contract file), plus the renewals added on top of it. You enter the first contract when you add or edit the employee (see Employees). This screen reads those fields and adds renewals.
Where to find it
- Sidebar: People → Contracts.
- URL:
/contracts. One employee's contract opens at/contracts/{employee}. - From an employee: open the employee in People → Employees and choose the Contracts tab. It shows the same contract data and also has Renew contract.
| Who sees it | Condition |
|---|---|
| Menu item and list | Your role has View warnings, documents, contracts (hr.records.view) and your plan includes Contracts. |
| Renew Contract, Download Contract, Download Identification | Your role also has Manage warnings, documents, contracts (hr.records.manage). |
If your plan does not include Contracts, the page shows Not included in your plan ("This module is not enabled for your organization."). If your role lacks the permission, you see Access denied ("You do not have permission to view this page.").
Screen tour
Header
The page title is Contracts with the subtitle Track employee contracts and renewals. The list has no header buttons. You create contracts on the employee record, and you renew them from a contract's detail page.
Summary tiles
Four tiles sit across the top. They always count the whole organization. Your filters do not change them.
| Tile | What it counts |
|---|---|
| Active | All employees whose employment status is Active, whatever their contract dates. |
| Expiring Soon | Active employees whose contract end date falls between now and 30 days from now. |
| Expired | Employees whose status is contract ended, plus anyone whose contract end date is already in the past. Resigned or terminated people with a past end date are counted too. |
| Renewals This Month | Renewals recorded in the current calendar month, counted by the date you saved them, not by the new start date. |
The Active tile counts every active employee. The Active status filter is narrower: it only shows active employees with no end date or an end date more than 30 days away. So the tile can show a higher number than the filtered list.
Filters
| Filter | What it does |
|---|---|
| Search | Matches the employee's name or employee number. Partial text works, for example EMP-00 or Haddad. |
| Status | All, Active, Expiring Soon or Expired. Leave it on All to show everyone. |
| Contract Period | A labelled box: type a number of months, for example 12 or 24. It shows only contracts with exactly that period. |
Any change to a filter takes you back to page 1.
The list
| Column | Meaning |
|---|---|
| Employee | Name in bold, with the employee number underneath. |
| Contract Period | Contract length, for example 24 Months. Shows — if no period is stored. |
| Start Date | Start of the current contract term. After a renewal, this is the renewal's start date. |
| End Date | End of the current contract term. |
| Status | The employee's employment status badge: Active, contract ended, resigned or Terminated. This is the employee's status, not a contract status. |
| (action) | View opens the contract detail page. |
Rows are sorted by end date, soonest first. Employees with no end date come first. The list shows 15 rows per page, and the pager at the bottom shows the range and total, for example 1–15 of 42.
Every employee appears in the list, including those with no written contract. Their period and dates show —.
Empty state. If nothing matches, you see Nothing here yet — "No records match the current view." Clear the search or set Status back to all.
Contract detail page
Click View on a row. The page heading is the employee's name, with the employee number below it. A breadcrumb leads back to Contracts.
| Area | What it shows |
|---|---|
| Renew Contract (top-right) | Only shown when you have manage permission and the employee's status is Active. |
| Tiles | Start Date, End Date, Contract Period (for example 12 Months) and Salary (current monthly salary on the employee record). |
| Contracts card | The employee's status badge, then Download Contract and Download Identification buttons when those files exist and you have manage permission. |
| Renewal History card | One line per renewal: new start → new end · N Months, followed by the new salary entered with that renewal. It shows — when there have been no renewals, and — for the salary when a renewal kept the old salary. |
Downloads
| Button | Downloads | Shown when |
|---|---|---|
| Download Identification | The ID document uploaded on the employee record (ID document field), saved as identification_<employee number>.<ext>. |
The employee has an ID document and you have manage permission. |
| Download Contract | A legacy contract copy, saved as contract_copy_<employee number>.<ext>. |
Only for older records that still carry a legacy contract copy. |
To download the current Contract file that was uploaded on the employee record or with a renewal, open the employee's Contracts tab and click Download. That also needs manage permission.
If a stored file is missing, the download fails with a "not found" error. Upload the file again on the employee record.
Add the first contract (on the employee record)
The first contract is entered on the employee, not on this screen.
-
Go to People → Employees and click Add employee, or open an employee and click Edit.
-
In the Contract section, tick Has a written contract.
-
Fill in the fields:
Field Required Rules / defaults Notes Has a written contract — Tick box. Leave it unticked if there is no written contract. Saving with it unticked clears the contract file, period and signed date. Contract start No Valid date. Start of the current term. Contract end Yes, when the box is ticked On or after Contract start. For a new employee, also on or after the joining date. Drives Expiring Soon and Expired. Date signed No Valid date. Shown on the employee's Contracts tab. Period (months) No Whole number, 1–120. Hint: Calculated automatically when left empty. For a new employee with a joining date and a period but no end date, SolaHR sets the end date to the joining date plus the period. Contract file No PDF, JPG or PNG, up to 5 MB. Stored privately. Replacing it deletes the old file. ID document (Personal information section) No PDF, JPG or PNG, up to 5 MB. This is the file Download Identification returns. -
Save the employee. The contract now appears on Contracts with its dates.
Renew a contract
You can renew from the contract detail page or from the employee's Contracts tab. Both create the same renewal. Only the employee tab lets you attach a new contract file.
From the Contracts screen
-
Go to People → Contracts. Set Status to Expiring Soon to find the contracts that are due.
-
Click View on the employee.
-
Click Renew Contract (top-right).
-
Fill in the Renew Contract dialog:
Field Required Rules / defaults Notes Contract Period Yes Whole number, 1–120 months. Defaults to 12.Length of the new term. New Start Date No Valid date. Leave it blank to start the day after the current end date. If the employee has no end date, the term starts today. New Salary No Number, 0 or more, two decimals. Fill it in only if the salary changes. Leave it blank to keep the current salary. Notes No Up to 1,000 characters. Stored with the renewal. -
Click Save. You see Updated successfully. The dialog closes and the page reloads.
From the employee's Contracts tab
- Open the employee in People → Employees and choose the Contracts tab.
- Click Renew contract (shown for active employees when you have manage permission).
- Fill in New period (months) (required, defaults to 12), Contract start, New salary (optional), Contract file (PDF/JPG/PNG up to 5MB) and Notes.
- Click Confirm (or Cancel). You see Saved successfully.
What a renewal changes
When you save a renewal, SolaHR does all of the following in one step. If any part fails, nothing is saved.
| What | Result |
|---|---|
| New end date | Start date plus the period in months. For example, start 1 Nov 2026 + 12 months = 1 Nov 2027. |
| Renewal record | Stores the previous start date, end date and period, the new start date, end date and period, the new salary, the contract file, the notes and who renewed it. It appears under Renewal History and on the employee's Renewal history table. |
| Employee contract fields | Contract start, Contract end and Period are replaced with the new term. The original joining date is never changed. |
| Contract file | Replaced only if you attached one (employee tab only). |
| Salary | The employee's salary is replaced only if you entered New Salary. Payroll calculated after this uses the new amount. Payslips and runs already calculated are not changed. |
| Status | If the employee was not Active, they are set back to Active and the change is logged with the reason contract renewal. |
| Counters | Renewals This Month goes up by one. The employee leaves Expiring Soon if the new end date is more than 30 days away. |
Errors you may see
| Message | Cause | Fix |
|---|---|---|
| Field error on Contract Period | Empty, not a whole number, below 1 or above 120. | Enter 1–120. |
| Field error on New Salary | Not a number, or negative. | Enter a positive amount or leave it blank. |
| Field error on Contract file | Wrong type or larger than 5 MB. | Upload a PDF, JPG or PNG under 5 MB. |
| You do not have access to this action. Contact your workspace administrator. | Your role lacks manage permission. | Ask an Owner or SolaHR Administrator. |
| Status not confirmed — "We could not confirm whether the change completed. Check the current status before submitting again." | The connection dropped while saving. | Click Check current status and look at Renewal History before you try again. Otherwise you could add the renewal twice. |
Statuses and lifecycle
Contracts have no status of their own. The screen combines the employee's status with the contract end date:
| Contract state (filter/tile) | Rule | What you can do |
|---|---|---|
| Active (filter) | Employee is Active and the end date is empty or more than 30 days away. | View, renew early, download files. |
| Expiring Soon | Employee is Active and the end date is within the next 30 days. | Renew, or plan the exit (see End of Service). |
| Expired | Employee status is contract ended, or the end date has passed. | View and download. To renew, set the employee back to Active first (see below). |
Employee statuses shown in the Status column:
| Status badge | Meaning | Renew allowed? |
|---|---|---|
| Active | Currently employed. | Yes |
| contract ended | The contract term ran out. A daily check can set this when an active employee's end date has passed. | No. Change the status to Active on the employee first. |
| resigned | Employee resigned. | No |
| Terminated | Employment terminated. | No |
The daily check that sets contract ended does not always run straight away. Until it does, an employee whose end date has passed can still show Active while being counted under Expired. Renew or close the contract once you see it under Expired, rather than waiting for the status to change.
Renew an employee whose contract already ended. Open the employee, change the employment status back to Active (see Employees), then renew. Leave New Start Date blank if the new term should run on directly from the old end date, or enter the actual restart date.
Permissions
| Role | See Contracts | Renew | Download files |
|---|---|---|---|
| Owner | Yes | Yes | Yes |
| SolaHR Administrator | Yes | Yes | Yes |
| Manager-level SolaHR role (default manager permissions) | Yes | Yes | Yes |
| Member-level SolaHR role (default member permissions) | Yes (read-only) | No | No |
| HR Manager, Department Manager, Attendance Recorder, HR Viewer (scoped roles) | No. Records are not part of the scoped presets. | No | No |
Owners can change what each role holds in Team access and Settings. The server checks the permission on every request, so a hidden button cannot be reached by typing a URL.
The contract list covers the whole organization. It is not limited to a manager's departments, which is why scoped roles do not get it.
Worked examples
Example 1 — quick renewal of an expiring contract
Al Noor Trading LLC employs Omar Haddad (EMP-0007, Store Supervisor, Dubai Main) on a 12-month contract from 1 Nov 2025 to 1 Nov 2026, at AED 8,500 a month. On 10 October 2026:
- Mariam (HR officer) opens People → Contracts. Expiring Soon shows
3. - She sets Status to Expiring Soon. Omar is listed with End Date 01 Nov 2026 and status Active.
- She clicks View, then Renew Contract, leaves Contract Period at
12, leaves New Start Date blank, enters New Salary9000, and in Notes types Annual renewal, 6% increase. - She clicks Save and sees Updated successfully.
Result:
| Where | What changed |
|---|---|
| Tiles on the detail page | Start Date 02 Nov 2026, End Date 02 Nov 2027, Contract Period 12 Months, Salary 9,000.00 |
| Renewal History | 02 Nov 2026 → 02 Nov 2027 · 12 Months with 9,000.00 |
| Contracts list | Expiring Soon drops to 2. Renewals This Month rises by one. |
| Payroll | Payroll calculated from now on uses AED 9,000 for Omar. |
Example 2 — a contract that lapsed, renewed with a new term and file
Sara Khan (EMP-0012, Sales Associate) had a 24-month contract from 15 Aug 2024 to 15 Aug 2026. Nobody renewed it in time.
- In September, Contracts → Expired lists Sara. Her status shows contract ended, because the daily check has run.
- On the contract page there is no Renew Contract button, because she is not Active.
- HR opens People → Employees → Sara Khan, changes her employment status to Active with effective date 1 Sep 2026 and the reason Renewal signed late.
- On Sara's Contracts tab, HR clicks Renew contract and enters:
- New period (months)
24 - Contract start
2026-08-16(the new term runs on from the old one) - New salary (optional) blank (she stays at AED 6,200)
- Contract file: the signed scan
sara-khan-2026.pdf(1.2 MB) - Notes: Renewed late; no break in service
- New period (months)
- HR clicks Confirm and sees Saved successfully.
Result:
| Field | Before | After |
|---|---|---|
| Contract start | 15 Aug 2024 | 16 Aug 2026 |
| Contract end | 15 Aug 2026 | 16 Aug 2028 |
| Period (months) | 24 | 24 |
| Salary | AED 6,200 | AED 6,200 (unchanged) |
| Contract file | old scan | sara-khan-2026.pdf |
| Status | Active (set by HR) | Active |
Sara drops off the Expired filter and appears under Active. Renewal History gets one line, with — for the salary because none was entered. The status change and the renewal both appear in the employee's history, and the joining date stays 15 Aug 2024 for service-length calculations.
How it connects
| Screen / app | Connection |
|---|---|
| Employees | Owns the contract fields and files. Its Contracts tab shows the same data plus downloads and Renew contract. |
| Dashboard | Upcoming people events lists Contract expires dates in the next 30 days. |
| Payroll | A new salary entered on renewal becomes the employee's salary for future payroll calculations. |
| End of Service | When a contract is not renewed, settle the employee's end of service there. The original joining date, which renewals never change, is the service start. |
| Documents | Keep visas, Emirates ID copies and other expiring papers in Documents & Communication → Documents. These are separate from the contract file. |
| Reports | Headcount and status reports reflect status changes caused by renewals. |
| Audit Log | Records changes to the employee record. |
Tips and common problems
| Problem | Cause | Fix |
|---|---|---|
| No Renew Contract button | The employee is not Active, or you lack manage permission. | Set the status back to Active on the employee, or ask for Manage warnings, documents, contracts. |
| Download Contract never appears on the contract page | That button is for legacy contract copies only. | Use Download on the employee's Contracts tab for the current contract file. |
| Can't attach a file when renewing from Contracts | The Contracts dialog has no file field. | Renew from the employee's Contracts tab, or attach the file afterwards by editing the employee. |
| An employee's end date has passed but they still show Active | The daily check that sets contract ended has not run yet. | Act on the Expired count. Renew, or change the status yourself. |
| Active tile is bigger than the Active filter result | The tile counts all active employees. The filter excludes contracts expiring within 30 days. | Expected. Add the Expiring Soon count to compare. |
| A person with no contract appears in the list | Every employee is listed, with — for missing dates. | Filter by Status or Contract Period to focus. |
| The renewal started on the wrong day | New Start Date was left blank, so it defaulted to the day after the old end date. | Renew again with the correct start date. Each renewal replaces the current term and adds a history line. |
| Wrong salary entered on renewal | The salary was overwritten on save. | Edit the employee's salary on the employee record. The renewal history keeps the amount you typed. |