Sample Data — Loading and Clearing
1. What it is
Sample Data lets an admin populate a tenant with realistic demo records across every app — users, departments, shifts, tasks, inspections, forms, and dozens more — then remove them cleanly when they are no longer needed. Every sample record is tagged so it can be distinguished from real data and deleted without affecting anything an employee created.
- Enablement: requires Super Administrator on any tenant, or Administrator on an internal-QA tenant. The navbar pill and sidebar item share the same gate.
- What it is not: this is not the Setup Wizard’s step-by-step flow (that is a separate page at Admin → Setup Wizard, restricted to Super Administrators). The Sample Data dashboard is the inspection-and-action surface; the wizard is one way to reach it.
2. Standing it up
- Go to Admin → Sample Data (the navbar pill or the sidebar item).
- Click Create Sample Data. A modal opens with a volume preset selector (Small, Medium, Large, XL — default is Medium).
- Choose a volume and click Start Seeding. A background job is enqueued. The page shows a progress card with the current step and percentage.
- Wait for the email notification confirming the job finished. The page auto-refreshes, but the job runs asynchronously — you can navigate away.
- Review the dashboard: the top-line KPIs show total sample records, how many apps have data, and the foundation breakdown. The Apps table below shows per-app record counts.
Foundation data (users, departments, locations, holidays, shifts, schedules, attendance, and timesheets) is always seeded, even when you seed a single app. Apps that are not yet enabled are auto-enabled and licensed as part of the seed.
3. How it fits together
Foundation vs per-app data
Foundation data is the shared substrate that most app generators depend on: sample users, departments, locations, holidays, shifts, schedules, attendance records, and timesheets. It is seeded first, unconditionally, every time — including when you seed a single app. This means seeding even one app will also create foundation records tenant-wide. On a measured dev tenant, seeding one app created 10 records for that app and around 1,480 foundation records.
Clearing foundation data uses the Targeted cleanup buttons (Users & Org, Shifts & Schedules, Timesheets), not the per-app Clear links.
Per-app data is what each app’s generator creates on top of the foundation: tasks, inspections, forms, recognition posts, training courses, and so on. Every app’s generator is listed in one central registry, so the dashboard and the in-app buttons always run the same one. Per-app data can be cleared individually or in bulk.
How sample records are marked
Every sample record carries a hidden marker that identifies it as sample data. When clearing, only marked records are removed — real records are never touched. Some apps mark their records a different way (a hidden attribute, a name-suffix convention), but the principle is the same: sample records are always identifiable and separately deletable.
Across the platform, any app that holds sample data can show exactly two views of it: sample records only, and everything except sample records — the second of which safely includes older records created before the marker existed. Two delivery-layer backstops, one on outbound email and one on in-app notifications, stop sample records from reaching a real inbox or bell even if a sender forgets to filter them out.
Volume presets
Each seed run uses a volume preset that controls how many records each generator creates:
- Small — minimal prefab demo, fastest to seed
- Medium — realistic tenant (the default)
- Large — stress demo with more records
- XL — maximum density for load testing
The preset is selected per run in the Create Sample Data modal and is not persisted. Switching to a smaller volume on a re-run does not shrink existing data — Clear All first, then re-seed.
Concurrency and queuing
All sample-data jobs (seed and clear) share a single per-business concurrency key. Only one job runs at a time per tenant. Additional clicks queue behind the running job in FIFO order — they are not rejected. The dashboard shows per-row “Queued” and “Processing” badges while jobs are in flight. When a job finishes, you receive an email notification.
App enablement during seeding
The seed process auto-enables and auto-licenses any app that is not yet enabled. This is intentional: generators depend on the app being active to create records. App enablement is left untouched by Clear All — clearing removes only sample records, not the apps themselves.
In-app settings buttons
Individual apps can offer Load Sample Data and Remove Sample Data buttons on their own settings page (a “Demo Data” card). These use the same registry generators and the same background jobs as the central dashboard — the two surfaces cannot drift. The in-app buttons scope to that one app’s slug; foundation data is still seeded on load but is not cleared on remove (use the central dashboard for that).
The dashboard’s three views
The Apps table on the dashboard has three tabs:
- With data — apps that currently have sample records, with a count badge and a per-app Clear button
- Empty — apps with zero sample records, with a per-app Seed button and a bulk “Seed N empty apps” action
- All — every registered app in one list
Each row shows a status icon: green check (has sample data), open circle (app enabled, no data), or minus circle (app not enabled).
4. Running it
Creating sample data for all apps
- Go to Admin → Sample Data.
- Click Create Sample Data.
- Choose a volume preset (Small for a quick demo, Medium for a realistic tenant, Large or XL for stress testing).
- Click Start Seeding. The progress card tracks each app as it is processed.
Re-running adds to what already exists. Most generators skip records they have already created, but some will add duplicates. For a clean slate, click Clear All first.
Seeding only empty apps
- Go to the Empty tab in the Apps table.
- Click Seed N empty apps in the banner at the top of the tab. This seeds only apps that currently have zero sample records, without re-seeding apps that already have data.
Seeding a single app
- Find the app in the Apps table (use the Empty or All tab).
- Click the Seed link on that row. A confirmation dialog discloses that foundation data will also be seeded.
Clearing all sample data
- Click Clear All in the page header (visible only when sample data exists).
- Confirm in the modal. A background job removes every sample record across every app, including foundation data. App enablement is not affected.
- After the job completes, the dashboard shows a residual warning banner if any apps still have leftover records. The banner names each app and its remaining count. This usually means a generator’s delete scope does not fully match the dashboard’s count predicate — use the per-app Clear button to retry, or file a case.
Clearing a single app
- Find the app in the With data tab.
- Click the Clear link on that row. The confirmation dialog names the blast radius — some apps share a slug (e.g. Communications, Communications Planner, and Broadcasts all share the
communicationsslug) and always clear together.
Clearing a foundation cluster
The Targeted cleanup card at the bottom of the page offers cluster-level clear buttons for Users & Org, Shifts & Schedules, and Timesheets. These run immediately (not as background jobs) and remove only the sample records in that cluster. Each cluster spans every app that shares its data, so the count shown here is larger than any single app’s row in the Apps table.
Building a demo timesheet history
The Demo preset card lets you give one employee a run of completed timesheets so the Timesheets app shows a real history instead of empty pending sheets.
- Search for an employee.
- Set the number of past pay periods (1–24, default 6) and minimum hours per period (0–200, default 32).
- Choose a status distribution (All approved, All submitted, Mostly approved, or Even mix).
- Optionally check Clear this employee’s existing timesheets first (on by default — this also removes the empty pending sheets the app auto-creates).
- Click Build history.
5. Settings
Sample Data has no persistent app-level settings or configuration toggles. Access is controlled entirely by role.
| Setting | Where | Default | What it changes |
|---|---|---|---|
| Access gate | Determined by role | Super Admin everywhere; Admin on internal-QA tenants only | Who can see and use the Sample Data page, navbar pill, and sidebar item |
| Volume preset | Create Sample Data modal | Medium | How many records each generator creates per run (Small / Medium / Large / XL). Not persisted — chosen each time. |
| Metrics cache TTL | Internal (not configurable) | 30 seconds | How long the dashboard caches record counts before re-querying. Automatically bypassed while any sample-data job is in flight or has recently completed. |
6. More help
- Sample Data FAQ — specific setup and operating questions (not yet published)
- Admin → Setup Wizard — the step-by-step guided flow (Super Administrator only)
- Ask AI — the assistant answers questions about sample data from these articles.