Skip to main content

Training Enrollment Workflow

Last Updated: 2026-02-17 Status: Production


Overview

The Training Enrollment workflow allows the Contractor (ผู้รับเหมา) to submit a list of workers for safety training. The Safety Officer (จป.) reviews the list, can deselect ineligible workers (partial approval), and approves or rejects the enrollment. The system validates workers against blacklist, duplicate enrollment, and booking conflicts automatically.

Prerequisite: None — Training Enrollment is independent and does not require an approved project.


Workflow Overview

Independent Workflow

Training Enrollment does not require an approved project. One active enrollment per contractor. The system validates workers automatically on submit.


Step-by-Step

Step 1: Contractor Fills Training List (กรอกรายชื่อผู้อบรม)

ItemDetails
ResponsibleContractor (ผู้รับเหมา)
StateFill Training List (กรอกรายชื่อผู้อบรม)
Editable documentsTraining Enrollment Form

What the Contractor does:

  1. Open the task from "My Tasks" (งานของฉัน) — or use "Quick Enroll" from Tools > Training Info
  2. Select a training session from the dropdown
  3. Click "Manage List" (จัดการรายชื่อ) to open the worker selection dialog
  4. Select workers to enroll, then confirm
  5. Click "Submit List" (ส่งรายชื่อผู้อบรม) — sends to Safety Officer for review

Available commands:

CommandThaiIconResult
Submit Listส่งรายชื่อผู้อบรมsendSend to Safety Officer for review
CancelยกเลิกblockCancel the enrollment

Validation: Submit is disabled until a training session is selected and at least 1 worker is in the list.


Step 2: Safety Officer Reviews (จป. ตรวจสอบ)

ItemDetails
ResponsibleSafety Officer (จป.)
StateSO Review (จป. ตรวจสอบ)
DocumentsTraining Enrollment Form (read-only, but SO can modify worker selection)
Command buttonsOnly visible when viewing the document (not on the document list)

What the Safety Officer does:

  1. Open the task from "My Tasks"
  2. Review the worker list — the system shows validation indicators (see Validation Rules below)
  3. Optionally deselect workers who should not be enrolled (partial approval)
  4. Choose an action:
    • Approve — enroll the currently selected workers
    • Request Change — send back to Contractor with a reason
    • Reject — reject the entire enrollment with a reason

Available commands:

CommandThaiIconConditionResult
Approveอนุมัติรายชื่อcheck_circleAt least 1 worker selectedEnrolls selected workers → Completed
Request Changeส่งกลับแก้ไขreplaySends back to Contractor with reason
Rejectปฏิเสธรายชื่อblockRejects the enrollment with reason

Step 3: Completed (เสร็จสิ้น)

Once the Safety Officer approves:

  • Selected workers are enrolled in the training session (attendance records created)
  • The Contractor receives an inbox notification
  • All documents become read-only

Partial Approval

The Safety Officer can perform partial approval — approving some workers while excluding others:

ActionDetails
Workers with blocking issuesAuto-deselected, checkbox disabled (cannot re-select)
Workers with warnings onlySelectable (SO can choose to include or exclude)
Manual deselectionSO can deselect any worker before approving
Minimum requirementAt least 1 worker must remain selected to approve

Only the currently selected workers are enrolled when the SO clicks "Approve".


Validation Rules

The system automatically validates each worker in the list:

CheckCategoryVisual IndicatorSelectable?
BlacklistedBlockingRed row, checkbox disabledNo
Already enrolled in sessionBlockingRed row, checkbox disabledNo
Booking conflict (same day)BlockingRed row, checkbox disabledNo
Missing ID cardWarningYellow iconYes
Missing profile photoWarningYellow iconYes
Passed training (not expired)OKGreen rowYes (refresher)

Validation Flowchart

Duplicate Enrollment Prevention


Request Change Reasons

When the Safety Officer clicks "Request Change" (ส่งกลับแก้ไข), they must select a reason:

#Reason (Thai)Reason (English)
1เอกสารผู้ปฏิบัติงานไม่ครบถ้วนWorker documents incomplete
2มีผู้ปฏิบัติงานที่อยู่ใน BlacklistBlacklisted worker included
3รอบอบรมเต็มแล้ว กรุณาเลือกรอบอื่นSession full, please choose another
4ผู้ปฏิบัติงานลงทะเบียนซ้ำDuplicate enrollment detected
5ผู้ปฏิบัติงานมีการอบรมที่ยังไม่หมดอายุWorker training not yet expired
6บริษัทไม่มีสิทธิ์เข้าอบรมประเภทนี้Contractor not authorized
7รอบอบรมถูกยกเลิกแล้วSession has been cancelled
99อื่นๆ (ระบุ)Other (specify)

