Skip to main content

Employee lifecycle

This page covers what happens to a member of staff after they join, up to the day they leave: moving them up a grade, moving them between departments or companies, logging a complaint, recording why they left, working out their severance, running an exit checklist, holding an exit interview and settling what is still owed in both directions.

It is written for whoever in HR handles those steps. Each one is a form you fill in and submit, and most of them write something back onto the person's Employee record.

What you probably came here to do​

Where these screens live​

Only a few of these documents have a workspace tile:

  • Tenure workspace (/app/tenure) — Grievance Type and Employee Grievance, plus the Employee Exits report.
  • Recruitment workspace — Appointment Letter and Appointment Letter Template.
  • Payroll workspace — Salary Withholding.

Everything else here has no tile anywhere. Reach it in one of three ways:

  • type the route into your browser, for example /app/employee-separation
  • press Cmd/Ctrl + K and search for the document by name
  • open the person's Employee record and use the Connections tab, where these documents are grouped under Lifecycle and Employee Exit

You need HR User or HR Manager rights, and for several steps System Manager as well. Check Who can do what before your first real exit — as shipped, an HR Manager cannot complete one on their own.

Promote someone​

  1. Go to /app/employee-promotion and add a document.
  2. Pick the employee. Only Active employees are offered in the picker.
  3. Set Promotion Date and check the Company that was fetched in. Employee Name and Department are read-only and come from the Employee record.
  4. In Employee Promotion Details, click Add Employee Property — the usual add-row control is hidden on purpose. Choose a field, see its current value, type the new one, then Add to Details. Repeat for each field you are changing.
  5. If pay is changing, fill Current CTC and Revised CTC in the Salary Currency shown. Revised CTC stays hidden until Current CTC has a value, and Current CTC becomes mandatory once Revised CTC is filled.
  6. Submit.

If you manage to pick someone whose status is Inactive, GARP refuses to save and shows Transactions cannot be created for an Inactive Employee. Someone who is Left or Suspended is not refused, because that check only looks for Inactive.

What you can and cannot change from here. The property dialog lists every Employee field that is visible, editable and not a layout or table field, minus a fixed exclusion list:

  • the naming series and the three name fields
  • Employee Name, Marital Status, Gender and Date of Birth
  • Date of Joining, Status, CTC and Image

Because Status and Date of Joining are excluded, a promotion cannot relieve someone or restate their service length. But Relieving Date is not excluded and can be set from here, so do not treat a promotion as a general-purpose Employee editor.

Two messages you may see while adding rows: adding the same field twice shows Property already added, and a new value equal to the current one shows Nothing to change and adds no row.

What submitting does. Each New value is written to the Employee. On top of that:

  • If Department, Designation or Branch is among the changes, a row is appended to the Employee's Internal Work History starting on the promotion date, and the previous row's To Date is closed the day before.
  • If that table was empty, a first row is seeded from Branch, Designation, Department and the Date of Joining.
  • Revised CTC overwrites Cost to Company (CTC).

Cancelling puts the old values back, deletes the work-history row it created, and restores CTC to Current CTC.

warning

The document refuses to submit with a Promotion Date in the future: Employee Promotion cannot be submitted before Promotion Date. Submit on or after the day it takes effect. And updating CTC does not change what the person is paid — CTC is a reference figure. Create a new Salary Structure Assignment from that date. See Payroll.

The details table is not mandatory on a promotion. A promotion with no rows and only a Revised CTC submits cleanly and updates CTC alone, which is a legitimate way to record a raise without a title change.

Transfer someone to another department or company​

  1. Go to /app/employee-transfer, pick the employee and set Transfer Date.
  2. Add rows with Add Employee Property, as for a promotion — Department, Designation, Reports to, Branch, whatever moves with them. Unlike the promotion table, Employee Transfer Detail is mandatory: at least one row is required.
  3. Leave New Company empty for a move inside PT Maju Jaya. Set it only when the person moves to a different Company on the same site.
  4. Submit. The future-date restriction applies here too: Employee Transfer cannot be submitted before Transfer Date.

With no new company, the Employee is updated in place and the work history extended.

warning

Setting New Company also resets Date of Joining to the transfer date. That affects everything counted from joining — including the Service Years on a later separation, and therefore the severance slab.

Giving someone a second Employee record. Tick Create New Employee Id only if you want one. Submitting then:

  • copies the employee with a fresh name and a blank Employee Number
  • moves the User ID across, unless User ID is itself one of the transferred properties
  • marks the original Left, with the transfer date as Relieving Date

Cancelling is blocked while the new record exists: Please delete the Employee HR-EMP-00099 to cancel this document. Deleting that Employee clears the link automatically, after which the cancel goes through and the original is set back to Active.

note

