Skip to content

HR Capabilities: Packages, Access, and Administration ​

HR is a collection of related products, not one indivisible suite. A service may need reliable employee records and organization structure without payroll, recruiting, benefits, time tracking, or employee self-service. The capability model is intended to let each tenant select the functional packages that fit its service while preserving a shared workforce foundation.

This guide explains the HR capability catalogue, the distinction between a capability and a user permission, service defaults, seed-package boundaries, activation and suspension, and the implementation state observed in the checked-in source.

A catalogue entry is not proof that a feature is complete

The capability catalogue defines product boundaries and intended scope. It does not prove that every workflow listed below is complete, that every inactive feature is hidden in the UI, or that every API is currently guarded. See Current implementation and gaps.

What a capability means ​

A capability is a service-level switch for a coherent HR product area. It answers: is this product area available to this particular company service? For example, a tenant can use the employee and organization foundation while keeping payroll available in the service offering but inactive for that tenant.

A capability is not:

  • A user permission. Capability activation makes the service package available; role and user permissions decide which people can view or act on it.
  • A menu label or a replacement for the permission tree. Capabilities must complement authorization, not grant it.
  • A setup record. Enabling Leave does not create leave types or accrual rules; enabling Benefits does not create plans; enabling Scheduling does not create shifts or rosters.
  • A subscription invoice by itself. The registry records functional service configuration; commercial entitlement must not be inferred from a capability row alone.
  • Proof of feature readiness. Screens, API routes, validations, audit history, seed dependencies, and downstream payroll/accounting handoffs still require implementation and verification.

Employee identity and organization structure form the foundation. Recruiting, payroll, attendance, leave, benefits, expenses, development, and employee self-service are distinct functional areas selected around it.

The platform model ​

HR reuses shared platform capability tables rather than maintaining a parallel HR-specific registry.

Model partSourceResponsibility
Capability catalogueservice_capability / service-capability.yamlStable code, name, scope, dependencies, and behavior requirements.
Service offeringservice_default_capability / service-default-capability.yamlWhich capabilities a service can offer, and which are required or on by default.
Tenant selectioncompany_service_capabilityStatus selected for one company's instance of a service.
Seed boundaryservice_capability_seed_pack, service-seed-packs.yamlSeed package associated with a capability and data eligible to be loaded.
User authorizationExisting L1/L2/L3 tree and action permissionsWhich users may enter an area or perform an operation. This is independent of capability activation.

The tenant selection is scoped by company_service_id. Activating a package in Community Finance & HR does not activate it in a separate HR & Payroll service instance belonging to the same company.

HR capability catalogue ​

The following descriptions expand the backend catalogue into operational terms. They describe intended package boundaries, not a guarantee that every listed subfeature is complete in the current release.

Foundation ​

HR Workforce Core — HR_WORKFORCE_CORE ​

The required foundation for HR service delivery: employee records linked to Party identity, organization and manager relationships, jobs, grades, positions, contracts, effective-dated employment changes, employee identity/access links, and baseline HR security and audit foundations. It supports a useful employee register even where a tenant does not want the full HR suite.

Other HR capabilities declare Workforce Core as a required dependency. Both current HR service offerings mark it required and enabled by default. This is not itself a system-user permission: linking an employee to an account and assigning that account a role remain separate, permission-controlled actions.

Hiring and workforce operations ​

HR Talent Acquisition — HR_TALENT_ACQUISITION ​

Covers approved workforce requisitions, candidates, applications, interviews, offers, offer version history, recruitment approvals, and candidate-to-employee handoff. It is for organizations that want to manage hiring in HR rather than import or directly create every employee. The handoff should preserve a person's identity and recruitment history rather than create a duplicate Party.

HR Onboarding and Transitions — HR_ONBOARDING_AND_TRANSITIONS ​

Covers onboarding task plans, probation outcomes, transfers, promotions, salary-change events, suspensions, and other effective-dated employee transitions. The defining feature is a dated, traceable employment event and its downstream effects—not simply overwriting a current-status field. Changes may affect position occupancy, access, compensation, or payroll eligibility.

HR Time and Attendance — HR_TIME_ATTENDANCE ​

Covers recording work time and attendance, review and correction workflows, attendance rules, overtime requests/approvals, and preparation of approved time records for later use. Corrections should preserve who changed a record, why, and the approval outcome. When payroll consumes attendance or overtime, only approved eligible records should cross that boundary.

