Skip to content

HR General Settings

Backlog fieldValue
Story IDAP-HR-002
EpicHR
Story typeMaster data / configuration
Review statusDraft - business analyst and business owner review required
Source evidenceAppsPortal.Apis controller, application command/query handlers, validators, domain entities, and matching MFE workflow where available
Last source review2026-07-10

User story

As HR administrators, I want to configure shared HR defaults exposed through AppsPortal so that employee workflows use consistent policy.

Acceptance criteria

  1. Only authorized users can view or execute the feature's actions.
  2. Required business data, active dependencies, tenant/branch scope, and current document state are validated.
  3. Invalid requests return actionable validation errors without applying a partial change.
  4. Search, list, view, print, and export operations use the same authorized business scope.
  5. Material create, edit, status, approval, posting, reversal, and integration actions are auditable where applicable.
  6. Financial or stock effects are applied atomically and no more than once.

Business rules

Required

Enabled HR integrations require their defaults and active references.

Optional or conditional

Unused optional defaults may remain empty.

Action behavior

Save changes future employee behavior only and creates no accounting transaction.

Blocking rule or downstream effect

Cross-module assignments remain governed by their own permissions.

Frontend page coverage

The following UI coverage is sourced from the pulled MFE route configuration. A Module-level supporting artifact mapping is evidence of a reachable screen, but requires BA confirmation that it belongs to this story rather than a more specific feature story.

Route/pageComponentModeRoute permission/guardMapping confidenceSource
(module default)EndOfServiceBenefitsSettingsListComponentList/navigationNo route-level permission/guard found in source windowFeature token matchapps/hr/src/app/remote-entry/payroll-wages/master-data/end-of-service-benefits-settings/end-of-service-benefits-settings-routing.module.ts:20
(module default)GeneralRequestListComponentList/navigationNo route-level permission/guard found in source windowFeature token matchapps/hr/src/app/remote-entry/employee-personnels/transactions/general-request/general-request-routing.module.ts:11
(module default)GeneralRequestListComponentList/navigationNo route-level permission/guard found in source windowFeature token matchapps/hr/src/app/remote-entry/employee-personnels/transactions/general-request/general-request-routing.module.ts:18
(module default)HrPayrollGeneralSettingComponentList/navigationNo route-level permission/guard found in source windowFeature token matchapps/hr/src/app/remote-entry/payroll-wages/master-data/hr-payroll-general-setting/hr-payroll-general-setting-routing.module.ts:17
(module default)LeavesSettingsViewComponentView/detailNo route-level permission/guard found in source windowFeature token matchapps/hr/src/app/remote-entry/leaves/master-data/leaves-settings/leaves-settings-routing.module.ts:18
(module default)MainEndOfServiceBenefitsSettingsComponentList/navigationNo route-level permission/guard found in source windowFeature token matchapps/hr/src/app/remote-entry/payroll-wages/master-data/end-of-service-benefits-settings/end-of-service-benefits-settings-routing.module.ts:12
(module default)MainHrPayrollGeneralSettingComponentList/navigationNo route-level permission/guard found in source windowFeature token matchapps/hr/src/app/remote-entry/payroll-wages/master-data/hr-payroll-general-setting/hr-payroll-general-setting-routing.module.ts:9
(module default)MainLeavesSettingsComponentList/navigationNo route-level permission/guard found in source windowFeature token matchapps/hr/src/app/remote-entry/leaves/master-data/leaves-settings/leaves-settings-routing.module.ts:10
addAddEndOfServiceBenefitsSettingsComponentAddNo route-level permission/guard found in source windowFeature token matchapps/hr/src/app/remote-entry/payroll-wages/master-data/end-of-service-benefits-settings/end-of-service-benefits-settings-routing.module.ts:36
addGeneralRequestAddComponentAddNo route-level permission/guard found in source windowFeature token matchapps/hr/src/app/remote-entry/employee-personnels/transactions/general-request/general-request-routing.module.ts:26
editLeavesSettingsEditComponentEditNo route-level permission/guard found in source windowFeature token matchapps/hr/src/app/remote-entry/leaves/master-data/leaves-settings/leaves-settings-routing.module.ts:26
edit/:idEditEndOfServiceBenefitsSettingsComponentEditNo route-level permission/guard found in source windowFeature token matchapps/hr/src/app/remote-entry/payroll-wages/master-data/end-of-service-benefits-settings/end-of-service-benefits-settings-routing.module.ts:44
edit/:idGeneralRequestEditComponentEditNo route-level permission/guard found in source windowFeature token matchapps/hr/src/app/remote-entry/employee-personnels/transactions/general-request/general-request-routing.module.ts:34
end-of-service-benefits-settingsLazy-loaded routeList/navigationNo route-level permission/guard found in source windowFeature token matchapps/hr/src/app/remote-entry/employee-personnels/master-data/master-data-routing.module.ts:68
end-of-service-benefits-settingsLazy-loaded routeList/navigationNo route-level permission/guard found in source windowFeature token matchapps/hr/src/app/remote-entry/payroll-wages/payroll-wages-routing.module.ts:44
general-requestLazy-loaded routeList/navigationNo route-level permission/guard found in source windowFeature token matchapps/hr/src/app/remote-entry/employee-personnels/transactions/transaction-routing.module.ts:9
general-settingsLazy-loaded routeList/navigationNo route-level permission/guard found in source windowFeature token matchapps/hr/src/app/remote-entry/payroll-wages/payroll-wages-routing.module.ts:30
leaves-settingsLazy-loaded routeList/navigationNo route-level permission/guard found in source windowFeature token matchapps/hr/src/app/remote-entry/leaves/master-data/master-data-routing.module.ts:23
view/:idEndOfServiceBenefitsSettingsViewComponentView/detailNo route-level permission/guard found in source windowFeature token matchapps/hr/src/app/remote-entry/payroll-wages/master-data/end-of-service-benefits-settings/end-of-service-benefits-settings-routing.module.ts:28
view/:idGeneralRequestViewComponentView/detailNo route-level permission/guard found in source windowFeature token matchapps/hr/src/app/remote-entry/employee-personnels/transactions/general-request/general-request-routing.module.ts:42

