How the data fits together#
For: Manager | Admin You’ll need: Nothing.
Shiftavo has a small handful of records that build on each other. Once you see the chain, the rest of the product is just views into it. This article walks the chain from the company outward to the shift on the calendar.
The chain#
Location ─┐
├─► MLP entry ─► Shift ─► Assignment ─► Time entry ─► Payroll
Person ────│
│
Position ──┘
Read it left-to-right: a location plus a position define a job you might schedule. A person becomes eligible to work that job once an MLP entry ties them to it. A shift at that (location, position) gets staffed by creating an assignment to that person. Once the shift runs, the assignment carries the clock data — the time entry — and that’s what payroll reads.
Every link in the chain is enforced. You can’t assign a person to a shift they have no MLP entry for; you can’t submit a time entry against an unpublished shift; you can’t approve a time entry inside a closed company period.
The records, one by one#
Location#
A physical site — restaurant, store, ward. Has its own timezone, statutory holidays (auto-seeded from country and state), work rules, and break rules. Almost everything else is scoped to a location. See Locations.
Position#
A role you schedule — cashier, line cook, registered nurse. Positions are defined at the company level and are available at every location by default; you can optionally restrict a position to a subset of locations. Positions carry headcount thresholds (minimum, target, maximum) that drive the coverage grid, and optional skill requirements. Whether a specific person can work a position at a specific location is a separate question — that’s what the MLP entry below covers. See Positions.
Skill#
A qualification — food safety, forklift, RN license. Skills attach to people (with optional expiry dates) and to positions (as requirements). Validation rejects an assignment if the person lacks a required skill, or if their certification has expired. See Skills.
Person#
A team member: name, email, employment type, hire date, hourly rate, plus the locations they belong to. A person without at least one location can’t be scheduled anywhere. See People.
MLP entry — the eligibility join#
MLP stands for Member–Location–Position. One MLP entry says this person can work this position at this location. Without that entry, the person won’t appear in the candidate list for any shift at that pair.
You can create and edit MLP entries from three places — whichever matches how you’re thinking about the problem:
From a location — „who can work which positions at this site?“
From a person — „which positions can this person work, and where?“
From a position — „who can work this role, and where?“
It’s the same underlying record from any of the three. Each entry can also carry an override hourly rate. See Manage the MLP block on a person.
Shift#
One block of work: a date, a start and end time, a location, a position, optionally an area inside that location. A shift can exist with no assignment yet — that’s a gap, surfaced on the coverage grid. A shift is born Draft: visible to planners, invisible to workers. See Shifts.
Assignment#
One person × one shift. Creating an assignment is what stocks the shift; deleting it leaves the shift unstaffed. New assignments are created in Draft regardless of the shift’s status — but when you publish the shift, its draft assignments are flipped to published alongside it. See Assignments.
Time entry#
The record of what was actually worked on an assignment: clock-in, clock-out, breaks, and attendance flags. Time entries are the source of truth for hours, overtime, and pay — they’re what Shiftavo hands to payroll. See Timesheet.
What anchors what#
Two records anchor the rest of the system and are worth getting right early:
Country and state on each location — drives the seeded statutory holidays.
Hire date on each person — drives leave accrual (proration and service-year boundaries). Getting it wrong rewrites months of leave balances later. Time-comp accrual is calendar-year based and doesn’t use hire date.
Almost everything else can be edited later without rippling.