HR Leave and Absence — HR_LEAVE_AND_ABSENCE ​

Covers leave types, accrual rules, balances, paid/unpaid requests, approvals, absence records, and payroll-ready leave/absence inputs. A leave request describes authorized time away; an attendance record describes observed or reported time. An absence is not automatically approved leave. Payroll treatment depends on policy and approval state, not merely on a date appearing in a record.

HR Scheduling and Coverage — HR_SCHEDULING_AND_COVERAGE ​

Covers shift patterns, roster planning, employee availability, planned coverage, and exceptions when a team or work area has a gap. It complements, but does not replace, attendance: a planned shift is not proof of attendance, and attendance is not a roster. Leave and availability can affect planned coverage; actual attendance and overtime may later provide operational or payroll evidence.

HR Employee Relations — HR_EMPLOYEE_RELATIONS ​

Covers sensitive cases such as grievances, disciplinary matters, investigations, evidence, decisions, and resolution history. It calls for restricted access, an evidence chain, and suitable maker-checker controls. Ordinary employee-record visibility must not automatically grant access to confidential case material; permissions, audit, document handling, and retention are essential.

HR Contingent Workforce — HR_CONTINGENT_WORKFORCE ​

Covers contractors and other non-permanent workers whose engagement, end date, access, time capture, and payment route must be managed without treating them as ordinary permanent employees. Engagements need an accountable owner and clear end date; access and payment eligibility should follow the engagement. Payment may hand off to payroll or payables as appropriate.

Pay, benefits, and expenses ​

HR Payroll Operations — HR_PAYROLL ​

Covers controlled payroll periods, approved inputs, calculation, statutory outputs, payslip records, GL accrual, payment settlement, remittance, and the audit trail. Payroll consumes approved eligible employee and source data; it should not silently rewrite attendance, leave, loan, benefit, or compensation records. Calculation, validation, approval, posting, payment, and statutory filing are distinct checkpoints. A successful calculation alone does not prove GL posting, settlement, or filing acceptance.

Payroll depends on Workforce Core and shared accounting, payments, workflow, approval, document, and reporting services. Employee pay structures belong to HR Compensation; loan pricing belongs to Loans. These are separate products and pricing profiles.

HR Compensation — HR_COMPENSATION ​

Covers employee pay structures, salary bands, effective-dated salary revisions, allowances, rewards, and compensation-change approval. Compensation defines what terms apply and when; payroll determines what is payable for a period using those terms and eligible period inputs. Mid-period changes require an explicit effective date and an agreed proration method before payroll consumes them.

HR Benefits and Total Rewards — HR_BENEFITS ​

Covers benefit plans and eligibility rules, life-event re-evaluation, enrollment, waiver decisions/evidence, suspension and end dating, employee and employer contributions, provider invoices, and versioned total-reward statements. Enrollment, provider invoicing, contribution, payroll deduction, and payment reconciliation are distinct records. Approval to enroll is not proof that a provider was paid or that a payroll deduction settled.

HR Travel and Expenses — HR_TRAVEL_EXPENSES ​

Covers travel requests, per-diem policy, expense claims, approvals, receivable/payable recognition, settlement, and GL traceability. A per-diem policy is configuration; a travel request or claim is an operational transaction. Per diem can apply to qualifying travel or other approved assignments, so it is not itself a travel claim.

Claim recognition and payment must be separate accounting events: recognition generally debits the applicable expense and credits an employee payable; later settlement debits that payable and credits the actual cash or bank account. Approval alone is not settlement. This capability does not inherently mean claims must be processed through payroll.

Talent and employee experience ​

HR Performance and Goals — HR_PERFORMANCE_AND_GOALS ​

Covers performance cycles, employee goals, reviews, feedback, manager input, calibration, development plans, and approval history. A sound cycle defines who sets and approves goals, which reviewers contribute, when the cycle is open, how calibration is controlled, and how final outcomes are communicated. A performance outcome does not itself authorize a payroll change.

HR Learning and Development — HR_LEARNING_AND_DEVELOPMENT ​

Covers training programmes, employee enrolment, completion records/evidence, skills development, and learning reporting. Completion evidence should support the record; skills profiles should only change through an authorized, auditable update.

HR Career and Succession — HR_CAREER_AND_SUCCESSION ​

Covers career paths, talent pools, succession plans, readiness assessments, and internal mobility decisions. It supports future role coverage; a proposed successor does not automatically become the role incumbent. Succession data is sensitive and needs restricted visibility, defined review, and retention rules.