Observed frontend fields and validation

ComponentControlObserved frontend ruleComponent source
GeneralRequestBodyComponentdescriptionVisible control; optional or API-dependentapps/hr/src/app/remote-entry/employee-personnels/transactions/general-request/components/general-request-body/general-request-body.component.ts
GeneralRequestBodyComponentemployeeIdRequired in component validatorapps/hr/src/app/remote-entry/employee-personnels/transactions/general-request/components/general-request-body/general-request-body.component.ts
GeneralRequestBodyComponentrequestDateRequired in component validatorapps/hr/src/app/remote-entry/employee-personnels/transactions/general-request/components/general-request-body/general-request-body.component.ts
GeneralRequestBodyComponentrequestNameRequired in component validatorapps/hr/src/app/remote-entry/employee-personnels/transactions/general-request/components/general-request-body/general-request-body.component.ts
HrPayrollGeneralSettingComponentcitizenCompanyShareRequired in component validatorapps/hr/src/app/remote-entry/payroll-wages/master-data/hr-payroll-general-setting/pages/hr-payroll-general-setting/hr-payroll-general-setting.component.ts
HrPayrollGeneralSettingComponentcitizenEmployeeShareRequired in component validatorapps/hr/src/app/remote-entry/payroll-wages/master-data/hr-payroll-general-setting/pages/hr-payroll-general-setting/hr-payroll-general-setting.component.ts
HrPayrollGeneralSettingComponentcitizenInsuranceTypeIdRequired in component validatorapps/hr/src/app/remote-entry/payroll-wages/master-data/hr-payroll-general-setting/pages/hr-payroll-general-setting/hr-payroll-general-setting.component.ts
HrPayrollGeneralSettingComponentcitizenTotalPercentageRequired in component validatorapps/hr/src/app/remote-entry/payroll-wages/master-data/hr-payroll-general-setting/pages/hr-payroll-general-setting/hr-payroll-general-setting.component.ts
HrPayrollGeneralSettingComponentfromDayRequired in component validatorapps/hr/src/app/remote-entry/payroll-wages/master-data/hr-payroll-general-setting/pages/hr-payroll-general-setting/hr-payroll-general-setting.component.ts
HrPayrollGeneralSettingComponentisAdvanceRequestAutoConversionEnabledVisible control; optional or API-dependentapps/hr/src/app/remote-entry/payroll-wages/master-data/hr-payroll-general-setting/pages/hr-payroll-general-setting/hr-payroll-general-setting.component.ts
HrPayrollGeneralSettingComponentpayrollDayRequired in component validatorapps/hr/src/app/remote-entry/payroll-wages/master-data/hr-payroll-general-setting/pages/hr-payroll-general-setting/hr-payroll-general-setting.component.ts
HrPayrollGeneralSettingComponentresidentCompanyShareRequired in component validatorapps/hr/src/app/remote-entry/payroll-wages/master-data/hr-payroll-general-setting/pages/hr-payroll-general-setting/hr-payroll-general-setting.component.ts
HrPayrollGeneralSettingComponentresidentEmployeeShareRequired in component validatorapps/hr/src/app/remote-entry/payroll-wages/master-data/hr-payroll-general-setting/pages/hr-payroll-general-setting/hr-payroll-general-setting.component.ts
HrPayrollGeneralSettingComponentresidentInsuranceTypeIdRequired in component validatorapps/hr/src/app/remote-entry/payroll-wages/master-data/hr-payroll-general-setting/pages/hr-payroll-general-setting/hr-payroll-general-setting.component.ts
HrPayrollGeneralSettingComponentresidentTotalPercentageRequired in component validatorapps/hr/src/app/remote-entry/payroll-wages/master-data/hr-payroll-general-setting/pages/hr-payroll-general-setting/hr-payroll-general-setting.component.ts
HrPayrollGeneralSettingComponenttoDayRequired in component validatorapps/hr/src/app/remote-entry/payroll-wages/master-data/hr-payroll-general-setting/pages/hr-payroll-general-setting/hr-payroll-general-setting.component.ts
LeavesSettingsEditComponentautoIncreaseAfterYearsOfServiceVisible control; optional or API-dependentapps/hr/src/app/remote-entry/leaves/master-data/leaves-settings/pages/leaves-settings-edit/leaves-settings-edit.component.ts
LeavesSettingsEditComponentautoIncreaseDaysVisible control; optional or API-dependentapps/hr/src/app/remote-entry/leaves/master-data/leaves-settings/pages/leaves-settings-edit/leaves-settings-edit.component.ts
LeavesSettingsEditComponentbalanceAvailabilityTypeVisible control; optional or API-dependentapps/hr/src/app/remote-entry/leaves/master-data/leaves-settings/pages/leaves-settings-edit/leaves-settings-edit.component.ts
LeavesSettingsEditComponentisHalfDayLeaveAllowedVisible control; optional or API-dependentapps/hr/src/app/remote-entry/leaves/master-data/leaves-settings/pages/leaves-settings-edit/leaves-settings-edit.component.ts
LeavesSettingsEditComponentisWeeklyOffIncludedInLeaveDurationVisible control; optional or API-dependentapps/hr/src/app/remote-entry/leaves/master-data/leaves-settings/pages/leaves-settings-edit/leaves-settings-edit.component.ts
LeavesSettingsEditComponentleaveTypeIdRequired in component validatorapps/hr/src/app/remote-entry/leaves/master-data/leaves-settings/pages/leaves-settings-edit/leaves-settings-edit.component.ts
LeavesSettingsEditComponentmaxPostDaysVisible control; optional or API-dependentapps/hr/src/app/remote-entry/leaves/master-data/leaves-settings/pages/leaves-settings-edit/leaves-settings-edit.component.ts
LeavesSettingsEditComponentpostTypeVisible control; optional or API-dependentapps/hr/src/app/remote-entry/leaves/master-data/leaves-settings/pages/leaves-settings-edit/leaves-settings-edit.component.ts
LeavesSettingsEditComponentsalaryCalculationItemIdsVisible control; optional or API-dependentapps/hr/src/app/remote-entry/leaves/master-data/leaves-settings/pages/leaves-settings-edit/leaves-settings-edit.component.ts
LeavesSettingsEditComponentsalaryDeductionItemIdVisible control; optional or API-dependentapps/hr/src/app/remote-entry/leaves/master-data/leaves-settings/pages/leaves-settings-edit/leaves-settings-edit.component.ts
LeavesSettingsViewComponentleaveTypeIdRequired in component validatorapps/hr/src/app/remote-entry/leaves/master-data/leaves-settings/pages/leaves-settings/leaves-settings.component.ts

