Skip to content

Demo Data

Under Administration > Demo Data (/v2/admin/demo-data), test data can be managed.

Load Demo Data

Demo data creates a complete test environment:

  • One demo login per standard role (Laborleitung, Techniker, Administration, Auditor, Buchhaltung, Kunde) plus an admin with all permissions
  • Test customers with equipment and calibrations
  • Field configurations and grid templates
  • Locations, repairs, standards, contacts, and categories
  • Support desk, wiki and resources — the modules a lab is run with

Demo Logins

With Show demo credentials switched on, the login page lists these logins; a click fills in the form.

Email Password Role
admin@test.calserver.local test-admin-password Full access (all permissions)
laborleitung@demo.calserver.local demo-laborleitung Laborleitung (lab management)
techniker@demo.calserver.local demo-techniker Techniker (technician)
administration@demo.calserver.local demo-administration Administration
auditor@demo.calserver.local demo-auditor Auditor
buchhaltung@demo.calserver.local demo-buchhaltung Buchhaltung (accounting)
kunde@demo.calserver.local demo-kunde Kunde (customer, Weserwerk Antriebstechnik only)

The role logins carry the shipped role itself, not individual permissions. The test users viewer and noapi still exist for the test suite but are no longer shown on the login page.

Support desk, wiki and resources

A separate step (DemoLabModulesSeeder) fills the modules around the calibration core. Without them those areas do not look empty, they look unfinished:

Records Purpose
2 projects, 4 tickets with comments support module with an actual history
Ticket types, categories, priorities, 4 ticket statuses the metadata a ticket needs to offer any choice
2 wiki categories, 3 wiki pages with content knowledge base with real work instructions
Groups "Kalibrierlabor" / "Kundenservice" assignment target for tickets and tasks
3 resources (workplaces, climate chamber) resource planning
5 measurement points each for the 4 most recent calibrations the calibration's measurement table — the screen a calibration lab is judged on

Two tickets are linked to the devices they name, so the "Tickets" tab of a device has something to show.

Dates Move With the Calendar (Time Anchor)

A saved template is a database copy with fixed values. Without a countermeasure, every restore brings back exactly the state of that day — and three months later the demo shows a laboratory that has done nothing for a quarter: everything overdue, no appointment in the future, the "in progress" calibration running for 90 days.

Every package therefore carries a time anchor (the day it was saved), and on import all date values move from that anchor to today:

What moves Templates and freeze points
What does not Backups (manual, and the automatic pre-restore backup)
Step size Whole weeks — a Monday stays a Monday
What stays the same The distances: 180 days between calibration and due date stay 180 days; a device five days overdue stays five days overdue

The template list shows anchor and shift, the import dialog repeats it, and the restore log records it.

What is left untouched even though it looks like a date: times and time zones (they travel unchanged with the day), the sentinels 0000-00-00 and 2099-12-31 ("open-ended" in the price list), and text that merely contains a year — a certificate number D-2026-0001 stays as it is. After more than a year on the shelf, numbering and dates therefore drift apart; the fix is to save the template anew.

It can be switched off in three places: globally via Move dates when resetting in the demo settings, per package via "date_shift": false in its meta.json, and per run via --no-date-shift (see CLI below).

Remove Demo Data

Test data can be cleanly removed without affecting the system configuration.

Automatic Reseed

For demonstration environments, automatic reseeding can be configured:

Setting Description
Enabled Automatic reseed on/off
Interval Time interval in hours (default: 24)
Dataset Size small or large

CLI alternative

Demo data can also be managed via Artisan commands:

php artisan demo:data seed --force
php artisan demo:data remove --force

# List templates with their time anchor, then import one
php artisan demo:data templates
php artisan demo:data seed --template=<slug> --force

# ... keeping the stored dates instead of moving them to today
php artisan demo:data seed --template=<slug> --no-date-shift --force