HR Employee Self-Service — HR_EMPLOYEE_SELF_SERVICE ​

Covers employee-scoped access to the employee's own profile, payslips, leave, attendance requests/corrections, documents, benefits, and request tracking, where the underlying functions are also enabled. The signed-in account must be linked to the right employee. Self-service is not broad HR access: approval and sensitive-field controls still apply, and employee scoping must be enforced server-side rather than only in the browser.

HR Manager Self-Service — HR_MANAGER_SELF_SERVICE ​

Covers manager views/actions for the manager's authorized reporting scope: direct reports, team leave, attendance, coverage exceptions, onboarding, performance, and team work queues. It should provide useful team workflows without exposing the whole HR register. The catalogue specifies direct reports as the default scope; delegated or expanded scopes need an explicit policy and audit trail.

Planning, insight, compliance, and connections ​

HR Workforce Planning — HR_WORKFORCE_PLANNING ​

Covers planned headcount, position requisitions, capacity scenarios, workforce plans, approved workforce budgets, and labor-cost planning. It connects a future staffing plan to approved positions and budgets rather than treating every proposed hire as an available seat. Position control can bridge planning and recruiting: define approved positions, forecast needs, then recruit against an approved requisition.

HR Analytics and Reporting — HR_ANALYTICS_AND_REPORTING ​

Covers the HR reporting catalogue, workforce metrics, payroll reconciliation, compliance reports, and controlled analytical outputs. Reports should identify their source, population, period, filters, and refresh time. Sensitive payroll, employee-relations, health, and identity data must not become visible just because a user can run a general report; report permissions and row/field controls still apply.

HR Documents and Compliance — HR_DOCUMENTS_AND_COMPLIANCE ​

Covers employee documents, statutory evidence, expiry tracking, acknowledgments, retention rules, and audit-ready files. This is controlled evidence management, not just attachment upload. Each owning workflow should define required evidence, who can view it, expiry and retention, and the consequence of missing or expired evidence.

HR External Integrations — HR_EXTERNAL_INTEGRATIONS ​

Covers controlled connections to payroll providers, banks, statutory authorities, communications, identity systems, time devices, and other HR sources. Every integration needs provider identification, data mapping and boundaries, credentials, retries/idempotency, audit logs, and verified acknowledgment for outbound writes. Activation does not connect a device or provider by itself. Biometric collection (fingerprint, voice, etc.) additionally requires explicit privacy, consent, retention, and legal review.

Service defaults ​

The current backend service blueprint defines these defaults:

Service offeringRequired / enabled by defaultAvailable but not automatically enabled
HR & Payroll (HR_PAYROLL)HR_WORKFORCE_CORE, HR_PAYROLLTalent acquisition; onboarding/transitions; time; leave; scheduling; compensation; benefits; travel; performance; learning; career/succession; employee relations; employee and manager self-service; workforce planning; analytics; documents/compliance; integrations; contingent workforce.
Community Finance & HR (COMMUNITY_FINANCE_HR)HR_WORKFORCE_COREAll 20 optional capabilities, including HR_PAYROLL.

“Available” means the service offering can activate the package; it does not mean it is active for every company-service instance. In particular, Community Finance & HR does not force every tenant to use payroll or the complete HR suite. These are service-blueprint defaults, not a readout of one live tenant. Existing explicit tenant selections take precedence; a changed default should not silently deactivate an existing active selection.

Status and dependency behavior ​

The service blueprint default and tenant override combine to produce effective status.

StatusMeaning
REQUIREDRequired by the service blueprint; part of the intended baseline.
DEFAULT_ENABLEDEnabled by default for a new service instance unless overridden.
ACTIVEExplicitly activated for this company service.
AVAILABLEStill offered, but inactive for this company service.
SUSPENDEDExplicitly paused; configured but should not be usable while suspended.
RETIREDExplicitly retired from this company service. This status change is not an instruction to delete historical records.

An available service-blueprint row does not activate a package. With no tenant override, only a required/default-enabled capability is active. An explicit ACTIVE tenant row activates an optional package; explicit AVAILABLE, SUSPENDED, or RETIRED does not. In the backend route guard, an explicit tenant override is active only when its status is ACTIVE.

All optional HR capabilities declare Workforce Core as a required capability. Capability dependency configuration also records needed platform primitives and service profiles; for example, payroll/travel need accounting and payment foundations, while external integrations need integration and audit foundations. The service blueprint must offer the package before an administrator can activate it.

