HR Leave · Professional create catalog

Professional HR Leave — every property, suggested value & direct link

Use with Application picker = HR Leave. Replace {BASE} with your instance (lab: https://dev398980.service-now.com). Create order: Rule 0 → OBJ-01…32 in Studio Create All Objects.

Scopex_786686_hr_leave
sys_ide5f5bc9493a303507520703efaba104d
Legendsug = suggested · req = required
Always open first Studio Application Update Sets HR Leave Update Sets Rule 0 steps
Master direct links Application Tables & columns Script Includes Business Rules Client Scripts UI Policy / Action Roles · Groups · Users · ACLs System properties (all) Events · Notifications · Job Menu · Modules Catalog RP Flow Portal · Workspace Report · ATF · REST Professional seed values

Every professional HR Leave screen. Click → create with the property tables below.

ObjectList (open existing)Create New
Studio{BASE}/$studio.do
ApplicationOpen HR Leavesys_app list → New
Update SetsLocal Update SetsNew Update Set
TablesApp tablesStudio → Create Application File → Table · or New table
DictionaryColumnsFrom table → Columns → New
ChoicesChoicesFrom field → Choices → New
Script IncludesSI listNew SI
Business RulesBR listNew BR
Client ScriptsCS listNew CS
UI PoliciesUI PolicyNew UI Policy
UI ActionsUI ActionNew UI Action
RolesRolesNew Role
GroupsGroupsNew Group
UsersUsersNew User
ACLsACLsNew ACL (elevate security_admin)
PropertiesPropertiesNew Property
EventsEvent RegistryNew Event
NotificationsNotificationsNew Notification
Scheduled JobsJobsNew Job
App MenusMenusNew Menu
ModulesModulesNew Module
Record ProducersProducersNew Producer
Catalog CategoriesCategoriesNew Category
Flow Designer{BASE}/$flow-designer.do · Flows list
ApprovalsMy Approvals
Service PortalPortal · WidgetsNew Widget · New Page
UI Builder{BASE}/now/build/ui
ReportsReports{BASE}/$report.do
ATFTests · SuitesNew Test
Scripted RESTAPIsNew API · REST Explorer
Employees listemployee_v2 · New
Requests listreq_v2 · New
Balances listbal_v2 · New
Audit listaudit_v2 · New
Scripts – Background{BASE}/sys.scripts.do
Event Log{BASE}/sysevent_list.do
Email Log{BASE}/sys_email_list.do

B) Application — all properties + suggested values

PropertySuggested professional valueNotes
NameHR LeaveRequired
Scopex_786686_hr_leaveCannot change later
Version1.0.0Bump on each promote
DescriptionEnterprise leave requests, balances, approvals, audit for HR
VendorYour company name
Create application menutrueCreates HR Leave navigator
Activetrue
Update Set propertySuggested value
NameHR Leave – Build v1.0
ApplicationHR Leave
StateIn Progress
DescriptionProfessional HR Leave core + security + process

C) Tables — create properties + every column (professional)

How to create each table (detail):

  1. Application picker = HR Leave · Update Set current.
  2. Open Studio → select HR Leave.
  3. Click Create Application File → search Table → Create.
  4. Fill Label + Name from table below → Extends = (empty — do not extend Task) → Create.
  5. Open table → related list Columns → New for each row → Save.
  6. For Choice columns: open column → related list Choices → New for each value.
  7. Configure Form Layout / List Layout as listed.

C1) HR Employee — x_786686_hr_leave_employee_v2

Table propertySuggested value
LabelHR Employee
Namex_786686_hr_leave_employee_v2
Extends(none)
Create moduletrue (or add in OBJ-25)
Create access controlstrue (refine in OBJ-19)
Is searchable / Live feedfalse / false
ColumnLabelTypeMax / RefMandatoryDisplaySuggested default / notes
u_userUserReferencesys_userYesPlatform login of employee
u_employee_idEmployee IDString40YesYese.g. E-1001 · unique
u_departmentDepartmentString100People Ops / Engineering / …
u_managerManagerReferencesys_userYesApprover source for BR1
u_join_dateJoin DateDateYYYY-MM-DD
u_gradeGradeString20G1–G10 or band code