Re-allocate Leaves on the Employee Transfer does nothing. The field still exists behind the scenes, but it is hidden, so it does not appear on the form and nothing reads it. Move leave balances to the new record with a fresh Leave Allocation — see Leave.

Log and resolve a grievance​

  1. Create your categories in Grievance Type first — the name is the record (you are prompted for it), with an optional description.
  2. In /app/employee-grievance fill Subject, Raised By, Date and Grievance Type. Designation and Reports To are fetched from the person raising it, and the title of the record is the Subject.
  3. Set Grievance Against Party to Company, Department, Employee Group, Employee Grade or Employee, then pick the party in Grievance Against. When the party type is Employee, the picker excludes the person who raised it, so nobody can file against themselves.
  4. Optionally point Associated Document Type and Associated Document at the record concerned. That type picker hides framework areas such as Core, Setup and Website.
  5. Write the Description and save with status Open.
  6. Move to Investigated and fill Cause of Grievance, which becomes mandatory at Investigated and stays mandatory at Resolved.
  7. To close, set Resolved and fill Resolved By (a User), Resolution Date and Resolution Details, all three of which become mandatory at that status, then submit. Employee Responsible is optional throughout.

Submitting at any status other than Resolved or Invalid is refused with Only Employee Grievance with status Invalid or Resolved can be submitted. Discarding a draft sets the status to Cancelled.

HR User and the Employee role can create and edit grievances but not submit them; HR Manager and System Manager can. There is no grievance screen in the self-service app — employees raise them from the desk interface. See Employee self-service.

Run a separation when someone leaves​

Exit reasons and the severance rule are master data. Set them up once before your first separation — see Set up before your first exit.

  1. Build an Employee Separation Template per exit type. Each activity row takes an Activity Name, either a User or a Role (the two fields hide each other), Begin On (Days) and Duration (Days) counted from the start date, a Task Weight and a description. Typical rows: handover document, laptop and access card return, IT account disablement, Finance clearance. Required for Employee Creation is hidden here — it only applies to onboarding.
  2. On the Employee's Exit tab, set Resignation Letter Date. The separation fetches it read-only and uses it as the project's expected start date.
  3. Create an Employee Separation, pick the employee, then pick the template to pull its activities in. Picking a template overwrites the activities table, so choose it before you hand-edit rows.
  4. On the Exit Details tab, set Exit Reason (mandatory, and only Active reasons are offered) and Last Working Day (mandatory). Relieving Date defaults to the last working day as soon as you set it, and is also mandatory. Service Years and Exit Type fill in read-only.
  5. In the Employee Record section, leave Set Employee as Left on Submit ticked unless you are recording a historical exit. Mark as Blacklisted may pre-tick itself from the exit reason; Blacklist Reason becomes mandatory when it is on.
  6. On the Severance tab, pick a Severance Rule (disabled rules are not offered), check the Basis Wage (Monthly) that was fetched in, and type Unused Leave Encashment if UPH should include it. The breakdown fields recalculate on every save.
  7. On the Activities tab, set Separation Begins On. Every task date is calculated from this, not from the resignation date or the last working day.
  8. Tick Notify users by email if you want assignees emailed, then submit.

Dates are checked on every save. Relieving Date cannot be before the Last Working Day. and Relieving Date cannot be before the Date of Joining (2016-01-01). both carry the title Invalid Dates.

Service Years is (days between Date of Joining and Relieving Date, inclusive of both) ÷ 365.25, rounded to two decimals. Joining 1 January 2016 and being relieved on 31 December 2018 gives exactly 3.00.

What submitting does, in order:

  • Creates a Project named Employee Separation : HR-EMP-00042, with the employee's department and company and an expected start date of the Resignation Letter Date.
  • Creates one Task per activity row, subject Activity name : Budi Santoso, with the row's task weight, start date Separation Begins On + Begin On (Days) and end date + Begin On + Duration. Each date is pushed forward day by day until it is not on the employee's Holiday List.
  • Assigns each Task to the named User and to every enabled user holding the named Role, excluding Administrator. Assignment emails go out only if Notify users by email is ticked.
  • Sets Status to Pending. It then follows the project's percent complete: above 0 it becomes In Process, at 100 Completed. Unlike Employee Onboarding there is no Mark as Completed button; close the tasks.
  • If Set Employee as Left on Submit is ticked: sets the Employee's Status to Left, writes Relieving Date and the custom Exit Reason field, copies the reason into Reason for Leaving if that field is empty, and — when blacklisting — sets Blacklisted, Blacklist Reason, Blacklisted On (today) and Blacklisted By (you). An orange alert confirms: Employee Budi Santoso marked as Left with relieving date 30-06-2026.