The current service-management update path rejects deactivation when other active capabilities depend on the selected capability and lists those dependents. Suspend/retire dependents first. Since Workforce Core is the required foundation, smaller HR deployments should keep it enabled and turn off unneeded add-ons—not remove the foundation. Historical employee, payroll, benefit, claim, or attendance records need retention and access controls even if a package is suspended.

Seed packs: what activation does and does not do ​

A capability-to-seed-pack mapping defines a controlled boundary for service-specific setup data. Current HR mappings are:

Capability areaSeed packSeed files currently declared
Workforce Corehr-workforce-coreNo HR-specific files; inherits platform primitives.
Payrollhr-payroll-coreHR tag binding and Uganda payroll pricing profile, item, and tier seeds; inherits accounting, project-fund-control, wallet, and workforce packs.
Talent acquisition, onboarding, performance, learning, successionhr-talent-coreNone currently declared in this pack.
Time, leave, scheduling/coveragehr-time-attendance-coreNone currently declared in this pack.
Compensation, benefitshr-rewards-coreNone currently declared in this pack.
Travel and expenseshr-travel-expense-coreNone currently declared in this pack.
Employee relationshr-employee-relations-coreNone currently declared in this pack.
Employee and manager self-servicehr-employee-experience-coreNone currently declared in this pack.
Workforce planning and analyticshr-planning-analytics-coreNone currently declared in this pack.
Documents and compliancehr-documents-compliance-coreNone currently declared in this pack.
External integrationshr-integrations-coreNone currently declared in this pack.
Contingent workforcehr-contingent-workforce-coreNone currently declared in this pack.

An empty seed-file list does not mean a capability has no runtime tables or procedures; database runtime objects are managed separately. It does mean that pack activation currently has no additional HR reference-data files to load for that package. Tenants still configure their own leave types, shifts, benefit plans, eligibility rules, performance cycles, training programmes, integration credentials, and other operating data in HR Setup or the relevant administration area.

Reporting catalogue exception: although hr-planning-analytics-core currently has no HR-specific seed files, the shared report-definition.yaml contains fifteen HR report definitions and report-group.yaml contains the Human Resources Reports group. The current seed row-scope rules attach those definitions and the group to hr-payroll-core and community-finance-hr-core, not to hr-planning-analytics-core. Reports are run from the shared Reporting workspace. Consequently, an enabled HR_ANALYTICS_AND_REPORTING row alone is not evidence that its catalog records were installed or that the group is gated by that capability. Verify catalog installation and capability-off visibility in the actual tenant. See HR Reporting and Analytics.

Activation does not create employees, user accounts, plans, roster assignments, integration credentials, or transactions. The service-management API can request seed synchronization when activating a capability; that synchronizes the mapped seed boundary, not a tenant's operational HR data.

Capabilities and user permissions ​

Both controls must permit access:

CapabilityUser permissionExpected result
InactivePresentFeature unavailable; permission alone must not expose an inactive package.
ActiveMissingFeature unavailable to this user; activation must not grant permission.
ActivePresentUser may access it within their permissions and data scope.
InactiveMissingFeature unavailable.

Capabilities may gate an entire L3 area or tabs inside a shared workspace. If multiple packages share an L3, that permission grants general workspace access; capability-specific tab and API checks must still hide and reject inactive package features. A capability must never silently add L1/L2/L3 or action permissions to a role.

For self-service, a capability and user permission are still insufficient on their own: the server must enforce “my own employee record” or “my authorized reports.” Browser filtering alone is not a security control.

The shared backend requireServiceCapabilities middleware supports all and any requirements. Its permission compatibility fallback is restricted to a missing capability registry or recognized missing-schema condition and requires a verified route permission. If capability rows exist and the required capability is inactive, the request is denied; it does not fall back to permission-only access.

How the frontend maps capabilities to HR areas ​

The merged frontend defines HR route requirements in src/shared/constants/hr-capabilities.ts, prunes capability-mapped entries from the permission-derived navigation tree, and filters individual workspace tabs with useHrCapabilityTabs. This is additive metadata: user permissions still determine what an individual may do. Navigation filtering runs only when the active service response includes capability evidence, preserving legacy navigation during incomplete migrations.