Form layout order (suggested): Employee ID | User | Department | Manager | Join Date | Grade
List layout: Employee ID, User, Department, Manager, Grade

C2) Leave Request — x_786686_hr_leave_req_v2 (hub table)

Table propertySuggested value
LabelLeave Request
Namex_786686_hr_leave_req_v2
Extends(none)
Auto-number (optional)Prefix HRLX · start 1000 · or fill u_number in BR
ColumnLabelTypeMax / RefMandatoryRead-onlySuggested
u_numberNumberString40Yes after insertDisplay · HRLX0001
u_requested_for_userRequested ForReferencesys_userYesDefault = current user (RP)
u_employee_refEmployeeReferenceemployee_v2YesHR profile link
u_leave_typeLeave TypeChoice—YesSee choices below
u_start_dateStart DateDateYes
u_end_dateEnd DateDateYes≥ start
u_days_countDaysIntegerYesSet by BR1 / CS2
u_stateStateChoice—YesDefault draft
u_approver_userApproverReferencesys_userYes for employeesFrom manager via BR1
u_reasonReasonString1000If sick (UI Policy)

Choices — u_leave_type

ValueLabelSequenceSuggested use
annualAnnual1Default paid leave
sickSick2Requires reason (UI Policy)
unpaidUnpaid3No balance debit (optional policy)

Choices — u_state

ValueLabelSequenceWho sets
draftDraft1Default on new
submittedSubmitted2UI Action / Catalog / user
approvedApproved3Flow / manager
rejectedRejected4Flow / manager
cancelledCancelled5Employee / portal

Form layout: Number | State | Requested For | Employee | Leave Type | Start | End | Days | Approver | Reason
List layout: Number, Requested For, Leave Type, Start, End, Days, State, Approver

C3) Leave Balance — x_786686_hr_leave_bal_v2

ColumnLabelTypeSuggested
u_employee_refEmployeeReference → employee_v2Mandatory
u_yearYearInteger2026 (current year)
u_leave_typeLeave TypeChoiceSame as req (annual/sick/unpaid)
u_entitledEntitledInteger20 or property annual_days
u_usedUsedInteger0 at year start · BR3 updates
u_remainingRemainingInteger= entitled − used

C4) Leave Audit — x_786686_hr_leave_audit_v2

ColumnLabelTypeSuggested
u_leave_refLeaveReference → req_v2Mandatory
u_old_stateOld StateString(40)e.g. submitted
u_new_stateNew StateString(40)e.g. approved
u_event_typeEvent TypeString(60)state_change
u_actorActorReference → sys_userWho changed state

D) Script Includes — form properties

PropertyHRLXProLeaveUtilsV2HRLXProSecurityUtilsV2HRLXProIntegrationUtilsV2 (REST)
NameHRLXProLeaveUtilsV2HRLXProSecurityUtilsV2HRLXProIntegrationUtilsV2
API Namex_786686_hr_leave.HRLXProLeaveUtilsV2…SecurityUtilsV2…IntegrationUtilsV2
Client callabletruefalsefalse
Activetruetruetrue
Accessible fromAll application scopesSameSame
DescriptionBusiness days, approver, balance, audit, GlideAjaxACL helpers canRead/canWriteInbound leave create for REST
ScriptPaste full from Studio Create guide OBJ section / Scripts portal

Create steps: Studio → Create Application File → Script Include → fill table → paste script → Update → test in Scripts – Background.


E) Business Rules — all properties (BR1–BR4)

Create steps (every BR): Application = HR Leave → New Business Rule → set Table = x_786686_hr_leave_req_v2 → Advanced = true → paste script → Active = true → Update.