Cancelling deletes the Project and every Task under it, clears the task links on the activity rows, and reinstates the employee: status back to Active and Relieving Date cleared, but only if the Employee is currently Left with exactly that relieving date. Blacklist fields are cleared too, and the Exit Reason is always unset.

Adding activity rows after submission is allowed — the Activities table stays editable — and saving creates and assigns the new tasks without touching the existing ones.

Issuing letters. A submitted separation grows an Issue Letter menu offering only what the exit reason permits: Surat Keterangan Perhitungan Pesangon, Surat Keterangan Kerja and Surat Keterangan Pensiun. All three are print formats on the Employee Separation, and they print in Bahasa Indonesia by default. The Paklaring is withheld from a blacklisted employee even when the reason allows it. A View menu links to the Employee, the Project and the Task list.

note

The Exit Interview Summary field on the separation is a plain rich-text box. It is not connected to the Exit Interview document, does not fetch from it, and writes nothing back.

How the severance number is produced​

Everything is recalculated from scratch on each save, so changing the exit reason never leaves a stale figure behind. With basis as the Basis Wage:

UP = basis x UP slab months x reason's UP multiplier (only if Entitled to Severance)
UPMK = basis x UPMK slab months x reason's UPMK multiplier (only if Entitled to Severance)
UPH = Unused Leave Encashment (if Include Leave Encashment)
+ (UP + UPMK) x Housing & Medical Percentage / 100 (only if UPH Applicable)
Pisah = basis x Uang Pisah (Months of Wage) (only if Uang Pisah Applicable)
Komp = basis x Uang Kompensasi (Months per Year) x Service Years (only if Uang Kompensasi Applicable)

Total Severance = UP + UPMK + UPH + Pisah + Komp
Total Severance (in words) = the total, in the company's default currency
warning

The Severance Rule's on-screen help text says the basis wage comes from "the employee's active Salary Structure Assignment". That is not what happens. GARP reads the employee's last submitted Salary Slip by start date and adds up the default amount of the earnings rows whose component is listed on the rule. An employee with no submitted Salary Slip gets a basis wage of 0 and a total severance of 0, with no error at all. Type the figure into Basis Wage (Monthly) on the separation yourself whenever the slip does not reflect the agreed upah.

Worked example — PHK, Budi Santoso. Joined 1 January 2016, relieved 1 January 2026, so Service Years is 3654 ÷ 365.25 = 10.00. His last submitted Salary Slip carries Gaji Pokok IDR 6,500,000 and Masa Kerja IDR 500,000, so the basis wage is IDR 7,000,000. Exit reason PHK - Efisiensi Karena Kerugian: entitled, UP multiplier 0.5, UPMK multiplier 1. Ten years falls in the open-ended UP slab (9 months) and the 9-to-12 UPMK band (4 months). HR types IDR 2,800,000 of unused leave into Unused Leave Encashment.

ComponentArithmeticAmount (IDR)
Uang Pesangon7,000,000 × 9 × 0.531,500,000
UPMK7,000,000 × 4 × 128,000,000
UPH2,800,000 + (59,500,000 × 0%)2,800,000
Total Severance62,300,000

A consultant working from the pre-2021 rules would add 15 per cent of UP plus UPMK as housing and medical replacement — IDR 8,925,000, for a total of IDR 71,225,000. The product produces IDR 62,300,000, because the shipped rule sets Housing & Medical Percentage to 0 in line with PP 35/2021. If your PP or PKB still provides the 15 per cent, put 15 in that field.

Worked example — resignation, Sari Dewi. Basis wage IDR 5,200,000, exit reason Mengundurkan Diri (Resign). No UP, no UPMK. Uang Pisah Applicable is on, but the shipped rule sets Uang Pisah (Months of Wage) to 0, so Uang Pisah computes to IDR 0. UPH is on, so her total severance is exactly her unused leave encashment and nothing else. This is the single most common surprise on this screen: a resignation shows a severance total of zero until you put the uang pisah months from your own PP or PKB onto the Severance Rule.

Worked example — PKWT ending, Rina Halim. Joined 1 July 2024, contract ends 30 June 2026: 730 ÷ 365.25 = 2.00 years. Basis wage IDR 4,800,000, exit reason Kontrak Berakhir (PKWT), which pays Uang Kompensasi at 1 month per year. 4,800,000 × 1 × 2.00 = IDR 9,600,000, plus any leave encashment through UPH. That matches the proportional entitlement a practitioner would compute.

warning

Uang Kompensasi multiplies by the fractional Service Years with no floor and no cap. Someone who leaves after five months gets 0.42 months of wage, where PP 35/2021 sets a one-month minimum service before any compensation is due. And because Service Years is rounded to two decimals before anything else happens, a contract of 729 days becomes 2.00 — so 1 year and 364 days pays two full months. Check the Service Years figure before you submit anything near a boundary.

