Lightweight UK-aware HR module: leave entitlement, sickness with SSP, and a manager calendar — wired to BC dimensions and the standard Approval/Notification frameworks.

  • Current version: v0.1.1.0
  • AL prefix: HRLIT
  • Object range: 80600-80699
  • Business Central: 26.0.0.0
  • Publisher: Amplio Solutions

HR-Lite for Business Central (UK) — MVP Scaffold

Lightweight UK-aware HR module for Business Central: leave entitlement, sickness, and SSP calculation, integrated with the standard Approval Entry framework, BC dimensions, and the Notification framework.

  • Publisher: Amplio Solutions
  • Object prefix: AMP
  • Object ID range: 80600..80699
  • Target: BC application 26.0.0.0 / platform 26.0.0.0
  • Country: GB
  • Version: 0.1.1.0

Object map

Range Object type Range used
80600..80619 Tables 80600..80607
80620..80629 Enums 80620..80622
80630..80659 Pages 80630..80642
80660..80669 Page extensions 80660
80670..80689 Codeunits 80670..80676
80690..80699 Permission sets 80690..80691
ID Object Notes
80600 table AMP HR-Lite Setup Singleton — leave/SSP/notification configuration
80601 table AMP SSP Rate Effective-dated SSP weekly rate + LEL
80602 table AMP Leave Type Catalogue (Annual, Sickness, Unpaid, Maternity, Paternity)
80603 table AMP Leave Entitlement One row per employee × leave year
80604 table AMP Leave Request Leave request with Approval-Entry integration
80605 table AMP Sickness Episode Sickness episode header
80606 table AMP SSP Calculation Line One row per SSP-payable week within an episode
80607 table AMP HR-Lite Cue Cue source for the role centre
80620 enum AMP HR Leave Category Annual, Sickness, Unpaid, Maternity, Paternity, Other
80621 enum AMP HR Leave Request Status Open, Pending Approval, Approved, Rejected, Cancelled
80622 enum AMP HR Sickness Status Open, Self-Certified, Fit Note Received, Closed
80630..80641 pages Setup card, lists, cards, role centre, activities cue, calendar, SSP subform
80660 page extension AMP Employee Card Ext Adds HR-Lite group + actions to Employee Card
80670 codeunit AMP HR-Lite Install Seeds Setup row + default leave types
80671 codeunit AMP Leave Accrual Engine UK statutory 5.6 weeks (capped at 28 days), per-employee or bulk
80672 codeunit AMP SSP Calc Engine LEL test, 4-day PIW test, 3 waiting days, 28-week cap, weekly lines
80673 codeunit AMP Leave Request Mgmt Submit / approve / reject / cancel; integrates with Approvals Mgmt.
80674 codeunit AMP Year-End Carry-Over Capped by Max Carry-Over (Days)
80675 codeunit AMP HR Notification Mgmt In-client notifications via the Notification framework
80676 codeunit AMP HR Workflow Subscribers Workflow events + Approvals Mgmt. event handlers
80690 permission set AMP HR-Lite Full RIMD + execute
80691 permission set AMP HR-Lite Read Read-only inclusion

What's complete in 0.1.0.0

Leave - UK statutory 5.6-weeks accrual engine, capped at 28 days for full-time, run per-employee or bulk for all active employees. - Setup-driven leave year anchor (e.g. 1 April), working days/week, contractual extras. - Leave request with Open → Pending Approval → Approved/Rejected/Cancelled lifecycle. - Working-days calculator (excludes Sat/Sun, supports half-day start/end). - Approval Entry integration: subscribers register workflow events with the standard Workflow Setup, write Approval Entry rows for the manager, and react to OnApproveApprovalRequest / OnRejectApprovalRequest to flip the request status. - Direct approve/reject fallback when no workflow is configured (Setup toggle). - FlowField-based balances (Approved / Pending / Remaining) with a manual "Refresh Balance" action. - Year-end carry-over capped by the setup limit, run per employee or bulk.

Sickness & SSP - Sickness episode header (start, end, calendar days, self-cert, fit note, linked PIW, dimensions). - SSP calculation engine: PIW eligibility (≥4 consecutive days), Lower Earnings Limit test against AWE, 3 waiting days, 28-week cap, weekly lines with daily rate derived from the qualifying-days/week setting. - Effective-dated SSP rate table: rates and LEL are picked up by date so April rate refreshes are configuration, not code.

UI - HR-Lite Setup card with promoted actions for SSP Rates, Leave Types, Run Accrual, Run Carry-Over. - Leave Requests / Leave Entitlements / Sickness Episodes / SSP Rates / Leave Types lists with cards. - Leave Request Card with Submit / Cancel / Approve / Reject / Show Entitlement actions. - Sickness Episode Card with embedded SSP lines subform and "Calculate SSP" action. - HR Manager role centre (AMP HR-Lite Role Center) with activities cues (Pending Leave Requests, My Pending Approvals, Approved this year, Open Sickness, SSP Eligible). - Manager Leave Calendar with month-step navigation and manager filter. - Employee Card extension showing current entitlement balance + quick actions (New Leave / New Sickness / Run Accrual / drilldown lists).