PropertyBR1 Calculate DaysBR2 On Submit EventBR3 Audit StateBR4 Approve/Reject Event
NameHRLX BR1 Calculate DaysHRLX BR2 On Submit EventHRLX BR3 Audit State ChangeHRLX BR4 Approve Reject Event
Tablex_786686_hr_leave_req_v2
Activetrue
Advancedtrue
Whenbeforeafterafterafter
Inserttruetruefalsefalse
Updatetruetruetruetrue
Deletefalse
Order100200300250
Filter Conditions(none)(none) — script uses changesTo(none)(none)
Role conditions(empty)
DutySet u_days_count + approverFire submitted eventAudit + balance on approveFire approved/rejected events

F) Client Scripts — all properties

PropertyCS1 Validate DatesCS2 Calc Days GlideAjax
NameHRLX CS1 Validate DatesHRLX CS2 Calc Days GlideAjax
Tablex_786686_hr_leave_req_v2
UI TypeAll
TypeonChange
Field nameu_end_dateu_end_date
Activetrue
Inheritedfalse
Globalfalse (scoped)
DescriptionEnd ≥ startPreview business days via SI

Also create (professional): duplicate CS1/CS2 as onChange on u_start_date with same scripts so changing start recalculates too — Name suffix “Start” · Field = u_start_date · Order 100/110.


G) UI Policy + UI Action — properties

UI Policy propertySuggested value
Tablex_786686_hr_leave_req_v2
Short descriptionHRLX Sick leave requires reason
Activetrue
Order100
Condition[u_leave_type] [is] [sick]
On loadtrue
Reverse if falsetrue
Global / Isolate scriptfalse / true
UI Policy Action → Fieldu_reason · Mandatory=true · Visible=true · Read only=false
UI Action propertySuggested value
NameSubmit
Tablex_786686_hr_leave_req_v2
Action namehrlx_submit_leave
Form buttontrue
Form context menufalse
List banner / List choicefalse
Clientfalse (server)
Activetrue
Show insert / updatefalse / true
Conditioncurrent.u_state == 'draft'
Order100
Scriptset state submitted; update; redirect

H) Roles · Groups · Users · ACLs — professional matrix

Roles (create each)

NameDescription (suggested)Assignable byElevated privilege
x_786686_hr_leave.employeeSubmit and view own leavehr_adminfalse
x_786686_hr_leave.managerApprove team leavehr_adminfalse
x_786686_hr_leave.hr_adminFull HR Leave administrationadminfalse
x_786686_hr_leave.integrationScripted REST / Table API createadminfalse

Groups

NameTypeRolesActive
HRLX Employeessecurityemployeetrue
HRLX Managerssecuritymanager (+ employee)true
HRLX HR Adminssecurityhr_admintrue
HRLX Integrationsecurityintegrationtrue

Lab users (professional UAT)

User IDFirst / LastEmail (suggested)GroupActivePassword
employee1Lab / Employeeemployee1@example.comHRLX EmployeestruePer PDI policy
manager1Lab / Managermanager1@example.comHRLX Managerstrue
hradminLab / HRAdminhradmin@example.comHRLX HR Adminstrue
hrlx.integrationHRLX / Integrationintegration@example.comHRLX IntegrationtrueWeb service access

ACL properties (each ACL)

ACLTypeOperationNameAdmin overridesActiveAdvancedRequires role / Script
Read reqrecordreadx_786686_hr_leave_req_v2truetruetrueScript: canReadLeave
Write reqrecordwritex_786686_hr_leave_req_v2truetruetrueScript: canWriteLeave
Create reqrecordcreatex_786686_hr_leave_req_v2truetruetrueRoles employee|hr_admin|integration + script
Write approver fieldrecordwritex_786686_hr_leave_req_v2.u_approver_usertruetruetruehr_admin only

Create ACL detail: Elevate security_admin → New ACL → Application = HR Leave → fill row → Script tab → Update. Repeat for employee_v2 / bal_v2 / audit_v2 read for hr_admin (professional: hr_admin full CRUD; employee read own via script).


I) System properties — ALL professional properties + values

