v16.17.0
Schniz/fnmv16.17.0Aug 28, 2026by frappe-pr-bot
AI Summary
Frappe HRMS v16.17.0 introduces PostgreSQL support, bulk attendance editing, and improved Expense Claim validation.
Key Highlights
- Supports PostgreSQL for employee reminders and timelines
- Allows bulk editing of Attendance records
- Improves Monthly Attendance Sheet logic
- Adds color indicators to Job Applicant Kanban board
New Features
- Bulk attendance editing
- Job Applicant Kanban board indicators
Full Release Notes
## Bug Fixes * Updates database queries used by employee reminders, **Job Offer**, **Employee** timelines, and the "Unpaid Expense Claim" report to support PostgreSQL databases. It also updates payroll data migration steps for moving tax slabs and assigning departments. (https://github.com/frappe/hrms/pull/5087) * Allows users to edit multiple **Attendance** records at once. When users select "Duplicate" for an **Attendance**, the _Attendance Request_ link is left blank instead of being copied from the original record. (https://github.com/frappe/hrms/pull/5085) * Updates the summarized "Monthly Attendance Sheet" to classify the other half of a half-day as present or absent based on _Status for Other Half_, and count it as leave only when linked to a **Leave Application**; otherwise, it counts as present. (https://github.com/frappe/hrms/pull/5097) * Prevents the "Employee Leave Balance" report from erroring when _Employee_ is blank by limiting results to employees the user can view; when employee access is restricted, it defaults _Employee_ to the logged-in user's record without replacing an existing selection. (https://github.com/frappe/hrms/pull/5112) * Allows the _Expense Account_ and _Payable Account_ fields in **Gratuity** to use either Expense or Liability accounts. (https://github.com/frappe/hrms/pull/5120) * Adds orange, blue, and green indicators to the Replied, Shortlisted, and Accepted columns when a **Job Applicant** Kanban board is created. Updates these columns on the existing "Hiring Pipeline" board with the same indicators. (https://github.com/frappe/hrms/pull/5135) * Fixes an import error that prevents the "Unpaid Expense Claim" report from loading on Frappe v16 by using the public `scrub` API. (https://github.com/frappe/hrms/pull/5127) * Updates **Expense Claim** validation to explain whether a selected **Employee Advance** has a currency mismatch or uses a non-Receivable account, and applies the same checks when the claim is saved. Invalid rows are cleared from the _Advances_ table, and users are told to cancel and recreate the related **Payment Entry** when its account no longer matches. (https://github.com/frappe/hrms/pull/5136) * Prevents an upgrade error when **Expense Claim Advance** does not have the _Payment Entry_ field, while continuing to copy existing values to _Reference Name_ and _Reference Type_ when it does. (https://github.com/frappe/hrms/pull/5153) ## Other Changes * Adds a _Status_ filter next to _Employee_ in the "Monthly Attendance Sheet" report; it defaults to Active and lets users view attendance for Active, Inactive, Suspended, Left, or all employees. (https://github.com/frappe/hrms/pull/5106) * Updates the Check-In panel's "View List" label to use the user's selected language. (https://github.com/frappe/hrms/pull/5117) ## New Contributors * @Ramymurugan made their first contribution in https://github.com/frappe/hrms/pull/5117 **Authors**: @krishna-254, @iamkhanraheel, @akhtarmohsin, @barredterra, @Ramymurugan, @deepeshgarg007, @nareshkannasln **Reviewers**: @deepeshgarg007, @asmitahase, @iamkhanraheel <details> <summary>AI content</summary> For these release notes, we used an LLM (OpenAI gpt-5.6-luna) to review and summarise the code changes, along with the associated issue and PR descriptions. It may contain typical errors and inaccuracies. You can read the prompt [here](https://github.com/barredterra/pretty_release_notes). Changes with the following labels were excluded: - skip-release-notes Changes with the following types were excluded: - chore - docs - ci - style - refactor - build - test </details>