Plumbing - app.json set for BC 26.0.0.0, idRanges 80600..80699, en-GB, target: Cloud, dependencies on Base + System Application. - .vscode/launch.json with two configurations: BC: Local Sandbox (Docker) and BC: Cloud Sandbox (AMP-DEV). Startup object Page 80639 (the role centre). - .gitignore, .editorconfig (CRLF, UTF-8, 4-space indent for AL). - Two assignable permission sets: AMP HR-Lite (full) and AMP HR-Lite Read (read-only). - Install codeunit seeds the Setup singleton with UK defaults (5.6 weeks, 5 days/week, 3 waiting days, 28-week SSP cap) and inserts five default leave types. - HR Manager profile bound to the role centre.

MVP scope (per spec) - ✅ Leave request + approval + balance - ✅ Sickness logging with SSP calc - ✅ Manager calendar view - ⏸️ Expense capture — deferred to v2 - ⏸️ Onboarding checklists — deferred to v2


What Lee needs to do before ship

Pre-flight (must do)

  1. Compile in VS Code with the AL extension. This scaffold has not been compiled in this session — review compile output and resolve any version-specific signature drift (the BC 26 Approval Entry status enum keys can vary between cumulative updates).
  2. Generate .alpackages symbols against your target BC 26 build (AL: Download symbols).
  3. Confirm the app.json GUIDb4e2c2d5-8c9c-4f9f-ae3d-8c2f1f6d1c12 was inherited from the prior scaffold. If this extension is being published from a different Amplio repo with a different ID, regenerate it once.
  4. Update launch.json with your real Cloud Sandbox environment name (placeholder: AMP-DEV).
  5. Seed SSP rates — open SSP Rates and add at least one row (Effective From, Weekly Rate, Lower Earnings Limit) for the current tax year. The SSP engine errors with "No SSP rate is configured effective on or before X" when none exist.
  6. Set Leave Year Start Date in HR-Lite Setup if your business operates on a non-calendar leave year (e.g. 1 April).

Configuration (after install)

  • Optionally select the Department / Cost Centre Dimension Codes in HR-Lite Setup to drive dimension defaulting on Leave Requests and Sickness Episodes.
  • Configure a Workflow (via standard Workflow page) using the new categories AMPHR and event codes AMPLEAVEAPPSEND, AMPLEAVEAPPAPPROVE, AMPLEAVEAPPREJECT, AMPLEAVEAPPCANCEL registered by AMP HR Workflow Subscribers. Without a workflow, the request still goes Pending and writes an Approval Entry, but the routing/escalation rules of standard Workflow are bypassed.
  • Configure User Setup approver chains so the standard Approval Entry routes correctly to managers.

Known gaps to close before sale

  • Cross-user push notifications. The BC Notification framework only delivers to the current user's session. Manager push notifications (Outlook / Teams) currently rely on the manager's own Approval Entry email/Teams channel configuration. If you want HR-Lite to push directly without the manager opening BC, wire Email Item/Email Outbox (System Application) into AMP HR Notification Mgmt — a stub procedure boundary already exists.
  • Bank holidays. CalcWorkingDays excludes Sat/Sun only. To honour England-and-Wales / Scotland / NI bank holidays, attach a Base Calendar (table Base Calendar + Customized Calendar Entry) and subtract non-working dates. v2.
  • Test codeunits. No automated tests are included. Suggested first three: leave entitlement maths (5.6 × 5 = 28 cap), SSP weekly lines (4-day PIW + 3 waiting days + LEL gating), year-end carry-over cap.
  • Telemetry. No Session.LogMessage calls yet. Add at codeunit boundaries (Submit, Approve, Calculate SSP) before the AppSource submission.
  • Translations. app.json declares TranslationFile and en-GB. Run AL: Generate XLIFF and ship the .g.xlf plus any localised target files.
  • AppSource validation. Run AL: Package then AL: Publish then the BcContainerHelper validation cmdlets (Run-AlValidation) to catch the AppSource-specific lint warnings before submission.

Smoke test (5 minutes after install)

  1. Open HR-Lite Setup → confirm 5.6 weeks / 5 days/week / 3 waiting days / 28 weeks defaults.
  2. Open SSP Rates → add a current-year row (e.g. Effective From 2025-04-06, Weekly Rate 116.75, LEL 123.00).
  3. Run Run Accrual for All Employees → confirm one Leave Entitlement row per active employee.
  4. Open Leave Requests → New → fill in employee, leave type ANNUAL, dates → Submit for Approval → confirm Status flips to Pending Approval and an Approval Entry row exists.
  5. Approve the entry from the standard Requests to Approve page → confirm the leave request flips to Approved and Remaining (Days) on the Entitlement decreases.
  6. Open Sickness Episodes → New → 5-day episode for an employee with AWE > LEL → Calculate SSP → confirm a calc line is written for the qualifying days net of 3 waiting days.

File layout

12-HR-Lite/
├── app.json
├── README.md
├── .gitignore
├── .editorconfig
├── .vscode/
│   └── launch.json
└── src/
    ├── Tables/                  (8 tables)
    ├── Enums/                   (3 enums)
    ├── Pages/                   (12 pages)
    ├── PageExtensions/          (Employee Card extension)
    ├── Codeunits/               (7 codeunits)
    └── Permissions/             (2 permission sets)

Roadmap (v2 scope)

  • Expense capture (mileage, receipts, OCR via Copilot).
  • Onboarding checklists (template + per-employee instance + due-date workflow).
  • Bank-holiday-aware working-day calculator.
  • Outlook/Teams push via System Application Email + Microsoft Graph webhook.
  • Power BI report pack for absence analytics.
  • Test codeunits + GitHub Actions CI publishing to AppSource staging.