Observed frontend actions

ComponentClick action/handlerBusiness review requirementComponent source
EndOfServiceBenefitsSettingsListComponentonDeleteAvailable only in deletable states with Delete permission; identify the record in confirmation, call delete once, remove/refresh the list row on success, and retain the row with the API reason on failure.apps/hr/src/app/remote-entry/payroll-wages/master-data/end-of-service-benefits-settings/pages/end-of-service-benefits-settings-list/end-of-service-benefits-settings-list.component.ts
EndOfServiceBenefitsSettingsListComponentonEditOpen the identified editable record only with Edit permission; posted/locked records remain blocked by route or action state and list context must be recoverable on return.apps/hr/src/app/remote-entry/payroll-wages/master-data/end-of-service-benefits-settings/pages/end-of-service-benefits-settings-list/end-of-service-benefits-settings-list.component.ts
EndOfServiceBenefitsSettingsListComponentonViewOpen the authorized record in view mode with its status, totals, lines, source and generated-document links; handle deleted, forbidden, and missing records without exposing stale data.apps/hr/src/app/remote-entry/payroll-wages/master-data/end-of-service-benefits-settings/pages/end-of-service-benefits-settings-list/end-of-service-benefits-settings-list.component.ts
GeneralRequestBodyComponentopenAttachmentsDocument the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler.apps/hr/src/app/remote-entry/employee-personnels/transactions/general-request/components/general-request-body/general-request-body.component.ts
GeneralRequestBodyComponentopenEmployeeDialogOpen the item/lookup/tracking dialog with the current warehouse, item, UOM, and remaining quantity context; accepted values must return to the correct line and cancel must not mutate it.apps/hr/src/app/remote-entry/employee-personnels/transactions/general-request/components/general-request-body/general-request-body.component.ts
GeneralRequestListComponentonApproveDocument the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler.apps/hr/src/app/remote-entry/employee-personnels/transactions/general-request/pages/general-request-list/general-request-list.component.ts
GeneralRequestListComponentonCancelLeave or close without persisting; warn when the current form has unsaved changes and restore the prior list/filter context.apps/hr/src/app/remote-entry/employee-personnels/transactions/general-request/pages/general-request-list/general-request-list.component.ts
GeneralRequestListComponentonDeleteAvailable only in deletable states with Delete permission; identify the record in confirmation, call delete once, remove/refresh the list row on success, and retain the row with the API reason on failure.apps/hr/src/app/remote-entry/employee-personnels/transactions/general-request/pages/general-request-list/general-request-list.component.ts
GeneralRequestListComponentonEditOpen the identified editable record only with Edit permission; posted/locked records remain blocked by route or action state and list context must be recoverable on return.apps/hr/src/app/remote-entry/employee-personnels/transactions/general-request/pages/general-request-list/general-request-list.component.ts
GeneralRequestListComponentonRejectDocument the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler.apps/hr/src/app/remote-entry/employee-personnels/transactions/general-request/pages/general-request-list/general-request-list.component.ts
GeneralRequestListComponentonSubmitValidate the concrete form and line collection, prevent duplicate submission, persist once, show API field/business errors in context, and navigate/refresh only after success.apps/hr/src/app/remote-entry/employee-personnels/transactions/general-request/pages/general-request-list/general-request-list.component.ts
GeneralRequestListComponentonViewOpen the authorized record in view mode with its status, totals, lines, source and generated-document links; handle deleted, forbidden, and missing records without exposing stale data.apps/hr/src/app/remote-entry/employee-personnels/transactions/general-request/pages/general-request-list/general-request-list.component.ts
GeneralRequestViewComponentopenAttachmentsDocument the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler.apps/hr/src/app/remote-entry/employee-personnels/transactions/general-request/pages/general-request-view/general-request-view.component.ts