note

Service Years Calculation changes less than it looks. Because every slab bound in the shipped rule is a whole number, truncating 10.4 to 10 lands in exactly the same UP and UPMK band. The setting only changes the answer for Uang Kompensasi, which multiplies by the number directly. Set it to Completed Years if you want PKWT compensation counted in whole years.

warning

The severance total is display and print only. It is not posted to any account, does not create a Salary Slip or an Additional Salary, and is not carried into the Full and Final Statement. To actually pay it, add a Payables row to the settlement by hand against your severance expense or payable account, or process it through payroll as an Additional Salary. Nothing in the product does this for you, and nothing withholds PPh 21 Pasal 21 final on severance.

Hold an exit interview​

  1. Set the Relieving Date on the Employee first. Without it you get Please set the relieving date for employee HR-EMP-00042 under Relieving Date Missing the moment you pick the employee, and the same check runs again on save.
  2. Create the interview, set status Scheduled, and fill Date and Interviewers; both become mandatory at that status. Interviewers is a multi-select of Users. Department, Designation, Reports To, Date of Joining and Relieving Date are fetched read-only from the Employee.
  3. To send a questionnaire, first create a Web Form for it and set Exit Questionnaire Web Form in HR Settings (/app/hr-settings), on the Tenure tab under Employee Exit Settings. The Exit Questionnaire Notification Email Template ships with the product and is already selected in Exit Questionnaire Notification Template, so the web form is normally the only thing missing. Without both, the send fails with Please set Exit Questionnaire Web Form and Notification Template in HR Settings. under Settings Missing.
  4. Click Send Exit Questionnaire. It goes to the employee's User ID, falling back to Personal Email and then Company Email — the Preferred Email field is not consulted — and ticks Questionnaire Email Sent so it cannot be sent twice. A summary popup lists what went out. The list view also has a Send Exit Questionnaires bulk action for checked rows. Link the response back through Reference Document Type and Reference Document Name.
  5. Write the Interview Summary, set status Completed, choose a Final Decision of Employee Retained or Exit Confirmed (mandatory at Completed), and submit. Submitting at any other status is refused with Only Completed documents can be submitted.

Only one non-cancelled interview is allowed per employee. A second one is refused with Exit Interview HR-EXIT-INT-00003 already exists for Employee: HR-EMP-00042.

Submitting writes the interview Date into the Employee's Exit Interview Held On field. Cancelling clears that field and sets the interview's status to Cancelled; discarding a draft also sets it to Cancelled.

warning

The summary popup is meant to name any employee who has no email address at all. A bug in that summary means a send which reaches such an employee fails with an error instead of listing them. Check that leavers have an email address on file before you use the bulk action.

Complete a full and final settlement​

  1. With a Relieving Date on the Employee, open /app/full-and-final-statement, pick the employee and set a Transaction Date. Without a relieving date the document refuses to be created: Set Relieving Date for Employee: HR-EMP-00042, and on every later save Please set Relieving Date for Employee HR-EMP-00042 under Missing Relieving Date.
  2. Saving prefills Payables with placeholder rows for Gratuity, Expense Claim, Bonus (referencing Additional Salary) and Leave Encashment, plus a row for every Salary Slip with status Withheld at its net pay, flagged Paid via Salary Slip. Receivables gets an Employee Advance row, and a Loan row only if the lending app is installed. The prefill runs once, when the document is first created, and only into tables that are still empty.
  3. On each row that applies, pick the Reference Document. The picker is limited to non-cancelled documents of that type for this employee and company, in the HR, Payroll and Loan Management modules. Account and Amount are then fetched from the reference:
    • Expense Claim — the unreimbursed balance (grand_total − reimbursed − advances)
    • Employee Advance — the unrecovered part (paid − claimed − returned)
    • Gratuity — its payable account and amount
    • Leave Encashment — the encashment amount, against the company's default payroll payable account
    • Salary Slip — its net pay, against the payroll payable account of its Payroll Entry
  4. Assets Allocated fills from submitted Asset Movement Item rows where the employee received an asset more times than they returned it, at the asset's total cost. Set each row's Action to Return and its Status to Returned once the item is back, or to Recover Cost with a Cost and an Account, which is added to Total Receivable Amount and gets an auto-generated description.
  5. Delete the placeholder rows that do not apply and set every remaining Payables and Receivables row to Settled. Submission is blocked while any row is Unsettled (Settle all Payables and Receivables before submission, title Unsettled Transactions) or any Return row is still Owned (All allocated assets should be returned before submission, title Pending Asset Returns, listing the rows).
  6. Submit, then click Create Journal Entry. You get an unsaved draft Bank Entry dated today: one debit per payables row, one credit per receivables row, one credit per Recover Cost asset, and a balancing line carrying a reference back to the statement. Rows flagged Paid via Salary Slip are left out, since payroll pays them. Expense Claim, Gratuity and Leave Encashment payables and Employee Advance receivables get a party of Employee.
  7. Check the accounts and submit the entry. The statement's Status flips from Unpaid to Paid, and linked Gratuity and Leave Encashment documents have their paid amount and status updated. Cancelling the entry flips everything back.

