Path 00 → 16
Three tracks
Development
- 01 Tables · SI · BR · CS · UI
- 03 Catalog · 04 Portal · 05 Workspace
- 08 ATF · 09 Flow · 12 REST · 15 Scripts
Administration
- 02 Roles · Groups · ACLs · Properties
- 06 Events · Notifications · Jobs
- 07 Reports · Dashboards
Implementation
- 00 Plan · 10 Cutover · UAT
- 13 Summary · 16 Master path
- Modules access map below
End-to-end leave lifecycle
EMPCatalog / Form
→BR1Days+Approver
→SUBState=submitted
→EVTeventQueue
→FLOWAsk Approval
→APRapproved
→BR3Audit+Balance
→MAILNotify
Form
Related · Audit
Related · Balance
UI Action Submit
NumberHRL0001001
Requested foremployee1
Typeannual
Start / End2026-06-01 → 2026-06-05
Days5 ← BR1 before
Approvermanager1 ← from employee.u_manager
Statesubmitted
Screen — core form after Submit. Days and Approver must already be filled by BR1.
Module access map — who opens what
Studio
Developers create artefacts
Open Studio →Roles
Admin grants via groups
Open roles →ACLs
Elevate security_admin
Open ACLs →Employee Center
Catalog intake for employees
Open ESC →Portal hrlx_home
My leaves + balance
Open portal →Flow Designer
Ask For Approval
Open flows →My Approvals
Manager queue
Open approvals →Reports
Leave by state
Open reports →REST Explorer
POST /leave test
Open API →Update Sets
Capture + promote
Open sets →ATF
Automated proof
Open ATF →AI Agent Studio
Only after E2E green
Open AI →Best practices wall (whole programme)
✓ Application picker = HR Leave
✓ Update Set current before New
✓ u_* on *_v2 tables
✓ BR1 before · order 100/200/250/300
✓ Roles via groups only
✓ Test as employee1 real login
✓ Groups exported separately
✓ ATF on target before UAT
✗ Global scope for app files
✗ Admin-only testing
✗ current.update() in BR
✗ Portal before ACLs
✗ AI before E2E
✗ Integration Table API
Architecture at a glance
Development
Administration
Implementation
Runtime
Tablesemployee_v2 · req_v2 · bal_v2 · audit_v2
LogicHRLXProLeaveUtilsV2 · SecurityUtilsV2 · IntegrationUtilsV2
RulesBR1 days · BR2 submit evt · BR3 audit · BR4 approve evt
Security4 roles · ACLs · properties
IntakeCatalog RP · Portal · Workspace · REST
AsyncEvents · Notifications · Accrual job · Flow
ProveATF · UAT matrix · Update Set
Screen — whole application on one board. Build left-to-right: Dev → Admin → Impl.
Chapters 00–16 — visual boards
PLANPick track
PDIStudy only
TARGETImplement
GATECh.10 UAT
PLANPick track
→PDIStudy only
→TARGETImplement
→GATECh.10 UAT
Study
Implement
Gate
TrackStudy on PDI
TargetNamed instance
OwnerNamed person
Day 13Ch.10 on target
Screen — do not treat PDI study as go-live.
✓ Study ≠ go-live✓ One update set per person✗ Share current update set✗ Exam banks before E2E
APPCreate scope
TBL4 × _v2
SIUtils
BR100→300
UICS+Policy
FLOWApprove
APPCreate scope
→TBL4 × _v2
→SIUtils
→BR100→300
→UICS+Policy
→FLOWApprove
Application
Tables
Script Includes
Business Rules
Client Scripts
Scopex_786686_hr_leave
Tables4 × *_v2
SIHRLXProLeaveUtilsV2
BR order100 · 200 · 250 · 300
ProofcalculateBusinessDays → 5
Screen — Development spine in Studio.
↗ $studio.do↗ sys_db_object_list.do↗ x_786686_hr_leave_req_v2_list.do↗ sys_script_list.do↗ flow-designer
✓ u_* columns only✓ BR1 = before✓ Commit keys if SDK✗ Extend Task✗ current.update() in BR✗ Legacy duration_days
ROLE4 roles
GRPGroups
USERLab users
ACLRead/Write
PROP9 keys
ROLE4 roles
→GRPGroups
→USERLab users
→ACLRead/Write
→PROP9 keys
Roles
Groups
Users
ACLs
Properties
Rolesemployee · manager · hr_admin · integration
GrantVia groups only
ACL testemployee1 ✗ employee2 URL
Props9 scoped keys
Screen — Administration security board.
✓ Roles via groups✓ Test as non-admin✓ Explicit delete ACL✗ Test only as admin✗ Direct user→role✗ Properties client-side
CATCategory
RPProducer
VARQuestions
SCRIPTMap fields
PUBEmployee Center
CATCategory
→RPProducer
→VARQuestions
→SCRIPTMap fields
→PUBEmployee Center
Category
Item
Variables
Script
ItemSubmit Leave Request
Tablereq_v2
Identitygs.getUserID()
Statesubmitted
Screen — Catalog intake (not the native form).
✓ gs.getUserID()✓ Whitelist leave_type✓ Catalog UI Policy ≠ UI Policy✗ Trust variable identity✗ Skip employee lookup
W1My leaves
W2Balance
PAGEhrlx_home
ROLEemployee
W1My leaves
→W2Balance
→PAGEhrlx_home
→ROLEemployee
Balance
My leaves
Cancel
Useremployee1 only
QueryGlideRecordSecure
CancelServer-side
Roleemployee on page+widget
Screen — Employee self-service portal.
✓ GlideRecordSecure✓ Cancel on server✓ Role on widget✗ ng-bind-html on reason✗ Show team on employee page
EXPExperience
DRData resources
PAGES3 roles
PUBPublish
EXPExperience
→DRData resources
→PAGES3 roles
→PUBPublish
My Requests
Team Approvals
Admin
PublishRequired
DataSession user
ManagerApprover filter
Screen — Fulfiller workspace (not portal).
✓ Run as session user✓ Page roles = security✗ Unpublished = invisible✗ Team list on portal
REGRegister
BReventQueue
MAILTemplate
JOBAccrual 1 Jan
REGRegister
→BReventQueue
→MAILTemplate
→JOBAccrual 1 Jan
Register
Notify
Job
Eventssubmitted · approved · rejected
MailReal SMTP test
JobSkip existing balances
Screen — Async layer.
✓ Register before fire✓ Idempotent job✓ Test real SMTP✗ Email on every update✗ Job without skip-existing
RPTBy state
ACLViewer rows
DASHWidget
SHARERoles
RPTBy state
→ACLViewer rows
→DASHWidget
→SHARERoles
Report
Dashboard
Share
ReportLeave by State
ACLViewer rows only
LeadersCounts, no names
Screen — Reporting surface.
✓ No names on leadership slides✓ Report in app scope✗ Run-as admin on dashboards
SUITECreate
T1BR1 days
T2ACL isolation
T3Form days
RUNGreen
SUITECreate
→T1BR1 days
→T2ACL isolation
→T3Form days
→RUNGreen
Suite
BR1
ACL
CS2
ImpersonateRequired for ACL
Break BR1Exactly 1 fail
ScopeIn update set
Screen — Automated evidence.
✓ Impersonate in ACL test✓ Break BR1 once to prove✗ Pass as admin only
MENUHR Leave
MOD4 modules
FLOWAsk approval
STATEapproved
MENUHR Leave
→MOD4 modules
→FLOWAsk approval
→STATEapproved
Menu
Modules
Flow
ModulesRole-gated
FlowAsk For Approval
ExclusiveOne per record
Screen — Navigation and approval.
✓ Role per module✓ Flow exclusive✓ No Send Email in flow✗ Empty approver = stuck
SEEDData
E2EDemo
EXPORTXML
PREVIEWCollisions
UATHR signs
SEEDData
→E2EDemo
→EXPORTXML
→PREVIEWCollisions
→UATHR signs
Complete
Export
Preview
Commit
UAT
TravelsConfig artefacts
Does notUsers · groups · data
SignHR operations
Screen — Implementation gate.
✓ Groups do NOT travel✓ Rollback written first✗ UAT signed by builder✗ Accept all collisions
PICKHR Leave
SETYours
EDITOne family
TESTThen next
PICKHR Leave
→SETYours
→EDITOne family
→TESTThen next
Picker
Set
Edit
Test
PickerHR Leave
SetYours only
OwnerStudio XOR SDK
Screen — Daily discipline.
✓ Glance picker every New✗ Studio edit if SDK owns it
SIIntegrationUtils
APIScripted REST
ACLexecute
POST201
ROWreq_v2
SIIntegrationUtils
→APIScripted REST
→ACLexecute
→POST201
→ROWreq_v2
API
POST /leave
201
Userhrlx.integration
Bodyemployee_id (not sys_id)
Idempotentexternal_id
Screen — Integration front door.
✓ Resolve by employee_id✓ Idempotency key✗ Table API for integration✗ Password in script
LISTOBJ
OPENInstance
TICKOnly if proven
LISTOBJ
→OPENInstance
→TICKOnly if proven
Open
Prove
Tick
RuleOpenable = proven
NotMemory tick
Screen — Revision as proof.
✓ Open record = proof✗ Tick from memory
E2EMust be green
AGENTTools
ACLInvoking user
TOWERRegister
E2EMust be green
→AGENTTools
→ACLInvoking user
→TOWERRegister
E2E first
Tools
Tower
AccessInvoking user
WriteNo u_state
TowerNamed owner
Screen — AI only after core green.
✓ GlideRecordSecure✓ Read-mostly tools✗ AI before ACLs✗ Tool writes u_state
SRCscripts/
COPYBlock
PASTEStudio
SAVETest
SRCscripts/
→COPYBlock
→PASTEStudio
→SAVETest
Copy
Paste
Save
SourceOne truth
NameClass = record
Screen — Paste library.
✓ Diff after paste✗ Rename class ≠ record name
01+02Security gate
03+06+09Approve path
08+10Go-live gate
14AI last
01+02Security gate
→03+06+09Approve path
→08+10Go-live gate
→14AI last
01+02
03+06+09
08+10
14
Gate1Security
Gate2Approve path
Gate3Go-live
Screen — Ordered programme spine.
✓ Hard gates stop the path✗ Portal before ACLs
Done when: employee1 submits → manager1 approves → balance updates → notification fires → ATF green on target → HR signs UAT. Detail lives in each chapter file; this page is the map.