HR areaCurrent frontend requirement
HR rootAny one of the 21 HR capabilities.
Workforce Setup, Employee ManagementHR_WORKFORCE_CORE.
Time & Attendance SetupHR_TIME_ATTENDANCE or HR_LEAVE_AND_ABSENCE.
Payroll & Compensation SetupHR_PAYROLL or HR_COMPENSATION.
Travel Expense Policies and Travel & ExpensesHR_TRAVEL_EXPENSES.
Talent & Benefits SetupHR_BENEFITS, HR_PERFORMANCE_AND_GOALS, or HR_LEARNING_AND_DEVELOPMENT.
Employee Lifecycle & Relations workspaceAny of onboarding/transitions, employee relations, manager self-service, compensation, benefits, or talent acquisition.
RecruitmentHR_TALENT_ACQUISITION.
Time & Attendance operationsAny of time/attendance, leave/absence, or scheduling/coverage.
Payroll ProcessingHR_PAYROLL.
My HRHR_EMPLOYEE_SELF_SERVICE.
Performance & DevelopmentHR_PERFORMANCE_AND_GOALS or HR_LEARNING_AND_DEVELOPMENT.

Tabs have narrower requirements than their containing workspace:

WorkspaceTab or setup itemCapability used by the frontend
Workforce SetupJob grades, jobs, positions, exceptions, requisitions, clearance itemsWorkforce Core
Time & Attendance SetupLeave typesLeave and Absence
Time & Attendance SetupShiftsScheduling and Coverage
Time & Attendance SetupAttendance rulesTime and Attendance
Talent & Benefits SetupOnboarding checklistsOnboarding and Transitions
Talent & Benefits SetupPerformance cyclesPerformance and Goals
Talent & Benefits SetupTraining programmesLearning and Development
Talent & Benefits SetupBenefit plans and eligibility rulesBenefits
Payroll & Compensation SetupPayroll setup and input policyPayroll
Payroll & Compensation SetupPay structuresCompensation
Employee ChangesMovementsOnboarding and Transitions
Employee ChangesSalaryCompensation
Employee ChangesBenefitsBenefits
Employee Lifecycle & RelationsWork queueAny of Onboarding and Transitions, Employee Relations, or Manager Self-Service
Employee Lifecycle & RelationsMy TeamManager Self-Service
Employee Lifecycle & RelationsOnboarding, probation, employee changesOnboarding and Transitions
Employee Lifecycle & RelationsRelationsEmployee Relations
Employee Lifecycle & RelationsRecruitmentTalent Acquisition
Employee Lifecycle & RelationsExitAny of Onboarding and Transitions or Employee Relations
Time & AttendanceLeave requests, handovers, balances, controlsLeave and Absence
Time & AttendanceAttendance and overtimeTime and Attendance
Time & AttendanceRostersScheduling and Coverage
Payroll ProcessingEnrollment, periods, runs, payment batches, remittancesPayroll
RecruitmentRequisitions, candidates, applications, interviews, assessments, checks, offersTalent Acquisition
Performance & DevelopmentReviews and targetsPerformance and Goals
Performance & DevelopmentTraining and skillsLearning and Development
Performance & DevelopmentRewardsCompensation
Performance & DevelopmentSuccessionCareer and Succession

When a saved ?tab= is no longer available, the workspace selects its first visible tab. My HR is presented as an Employee Self-Service area, and its individual tabs combine their own permission with the capability they need: profile uses Employee Self-Service, payslips use Payroll, leave uses Leave and Absence, attendance uses Time and Attendance, and documents use Documents and Compliance. If capability evidence is unavailable during migration, the frontend's compatibility path preserves the existing permission-based view; that fallback is not proof that the capability is active and does not replace backend authorization.

Two route-level requirements need alignment with their tabs: Time & Attendance Setup omits Scheduling and Coverage even though its Shifts tab uses it; Talent & Benefits Setup omits Onboarding and Transitions even though its Onboarding Checklists tab uses it. With only either of those capabilities enabled, the route may be hidden and strand an otherwise eligible tab.

Where an administrator manages capabilities ​

Capability selection is a company-service administration task, not an HR Setup task. In the administration interface, open Administration → Companies, select the company and its service instance, then use Capabilities to review or change statuses. Always verify the exact company-service context: changing Community Finance & HR does not change a separate HR & Payroll instance.

Before activation, confirm the service instance, review dependencies and linked seed packs, ensure Workforce Core and shared platform foundations are available, activate only what the tenant intends to use, and separately review permissions, HR setup records, accounting/payment setup, and integration configuration. Request seed synchronization only when the listed files are wanted and the tenant is ready. Then verify navigation, API access, data scope, and at least one end-to-end workflow as both an authorized and unauthorized user.