Worked example — Budi Santoso. Payables: an unreimbursed Expense Claim of IDR 1,250,000, a Withheld Salary Slip at net IDR 6,300,000, and a hand-added severance row of IDR 62,300,000. Receivables: an unrecovered Employee Advance of IDR 2,000,000, and a laptop set to Recover Cost at IDR 4,500,000. Total Payable Amount is IDR 69,850,000; Total Asset Recovery Cost is IDR 4,500,000; Total Receivable Amount is IDR 6,500,000. The balancing line is 69,850,000 − 6,500,000 = IDR 63,350,000 credited.

warning

That draft Journal Entry does not balance. The debits skip the withheld Salary Slip row but the balancing figure still includes it, so the entry is short by exactly IDR 6,300,000 and Journal Entry will refuse to submit. Delete the Paid via Salary Slip rows from Payables before you submit the statement — they are informational, and payroll pays them — or correct the draft entry by hand. The balancing line also comes through with no Account: pick your bank or cash account on it before submitting.

warning

The Gratuity placeholder row expects an existing Gratuity document calculated from a Gratuity Rule with slabs you define — a separate, older mechanism from the Severance Rule described above, and one with no Indonesian defaults. For an Indonesian exit, ignore the Gratuity row, delete it, and enter the severance from the Employee Separation as a plain payables row against your own account.

The statement can be submitted only by HR Manager, and no role can amend it. Cancelling is possible for HR Manager; discarding a draft sets its status to Cancelled.

Holding a leaver's salary. Salary Withholding (/app/salary-withholding) holds a leaver's salary for a number of payroll cycles. Slips it covers get status Withheld and are pulled into the settlement automatically.

Issue an appointment letter​

  1. Create an Appointment Letter Template with an Introduction, a Terms table of title and description rows, and Closing Notes.
  2. Create an Appointment Letter against a Job Applicant.
  3. Pick the template to copy its introduction, terms and closing notes into the letter, then edit the copy.
  4. Print it with the Standard Appointment Letter format.

Only HR Manager and System Manager have any access to these two records. The letter writes nothing to any Employee record and is not linked to Employee Onboarding. It appears in the Recruitment workspace, not Tenure. See Recruitment.

Report on exits​

Employee Exits is the only report covering this area. Open it with Cmd/Ctrl + K or from the Reports card on the Tenure workspace; System Manager, HR Manager and HR User can run it.

It lists every Employee with a relieving date, joined to their non-cancelled Exit Interview and Full and Final Statement, with columns for Exit Reason, Blacklisted, Interview Status, Final Decision and the settlement name.

Filters:

  • the usual date range, company and department
  • three checkboxes that drive the daily work — Exit Interview Pending, Exit Questionnaire Pending and FnF Pending
  • Blacklisted Only, and a filter on Exit Reason

A donut chart splits Retained against Exit Confirmed against Decision Pending, and a summary bar counts total resignations, interviews pending and settlements pending.

It reads the Employee record, not the Employee Separation, so an exit recorded by setting Status to Left by hand still appears — just with no Exit Reason. There is no report on severance amounts; the totals live only on the individual separations.

What ships and what you must build yourself​

Read this before you promise anyone statutory compliance.

Shipped, ready to use.

  • The PP 35/2021 UP and UPMK slab tables.
  • Fourteen keterangan keluar reasons with their multipliers and article references.
  • The UPH, Uang Pisah and Uang Kompensasi mechanics.
  • The blacklist fields on the Employee.
  • Three Indonesian print formats in Bahasa Indonesia: Surat Keterangan Kerja (Paklaring), Surat Keterangan Perhitungan Pesangon with a full component breakdown and the total terbilang, and Surat Keterangan Pensiun.

Not shipped. You or your consultant must build these.

  • There is no Indonesian regional module at all — the product ships regional modules for India and the United Arab Emirates only.
  • Nothing calculates or withholds PPh 21, including the Pasal 21 final rates on severance, and no bukti potong is produced.
  • Nothing calculates BPJS Kesehatan or BPJS Ketenagakerjaan, or reconciles the JHT and JP balances a leaver claims. The only BPJS artefact in the product is a BPJS TK deduction Salary Component created by a proof-of-concept patch, with the formula (2 * (GP + TMK)) / 100.
  • THR has no document, no job and no field.
  • PKWT length is not modelled beyond Contract End Date on the Employee. Nothing warns you a contract is expiring, and nothing counts extensions against the statutory maximum.
  • Notice periods are a plain Notice (days) number that no validation reads.