Create each: Application = HR Leave → New → fill Name/Type/Value → Update. Ignore Global.

NameTypeSuggested valueDescription
x_786686_hr_leave.config.annual_daysinteger20Default annual entitlement (AU often 20; set 21 if policy requires)
x_786686_hr_leave.config.sick_daysinteger10Default sick entitlement for accrual job (optional)
x_786686_hr_leave.config.notify_enabledtrue|falsetrueMaster switch for leave emails
x_786686_hr_leave.config.min_notice_daysinteger3Optional BR: reject submit if start < today+3
x_786686_hr_leave.config.max_days_per_requestinteger30Optional BR: block oversized requests
x_786686_hr_leave.config.erp_endpointstringhttps://webhook.site/your-lab-idOutbound ERP URL (no secrets)
x_786686_hr_leave.config.integration_userstringhrlx.integrationUser ID for inbound API
x_786686_hr_leave.config.number_prefixstringHRLXPrefix for u_number if scripted
x_786686_hr_leave.config.portal_page_idstringhrlx_homeSP page id for widgets
Property form fieldSuggested for all above
ApplicationHR Leave
Ignore cachefalse
Privatefalse (true only for sensitive — prefer aliases for secrets)
Read roles(empty) or hr_admin
Write roleshr_admin / admin

J) Events · Notifications · Scheduled Job

Event Registry (×3)

Event nameTableFired byDescription
x_786686_hr_leave.leave_v2.submittedreq_v2BR2Leave submitted for approval
x_786686_hr_leave.leave_v2.approvedreq_v2BR4Leave approved
x_786686_hr_leave.leave_v2.rejectedreq_v2BR4Leave rejected

Event form: Application = HR Leave · Suffix = leave_v2.submitted (platform may prefix scope) · Queue = (default) · Active = true.

Notifications (×3) — all important properties

PropertySubmittedApprovedRejected
NameHRLX Leave SubmittedHRLX Leave ApprovedHRLX Leave Rejected
Tablex_786686_hr_leave_req_v2
TypeEmail
Activetrue
CategoryUncategorized / HR
Send whenEvent is fired
Event name…leave_v2.submitted…approved…rejected
Weight0
Who will receiveEvent parm1 (approver)Event parm1 (requester)Event parm1 (requester)
SubjectLeave ${u_number} submitted for approvalLeave ${u_number} approvedLeave ${u_number} rejected
Message HTMLInclude ${u_requested_for_user}, ${u_leave_type}, ${u_start_date}, ${u_end_date}, ${u_days_count}, ${URI_REF}
Omit watermark / Include attachmentsfalse / false

Scheduled Job

PropertySuggested value
NameHRLX Annual Accrual
Activetrue
RunPeriodically · Yearly · Jan 1 01:00 (or Daily for lab)
Run asSystem Administrator / hr_admin
ApplicationHR Leave
Conditionalfalse
ScriptPaste annual_accrual.js from Studio guide OBJ-23

Menu propertySuggested
TitleHR Leave
Namehr_leave
ApplicationHR Leave
Order100
Activetrue
Rolesx_786686_hr_leave.employee (minimum)
Hint / DescriptionLeave requests, employees, balances, audit
Module TitleLink typeTable (Name)OrderRoles (suggested)Filter
Leave RequestsList of Recordsx_786686_hr_leave_req_v2100employee, manager, hr_admin(empty or active)
My RequestsList of Recordsx_786686_hr_leave_req_v2110employeeu_requested_for_user=javascript:gs.getUserID()
EmployeesList of Recordsx_786686_hr_leave_employee_v2200hr_admin, manager
Leave BalancesList of Recordsx_786686_hr_leave_bal_v2300hr_admin, manager, employee
Leave AuditList of Recordsx_786686_hr_leave_audit_v2400hr_admin
OverviewSeparator—50

Module form also set: Application = HR Leave · Application menu = HR Leave · Active = true · Override application menu roles = as needed.


L) Catalog Record Producer — all properties + variables

