Exit & Full-and-Final Settlement (EXT)
Module code EXT · Release R2 · Packaging Plan tier (Professional+) · Requirements
FR-EXT-*,BR-EXT-*,RULE-EXT-*in the PRD and BRD · Related Core HR, Payroll, Leave, separation and F&F
1. Overview and scope
EXT closes the employment relationship cleanly: the separation request or termination, an agreed last working day (LWD), clearance by every department that holds something, an exit interview, the full-and-final (F&F) settlement computed as a payroll off-cycle run, letters, and automatic access revocation.
In scope: resignation by employee; termination and other separation types (retirement, death, absconding, end of contract) by HR; separation reasons and termination categories; notice period from the lifecycle policy with shortfall, buy-out and waiver; LWD negotiation; clearance tasks with owners (IT, Finance, Admin, manager) using the EMP task engine; exit interview form; F&F worksheet and run; relieving and experience letters; rehire eligibility; attrition data.
Out of scope: gratuity trust administration, PF withdrawal processing (employee does it on the EPFO portal).
2. Learned from the reference product
Source: Spryple analysis, §8 and §17.
- [Observed] The employee raises a separation request (exit date, reason, notes) that can be edited or cancelled before approval (E: Exit).
- [Observed] The HR Manager approves with an approved exit date and reason, or rejects; the reporting manager is skipped (M: Exit).
- [Observed] Offboarding checklists by department end in "No Due" → Completed; termination picks an employee and a category, then a termination checklist (M: Exit).
- [Observed] Backdated termination is allowed within a window (HR rule 37, 0–60 days); notice period is configured in two places (SP-IAM-03; defect D4).
- [Observed] Documentation says rejection changes status "from submitted to approved" (defect D7).
- [Inferred] No F&F, letters, exit interview or access revocation are documented (§8).
3. Our design decisions
| ID | Decision [Proposed] | Reason |
|---|---|---|
| D-EXT-01 | Approval chain: line manager, then HR, through NTF; LWD can be proposed and countered. | The reference skips the manager. |
| D-EXT-02 | Notice rules come from the EMP lifecycle policy; EXT computes shortfall and offers buy-out (recovery) or waiver (approval). | One place for notice. |
| D-EXT-03 | Clearance uses EMP checklist templates of kind OFFBOARDING with owners and evidence. | Reuse the task engine. |
| D-EXT-04 | F&F is a PAY run of type FNF with EXT-supplied inputs; EXT holds the worksheet and approvals. | One calculation engine; statutory consistency. |
| D-EXT-05 | Access is revoked at LWD 23:59 local time automatically; ESS read-only access to payslips and letters can continue for a configurable period. | Security, with employee access to their own documents. |
| D-EXT-06 | Termination backdating is limited by policy and requires a reason; it never edits locked pay runs (creates recoveries instead). | Locked payroll stays immutable. |
4. Domain model
Clearance tasks are emp_task rows with context = SEPARATION. Letters are emp_letter rows with kinds RELIEVING and EXPERIENCE.
5. State machines
5.1 Separation
5.2 F&F settlement
6. Key business logic
noticeShortfall(sep, policy):
required = policy.notice_days for the employee's grade or employment type
served = days between sep.requested_on (or approval date per policy) and approved_lwd
shortfall = max(0, required - served)
treatment = WAIVED (approval) or RECOVER (shortfall * daily rate on the policy base)
fnfInputs(sep):
salary for days worked in the final period (regular run excluded for this employee)
leave encashment = encashable balance (LVE, encashment.at_exit types) * per-day rate
gratuity if service_years >= policy.gratuity.min_years (example 5, verify; Labour Codes
may change eligibility for fixed-term staff):
gratuity = last_basic_da * 15 / 26 * completed_years (6+ months rounds up)
capped at the statutory ceiling (example, verify)
notice pay (employer waived notice and pays in lieu) or notice recovery (shortfall)
bonus or variable pay due, pending reimbursements (CLM), arrears
recoveries: open loans and advances (PAY ledger), claim advances (CLM), asset recovery
amounts from clearance, other deductions
statutory: PF, ESI, PT on applicable earnings ; TDS recomputed for the year
due_date = approved_lwd + policy.fnf_due_days (example 2 working days under the
Code on Wages; verify)
7. Configuration
| Setting | Type | Default | Description |
|---|---|---|---|
separation.types | array of string | resignation, termination, retirement, death, absconding, end_of_contract | Types offered |
separation.backdate_days | integer | 30 | Termination backdating window (reference allows 0–60) |
notice.counted_from | enum | REQUEST_DATE | REQUEST_DATE or APPROVAL_DATE |
notice.allow_buyout | boolean | true | Recovery for shortfall |
notice.waiver_requires_approval | boolean | true | HR approval for waiver |
clearance.template | string | default offboarding | Checklist template |
access.revoke_at | enum | LWD_END | LWD_END or IMMEDIATE (terminations) |
access.ess_read_days | integer | 90 | Read-only payslip and letter access after exit |
fnf.due_days | integer | 2 | Days after LWD (example; verify) |
gratuity.min_years | number | 5 | Eligibility (example; verify) |
exit_interview.enabled | boolean | true | Send the form |
8. Screens by persona
| Persona | Web | Mobile |
|---|---|---|
| Employee | Resign (reason, requested LWD, notes), status and LWD proposals, clearance status, exit interview, F&F statement, letters | Resign, status |
| Line manager | Approve, counter LWD, retention note, own clearance tasks | Approve |
| HR manager | Separation queue, termination, notice treatment, clearance tracker, exit interviews, letters, attrition view | — |
| Clearance owners (IT, Admin, Finance) | Assigned clearance tasks with evidence | Tasks |
| Payroll manager | F&F worksheet, run, approval, payment | — |
9. Events
| Event | Consumers |
|---|---|
ext.separation.submitted | NTF (workflow) |
ext.separation.approved | EMP (NoticePeriod, LWD), LVE (block leave beyond LWD), ATT (end date), FFM (stop tracking at LWD), NTF |
ext.separation.withdrawn, ext.separation.rejected | EMP, NTF |
ext.termination.recorded | EMP, IAM (immediate revoke option), NTF |
ext.clearance.completed | EXT F&F readiness |
ext.lwd.reached | IAM (deactivate), EMP (Separated), ATT, MOB |
ext.fnf.initiated | PAY (create FNF run), LVE (encashment), CLM (settle) |
ext.fnf.approved, ext.fnf.paid | NTF (statement, letters) |
Consumed: pay.run.locked and pay.run.paid (FNF), emp.task.completed (clearance progress).
10. API surface
| Resource | Main operations |
|---|---|
/v1/ext/separations | POST, GET, POST /:id/withdraw, POST /:id/lwd-proposals |
/v1/ext/terminations | POST |
/v1/ext/reasons | CRUD |
/v1/ext/separations/:id/clearance | GET tasks |
/v1/ext/separations/:id/exit-interview | GET, PUT |
/v1/ext/fnf-settlements | POST initiate, GET /:id, POST /:id/calculate, POST /:id/approve |
/v1/ext/separations/:id/letters | POST generate |
Detailed in API endpoints.
11. Permissions
| Permission | Scopes | Default roles |
|---|---|---|
ext.separation.create | SELF | employee |
ext.separation.approve | TEAM, ORG | line_manager, hr_manager |
ext.termination.create | ORG, LOCATION | hr_manager |
ext.notice.waive | ORG | hr_manager |
ext.fnf.prepare | ORG | payroll_manager |
ext.fnf.approve | ORG | finance_admin |
ext.interview.read | ORG | hr_manager (confidential from the line manager) |
ext.reason.manage | ORG | hr_admin |
12. Reports
| Report | Contents |
|---|---|
| Attrition | Separations by type, reason, department, tenure band, month |
| Notice and LWD | Shortfall, waivers, buy-outs |
| Clearance status | Pending tasks by owner |
| F&F register | Settlements, amounts, due date vs paid date |
| Exit interview themes | Aggregated answers |
13. Release and priority
| Capability | Release | MoSCoW |
|---|---|---|
| Resignation and termination with manager and HR approval, LWD | R2 | Must |
| Clearance with owners | R2 | Must |
| F&F worksheet and FNF run | R2 | Must |
| Access revocation at LWD | R2 | Must |
| Relieving and experience letters | R2 | Should |
| Exit interview | R2 | Should |
| Rehire eligibility flag | R2 | Could |
14. Open questions
- Do tenants need F&F before EXT ships in R2 (R1 customers will have leavers)? Interim: an off-cycle run with manual inputs in R1.
- How is gratuity eligibility applied to fixed-term employees under the Labour Codes? Verify and expose as policy.
- Should absconding cases auto-trigger after N days of unexplained absence? The default is a manual HR action with an ATT report.