Page-specific frontend acceptance criteria

  1. (module default) - List/navigation: Load an authorized paged/searchable list or navigation page; preserve filters/sort/paging and expose only permitted row and bulk actions. Security observed: No route-level permission/guard found in source window
  2. (module default) - View/detail: Load an authorized immutable/detail representation with status-aware actions, linked records, print/export where exposed, and not-found/forbidden handling. Security observed: No route-level permission/guard found in source window
  3. add - Add: Render permitted fields, required indicators, defaults, dependent lookups, validation, Save/Cancel, loading, success, and API-error states. Security observed: No route-level permission/guard found in source window
  4. edit - Edit: Load the identified record, enforce state/permission field locks, preserve concurrency identity, validate changes, and return without losing filters. Security observed: No route-level permission/guard found in source window
  5. edit/:id - Edit: Load the identified record, enforce state/permission field locks, preserve concurrency identity, validate changes, and return without losing filters. Security observed: No route-level permission/guard found in source window
  6. end-of-service-benefits-settings - List/navigation: Load an authorized paged/searchable list or navigation page; preserve filters/sort/paging and expose only permitted row and bulk actions. Security observed: No route-level permission/guard found in source window
  7. general-request - List/navigation: Load an authorized paged/searchable list or navigation page; preserve filters/sort/paging and expose only permitted row and bulk actions. Security observed: No route-level permission/guard found in source window
  8. general-settings - List/navigation: Load an authorized paged/searchable list or navigation page; preserve filters/sort/paging and expose only permitted row and bulk actions. Security observed: No route-level permission/guard found in source window
  9. leaves-settings - List/navigation: Load an authorized paged/searchable list or navigation page; preserve filters/sort/paging and expose only permitted row and bulk actions. Security observed: No route-level permission/guard found in source window
  10. view/:id - View/detail: Load an authorized immutable/detail representation with status-aware actions, linked records, print/export where exposed, and not-found/forbidden handling. Security observed: No route-level permission/guard found in source window

Internal Documentation — Microtec