AttendProWorkforce Documentation
Static docs Changelog
HR-first attendance disputes

Attendance Issue Flow

Deep workflow guide for employee-raised attendance issues such as present-but-marked-absent, with HR triage, manager routing, tenant-admin final approval, and local Mailpit verification.

Employee disputeHR triageManager reviewTenant admin finalMailpit
01 Employee dispute

Employee opens portal attendance, selects the affected date, requests the correct status or times, and explains why the existing record is wrong.

source: employee_dispute
02 HR triage

Users with triage attendance issues validate logs, roster, manager context, or branch evidence before the normal approval path starts.

status: pending_hr
03 Manager review

Manager review happens only after HR accepts triage and only when the employee has an approval manager in the configured workflow.

stage: pending_manager
04 Tenant admin final

Tenant admin approval is the mutation point. The attendance record remains unchanged until this final decision is approved.

status: approved
Primary scenario

Employee Was Present But Marked Absent

This is the HR-first issue path for a real attendance dispute, not a routine missing checkout correction.

P
Employee portal

What the employee submits

Date2026-06-08
Requested statusPresent
Check-in / check-out09:05 / 18:02
ReasonI was in store, but the day shows absent.

The request is saved as employee_dispute, moves to pending_hr, and creates an hr_review approval step.

Q
Correction queue

What HR sees first

08 Jun 2026 Ali Ahmed Head Office / Operations
Attendance Issue
CurrentAbsent
RequestedPresent
StageHR Triage
Accept HR Triage Reject HR Triage

Rejecting HR triage routes the issue to the configured final authority and leaves attendance untouched. Accepting triage sends it into the configured manager or tenant-admin approval path.

Workflow state model

States And Mutation Rules

These values are the operational contract for filters, labels, approvals, notifications, and tests.

Sourceemployee_dispute

Employee-raised issue against an already marked attendance record.

Statuspending_hr

The request waits for HR/attendance triage before normal approval.

Stagehr_review

The approval-step row that records HR accept or reject triage.

Statuspending_manager

Used after HR accepts triage when manager approval is part of the route.

Statuspending_tenant_admin

Final approval queue before any attendance record mutation.

Terminalapproved / rejected

Approved changes attendance; rejected keeps the original attendance record.

Roles and permissions

Who Can Do What

The flow is permission based. It does not require a hard-coded HR role name.

Employee

Submit issue

Can submit date, requested status, requested times, and reason from employee portal attendance.

HR / attendance

Triage first

Needs triage attendance issues. Accepts triage into approval or rejects it with no record change.

Manager

Review after HR

Cannot bypass pending_hr unless also granted the triage permission.

Tenant admin

Final authority

Admin has triage permission by default and remains the final approval before attendance changes.

Operational rules

Review Guardrails

  • HR reject records a triage recommendation and routes the issue to the configured final authority.
  • HR accept only advances the issue; it does not mutate attendance.
  • The HR setting attendance_issue_final_authority chooses employee manager or tenant admin final review.
  • The configured final authority updates or rejects the issue; attendance changes only on final approval.
  • Payroll locks and sensitive duplicate rules still apply to the final attendance mutation.
pending_hrHR validates claimEvidence, roster, branch activity, punch logs.
pending_managerManager confirms contextOnly after HR accepts triage.
pending_tenant_adminTenant admin decidesFinal approval creates the record change.
approvedAttendance updatedReports and payroll read the corrected record.
Notifications and local testing

Mailpit Verification

Use Mailpit locally so triage, approval, and rejection notifications can be checked without sending real mail.

1 Run Mailpit

Start Mailpit with SMTP on 127.0.0.1:1025 and UI on http://127.0.0.1:8025.

2 Configure SMTP

Use the local host and port in settings or env values. See SMTP Setup.

3 Submit and review

Create a present-but-marked-absent issue, accept/reject triage, and confirm the captured emails in Mailpit.

Related docs

Where This Connects

Use the main Attendance page for day view, row save, staged bulk save, Swal/toastr behavior, manual records, and analytics. Use this page when the question is about employee-raised attendance issues and approval routing.

Attendance day screenshot
Attendance day remains the operational screen for row save, staged bulk save, and status review.
Attendance lifecycle graphic
Issue approval protects the attendance to payroll lifecycle by changing records only after final approval.