Skip to main content

Installation

Dependency: OpenRegister

HRMQ owns no database tables of its own. Employee, EmploymentContract, PayrollRun, Payslip, WageTaxFiling, Timesheet, Expense, and every other HR object live in the OpenRegister hrmq register, and HRMQ's Vue manifest pages read and write that register directly. OpenRegister must be installed before HRMQ.

Supported Nextcloud versions: 28–34. PHP 8.3+.

Install from the app store

occ app:install hrmq
occ app:enable hrmq

Or, from a source checkout:

cd /var/www/html/custom_apps
git clone https://codeberg.org/Conduction/hrmq.git hrmq
cd hrmq
composer install --no-dev
occ app:enable hrmq

First-run register import

On install and on every upgrade, HRMQ's InitializeRegister post-migration repair step runs automatically. It reads lib/Settings/hrmq_register.json, deep-merges the modular schema fragments under lib/Settings/register.d/*.json (payroll, leave, verzuim, onboarding, recruiting, performance, org chart, assets, documents, and more), and hands the merged result to OpenRegister to create or update the hrmq register's schemas.

The import is idempotent — OpenRegister's per-register/per-schema version_compare means re-running it on a routine upgrade is a no-op unless a schema or fragment actually changed. If OpenRegister is not yet installed when the repair step runs, it fails soft rather than blocking the rest of the install.

To force a re-import (for example after manually editing a register fragment in a development checkout), re-run the repair step:

occ maintenance:repair --include-expensive

Verify the install

Once enabled, open HRMQ from the Nextcloud app switcher. The Dashboard page (menu order 10) is the landing page; Mijn HR gives every logged-in employee their own self-service view (see Self-service).

If you plan to use the payroll engine, continue with The payroll engine — it explains the versioned tax-year table HRMQ ships and the occ hrmq:payroll:run / occ hrmq:payroll:verify commands.