So your payroll consultant builds the tax and BPJS components as Salary Components with formulas, and severance is calculated here but paid through a settlement row or an Additional Salary you gross up yourself. See Tax and benefits and Payroll.

Set up before your first exit​

This is master data and configuration. Do it once, before the first separation.

  1. Grievance Type records for the categories you actually track.
  2. Review the fourteen shipped Employee Exit Reason records against your PP or PKB. Deactivate the ones you will never use so the separation picker stays short. The full field list is under Employee Exit Reason fields.
  3. Open the Severance Rule Pesangon PP 35/2021 and set Uang Pisah (Months of Wage) — it ships at 0, which makes every resignation compute to zero. Confirm Applicable Earnings Component lists the components that really make up upah on your slips, and set Housing & Medical Percentage if your PP still provides it. The full field list is under Severance Rule fields.
  4. One Employee Separation Template per exit type, with realistic day offsets.
  5. HR Settings, Tenure tab: an Exit Questionnaire Web Form, if you send questionnaires. The notification template is already set.
  6. Submit and print rights checked in Role Permissions Manager for Employee Separation, Exit Interview and Full and Final Statement — as shipped, none of them can be completed by an HR Manager alone. See Who can do what.
  7. Accounts in place for expense claims, employee advances, severance and payroll payables, so settlement rows fetch something sensible. See Accounting.
  8. Assets assigned through Asset Movement, if company property should appear on the settlement automatically.
  9. At least one submitted Salary Slip per employee before you rely on the automatic basis wage.
note

The severance rule is installed by a patch that needs the Gaji Pokok and Masa Kerja Salary Components to exist first. On a site where those components were never created, the patch prints a message and skips — you will find no Severance Rule at all. Create the components, then build the rule by hand at /app/severance-rule.

Field reference, permissions and edge cases​

Everything below is detail. You can stop reading here unless you are setting this area up, checking a number, or working out why something was refused.