Category propertySuggested
TitleHR Leave
CatalogService Catalog
Activetrue
Producer propertySuggested value
NameSubmit Leave Request
Table namex_786686_hr_leave_req_v2
CategoryHR Leave
Activetrue
Short descriptionRequest annual, sick, or unpaid leave
AvailabilityDesktop + Mobile
Rolesx_786686_hr_leave.employee
Omit view / Hide on SC homefalse / false
ScriptPaste RP_submit_leave.js (maps producer.* → u_*)
Variable NameTypeQuestionMandatoryOrderChoices / notes
leave_typeSelect BoxLeave TypeYes100annual, sick, unpaid
start_dateDateStart DateYes200
end_dateDateEnd DateYes300
reasonMulti-line TextReasonNo*400*Mandatory when sick via Catalog UI Policy if needed

M) Flow Designer — properties & actions

Flow propertySuggested value
NameHRLX Leave Approval
ApplicationHR Leave
DescriptionAsk for approval when leave is submitted
Run asSystem User
StatusPublished (Active)
TriggerSuggested
Trigger typeRecord · Updated
Tablex_786686_hr_leave_req_v2
Conditionu_state changes AND u_state is submitted
Run onUpdate (not Insert-only if submit via update)
ActionKey fields
Ask For ApprovalApprover = Trigger → Approver (u_approver_user) · Rules = Anyone approves · Due = 3 business days
If Approved → Update RecordTable req_v2 · Record = Trigger · Field u_state = approved
If Rejected → Update Recordu_state = rejected

Create detail: Flow Designer → Create → New flow → set Application HR Leave → add Trigger → add Ask For Approval → add If flow logic → Test with sample sys_id → Publish.


N) Portal + UI Builder — key properties

Widget propertyhrlx_my_leaveshrlx_balance
Name / IDHRLX My Leaves / hrlx_my_leavesHRLX Balance / hrlx_balance
ApplicationHR Leave
Publicfalse
Rolesx_786686_hr_leave.employee
HTML / Client / Server / CSSPaste from Studio Create OBJ-28
SP Page propertySuggested
Page ID / Titlehrlx_home / My Leave
ApplicationHR Leave
Rolesemployee
Open URL{BASE}/sp?id=hrlx_home
UI BuilderSuggested
Experience nameHR Leave Workspace
ApplicationHR Leave
PagesMy Requests · Approvals · Admin
Data resourceTable x_786686_hr_leave_req_v2

O) Report · ATF · Scripted REST — properties

Report propertySuggested
TitleLeave Requests by State
Source type / TableTable · x_786686_hr_leave_req_v2
TypePie (or Bar)
Group byu_state
AggregationCount
SharingRoles: hr_admin, manager
ATF propertySuggested
Suite nameHRLX Leave Core
Test 1Server: insert req → assert days > 0
Test 2Form: set dates → assert CS days
Test 3Impersonate employee ACL
ApplicationHR Leave
Scripted REST propertySuggested
Name / API IDHRLX Leave API / hrlx_api_v2
ApplicationHR Leave
Requires authenticationtrue
Default ACL rolex_786686_hr_leave.integration
ResourcePOST /leave · Active true
Full path/api/x_786686_hr_leave/hrlx_api_v2/leave

P) Professional seed data (suggested lab values)

RecordFieldSuggested value
EmployeeUser / Employee ID / Dept / Manager / Join / Gradeemployee1 / E-1001 / People Ops / manager1 / 2024-01-15 / G5
BalanceEmployee / Year / Type / Entitled / Used / Remaining(E-1001) / 2026 / annual / 20 / 0 / 20
RequestRequested For / Employee / Type / Start / End / State / Reasonemployee1 / (ref) / annual / next Mon / next Fri / draft → Submit / Team offsite

Next: For full paste-ready scripts and click-by-click create, open STUDIO_CREATE_ALL_OBJECTS_01_16.html and work OBJ-01 → OBJ-32 using the property values on this page.