DWPlatform Self-service
Field guide · Employee Self-Service

ESS is the employee's own door into HR.

A separate app tile every member of the tenant can open, where they see exactly one employee file — their own. Balances, requests, payslips, documents, profile. This guide explains what it is, why it is a second tile rather than a tab, and how it refuses to show anybody else's pay.

Updated 26 Jul 2026 Every employee · no role needed Identity resolved from the token Web · tablet · mobile
01 · Orientation

What "Employee Self-Service" actually means

The name is an industry term and it tells a newcomer almost nothing, so start with the plain version: ESS is the app an ordinary employee opens to deal with HR without going through HR. It is a tile on the platform's launcher, next to mail and chat, and everybody in the tenant has it — no role to request, no permission to be granted.

Inside, it does five things and only five. It shows how much leave you have left (رصيد الأجازات). It lets you raise a request and watch where it has got to. It shows your payslips once they are final. It lists your personnel documents and warns you when one is about to expire. And it shows your own employment facts. Everything it displays belongs to the one employee who is signed in — which is what separates it from the HR back office, where a clerk opens other people's files.

الخدمة الذاتية · الرئيسية · العربية
The ESS home screen in Arabic with four cards: leave balance, pending requests, latest payslip and expiring documents
ESS home (الخدمة الذاتية). Four cards, chosen because they are the four questions employees actually ask HR. رصيد الإجازات — how many days do I have, per leave type. طلبات قيد الإجراء — my open requests, each with its number, type, and which stage it is sitting at (here: المدير المباشر, the direct manager). آخر مفردات مرتب — my latest payslip. مستندات على وشك الانتهاء — documents expiring soon. A single طلب جديد button starts anything new. Note the brand line reads الخدمة الذاتية, not الموارد البشرية: this is a different app, not a mode.
Self-service · Home · English
The same ESS home screen in English, left-to-right, with Leave balance, Pending requests, Latest payslip and Expiring documents
The same home in English. Five nav items — Home · My requests · My payslips · My documents · My profile — and every one of them is possessive by design. There is no "Employees" item and no search box, because there is nothing to search: the app is scoped to one person. The pending-request pills read Submitted and In approval; the leave-type names stay Arabic because they are rows the tenant created, not labels the product ships.
02 · Design decision

Why ESS is a second catalog tile, not a tab

Technically, ESS and the HR back office are the same frontend. The catalog simply publishes it twice: once at its root for HR staff, and once pointed at /me for everybody. Two tiles, one codebase. That looks like duplication until you look at who is allowed to open each one.

Tile 1

HR back office

Role-gated. It opens other people's pay, penalties, loans, insurance numbers and termination settlements. Only HR staff should be able to launch it, and most employees should never even see that it exists.

الموارد البشرية · Human Resources
Tile 2

Self-service

Public to every member of the tenant. It opens only the signed-in employee's own file. Gating it behind a role would mean an HR admin has to grant every new joiner permission to see their own payslip.

الخدمة الذاتية · Self-service · /me

One tile could not serve both. A single entry would force a choice between two bad options: gate it, and self-service disappears for the workforce it was built for; open it, and you have advertised an HR admin console to the entire company, with the whole back office hidden only by client-side checks. Hiding a menu in the browser is a courtesy to the user, not a security boundary — the URLs are still there, and anyone can type one. Publishing two tiles makes the boundary an entitlement, decided before the app ever loads.

The visible proof is in the two screenshots above and the ones in the HR field guide: the back office shows six administrative menus over an employee roster; ESS shows five possessive ones over a single file. Same build, different door, different contents.

03 · Security

Whose record is this? Ask the token, never the URL

Every ESS endpoint resolves the employee from the caller's access token. There is no employee id in the path, none in the query string, none in the request body — not as an optional parameter, not as a convenience for testing.

How it resolves

The signed-in user → their person record → their open employment period → that employee's data. Each hop is a server-side lookup. If the signed-in user has no open employment period, the app has nothing to show them, and that is the correct answer rather than an error to be worked around.

Why an id in the URL is fatal

Because /me/payslips/2026-06 and /payslips/2026-06?employee=1041 are not two spellings of the same thing. The second makes "my payslip" one edited digit away from a colleague's — and the only thing standing between them is a server-side check that somebody has to remember to write on every single endpoint, forever. Removing the parameter removes the class of bug.

الخدمة الذاتية › ملفي
The ESS profile screen showing employment facts, with a note that bank, insurance and tax numbers are not displayed
My profile (ملفي الوظيفي) — and what it deliberately leaves out. The employee sees the facts of their employment: employee number, hire date, department, branch, total years of service, status, contract type, job title, probation end. Then the line at the bottom: بيانات البنك والأرقام التأمينية والضريبية لا تُعرض هنا حفاظاً على الخصوصية — bank details and the insurance and tax identifiers are not shown here. They exist in the HR file; they are simply not part of what a self-service screen needs to display, and every identifier rendered on a screen is one that can be shoulder-surfed, screenshotted or logged.
04 · Screen tour