The records this area uses​

  • Employee Promotion (/app/employee-promotion) — a form you fill in and submit, numbered HR-EMP-PRO-.YYYY.-.#####, that writes a set of field changes onto the Employee on a given date.
  • Employee Transfer (/app/employee-transfer, numbered HR-EMP-TRN-.YYYY.-.#####) — the same mechanism, plus the option to move someone to another Company or issue them a new Employee record.
  • Employee Property History — the table inside both of those forms, one row per field changed, holding Property, Current and New. Every column is read-only; rows are added through a dialog. It has no list of its own.
  • Employee Grievance (/app/employee-grievance, HR-GRIEV-.YYYY.-.#####) and Grievance Type (/app/grievance-type) — a case record for a complaint, with investigation and resolution fields.
  • Employee Exit Reason (/app/employee-exit-reason) — the keterangan keluar master. It decides whether severance is owed, at what multiplier, and which letters may be printed. Fourteen records ship pre-built.
  • Severance Rule (/app/severance-rule), with its Severance Rule Slab and Severance Applicable Component tables inside — the PP 35/2021 slab tables and the definition of the basis wage. One rule, Pesangon PP 35/2021, ships pre-built.
  • Employee Separation Template (/app/employee-separation-template) and Employee Separation (/app/employee-separation, HR-EMP-SEP-.YYYY.-.#####) — the exit document. It carries the exit reason, the severance calculation, the blacklist flag, and a checklist of Employee Boarding Activity rows that becomes a Project with assigned Tasks, mirroring Employee Onboarding.
  • Exit Interview (/app/exit-interview, HR-EXIT-INT-) — one per employee, with interviewers, a summary, an optional emailed questionnaire and a Final Decision.
  • Full and Final Statement (/app/full-and-final-statement, HR-FNF-.YYYY.-.#####) — the settlement: Full and Final Outstanding Statement rows for payables and receivables, Full and Final Asset rows for company property, and a Journal Entry to pay the balance.
  • Salary Withholding (/app/salary-withholding) — holds a leaver's salary for a number of payroll cycles. Slips it covers get status Withheld and are pulled into the settlement automatically.
  • Appointment Letter (/app/appointment-letter) and Appointment Letter Template (/app/appointment-letter-template) — a printable letter, filed under Recruitment and keyed to a Job Applicant rather than an Employee.

How the pieces fit together​

Employee (status Active)
|
+-- Employee Promotion -> Employee fields, Internal Work History, CTC
+-- Employee Transfer -> Employee fields, Internal Work History, Company
+-- Employee Grievance -> nothing on the Employee record
|
Employee Exit Reason + Severance Rule (master data, set up once)
|
v
Employee Separation
+-- calculates UP / UPMK / UPH / Uang Pisah / Uang Kompensasi (display only)
+-- creates Project + one Task per activity
+-- sets Employee status Left, Relieving Date, Exit Reason, blacklist flags
+-- prints Surat Keterangan Kerja / Pesangon / Pensiun
|
+-- Exit Interview -> writes Exit Interview Held On
+-- Full and Final Statement -> Journal Entry (Bank Entry) -> Status Paid

Two documents flip the Employee to Left for you:

  • an Employee Separation with Set Employee as Left on Submit ticked, which is the default
  • an Employee Transfer with Create New Employee Id, which relieves the record it replaces

Setting the status by hand on the Employee still works. It is refused unless a Relieving Date is set and no Active employee still reports to that person. The same check fires inside the separation, so a separation submit fails with The following employees are currently still reporting to Budi Santoso: under the title Cannot Relieve Employee if you have not moved his reports first.

warning

Saving an Employee whose status is not Active disables the linked User record. Relieving someone through a separation therefore locks them out of the desk and the self-service app on the spot, not on the relieving date. Cancelling the separation sets the status back to Active and re-enables the user.

Who can do what​

Shipped permissions, before you change anything in Role Permissions Manager (/app/permission-manager).

DocumentCreate and writeSubmitCancelAmend
Employee PromotionHR User, HR ManagerHR User, HR ManagerHR ManagerHR Manager
Employee TransferHR User, HR ManagerHR User, HR ManagerHR ManagerHR Manager
Employee GrievanceHR User, HR Manager, Employee, System ManagerHR Manager, System ManagerHR Manager, System ManagerHR Manager, System Manager
Employee Exit ReasonHR Managernot submittable——
Severance RuleHR Managernot submittable——
Employee Separation TemplateHR Manager, System Managernot submittable——
Employee SeparationHR User, HR Manager, System ManagerSystem Manager onlySystem Manager onlySystem Manager only
Exit InterviewHR Manager, System Managernobodynobodynobody
Full and Final StatementHR User, HR Manager, System ManagerHR Manager onlyHR Manager onlynobody
Appointment Letter and TemplateHR Manager, System Managernot submittable——

The Employee role can read promotions and transfers, and can raise and edit its own grievances but not submit them. HR User has read-only access to Employee Exit Reason, Severance Rule, Employee Separation Template and Exit Interview, and none at all to the appointment letters.

warning

Three rows above stop a real exit on day one. Employee Separation submits only for System Manager, so an HR Manager can prepare a separation but not relieve anybody — and HR Manager has no print right on it either, so the three Indonesian exit letters will not open for the person who issues them. Exit Interview has no submit permission for any role. Full and Final Statement submits only for HR Manager, and no role can amend it. Grant what you need in Role Permissions Manager first.

Employee Exit Reason fields​

Employee Exit Reason answers "why did they leave, and what does that entitle them to".

FieldAcceptsEffect
Reason Nametext, uniqueThe record name, shown on the Employee and in the Employee Exits report
Exit TypeResign, PHK, Pensiun, Kontrak Berakhir, Meninggal DuniaA filter and a label only; it drives no calculation
Activecheck, default onInactive reasons disappear from the Employee Separation picker
Entitled to Severancecheck, default offOff means no UP and no UPMK, whatever the slabs say
Uang Pesangon (UP) Multiplierfloat, 2 dpMultiplies the UP slab. 0.5, 1, 1.75 or 2 per PP 35/2021
UPMK Multiplierfloat, 2 dpMultiplies the UPMK slab, normally 1
UPH Applicablecheck, default onTurns on Uang Penggantian Hak
Uang Pisah Applicablecheck, default offPays the separation-pay months from the Severance Rule
Uang Kompensasi (PKWT) Applicablecheck, default offPays contract compensation instead of severance
Issue Surat Keterangan Perhitungan PesangoncheckAdds the letter to the Issue Letter menu on a submitted separation
Issue Surat Keterangan Kerja (Paklaring)checkSame, but suppressed for a blacklisted employee
Issue Surat Keterangan PensiuncheckSame
Suggest BlacklistingcheckPre-ticks Mark as Blacklisted when this reason is chosen; HR can untick it
Regulation ReferencetextFree text, e.g. PP 35/2021 Ps. 43. Printed nowhere; documentation for whoever maintains the record

Three checks run when you save a reason:

  • A negative multiplier is refused with Uang Pesangon (UP) Multiplier cannot be negative. under the title Invalid Multiplier.
  • If Entitled to Severance is ticked but both multipliers are zero: Set a UP or UPMK multiplier, or untick Entitled to Severance under the title Nothing to Calculate.
  • If the pesangon letter is ticked on a reason with no entitlement: Surat Keterangan Perhitungan Pesangon cannot be issued for a reason that is not entitled to severance under Letter Not Applicable.

Unticking Entitled to Severance silently zeroes both multipliers rather than erroring.

Fourteen reasons ship with the product, already carrying PP 35/2021 multipliers:

ReasonUP ×UPMK ×Also paysLetters
Mengundurkan Diri (Resign)——Uang PisahPaklaring
Pensiun1.751—Pesangon, Paklaring, Pensiun
Meninggal Dunia21—Pesangon
Kontrak Berakhir (PKWT)——Uang KompensasiPaklaring
PHK - Efisiensi Mencegah Kerugian11—Pesangon, Paklaring
PHK - Efisiensi Karena Kerugian0.51—Pesangon, Paklaring
PHK - Perusahaan Tutup Karena Rugi0.51—Pesangon, Paklaring
PHK - Perusahaan Tutup Bukan Karena Rugi11—Pesangon, Paklaring
PHK - Perusahaan Pailit0.51—Pesangon, Paklaring
PHK - Pengambilalihan Perusahaan11—Pesangon, Paklaring
PHK - Sakit Berkepanjangan / Cacat21—Pesangon, Paklaring
PHK - Mangkir 5 Hari Berturut-turut——Uang Pisahnone, blacklist suggested
PHK - Pelanggaran Berat——Uang Pisahnone, blacklist suggested
PHK - Tindak Pidana——Uang Pisahnone, blacklist suggested

A dash in the multiplier columns means Entitled to Severance is off. UPH is applicable on all fourteen, and each record carries its PP 35/2021 article in Regulation Reference.

warning

Review the multipliers against your own PP or PKB before you use them. They are ordinary data an HR Manager can edit, not rules built into the product.

Severance Rule fields​

Severance Rule holds the slabs and defines the money the multipliers apply to.

FieldDefaultEffect
Rule Name—Unique; the record name
CompanyblankNot filtered on anywhere; informational
DisabledoffDisabled rules are hidden from the separation picker, and choosing one anyway throws Severance Rule Pesangon PP 35/2021 is disabled
Service Years CalculationExact (Fractional)Completed Years truncates masa kerja to a whole number before the slab lookup
Applicable Earnings Component—Mandatory. The earnings components that make up the monthly basis wage
Uang Pesangon Slabs9 rowsMandatory; at least one row
UPMK Slabs8 rowsOptional
Include Leave EncashmentonAdds Unused Leave Encashment from the separation into UPH
Housing & Medical Percentage0Percentage of UP + UPMK added to UPH
Uang Pisah (Months of Wage)0Months paid where severance does not apply
Uang Kompensasi (Months per Year)1Months of wage per year of PKWT service

Each slab row is From (Year) inclusive, To (Year) exclusive, and Months of Wage. A final row with To (Year) of 0 is open-ended. Rows are read top to bottom and the first match wins, so GARP refuses to save a rule with a gap or an overlap. The messages are:

  • Uang Pesangon Slabs row 3: From (Year) must continue from the previous row's To (Year) (2.0) under Slabs Must Be Contiguous
  • Uang Pesangon Slabs row 3: To (Year) must be greater than From (Year) under Invalid Slab
  • Uang Pesangon Slabs row 3: an open-ended slab must be the last row
  • with no Uang Pesangon slabs at all, Add at least one Uang Pesangon Slab row under Missing Slabs

The shipped rule Pesangon PP 35/2021 carries UP slabs of 1 month for the first year rising to 9 months from 8 years onwards, and UPMK slabs starting at 3 years with 2 months, then 3, 4, 5, 6, 7 and 8 months in three-year bands, jumping to 10 months from 24 years. Masa kerja below 3 years matches no UPMK slab and correctly returns zero. Its Applicable Earnings Components are Gaji Pokok and Masa Kerja, and Housing & Medical Percentage is deliberately 0 because PP 35/2021 dropped the old 15 per cent housing and medical replacement.

Nothing here runs on a schedule​

No background job advances a separation, chases an exit interview, ages a grievance or creates a settlement. Every step is a person clicking a button.

Two nightly jobs sit close enough to matter:

  • A job that runs each night drafts a Leave Encashment when a Leave Allocation expires, but only if Auto Leave Encashment is on in HR Settings, and only on allocation expiry. It will not produce the encashment figure for someone leaving mid-period, so Unused Leave Encashment on the separation is a number you type. (The job is hrms.hr.utils.generate_leave_encashment, in the daily_long queue.)
  • The daily birthday and work-anniversary reminders read the Employee list and skip anyone whose status is not Active, so relieving someone stops their reminders immediately. (hrms.controllers.employee_reminders.send_birthday_reminders and send_work_anniversary_reminders.)