Rejection Reasons

When the Safety Officer clicks "Reject" (ปฏิเสธรายชื่อ), they must select a reason:

#Reason (Thai)Reason (English)
1บริษัทไม่มีสิทธิ์เข้าอบรมContractor not authorized for training
2ไม่มีโครงการที่เกี่ยวข้องNo associated project
3ละเมิดนโยบายความปลอดภัยซ้ำหลายครั้งRepeated policy violations
99อื่นๆ (ระบุ)Other (specify)

Duplicate Enrollment Block

  • Each contractor can only have one pending Training Enrollment task at a time
  • Attempting to create a second task while one is active shows an error dialog with a link to the existing task
  • Once the pending task is approved, rejected, or cancelled, a new one can be created

All States

StateThai NameDescriptionResponsible
Fill Training Listกรอกรายชื่อผู้อบรมContractor selects workers to enrollContractor
SO Reviewจป. ตรวจสอบSafety Officer reviews and approves worker listSafety Officer
Completedเสร็จสิ้นWorkers enrolled, attendance records created
RejectedปฏิเสธEnrollment rejected by Safety Officer
CancelledยกเลิกCancelled by Contractor

Documents

System-Generated Documents

DocumentDescriptionEditable
Training Enrollment Form (รายชื่อผู้อบรม)Worker list with session selectionContractor edits during "Fill Training List" step

Edit Permissions by State

StateTraining Enrollment Form
Fill Training ListEditable (Contractor)
SO ReviewRead-only (SO can modify worker selection only)
CompletedRead-only
RejectedRead-only
CancelledRead-only

Inbox Notifications

TransitionRecipientNotification
Contractor submits listSafety OfficerNew training enrollment list to review
SO approvesContractorTraining enrollment approved
SO rejectsContractorTraining enrollment rejected
SO requests changeContractorTraining enrollment sent back for changes

Workflow Ecosystem

Training Enrollment is an independent workflow — it does not depend on Project Registration:

Project Registration
│ Approved
├──► JSA Preparation
└──► Tool List Preparation

Training Enrollment (independent)

Test Scenarios

Scenario 1: Submit and Full Approval (Happy Path)

StepActorActionExpected Result
1ContractorCreate "Training Enrollment" taskForm opens with session dropdown
2ContractorSelect training sessionSession details shown
3ContractorClick "Manage List" → select workersWorkers added to list
4ContractorClick "Submit List"Status changes to "SO Review"
5Safety OfficerReview worker listValidation indicators shown
6Safety OfficerClick "Approve"Status "Completed", workers enrolled

Scenario 2: Partial Approval

StepActorActionExpected Result
1–4ContractorSame as Scenario 1List submitted
5Safety OfficerDeselect some workersCheckboxes unchecked
6Safety OfficerClick "Approve"Only selected workers enrolled

Scenario 3: Request Change

StepActorActionExpected Result
1–4ContractorSame as Scenario 1List submitted
5Safety OfficerClick "Request Change" + select reasonStatus returns to "Fill Training List"
6ContractorReceives notification → modifies list → resubmitsStatus back to "SO Review"

Scenario 4: Reject

StepActorActionExpected Result
1–4ContractorSame as Scenario 1List submitted
5Safety OfficerClick "Reject" + select reasonStatus "Rejected"

Scenario 5: Duplicate Enrollment Block

StepActorActionExpected Result
1ContractorCreate enrollment → submit (pending)Task active
2ContractorTry to create another enrollmentError dialog with link to existing task

Tester Checklist

Basics

  • Create a new training enrollment task
  • Select a training session
  • Add workers via "Manage List" dialog
  • Submit list to Safety Officer

Validation

  • Blacklisted workers shown in red, checkbox disabled
  • Duplicate enrollment workers shown in red, checkbox disabled
  • Booking conflict workers shown in red, checkbox disabled
  • Missing ID card / photo shown with yellow warning icon
  • Passed training shown in green (eligible for refresher)

Safety Officer Review

  • Worker list is read-only (cannot add workers)
  • SO can deselect workers (checkboxes)
  • Approve with all workers selected → all enrolled
  • Approve with some deselected → only selected enrolled
  • At least 1 worker required to approve

Request Change & Reject

  • Request Change shows reason dropdown (8 options)
  • Reject shows reason dropdown (4 options)
  • Contractor receives notification for both actions
  • After Request Change, Contractor can modify and resubmit

Duplicate Block

  • Cannot create second enrollment while one is active
  • Error dialog shows link to existing task

Notifications

  • SO receives inbox notification when Contractor submits
  • Contractor receives notification on approve/reject/request change