Before suspension or retirement, check dependencies and active workflows, retain a reason/audit trail, and plan historical-data access. Do not delete records merely to make an inactive package appear empty.

Current implementation and gaps ​

The following are code-level findings from the merged frontend develop and the current backend develop source reviewed for this guide. They are not claims about the live status of a particular tenant.

  1. The frontend now gates HR navigation, routes, and tabs. The merged frontend defines HR route requirements, prunes capability-mapped entries from the permission-derived navigation tree, and hides tabs with useHrCapabilityTabs. It preserves unknown/legacy entries and existing navigation when the active service has no capability evidence.
  2. AVAILABLE is correctly treated as inactive in the merged frontend. The active status set includes ACTIVE, DEFAULT_ENABLED, and REQUIRED; AVAILABLE, SUSPENDED, RETIRED, and inactive states are excluded. The backend guard also treats an explicit AVAILABLE override as inactive.
  3. The frontend migration fallback is intentionally permissive when capability evidence is absent. The route guard and tab helper retain existing UI when the service response has no capability list. This is useful during rollout, but a missing capability response does not prove a package was enabled. API authorization must remain authoritative.
  4. Some workspace-level and tab-level requirements are inconsistent. Time & Attendance Setup omits HR_SCHEDULING_AND_COVERAGE from its route-level requirement even though its Shifts tab uses that capability; Talent & Benefits Setup omits HR_ONBOARDING_AND_TRANSITIONS even though its Onboarding Checklists tab uses it. Those mappings should be aligned so a single eligible tab is not stranded behind a hidden workspace.
  5. The merged backend now applies capability middleware across the main HR route families. createHrRouteHandler receives an explicit capability code and installs the generic requireServiceCapabilities middleware while retaining each route's existing permissions. Employee routes use Workforce Core; payroll, benefits, leave, attendance, scheduling, recruitment, onboarding, performance, compensation, succession, and other route families use their corresponding package codes. The generic middleware's permission fallback is only for unmaterialized capability configuration or an unavailable capability schema; normal active/inactive capability results remain authoritative.
  6. Travel Expense is a route-wiring exception that still needs resolution. The mounted /api/travel-expense router is built directly with createRouteHandler, not the HR capability wrapper. Its checked-in route list exposes expense categories and legacy expense reports, but does not declare the /travel-requests, /travel-claims, or transition routes called by the current frontend. The controller, service methods, and SQL procedures exist, but that alone does not make the endpoints reachable. The route family needs explicit capability and permission wiring before this workflow can be considered API-verified.
  7. Required status needs an invariant at update time. Workforce Core is marked required in the service blueprint. The current service update path checks active dependents before deactivation; it should also ensure a required capability cannot be overridden into an inactive state.

The merged frontend controls HR presentation and the main HR backend route families now enforce service capabilities in addition to route permissions. Known follow-up work is narrower: align the two route/tab mappings above, wire the Travel request/claim API paths through the proper capability-aware router, and enforce the required-capability invariant on service updates. These are source-level findings; they do not assert the live state of any tenant or deployed database.

Verification checklist ​

For each package, verify all of the following in a configured tenant/service:

  • The service blueprint offers it with the intended required, default-enabled, or available state.
  • The tenant capability readback returns the effective state and seed-pack mapping for the correct company_service_id.
  • Activation rejects missing dependencies and records an auditable change.
  • An inactive package is hidden from its menu/tab and direct navigation is blocked, without hiding unrelated HR areas.
  • The API rejects a manually constructed request for an inactive package.
  • A user without the relevant permission remains blocked when the package is active; no role is changed by activation.
  • Self-service reads/writes are scoped server-side to the employee or authorized reporting hierarchy.
  • Missing-registry compatibility behavior requires existing verified permissions and is auditable.
  • Seed synchronization is repeatable and loads only the mapped seed boundary, not operational HR data.
  • Service switching refreshes capability state, permissions, navigation, tabs, and API context.
  • Historical records remain protected and available for authorized audit/retention even when a package is suspended.

Capability readiness requires agreement between source definitions, seed generation, tenant/service readbacks, frontend behavior, API enforcement, and permission behavior. A successful seed or a hidden menu alone is insufficient.

Pinkapple ERP by Stat Solutions Network