The five screens

الخدمة الذاتية › طلباتي
My requests table with request number, type, description, status and current stage columns
My requests (طلباتي). One row per request, and the two columns that matter are الحالة (status) and المرحلة الحالية (current stage). Status says what the request isمقدّم submitted, قيد الاعتماد in approval. Stage says who is holding it — here, المدير المباشر. Splitting the two is the difference between "it's pending" and "it's pending with your manager", and it removes most of the reason to phone HR. Every request carries a human-readable number (LV-2026-00004) so it can be quoted in a corridor conversation.
الخدمة الذاتية › مستنداتي
My documents listing this employee's contract and national ID with reference numbers and expiry states
My documents (مستنداتي). The same personnel-document register the HR back office keeps — filtered to one person. Reference number, issue date, expiry date, and a state pill: ساري valid, بدون تاريخ انتهاء no expiry (a contract), and an amber warning as an expiry approaches. Showing the employee their own expiry dates is the cheapest possible way to get a renewed ID card handed in on time.
الخدمة الذاتية › مفردات مرتبي
My payslips screen with an empty state explaining that payslips appear after the payroll run is closed
My payslips (مفردات مرتبي). Empty here, and the empty state is the rule written out: تظهر المفردات هنا بعد إغلاق دورة المرتبات — payslips appear once the payroll run is closed. Section 06 explains why that wait is deliberate.
05 · Requests

The request wizard — validate first, route second

Raising a request is three steps: 1. نوع الطلب pick the type · 2. التفاصيل fill in the details · 3. المراجعة review and submit. The interesting design decision is invisible in the screenshot: all validation happens before the request is routed to anybody.

الخدمة الذاتية › طلب جديد
The new-request wizard on step one, offering leave and loan request types
New request (طلب جديد), step 1. Each type is a card with a one-line explanation of what it does, not a bare dropdown value: إجازةrequest leave from your available balance — and سلفةrequest an advance to be deducted from salary in instalments. The step rail across the top stays visible, so the employee always knows there is a review step before anything is sent.

What is checked before submission

CheckApplies toWhat it prevents
Sufficient balanceLeaveRequesting 10 days against a balance of 4
No overlapping leaveLeaveTwo approved absences covering the same day
Casual leave: max 2 days per occasionCasual (عارضة)Using casual leave as a holiday in two-day slices — art. 128
Instalment within 25% of wageLoan (سلفة)Agreeing a repayment the law forbids deducting — art. 114

Why up front and not on approval: approving something the system must then refuse to execute is worse than refusing it at the door — by then the employee has been told yes. They have booked the flights, or spent the advance. A rejection at submission costs someone thirty seconds; a rejection after approval costs trust, and usually produces a manual override that puts the illegal deduction back in by hand. So the wizard refuses to submit what the engine could not apply.

06 · Payslips

Payslips appear only when the run is locked

A payroll run passes through calculation and review before it is locked. Until that moment, ESS shows the employee nothing for that month — not a draft, not a provisional figure, not a greyed-out preview.

Before the lock

The run is still being calculated. An attendance correction, a late loan instalment, a penalty entered a day later — any of these can still move the net. The number is not wrong; it is not yet a number.

After the lock

The figures are the record. The payslip is published with its full audit trace behind it, and any later correction has to appear as a visible adjustment in a subsequent run rather than as a quiet edit.

Showing an unlocked run starts an argument about a number nobody has approved. The employee sees 14,200, HR later corrects it to 13,850, and the conversation is now about why their pay was "cut" — a conversation caused entirely by publishing a working figure. Waiting for the lock costs a day of visibility and saves the entire discussion.

07 · Responsive

On a phone

ESS is the HR surface most likely to be opened on a phone — a leave request is typically raised from a sofa, not a desk — so the phone layout is not an afterthought.

الخدمة الذاتية · 390px
ESS home at 390 pixels: the four cards stack vertically and the nav scrolls horizontally
Home at 390px. The four cards stack in priority order — balance first, then open requests — and the nav becomes a single scrolling row rather than a hamburger, because with only five destinations a menu button would be an extra tap for nothing. Every card keeps its عرض الكل link. The page itself does not scroll sideways.
طلب جديد · 390px
The request wizard at 390 pixels with the two request types stacked and the step rail intact
The wizard at 390px. The type cards stack, the three-step rail survives intact, and التالي / رجوع stay where a thumb reaches. This is the screen that decides whether employees actually use self-service or go back to messaging HR — if raising a leave request on a phone is awkward, they will.

Where the request goes next: ESS owns the form and the validation, but not the approval chain. What happens after إرسال — the stages, the manager's inbox, the send-back, and the moment the effect is actually applied to a balance or a payroll — is covered in HR Requests & Approvals.