Laundry Manager - Staff Manual
Version: 2.4 Last Updated: September 30, 2026
Task, planning and logistics instructions below describe the current delivery contract. Deployment and Consumption feature activation are tracked separately; this manual does not certify their availability in a particular environment.
Table of Contents
- Introduction
- Getting Started
- Login & Authentication
- Roles & Permissions
- Dashboard
- Locations
- Items
- Stock Management
- Central Storage
- Order Planning
- Reservations
- Hostaway Integration
- iCal Integration
- Plan Board & Deliveries
- End-of-day Checklist
- Demand & Planning Work List
- External Task Handoff
- Transactions
- Consumption Settings
- Rejected Items (Quality Returns)
- Common Workflows
- Troubleshooting
Introduction
The Laundry Manager is a web application for planning laundry deliveries to rental properties. It helps you:
- Track stock levels at each location
- Plan deliveries with suggested quantities
- Sync reservations automatically from Hostaway and iCal feeds
- Use reservations to predict consumption
- Record rejected items (damaged, stained, worn)
- Generate delivery lists for drivers
The system automatically calculates what each location needs based on current stock, upcoming reservations, and guest counts. Reservations are synchronized from property management platforms (Hostaway) and iCal feeds (Airbnb, Booking.com, etc.).
Getting Started
Accessing the Application
Open the Laundry Manager in your web browser. The application works on desktop and mobile devices. All current Operations and Driver Field interface labels are in English. A future language switch may be considered separately, but the current product does not show German and English copy at the same time.
Navigation
The main navigation bar at the top includes:
| Menu Item | Purpose |
|---|---|
| Dashboard | Overview of all locations and alerts |
| Scheduling (Requests) | Capture and refine incoming Requests before they become Tasks |
| Plan Board | Plan driver shifts, stops, and demand inbox work |
| Field Today | Mobile route view for drivers |
| Pack Station | Pack the driver's current wave before each Laundry stop |
| End-of-day checklist | Operations-only default and date-specific driver checklist authoring |
| Orders | Plan Tuesday orders for Thursday delivery |
| Reservations | View synced reservations from Hostaway & iCal |
| Locations | Manage property information |
| Items | Manage the item catalog |
| Stock | View and adjust current inventory |
| Consumption | Configure consumption calculation settings |
| Transactions | View delivery and usage history |
| Rejected Items | Track items to return to supplier |
| Hostaway | Hostaway integration settings (Admin only) |
Dark Mode
Click the sun/moon icon in the top-right corner to toggle between light and dark mode.
Login & Authentication
You need to log in before you can use the Laundry Manager. All pages are protected — if you're not logged in, you'll be redirected to the login page automatically.
Login with E-Mail & Password
- Open the Laundry Manager in your browser
- Enter your E-Mail address and password
- Click "Sign in"
If your credentials are correct, you'll be redirected to the Dashboard.
Login with Magic Link
If you don't have a password or prefer a passwordless login:
- Enter your E-Mail address in the login form
- Click "Email me a magic link"
- Check your inbox for an email with a login link
- Click the link in the email — you'll be automatically authenticated and redirected
Tip: The Magic Link is a one-time-use link. If it expires, simply request a new one from the login page.
Confirmation Page
After clicking a Magic Link, you'll briefly see a confirmation page:
- Success: A green checkmark appears and you're redirected to the Dashboard within 2 seconds
- Error: A red icon with an error message appears — click Back to sign in to try again
Session
Once logged in, your session stays active. You don't need to log in again every time you open the app. If your session expires, you'll be redirected to the login page.
Roles & Permissions
Each user account has a role that determines what they can do in the system. Roles follow a hierarchy — higher roles include all permissions of lower roles.
Role Hierarchy
| Role | Level | Description |
|---|---|---|
| Driver | Basic | View deliveries, locations, items; mark stops as complete; record inventory & rejected items |
| Cleaner | Extended | Everything a Driver can do, plus view units, beds, and bathrooms |
| Operations | Management | Full access to all features: deliveries, orders, reservations, stock, locations, consumption settings |
| Admin | Full | Everything, including user management and system configuration |
Detailed Permissions
| Feature | Driver | Cleaner | Operations | Admin |
|---|---|---|---|---|
| Dashboard | ✅ View | ✅ View | ✅ View | ✅ View |
| Deliveries | ✅ View | ✅ View | ✅ Full | ✅ Full |
| Mark stops complete | ✅ | ✅ | ✅ | ✅ |
| Locations & Attachments | ✅ View | ✅ View | ✅ Full | ✅ Full |
| Items | ✅ View | ✅ View | ✅ Full | ✅ Full |
| Current Stock | ✅ View | ✅ View | ✅ Full | ✅ Full |
| Standard Configuration page | ❌ | ❌ | ✅ Full | ✅ Full |
Legacy standard_stock API (read) |
❌ | ✅ View | ✅ View | ✅ View |
| Stock Transactions | ✅ Full | ✅ Full | ✅ Full | ✅ Full |
| Rejected Items | ✅ Full | ✅ Full | ✅ Full | ✅ Full |
| Units / Beds / Bathrooms | ❌ | ✅ View | ✅ Full | ✅ Full |
| Orders | ❌ | ❌ | ✅ Full | ✅ Full |
| Consumption Settings | ❌ | ❌ | ✅ Full | ✅ Full |
| Reservations | ❌ | ❌ | ✅ Full | ✅ Full |
| Hostaway Integration | ❌ | ❌ | ❌ | ✅ Full |
| iCal Integration | ❌ | ❌ | ❌ | ✅ Full |
| Planning Work List | ❌ | ❌ | ✅ Full | ✅ Full |
| End-of-day checklist authoring | ❌ | ❌ | ✅ Full | ✅ Full |
Standard Configuration During a Cutover
Laundry templates, Procurement baselines, and Supply targets are
Standard Configuration and may be changed only by Operations or Admin. When a
cutover is announced, stop all edits in these three areas until Operations
reopens them after the post-migration smoke test. Do not retry a save in an
older tab/app version or use direct SQL as a workaround: legacy Consumable
standard_stock writes are intentionally rejected rather than creating an
unaudited Procurement baseline. The current Procurement screen records the
real signed-in actor for every create, change, and delete.
The Standard Configuration page is Operations-only (with Admin through the
role hierarchy). Cleaner retains read-only access only to the legacy
standard_stock API; that API access does not grant access to this page.
How It Works
- Your role is assigned by an administrator when your account is created
- The system automatically checks your permissions on every page and action
- If you try to access something you don't have permission for, you'll see a "Forbidden" error
- Deactivated accounts are fully blocked — even with valid login credentials
- Roles are hierarchical: each role includes all permissions of the roles below it
Account Status
Accounts can be active or deactivated:
- Active: Normal access based on your role
- Deactivated: No access at all — login is blocked with a "Forbidden" error
Note: If you can't log in but your credentials are correct, your account may have been deactivated. Contact your administrator.
Dashboard
The Dashboard is your daily starting point. It provides a compact overview of all locations and stock status.
Quick Links
Quick access buttons to the most common tasks:
- Locations – Manage property information
- Items – Manage the item catalog
- Standard Stock – Set target quantities per location
- Current Stock – View and adjust inventory
- Transactions – View delivery and usage history
- Plan Board work list – Review demand, dated backlog, overdue work, and attention
Quick Search
Press ⌘K on Mac or Ctrl+K on Windows/Linux anywhere in the dashboard to open the global search palette.
- Search spans Units, Locations, Contacts, Knowledge, and Keys
- Results open the matching page directly and deep-link into structured tabs when possible
- Contacts, keys, and knowledge entries are auto-highlighted briefly after navigation
- Operational aliases such as WiFi/WLAN, Emergency/Notfall, Waste/Müll, Parking/Parkplatz, and Key/Schlüssel are understood even when the underlying records use normalized taxonomy values
- Recent searches are stored locally on the current device for fast repeat lookups
Tip: Use quick search for urgent requests like WiFi, emergency phone numbers, parking instructions, or a key location when you do not want to click through several tabs first.
Quick Stats
- Total Stock: Total items across all locations
- Locations Tracked: Number of active locations
- Items Tracked: Number of different item types
- Transactions (7d): Activity in the last 7 days
Critical Locations
Locations with items below critical threshold are highlighted at the top. These need urgent attention.
Low Stock Warnings
The dashboard lists specific items that are running low, including:
- Item name
- Location name
- Current quantity vs. threshold (e.g., "0 / 12")
- Standard stock level
Location Status Badges
Each location shows a colored status badge:
| Color | Status | Meaning |
|---|---|---|
| 🔴 Red | Critical | Items below critical threshold - urgent delivery needed |
| 🟡 Yellow | Warning | Items below warning threshold - schedule delivery soon |
| 🟢 Green | Healthy | All items at or above standard levels |
Recent Activity
Shows the latest stock movements (deliveries, usage, adjustments) with timestamps.
Locations
Locations represent the properties you deliver to (apartments, houses, etc.).
Location List
The Locations page shows all properties as cards with:
- Location name
- Address
- Current stock status (colored badge)
- Quick action buttons
Location Details
Click on a location to view/edit:
Basic Information
- Name: Display name for the location
- Address: Full street address
- Access Code: Door/gate code for entry
- Key Location: Where to find keys (e.g., "lockbox by door, code 1234")
- Access Instructions: Special notes for drivers (e.g., "use side entrance", "ring bell twice")
Tip: Use the Access Instructions field for detailed directions that help drivers find entrances, parking spots, or key boxes.
Location Tabs
Each location detail page is split into dedicated tabs so operational data is easier to maintain:
- Overview: Core profile data, attachments, access details, delivery-relevant notes
- Contacts: People connected to the location such as owners, caretakers, emergency contacts, and neighbors
- Keys: Physical keys, cards, fobs, and where they are stored
- Knowledge: Reusable operational notes such as waste rules, parking guidance, WiFi information, and emergency instructions
- Storage Areas: Named storage zones used by physical Supply targets
- Units / Groups / iCal: Unit-specific inventory, grouping, and calendar sync settings
Contacts
Use the Contacts tab for structured people data instead of storing phone numbers in free-text notes.
- Role: Choose the best matching role (Owner, Caretaker, Emergency, Maintenance, etc.)
- Phone: Stored in international format after validation
- Email: Must be a valid email address
- Notes: Required when role is Other, and useful for availability or escalation details
If a phone number or email already exists for the same location, the app blocks the duplicate and offers a shortcut to the existing contact.
Keys
Use the Keys tab to document every access item and its storage location.
- Track label, type, quantity, unit scope, and storage location separately
- Sensitive storage details such as a lockbox code can be hidden with the reveal/copy secret field
- Duplicate labels within one location are blocked to keep the inventory clean
Knowledge
Use the Knowledge tab for operational instructions that should stay structured and searchable.
- Pick a category such as Waste, Parking, WiFi, Rules, Emergency, or Appliances
- Guest-visible entries show a warning before saving
- Pinned entries stay at the top of the table for faster access
- Content must be detailed enough to be useful; very short notes are rejected
Storage Areas
Use the Storage Areas tab to define named storage zones like cellar shelves, laundry closets, or key cabinets.
- These areas are then selectable in the Location-level physical Supply target editor
- Only one active default consumables storage area is allowed per scope: one location-wide default or one default per unit
- Maintenance of storage areas no longer happens inside the unit detail form
Unit Consumables
The Unit Consumables tab is a read-only view of where physical Supply targets apply. Maintain target quantities, Storage Areas and applicability once at the Location-level Supply target editor.
Planning a Supply Visit
When adding a Supply refill to a stop, choose either the full Supply Profile or the exact physical Storage Area + Item positions to check. The planned visit freezes those positions and their target quantities; later profile edits do not silently change a driver's work.
If the profile is corrected before the visit starts, Operations can refresh the planned Supply targets. Once the task or its route has started, create a new planned visit instead. A legacy Supply marker without an explicit scope is not ready for assignment and must be recreated or cancelled deliberately.
Attachments
Locations can have file attachments — photos, PDFs, or documents that help Operations staff maintain the property record (e.g., key box photos, access maps, cellar entry instructions).
Adding Attachments:
- Open a location's edit view
- Go to the Attachments section
- Click "Upload" to add a file (images or PDFs)
- Add a title or description for the attachment
- Save
Managing Attachments:
- Reorder: Drag and drop attachments to change their display order
- Edit: Update the title or description of an existing attachment
- Archive / Restore: Archive media that should no longer appear in normal Operations, Field, Knowledge or search views. Switch the Media Library to Archived media to review, open, download or restore it. Archiving keeps the original file and its existing links; it does not delete the storage object.
- Delete: Remove attachments that are no longer needed
Driver delivery access:
At a currently assigned delivery stop, Drivers can choose Show documents to load Location media explicitly marked Visible to Driver. The list and each file are authorized live and are not stored offline; other Locations, archived media and files without Driver visibility stay unavailable. Access context uses a separate live-only, no-store reveal. Completed stops remain readable until the scheduled shift end (or the end of the Berlin day when no end time is set). Completion and proof uploads stay locked. Location attachments and their visibility settings remain Operations-managed records.
Archiving vs. Deleting Records
Locations, units, contacts, keys, knowledge entries, storage areas, beds, bathrooms, and consumable standards now support two different destructive actions:
- Archive: Use this when the record should disappear from day-to-day lists but may still be needed for history, reservations, or later recovery. Archived records can be restored.
- Delete permanently: Use this only when the record is wrong and should be removed forever. Permanent deletion is restricted to Admins and is blocked automatically when there are still linked records such as reservations or stock history.
If the delete dialog tells you that deletion is blocked, choose Archive instead. This is the normal path for properties or units that should no longer be used operationally but still have historical data attached.
Tip: Upload a photo of the key box or entrance for each location — this saves drivers a lot of time on their first visit.
Office vs Storage vs Direct Supplier
The system separates three operational roles that can otherwise look similar:
- Office is the staging hub for urgent laundry and consumables. Use Office Ops to create a Transport / Errand task either from Office to a target location or from a location back to Office; it then appears on the Plan Board for shift assignment and is completed by the driver in the Field App. (The former special-dispatch flow has been removed.)
- Storage is the central stock source for normal delivery planning. Use Central Storage and the Storage page for stock-on-hand and order-to-storage work. Office transports should not be used as a replacement for normal storage replenishment.
- Direct Supplier locations receive laundry outside the central-storage delivery flow. Their location and Supply Profile pages show a direct-supplier banner so staff know that laundry quantities are order-tracking only, while consumable storage still follows the normal supply-profile process.
Supply vor Ort abschließen
Für jede angezeigte Supply-Position den tatsächlich gezählten Bestand vor dem Top-up eintragen. Die vorgeschlagene Liefermenge füllt nur bis zum eingefrorenen Soll auf; sie darf geändert werden, aber nicht überfüllen. Auch wenn nichts geliefert wird, die Position absenden. Liegt der Bestand danach unter Soll, ist ein kurzer Grund Pflicht. Der Shortfall erscheint für Operations in der Attention-Ansicht des Plan Boards; er erzeugt keinen automatischen Folgetask. Operations entscheidet dort manuell über eine mögliche Folgearbeit. Reports und Cases werden dabei ausschließlich durch den vorgesehenen Ablauf gebucht; es gibt keine direkte Data-API-Schreiboberfläche.
Bei einer Offline-Meldung den Eintrag nicht durch eine zweite Meldung ersetzen. Nach dem Sync ist eine bereits erfolgreich gebuchte Meldung über ihren Schlüssel dedupliziert. Ein als inkompatibel markierter alter Queue-Eintrag muss nach einem aktuellen Snapshot neu erfasst oder von Operations repariert werden.
On a location's Supply Profile tab, use Log count on a consumable row when Ops has checked, restocked, adjusted, or found missing supplies. These logs are append-only. They update the "Last counted" and "Gap" columns without changing stock quantities directly.
Units
For multi-unit properties (e.g., apartment buildings), each unit can be configured separately:
- Unit Name: Apartment number or identifier
- Bedrooms: Number and configuration of beds
- Bathrooms: Number and configuration of bathrooms
- Active Status: Toggle to temporarily disable units
Quick Facts and legacy Urgent Info
Every Operations unit detail page starts with Quick facts above the tabs. The same panel is also on the Location detail page. When more than one active Unit exists, select one for unit-specific Facts, including WiFi; Waste and Parking keep their Location-owned sources. This is the primary WP-L1 workflow for Key, Backup key, WiFi, Waste and Parking: each card shows its state, scope, source and freshness before its one canonical edit target. Missing, inherited, conflict, stale and redacted states are explicit; conflicting keys never select a winner silently.
On the Location page, the canonical Waste and Parking editor sits in the anchored Quick facts section. Edit its text and linked Waste/Parking images or PDFs there; do not create a separate Unit source for those Location facts.
Quick facts uses the standard read projection first. It does not expose WiFi
passwords or static access codes. Operations and Admin receive a separate
role-gated detail projection only after the page has mounted; it is
private, no-store, is not SSR-hydrated, and must not be copied into Search,
logs, cache or offline payloads. Driver and Cleaner do not use this global
Operations workflow.
The previous Urgent info panel is a collapsed, on-demand legacy fallback during WP-L1 validation, not the default path. It loads only when Show legacy urgent info is selected. Do not use it to work around a missing, redacted or conflicting Quick Fact: follow the Quick Facts card to its canonical source instead.
Driver field access
The Driver route stores only a short-lived, scoped non-secret route snapshot
for offline use. Location and Unit access details are revealed only while the
Driver has the current active stop assignment or completed it during the still-current shift; each reveal is live-only,
no-store, and clears when the stop changes or closes. Unit reveals are shown
only for a direct Task Unit or an explicit current occurrence snapshot Unit;
they never follow live group membership. Older Field cache namespaces are
deleted at app activation and logout; no access code, document metadata, proof
metadata or private media is kept offline.
Open Done to revisit a completed stop until the scheduled shift end. Completed details require a live connection and cannot be edited. Ordinary route refreshes preserve entered Supply quantities while renewing the open stop's authorization. If the assignment changes or cannot be renewed before expiry, access still closes. App updates activate after the current Field windows close; they do not force an unfinished report to reload.
Bed Configuration
For each bedroom:
- Bed type (Single, Double, Queen, King)
- Sheet size
- Pillows per side
- Room name (optional)
Bathroom Configuration
For each bathroom:
- Has bathtub (yes/no)
- Has shower (yes/no)
- Small towel count
- Bathroom name (optional)
Adding a New Location
- Click "New Location"
- Enter the location name and address
- Add access information (codes, keys, instructions)
- Save the location
- Add units if it's a multi-unit property
- Configure beds and bathrooms for each unit
Climate & Hot Water
Open Locations → location → Climate & Hot Water, or the Climate & Hot Water tab of a unit, to see its connected rooms. Admins and Operations use this page. It has four views: Rooms, Programs, Activity and, for Admins only, Technical. The page address keeps the selected view, so a reload or a shared link opens the same view.
Check timestamps and stale warnings before relying on a reading. Homematic reports every change and refreshes all values about every 105 minutes, so a value of a connected installation stays current for up to two hours, even when it has not changed. A stale value is grey, carries a clock symbol and shows its age; a reading is also stale at once when the connection or device is not current. A change is still checked against a fresh device read right before it is sent and refused if the value changed in the meantime. Refresh view reloads saved observations; it does not request new device state from Homematic. The view also refreshes itself while the page is visible and pauses in background tabs.
Page header
The header shows one connection chip per installation. With several installations, each chip starts with the installation name. The line under the chip explains it; on a desktop, hovering the chip also shows the raw connection codes.
- Online: the device worker is connected and the installation is reachable; the line below shows the last heartbeat.
- Online · not ready: connected, but fresh readings cannot be requested yet, for example because the installation inventory is incomplete or the device worker needs an upgrade. The line below names the reason.
- Offline: no heartbeat yet, the heartbeat has stopped (the chip shows the last one), or the Homematic connection, access point or sign-in state is not current. The line below names the cause.
- Reauthentication needed: an Admin must sign the installation in again.
- Monitoring stopped: the device worker has stopped; the line below names the reason.
When monitoring is stopped or unavailable, a red notice also says that room readings may be out of date and shows the last worker heartbeat.
Request fresh readings asks the installation to read all its rooms once. It does not change temperatures or reload weekly schedules. It is possible once every 10 minutes per installation; while it is not possible, the line below names the reason or the time of the next allowed read. The status line shows the last request, for example Fresh readings saved. A failed request is not retried automatically.
Hot water · not available yet is a placeholder: hot water is neither shown nor controlled here yet. Below the chips, Manual changes only for authorized targets or Observation only · device writes blocked says whether manual changes are possible on this server at all.
Rooms
Rooms shows one card per room, grouped by unit with the number of rooms. Rooms without a unit appear last under Shared spaces.
Under each unit's name, one line shows its stay, in Berlin time:
- Occupied · Okafor · check-out 04 Oct, 10:00: a stay runs until that check-out. On a changeover day the next guest follows, for example "· next arrival 16:00 · Lindqvist".
- Arrives today 16:00 · Lindqvist: no known stay now, and the next guest arrives today.
- Vacant · next arrival 06 Oct, 16:00 · Lindqvist or Vacant · no arrival before 14 Oct 2026: no known stay now. The date is the end of the two-week look-ahead.
- Occupancy unknown or No known stay now, followed by the cause and the reservation number: a stay at this location could not be matched to a unit (iCal bookings never have a unit), or a stay on this unit has conflicting data. Such a unit is never shown as vacant.
- Occupancy not tracked · unit archived or inactive.
A double booking adds the numbers of the overlapping reservations, for example "· 2 stays overlap (#812, #815)". The line is built from the synced reservations: if the reservation sync has stopped or a Hostaway listing is not mapped to a unit, an occupied unit can show as vacant.
Hostaway bookings show the guest's last name, other bookings the stored name. Booked via iCal stands for an iCal placeholder such as "Reserved", and Guest name missing for a booking without a name. Owner stays count as occupied. Shared spaces have no stay line. Only Admin and Operations see guest names here.
A card shows:
- the measured temperature in large type with its age, for example "20.7 °C · 3 min ago";
- the Target reported by the heating group, plus humidity and the reported window state;
- battery and device reachability only when there is a problem or the state
is unknown: Low battery, Battery status unknown (for a battery
reading mapped to the room), "
unreachable" for any device of the room or its heating group, or Reachability unknown. The card never shows battery percentages; - No sensor mapped for values that have no sensor in this room.
Select a value to see where it comes from: the source device or heating group, observation time, read time, data age, channel, receipt time, quality and evidence. A reported open window does not confirm a temperature setback, and a reported setpoint does not confirm that the room has reached it.
A badge next to the room name appears only when something needs attention. It shows the most important issue: Return not confirmed, Connection interrupted, Failed, Not confirmed, Not sent, Requested, Sent · waiting for device, Device unreachable, Changes blocked, Low battery or Window open. No badge means nothing needs attention.
The Setting line explains where the current setting comes from:
- "22 °C requested · not confirmed yet" while a change is on its way, and "22 °C requested · outcome unknown" when its result is unknown;
- "22 °C via platform · ended 10:00 · restoration not confirmed" when an override has ended and nobody has reported the restoration yet ("not confirmed" instead of "via platform" if the change was never confirmed);
- "22 °C via platform · restore reminder 18:00" for a confirmed change whose end time lies ahead. The end time is a reminder, not an automatic return. For a setpoint in AUTOMATIC mode, Homematic may return to its weekly program at the next switching point;
- "Changed outside the platform · last platform change 22 °C" when the fresh reported setpoint or profile no longer matches that change, for example after a change on the device, a weekly program switching point or, for a profile, a switch away from AUTOMATIC mode;
- otherwise the reported manufacturer mode: "Weekly program" with the active profile, "Homematic manual mode (fixed setpoint)" or "Homematic absence (ECO)". Manual mode does not tell who set the value.
A change to a heating group counts for every room the group controls. If it was requested from another room, the card adds "via" and that room's name. Last change shows the newest change with its status and time; Activity opens it in the Activity view. Heating group lists the rooms the group affects, its write capability and evidence. Blocked lines explain why a change is not possible; on a desktop, hovering one also shows its code. Other warnings, such as a setpoint changed outside the platform, appear as separate lines.
Admins and Operations change a room with Adjust − / + on its card: each press opens the change sheet one step below or above the current target (from the bottom on a phone, from the right on a larger screen). Change profile appears when the heating group has approved profiles; it is the only way in while setpoint changes are blocked. The stepper is unavailable when the room has more than one heating group, no reported target, or a blocking reason; a room without a heating group shows "No controllable target mapped." instead. When only stale or missing readings block a change, Refresh readings to change requests fresh readings for that installation.
In the sheet:
- Value: the stepper changes the target; for several rooms with different targets it shifts every room by the same amount, starting from each room's current target.
- Duration: Until checkout, Until next arrival, 2 hours, Until 22:00 (until 21:00), Until tomorrow 10:00 or Custom (Berlin time). Until you choose, the sheet preselects Until checkout for an occupied unit and Until next arrival for an arrival today or a vacant unit with a known arrival; there is no preselection for an unknown stay, shared spaces or a group in AUTOMATIC. A duration beyond the authorized write window or beyond the maximum change duration (14 days unless an admin sets another maximum) is greyed out with the reason.
- Reason: Guest is cold, Guest is too warm, Pre-heat for arrival, Airing / cleaning, Maintenance or Other (type the reason). Pre-heat for arrival ends at the next arrival.
- Preview: appears by itself once value, duration and reason are set. It lists every affected room and device and any reason the change is blocked. If the heating group also heats other rooms of this unit, a box names them and must be ticked. A group that also heats another unit or a shared space is blocked: ask an admin. A preview older than about two minutes, or one whose basis changed, is renewed when you press the button, and you confirm the renewed one.
- Button: names value and end, for example Set 22° until Fri 10:00, or Change by +0.5° in 3 rooms … for a shift. The end text says what happens: at the end nothing changes back by itself; you get a reminder to restore it.
- Submission outcome unknown: the sheet stays open and locks its fields; the button becomes Check submission. It sends the same requests again and never creates a second change. Check before closing the sheet; after closing, look in Activity before sending anything new.
After sending, the card shows Sent · waiting for device, then Confirmed 11:41, Not sent or Not confirmed. A saved request is not a confirmed device effect: the confirmation comes from the device's readback.
Several rooms: Select rooms lets you tick rooms and choose Change selected rooms…; each unit also offers All rooms…. Only one room per heating group is sent; the others are named as covered by it. Rooms that cannot be changed (no heating group, a blocking reason, observe only) are listed as Not included with the reason. Rooms with a passing reason are shown and the remaining rooms are still changed. If some rooms fail, the sheet keeps only those rooms and previews them again. Profiles can be chosen per heating group when every selected group has approved profiles.
Warmer for this stay appears on an occupied unit with at least one changeable heating group. It opens the sheet with Guest is cold, Until checkout and every changeable room of the unit. The location's Climate settings decide where the rooms start: raised by a set amount, for example +1 °C, or at a set temperature, for example 22 °C (a room already warmer keeps its target and is not sent, shown as unchanged, not sent). Without a setting each room starts at its current target.
Modes: Comfort, Eco and Frost apply the location's mode temperatures, or a heating group's assigned profile. Mode for all rooms… on a unit (or Mode as the change type in the sheet) shows for each room how the chosen mode is applied: Profile … where the group's assigned profile can be used now, otherwise the mode temperature, marked (profile not available) when an assigned profile cannot be used right now, already active, or not available with the reason (for example no temperature set, or a profile assignment outdated after a mapping change). Only rooms that change are sent, as normal setpoint or profile changes with the reason starting "Mode Eco ·". Activity shows them as the value or profile, like any other change. The manufacturer's own ECO mode is a different thing: it is shown as Homematic absence (ECO) and blocks changes.
Restoring: until settings return automatically, a confirmed setpoint change whose restoration is open offers Restore to 20 °C (its earlier value). This sends a normal change with the reason "Restore after change #…". Once that change is confirmed, Confirm restoration by change #… closes both changes. Confirm restoration in manufacturer app in Activity stays available for settings restored outside the platform.
Observe only on a card means device writes are off on this server or the room's installation only observes. The stepper, Change profile, the restore and Refresh readings to change are hidden; Activity and the restoration report stay available.
Programs
Programs shows each heating group once, with the rooms it affects and its reported active profile. The saved weekly plan appears as one bar per day, with each time period and its temperature (for example "06:00–22:00 · 21 °C") and the base temperature. The plan names its profile and load time and says whether it matches the reported active profile. Weekly times require an explicit read; "Weekly times have not been loaded." means no read has been saved yet. Profiles cannot be edited here, and this view does not load or switch programs. An approved existing profile can be selected through a separate confirmed change (Change profile on the room card); verify the independent readback afterward. An automatic manufacturer mode alone does not identify a named profile.
Above the groups, Programs shows this location's mode temperatures (Admins change them in Technical → Climate settings). Each group lists how Comfort, Eco and Frost would be applied now. Admins assign a profile per mode under Profile per mode: only approved, enabled profiles of that group are offered; Mode temperature (no profile) removes the assignment. Saving sends no temperature change. An assignment is used only for the mapping it was saved with; after a mapping change it is marked outdated and not used until it is assigned again.
Activity
Activity lists every change in this Location or Unit view, newest first, with its room and heating group (up to the 50 newest changes per room). Each change starts with a status: Requested, Sent · waiting for device, Confirmed, Not confirmed, Failed, Not sent, Replaced or Blocked. Ended · return not confirmed marks an override that has ended without a reported restoration. Each entry also shows the value, the reason, the requesting user account (Actor #number), the end time, the restoration state and, under Events, every step with its time. Blocked changes, error messages and disabled controls name the reason in plain language. For support, Technical details under each change lists its raw status and event codes; on a desktop, hovering a listed blocker or event reason also shows its code.
The end time does not automatically restore a setting. Restore the intended setting separately and report restoration only after checking the result: Confirm restoration in manufacturer app opens a confirmation in the page, and only Confirm restoration records your report. Keep open leaves the change unresolved. For a confirmed profile change, Return to previous profile opens the change sheet for a return; it is previewed and confirmed like any other change. Restore to … and Confirm restoration by change #… appear here as on the room card.
Technical (Admins only)
Only Admins see Technical; Operations does not. Pairing and installation settings stay usable even when the room view cannot be loaded.
Admins use Pair Homematic IP to save a new installation. Pairing alone does not start monitoring. Once monitoring is configured, Installation settings shows the full installation across the location's units. Choose Map room to select a room/unit and sensor sources, then Confirm mapping after checking all group members. Existing mappings are preserved.
Authorize manual control adds explicitly approved groups, either until revoked or for 1 hour up to 30 days; groups already authorized keep their authorization. The duration applies to the whole installation. It does not send a temperature change. Setpoint approval does not approve heating profiles; the server and device worker must also permit each write.
A group loses its confirmation and authorization automatically only when its set of devices changes, because a change could then reach other radiators. Firmware updates, renamed devices, changed limits or a group that briefly drops out of the installation keep both. Confirm mapping does not authorize writes; authorize the group again with Authorize manual control. Its mode profiles carry over. Changes are possible in the weekly program and in manual mode, with an open window and during a boost; the device applies the new value once the window closes or the boost ends. Stop writes for this installation blocks further dispatches across all its units; it does not undo commands already sent or restore temperatures.
Climate settings shows each setting three times: the Global value (every location), the value for This location (empty means it inherits the global one) and the value In effect here with its origin: set here, inherited or default. Settings cover the maximum change duration, when a room counts as too cold (temperature and minutes), how long before an arrival rooms are checked, how long readings count as current, the Comfort, Eco and Frost temperatures (not set: the mode is not offered) and where Warmer for this stay starts (raise by a set amount or a fixed temperature). Today the maximum change duration and the Warmer for this stay start take effect; the cold, arrival and freshness values are used by the Climate overview; the mode temperatures are used by operating modes, which come with a later release. Save global settings and Save for this location each save their own column; open change previews are checked again afterwards. If someone else saved in the meantime, the current values are shown and you enter your change again. Mode temperatures must rise from Frost to Eco to Comfort; a change that would break that is refused and names the locations affected. Settings apply to the whole location, also in a unit's tab.
Below that, Connection diagnostics shows per installation the transport, sign-in and installation state, the last worker heartbeat, the worker state and the authorization windows. Heating groups shows write capability, evidence and the raw heating programs with the available profiles. Room readings and devices lists every room reading with its full source, and each device with model, firmware, battery and reachability.
In a unit's Climate & Hot Water tab, Technical shows pairing for that unit. Installation settings are managed at the location: Manage installations and room assignments at this location opens the location's Technical view.
Automation and hot-water control are not enabled by these manual controls.
Climate overview
Climate in the sidebar (Admins and Operations, wherever Climate & Hot Water is enabled) shows every unit with connected rooms across all locations on one page. It reads the same saved observations as the location tab and refreshes itself every minute; while it reloads, the previous state stays visible. If a reload fails, the page keeps the last loaded state and says so.
Search guest, unit or room finds a unit by guest name, unit, room or location. The filter chips All units, Needs action, Check, Arrivals today (check-in today, Berlin time), Occupied, Vacant and Observe only show how many units match. Filter and search are kept in the page address, so a reload or a shared link shows the same list.
Needs attention groups the open issues by cause, with the place, the measured value or age and the next step:
- Installation offline or Monitoring stopped: inform an Admin. Admins get Open Technical; Refresh asks the installation for fresh readings (no temperature change) when that is possible.
- Installation sign-in expired: an Admin must sign the installation in again.
- Change not sent, Change not confirmed or Return not confirmed: Open activity opens the unit on its Activity view, where the change can be checked, restored or its restoration confirmed.
- Too cold during a stay or Cold before an arrival: Adjust opens the unit with a change for the affected rooms, the reason already set to Guest is cold or Pre-heat. Nothing is sent before you confirm it.
- Window open, Low battery and Readings out of date name what to check on site.
When nothing needs attention, the page says so. Changes made outside the platform and unknown occupancy appear only as a badge on the unit.
Below, each location lists its units with Stay, Rooms (up to four with their temperature, then +n more), Setting (weekly program, manual value or a change with its end) and Status. When an installation is offline, the rooms show the last known range and age instead. Shared spaces follow the units of their location; the stay filters hide them. On a phone, each unit is a card.
Selecting a unit opens the same Rooms, Programs, Activity and Technical views
as the location tab in a side panel; Shared spaces opens them for all
rooms of the location. Its address
(/climate?unit=…) can be shared. A guest request on the phone: search the
guest's name, open the unit, choose Warmer for this stay and confirm.
Items
Items are the products you deliver (sheets, towels, etc.).
Item List
Shows all items with:
- Item name
- Category
- Current total stock across all locations
Item Categories
Items are organized by category for easier management:
- Bed Linen: Sheets, pillowcases, duvet covers
- Towels: Bath towels, hand towels, face cloths
- Kitchen: Tea towels, oven mitts
- Bathroom: Bath mats, shower curtains
- Other: Miscellaneous items
Adding a New Item
- Click "New Item"
- Enter the item name
- Select a category
- Add any notes (e.g., size, color, material)
- Save
To record a purchase price, open an Item and choose Manage net cost. Enter
the net acquisition cost in EUR using a decimal comma with zero to four decimal
places (for example 12, 12,5, 12,50 or 0,1234) and its effective date,
then save it separately. The field shows how the price will be saved; it is
stored exactly. This does not change
stock quantities; delivery reports use the price effective on each delivery date.
Prices recorded before October 2026 were stored rounded to whole cents. Where the real unit price has more decimals (typical for Laundry items), re-enter it with its full precision (up to four decimals), using the same or a new effective date.
Stock Management
Standard Configuration
Open Standard configuration and select a location. The three sections have different responsibilities:
Laundry delivery template: the complete default delivery proposal. Search or browse by category, choose Configure, enter quantities with the displayed unit, and use Save all changes once. An explicit
0is a configured zero; Not configured means that no template row exists.Supply targets: target quantities belong once to a physical Storage Area and item; Unit labels only say where that one target applies. Choose Apply Supply template, then a managed source Location and one source Storage. A single shared Storage creates one target set for all Units; one Storage per Unit creates one set per physical Storage. Where several compatible Storages exist, choose them explicitly. With no Storage, create one shared Storage (recommended) or one per Unit. The preview and server only allow creating Storage in that no-active-Storage case; otherwise choose an existing compatible Storage. The preview and confirmation create target quantities only: counted stock, deliveries, history and frozen snapshots do not change. Changing the source Storage, topology, or selected target Storage requires a new preview before it can be confirmed.
An unknown Location can be marked Not managed when Operations does not supply it. If it already has physical targets, Operations can instead mark that existing profile Managed without running setup. Not managed can return to setup later; otherwise applying a template changes an unknown Location to Managed atomically.
After setup, edit targets at the Location level, grouped by Storage, then save or archive them there. Archiving the final target asks for confirmation. Operationally archived targets remain visible in Archived Supply targets and can be restored unless another active target already uses the same Storage and item. A restore also checks that its Storage, item and Units are still active and compatible. Retired migration projections are provenance, not operational archive history, and never appear as restore choices. Archived history stays available for recovery and does not block applying a template again. An existing profile preview shows created, updated and unchanged planned positions; existing target-only items remain unchanged. Counted stock, deliveries, logs and frozen tasks remain unchanged. The Unit Consumables tab is a read-only applicability view and links back to this editor. The former Copy-whole-Supply-profile flow is no longer available. Supply targets do not determine Procurement or Laundry deliveries; the counted Supply profile remains available from the adjacent link.
Retire permanently is available only for an already operationally archived target. It keeps audit and migration provenance but removes the restore option and releases dependent Unit or Storage changes.
During the one-time technical cutover, inactive, non-archived positions stay inactive and editable. A physical position that mixes active and inactive legacy entries is held for manual resolution instead of being guessed or reactivated.
Procurement baseline: the independent purchasing quantity for Cleaning Supplies. It is not calculated from the Supply target.
For Laundry, the default delivery quantity is the primary field. Warning and Critical are the two active alarm levels and live under Advanced monitoring thresholds; they do not change the default delivery quantity. Laundry positions can optionally name an active Linen or Mixed Storage Area. Whole location remains the default and multiple Storage Areas never split a quantity automatically. When a Storage target is used, its derived Unit and Storage label are shown with the Laundry task, pack manifest and driver work; routing and stock accounting remain Location-wide. There is no separate Minimum field. The Resulting Laundry delivery card shows the positive active lines that a new delivery will propose.
To retire a row without losing its history, choose Deactivate and save. Choose Delete only when the location should return to Not configured. Laundry, Supply and Procurement deletes all ask for confirmation and reject a stale profile snapshot instead of deleting a row that changed after it was shown. Before moving, archiving or deleting a Unit, resolve its Supply applicability in the Location-level Supply target editor. Active and operationally archived targets remain recoverable and block an invalidating Unit change; restore one, move or remove its applicability as needed, then archive it again. Retired cutover projections are historical only and do not block Unit lifecycle work.
To copy setup between properties:
- Open the source location's Laundry delivery template.
- Choose Copy complete profile and select one target.
- Build the preview and review every create, update, reactivation, and deactivation.
- Confirm the reviewed copy. Changing either source or target discards the preview immediately. If either profile changed in the meantime, reload the preview instead of overwriting the newer data.
The copy includes configured inactive source rows and their saved quantities and thresholds. A later reactivation at the target therefore restores the source configuration, not an older target value.
Every missing-template warning in Laundry planning and Request Promotion links directly to the affected location's Laundry section.
Current Stock
Choose or search the active location at the top of the Stock page. The quantity editor appears first, so Operations can set an exact count and save without first opening an overview card. Location overview cards and recent history remain below the editor for follow-up review.
The Stock page shows inventory levels at each location:
- Location: Property name
- Item: Product type
- Quantity: Current count
- Status: Critical (🔴), Warning (🟡), or Healthy (🟢)
Adjusting Stock
To correct inventory after a manual count:
- Find the location and item
- Click "Adjust"
- Enter the new quantity
- Select a reason:
- Inventory Count: Regular stocktake
- Found Extra: Discovered additional items
- Missing: Items unaccounted for
- Damaged: Items removed due to damage
- Other: Custom reason
- Add notes if needed
- Save
Bulk Stock Update
For larger inventory updates:
- Go to the Stock page
- Click "Bulk Update"
- Select the location
- Enter quantities for multiple items at once
- Save all changes
Central Storage
All laundry arrives at Central Storage first, and then gets delivered to apartment locations.
What is Central Storage?
Central Storage is the “main inventory location” (e.g. office/storage). It is used to:
- Track how much laundry you have available overall
- Plan Tuesday orders for Thursday delivery
- Serve as the source for daily delivery routes
Key Rules
- There can be only one Central Storage location.
- Central Storage is shown first on the Stock page.
- When a delivery stop is marked complete, items are automatically deducted from Central Storage.
- Storage stock can go negative if you deliver more than you have recorded (this helps track shortages accurately).
Setting Central Storage
- Go to Locations
- Create or edit the storage location (e.g. "Office/Storage")
- Mark it as Storage location
Order Planning
Use Orders to plan either a weekly Laundry order or an ad-hoc Supply order. The two order types cannot mix their item domains.
Weekly Workflow
- Laundry only: the create form defaults to a Tuesday order for Thursday delivery in the same week. Both dates remain editable, and direct-supplier Laundry destinations remain available where configured.
- Supplies: create an ad-hoc order with the actual order and expected delivery dates. A Supply order must target Central Storage or an Office location; it cannot use a direct-supplier apartment destination.
- A location used as an explicit order destination must stay active and keep its compatible destination role. Change or remove the order destination before archiving, demoting, or permanently deleting that location.
Creating a New Order
- Go to Orders
- Click New Order
- Select Laundry or Supplies and confirm:
- Order date and expected delivery (Laundry starts with the Tuesday/Thursday default; Supply dates are ad-hoc)
- the destination (Supply requires Central Storage or Office)
- Review the suggested quantities
- Adjust quantities if needed
- Set status to Submitted
Adding Items to an Order
While an order is Draft or Submitted:
- Click on an item button in the "Add Items" section
- The item appears immediately in the list with a "New" badge
- Enter the quantity you want to order
- Click "Save Items" to confirm your changes
- Use the X button to remove an item before saving
Save every item change before clicking Confirm ordered. Once an order is marked Ordered, its item list and ordered quantities are locked so that the final receipt can preserve the original ordered-versus-received difference.
Tip: Click "Apply Suggestions" to automatically add all suggested items with their recommended quantities.
Order Suggestions
Laundry order suggestions are calculated based on:
- Current stock in Central Storage
- Aggregated needs across all locations
- Standard stock targets and thresholds
Marking Delivered
When the supplier delivery arrives:
- Open the order
- Click Record final receipt
- Enter the actual received quantity for every order line, including
0for an item that did not arrive - Review the destination and submit the final receipt once
Submitting the receipt marks the order Delivered and posts every positive received quantity to the selected Supply destination or to Central Storage for Laundry. Do not add the same delivery manually on the Stock page. Partial or repeat receipts are not supported; if the order will not be received, cancel it before recording a receipt.
Reservations
Reservations are guest stays at locations, synchronized automatically from Hostaway and iCal feeds. They drive consumption calculations and demand planning.
Reservations List
The Reservations page shows all synced reservations with:
- Guest name
- Location
- Check-in and check-out dates
- Number of guests
- Source badge (Hostaway, iCal, or Manual)
- Status (confirmed, cancelled, inquiry, etc.)
Source Badges
Each reservation shows where it came from:
| Badge | Source | Description |
|---|---|---|
| Hostaway | Hostaway API | Synced from Hostaway property management |
| iCal | iCal feed | Synced from Airbnb, Booking.com, VRBO, or other iCal feeds |
| Manual | Manual entry | Manually created in the system |
Filtering Reservations
Filter by:
- Date range (from / to)
- Location
- Status (confirmed, cancelled, inquiry, etc.)
- Source (Hostaway, iCal, Manual)
Stay Times for iCal Reservations
Regular check-in is 16:00 and check-out is 10:00, in Berlin time. In Reservations, use Edit times on an iCal booking to record a sold early check-in or late check-out. Saving recalculates its door-code and Building Access validity, including configured access buffers, and updates task planning. Check Access for the actual synchronization status on the lock; a saved reservation alone does not confirm a device update. If an access update fails, retry saving the times. Subsequent iCal syncs preserve these operator-entered times. Hostaway bookings continue to receive times from Hostaway.
Changing the defaults does not rewrite previously saved bookings or access windows. Existing incorrect bookings need a separately scoped correction.
Guest Count for iCal Reservations
iCal feeds do not include guest counts. For iCal reservations:
- A "Guests missing" warning is shown
- Click the guest count field to enter the number manually
- This is important for accurate consumption calculations
Tip: Check iCal reservations regularly and add guest counts as soon as new reservations come in. Without guest counts, the system cannot calculate correct laundry quantities.
Hostaway Integration
Admin only: The Hostaway integration page is only visible and accessible to Admin users.
Hostaway is the property management system that manages listings across platforms (Airbnb, Booking.com, etc.). The integration syncs reservations automatically.
Connection Status
Go to Integrations → Hostaway to see:
- Connection status: Whether the Hostaway API is connected
- Listings count: Number of properties in Hostaway
- Last sync: When reservations were last synchronized
- Sync status: Running, partial, completed, skipped, or failed; an overdue nightly scan is not a completed refresh
Location Mapping
Before reservations can sync correctly, Hostaway listings must be mapped to locations in the system. The mapping page shows three categories:
| Category | Badge | Meaning |
|---|---|---|
| Mapped | 🟢 Confirmed | Listing is linked to a location — reservations sync automatically |
| Suggested | 🟡 Pending | System found a likely match based on name/address — review and accept or reject |
| Unmapped | ⚪ Unmapped | No match found — import as new location or manually map |
Importing a Listing
For single-unit properties (one apartment = one Hostaway listing):
- Find the unmapped listing
- Click "Import"
- The system creates a new location with a default unit
- The listing is automatically mapped
For multi-unit properties (multiple apartments at one address):
- First, create the location manually in Locations
- Add the individual units (e.g., "Apartment 1", "Apartment 2")
- Return to the Hostaway mapping page
- Click "Select Location" on each listing
- Choose the location and the specific unit to map to
Import All
Click "Import All" to import all unmapped listings at once. Each listing becomes a new location with a default "Main Unit". Use this for bulk setup when most properties are single-unit.
Unlinking
To remove a mapping:
- Find the mapped listing
- Click "Unlink"
- The listing becomes unmapped again
Note: Unlinking does not delete the location or its reservations — it only breaks the sync connection.
Reservation Sync
Once listings are mapped, reservations sync automatically:
- Delta sync: Checks for changed reservations every 15 minutes
- Webhook sync: New/updated reservations are pushed in real-time by Hostaway
- Nightly reconciliation (after scheduler activation): Between 00:00 and 06:00 Europe/Berlin, bounded five-minute ticks resume a scan of ongoing stays and arrivals up to 90 days ahead. This also checks exact multi-unit assignments when Hostaway's change timestamp has not advanced. A partial scan is not a completed night.
After activation, two bounded workers run every five minutes to reconcile checkout Tasks and refresh their laundry preparation. Their queues may still be processing after the reservation scan finishes; a completed scan alone does not mean every Task is current. Begun/completed work and frozen execution history remain protected. Missing exact unit mappings stay visible as conflicts and need investigation; historical stays and arrivals beyond the nightly window are not covered by that scan.
Scheduler activation and verification are part of the Hostaway release rollout, not a consequence of merging code alone.
The sync stores essential reservation data:
- Check-in/out dates and times
- Guest name and count
- Door codes and access links
- Channel information (Airbnb, Booking.com, Direct, etc.)
- Booking status and confirmation codes
iCal Integration
Admin only: iCal configuration is only accessible to Admin users.
For properties not managed through Hostaway (e.g., listed only on Airbnb or Booking.com), reservations can be synced via iCal feeds. Each platform provides an iCal export URL.
Setting Up iCal for a Location
- Go to Locations and open the location
- Click the iCal tab
- Enter the iCal feed URL from your booking platform:
- Airbnb: Go to Calendar → Export Calendar → copy the link
- Booking.com: Go to Property → Calendar → Export → copy the iCal link
- VRBO: Go to Calendar → Import/Export → copy the iCal URL
- Toggle "Sync enabled" on
- Click "Save"
- Optionally click "Sync Now" to immediately fetch reservations
How iCal Sync Works
- Automatic polling: All active iCal feeds are fetched every 30 minutes
- Deduplication: Each reservation has a unique ID (UID) — no duplicates are created
- Status mapping:
CONFIRMED→ confirmed,CANCELLED→ cancelled
iCal Limitations
iCal is a simple calendar format. Compared to Hostaway, it has limitations:
| Feature | Hostaway | iCal |
|---|---|---|
| Guest name | ✅ Full name | ⚠️ Often just first name or "Reserved" |
| Guest count | ✅ Included | ❌ Not available — must be entered manually |
| Phone/email | ✅ When available | ❌ Not included |
| Door codes | ✅ Included | ❌ Not included |
| Channel info | ✅ Airbnb/Booking/Direct | ❌ Not included |
| Real-time sync | ✅ Via webhooks | ❌ Polling only (every 30 min) |
Important: Always add guest counts manually for iCal reservations. Without them, consumption calculations will be inaccurate.
Checkout preparation snapshots (feature-gated)
When the separately authorised Preparation Snapshot feature is enabled, an Operations user opens a reservation-generated checkout-cleaning Task and keeps the displayed prep guest count current. For a multi-unit stay, select the explicit Consumption Owner / Lead Unit before refreshing preparation; the system deliberately does not distribute guest counts or infer an owner. Add only positive, named Laundry extras. Once work starts, the frozen snapshot is read-only for the Cleaner; use Record correction or Record successor with an audit note instead of changing the original need.
In the location's Consumption settings, Items per Reservation is the generic per-stay rule (for example kitchen towels), not a task-side actual. Choose only stock-tracked Laundry items and a positive quantity. Removing all rows and saving clears this rule set; leaving the section untouched retains its current rules. Saving settings updates Units and all supplied rule sets as one audited operation, so a validation error changes none of them.
A Cleaner sees My laundry preparation only for a currently assigned frozen checkout task. That view lists frozen item quantities only; it does not expose guest facts, extra context, provenance or any quantity editing. Confirming the whole task done clears its Cleaner assignment atomically and removes it from the list (including an already-bookmarked detail). A blocker records the failed attempt and returns the same Task to open work. Operations can immediately plan a new attempt with the same or another Cleaner; the old assignment and frozen preparation remain historical evidence, not a new execution promise.
Plan Board & Deliveries
Operations Stop Detail
Opening a Stop from Plan Board now opens Operations Stop Detail, not the Driver sheet and not the retired shared Stop Composer. It separates active route occurrences from retained completed, blocked, cancelled-before-execution and detached history. Each occurrence keeps its task-link, explicit Unit snapshot (or an explicit missing-snapshot warning), group provenance, a visible current-Task versus Operations/generator desired snapshot comparison, and proof binding. An unbound legacy proof is historical context only and never fulfils a current occurrence. The main panel starts with active work and its next action; technical provenance is available under Audit details when needed.
Each driver Shift card shows Open (n) and Completed (n). Completed history opens automatically when there is no open work, and also opens for a bookmarked ?stop=<id> Stop. A completed card is read-only: it shows completion time, recorded Done/Blocked outcome counts, retained Task/Occurrence counts and proof status, then opens Operations Stop Detail. It never offers route, Task or proof mutations from history.
For active route work, use the shared Task editor and planning controls, or choose Complete active occurrence in Operations Stop Detail. Completion and proof are checked against the selected attempt: after a planning change, refresh the selection before recording an outcome. Retained proof photos have authenticated Open and Download actions even if their preview is unavailable. Historical proof never satisfies a new attempt. Completed history remains read-only; use the current Task's Reopen action for another attempt. Transport dropoff is available only after actual pickup. A completed pickup remains visible as history while dropoff is still open.
Operations can cancel planned, packed or collected work immediately. The original work leaves the active route; any load and required return or handover remain visible as recovery work. Use the Task planning controls to replan, change assignment or remove planning. There is no separate case-closing step for ordinary open work. Retained legacy inconsistencies are identified separately and cannot provide evidence for a new completion.
Use Reference images in Operations Stop Detail or the canonical Task editor for private visual work instructions. Add JPEG, PNG or WebP files, give each an optional caption and numeric sort order, and use the two-step delete action when an instruction is obsolete. Reference images stay with the Task through pool or replanning. Drivers see them only for their currently authorized Task or route assignment, and only with a live connection. They are never cached offline and never count as completion proof.
Laundry deliveries are planned on the Plan Board — the daily operations cockpit. (The old standalone "Deliveries" route builder has been removed.)
The Plan Board
Go to Plan Board to see a single day:
- Prev / Today / Next / Week to switch days
- Shift cards: one card per driver shift, with its stops in route order
- Work list: Demand Inbox, planned backlog, overdue work and operational attention
Shifts: each driver has at most one shift per calendar day. The role (Laundry / Handyman / Both) describes the kind of work — mixed days use Both. Use Add Shift to create one.
Creating and Planning Work
Open the shared Task creation/planning dialog from the Task list, Task detail, Plan Board day or Shift, or Operations Stop Detail. Known context is prefilled. Set the category, title, target, date, optional time and person. Laundry delivery starts with the editable title Laundry Delivery and needs no description. Descriptions are required only for Inspection and Other. A Shift is optional; selecting one also sets its current driver as the Task's executor. Changing or clearing the person removes an incompatible Shift and Stop. Save without a route, or create and plan in one submission. Start and Due by times use Europe/Berlin; nonexistent or ambiguous daylight-saving times stay in the form with an error until corrected or deliberately cleared. Changing only the day carries an existing local start time to that Berlin day. Clearing the day also clears the start; the deadline stays unchanged. A planning conflict keeps the entered form data so it can be corrected and retried.
For Laundry and Supplies, the active Storage is preselected as physical source; choose another source manually when needed. Existing source choices are retained. For Laundry, choose the destination, then confirm the Laundry item quantities. The standard stock template can prefill the list. Optional bags describe handling and never alter item quantities. A separate preparation date and person can arrange packing before the delivery day.
To deliver Supplies on the same visit, enable the Supply option, choose its Storage source and full profile or selected physical positions. Vehicle stock belongs to Storage; Supplies do not require a separate packing confirmation. The actual refill is recorded on arrival. The combined submission either saves both correctly or saves neither; retries do not duplicate matching Supply work. The two Tasks retain independent delivery results. If Laundry succeeds and Supplies are blocked, only the remaining Supply work needs another attempt. Supply can also be added later without a route, with the same optional day and person. A later joint route plan retains that companion. Independently replanned or executed Supply work produces a conflict instead of being overwritten.
Demand Inbox
- Demand Inbox contains Tasks only. Open work remains discoverable with or without a date, person or route, including overdue work. Date, assignment and attention filters describe the work; they do not create a separate lifecycle. Use the shared Task planning controls to change it directly. External work remains distinguishable because its active contractor handoff is exclusive.
- A failed attempt records its reason and returns the same Task to open work. Choose the next date/person/Shift without first resolving a Replan case. Attention and changed or unavailable targets remain visible for review.
- Suggestions are a separate surface. Accepting a current suggestion creates one undated Laundry Task from the server-calculated contents; choose items, bags, date, route, driver, or external handoff only afterwards on the Task.
- Historical scheduled Requests remain readable for audit, but cannot be edited, promoted, closed, or scheduled. Use a normal pending Request before promoting work into a Task.
- Resolving a request promotes it immediately into a permanent Request
lineage/audit state. The promoted Request is never reopened or mirrored to
done/cancelled; all later execution lifecycle belongs to the Task.
Moving Planned Stops
Use Move selected on a shift to choose one explicit destination:
- Shift moves the stop to a shift on the selected plan day.
- Planned backlog removes the stop from its shift but keeps its Tasks on the selected plan day.
- Demand Inbox removes the plan date and returns all linked open Tasks to the global undated queue. A promoted Request remains linked to its Task.
For one Task, use its shared planning controls. Before a Transport pickup, one planning action moves its open pickup and dropoff together. After pickup, only unfinished work moves, including to another day or driver. The recorded pickup and actual load holder do not change. If the new driver does not have the load, the required physical handover remains visible until it is confirmed. Other Tasks on a shared Stop are not moved by a Task-specific replan.
Within one shift, open visits can be dragged or moved with the arrow buttons. Transport / Errand pickup must remain before its dropoff; the board refuses an invalid target and the server verifies the complete proposed route again. Locations may appear more than once when the route genuinely revisits them (for example Office → Property → Office).
Task Items and Supply Completion
Use the shared Task editor to inspect Laundry items, required proof and Supply scope. Laundry items remain editable until the corresponding preparation is frozen. Supply scope selects the full profile or specific destination Storage Area + Item positions; those destination areas are not the source stock. An eligible unstarted Supply snapshot can be refreshed after a profile correction. Historical or frozen executed snapshots are never rewritten.
Each Supply completion shows the target stock for that attempt. Enter the actual delivery for each position (including zero), then confirm the refill to target. If the final stock differs, enter that count and, below target, a shortfall reason. An unknown arrival count stays unknown. Actual deliveries debit the shared Storage/vehicle inventory; discrepancies remain visible without preventing a physical delivery from being recorded. A missing or invalid target snapshot must be repaired before that Supply task can be completed.
Save each task independently in the stop detail. An unfinished repair, missing proof for another task or outstanding Supplies does not block Laundry delivery. Completed tasks remain visible and read-only; the stop closes after the last open task has an outcome.
Creating Tasks from the Tasks Page
Tasks → Create task shows type-specific fields:
- Laundry delivery requires at least one laundry item — use Apply standard stock to prefill the location's template, then edit freely
- Transport / Errand has a managed Location or custom endpoint for each pickup and dropoff. For a stock transfer, choose managed source and receiving locations plus actual item quantities. A plain errand needs no manifest.
- Manual time and individual Unit planning are supported where applicable; Unit Groups are not selectable in the Task forms. Maintenance, Inspection and Other may use a custom destination; managed stock and valid Unit/Storage Area scope are still required when stock is booked. A manual Cleaning Task remains manually managed.
- Validation problems are shown at the specific field, not as a generic error
Task Progress and Execution History
Task progress is open, in progress, done or cancelled; date and assignment are separate. Blocked finishes the failed attempt with a reason and opens another attempt on the same Task. Cancel ends the current work; Reopen opens done or cancelled work with the same Task ID. Neither action rewrites history or automatically reverses stock. Reopening also does not restore an old route or contractor handoff. Reuse an existing eligible load explicitly when appropriate, so it is not packed twice or assigned to conflicting recovery and delivery work.
The Task history shows actual performer, execution time and the Shift or work date recorded at the time. An Operations user who records another person's work appears separately as recorder. Packing and delivery, or transport pickup and dropoff, remain distinct events. Unknown historical attribution is shown as not clearly documented. Filter history by actual execution date, person, recorded execution location and category; later reassignment does not change those events.
Include history retains matching current work and adds completed or cancelled Tasks, including work cancelled before execution. Task location always filters the Task's destination, including work without an execution event. Recorded execution location under Advanced filters the confirmed event instead; like execution date and performer, it requires a matching recorded event. Search also matches Task type, Location and Unit names. Completed and cancelled Tasks offer Reopen in their detail; reopen before planning another attempt.
Manual changes to generator-managed fields stay authoritative until Operations explicitly returns those fields to automatic management. Other fields can still sync. Manual cancel or reopen is not silently undone by reservation updates; repeated identical source information does not create repeated conflicts.
Reservation Attention can remain open beside a physical recovery obligation. Using reservation values may replace unstarted physical planning, while keeping its previous positions as history. Packed goods block that change. The normal Cancel action remains available and creates the required recovery work.
Pack Station & Driver Field App
- The Pack Station's To pack count and main list contain only pending loads whose preparation date is the selected day. If no separate preparation date is set, the delivery date applies. Future-dated pending loads are available under the collapsed Later to pack section. Already packed, return-pending and physically bound recovery loads remain visible under Physical loads requiring resolution, but do not increase the day's To pack count.
- Pending loads with neither date, or whose applicable date is before today, no longer appear in the driver's packing list. Operations can select Packing cleanup on the Tasks page, then replan or cancel each load deliberately. The Task identifies the actual source stock. Packing freezes its manifest and records preparation at that source; it does not automatically put the load into the packer's vehicle or grant delivery ownership.
- A load stays identifiable after a day, Shift or delivery plan changes. Prepared location, current physical holder and delivery executor are shown separately. The receiving driver uses Confirm receipt on the Pack Station card when actually taking the load. Unchanged physical possession needs no repeated handover ceremony.
- The driver may start the route before every Laundry load is packed and return to the Pack Station between waves when vehicle capacity is limited. Only the Laundry stop being completed must already be packed with a positive confirmed bag count and its frozen manifest.
- Cancelled work retains its physical load and visible recovery obligation. Confirming an actual return books the returned quantities at the known receiving stock location. Planning changes and overnight storage do not invent a return or release the load as free stock. Unclear legacy loads are shown for Operations clarification without inventing their source or owner. Stock Transport may return to its valid documented managed source even when that location is neither Office nor Storage. Cancel itself never credits stock.
- Drivers use their route or directly assigned work in the Field App, with only the context authorized for that work. Delivery and stock transport book actual events; transport pickup debits the chosen source and arrival credits the receiving location. Stock Transport does not offer Unpack; cancel the work and use its recovery task when the goods must be returned instead of delivered. Supply reports use actual quantities per frozen line.
- Direct Task cards show the destination and planned day or start time in Europe/Berlin. Open the detail for the destination address; no route or duplicate address in the description is needed.
- Directly assigned Laundry and Transport work can retain a Blocked report, but cannot use generic Done before physical execution. Ask Operations to place the work on a route, then record the actual delivery or pickup/dropoff through its route actions. This also applies to errands without a manifest. Supply work with a pending, packed or return-pending load also requires these physical route actions; Supply work without an active load can still use direct Done. Blocked remains available in either case.
- Offline commands retain their original attempt and identity. Old or rejected reports, including queued photos, remain available for historical review; they cannot complete a newer attempt or count as its proof. Retries of an already recorded command do not repeat its stock movement. Private reference images remain live-only instructions and never substitute for proof.
- A permanently rejected Pack command, direct result or direct photo stays visible after reloading. Use its recovery link to send the original report to Operations for clarification. The command remains blocked, and sending the report does not book the goods movement or replace its original time and quantities. A rejected direct photo and its saved dependent result are retained together as separate historical reports. Send both for review; available photo bytes stay attached, and missing bytes are reported without inventing a photo. Sending either report does not complete the current Task.
Delivery Report
Operations and Admin can filter the Delivery report by period, Location, area, and Item. Each entry shows one delivery day at one stop, with its delivered Items underneath. The CSV has one row per stop, day, and Item, using the delivery date rather than the selected filter period. It includes the effective net acquisition cost; missing costs remain blank and are excluded from the priced total. Values are calculated from the exact four-decimal unit price: each line value is quantity × unit price, and totals are the exact sum of those values. Money amounts are rounded once to cents for display (half away from zero), so a total can differ from the sum of the displayed line amounts. The CSV keeps the unit net cost with four decimals and shows net values in cents; the column Net Value EUR (exact) keeps all four decimals, so its spreadsheet sum matches the report total. A date marked as a route-day or recorded-time fallback is not a confirmed completion timestamp. The report covers ledger-recorded deliveries, not supplier-direct receipts; earlier coverage may be incomplete.
End-of-day Checklist
Operations and Admin can open End-of-day checklist from Daily Operations to maintain the checklist shown to drivers. Add recurring defaults for every day or select a Berlin calendar date for a one-off item. A date-specific item can stay global for every shift or be assigned to one active shift holder for that date; a driver sees global items plus only their own assigned items. Each item can be edited with a title, optional driver instructions, assignment, and explicit optional- or required-photo settings; use the up/down buttons to set its order on mobile as well as desktop.
Archiving removes an item from future live checklists without deleting historical completion records. The checklist remains informational: an incomplete item or missing photo never blocks route or shift completion.
Prepared clean loads needed tomorrow remain visible with their prepared location or actual holder. End-of-day completion does not return, release or unpack them. Record actual returns separately; dirty Laundry and quality returns remain distinct from clean prepared stock.
Operations can plan Office replenishment from this page through the shared Task form. Select the receiving Office when more than one is configured, choose the actual Storage source and stock item quantities, then set the date and optional person/Shift. This creates normal stock transport work. It neither orders automatically nor credits Office before actual arrival.
Demand & Planning Work List
The Plan Board work list is the daily demand lane. It combines Demand Inbox items, dated backlog, overdue work, and open attention for the selected planning day.
Daily Planning
- Open Plan Board and select the planning day.
- Review open Tasks, dated and overdue work, current assignment and operational attention. Use the same planning controls for dated or assigned open work; Requests are not plan-board work items.
- Review Suggestions separately, then accept one to create an undated Task before planning it.
Procurement
For weekly purchasing, use the Orders page, backed by
/api/orders/suggest. It aggregates the existing procurement demand for
Central Storage; it is not a driver-route planning surface.
External Task Handoff
Operations and Admin can hand off an eligible Task to a contractor. Use this only for Deep clean, Inspection, Maintenance, or Other Tasks.
Use the Task detail drawer, including for a driver-reported failed attempt: open External handoff under Assignment, enter Contractor name (required) and Contact (optional), then choose Assign externally.
The handoff returns the Task to Pending, clears its planned date, planned start time, and internal start time, and removes the internal assignment. The Task therefore disappears from its previous date filters and Plan Board day; do not expect an externally assigned Task to retain tomorrow's or today's planning date.
Active, uncompleted route links are detached while completed route history remains intact. If that leaves a Driver Stop with no active Task, the system removes the empty Stop when no durable operational evidence refers to it, or retains it as administrative history when evidence must be kept. Administrative retirement does not claim a physical visit or completed work. While the handoff is active, the Task shows the contractor snapshot; internal assignment and route controls are unavailable. Contractor contacts remain visible to Operations/Admin only.
To finish the work, use Complete externally. To withdraw it for internal follow-up, use Return to internal pool; this closes the contractor handoff and returns the Task to the unassigned Task pool.
Transactions
Transactions record all stock movements.
Transaction Types
| Type | Description |
|---|---|
| Delivery | Items delivered to a location (increases stock) |
| Usage | Items consumed/removed (decreases stock) |
| Adjustment | Manual inventory correction (increase or decrease) |
Viewing Transactions
The Transactions page shows:
- Date and time
- Location
- Item
- Quantity (+/-)
- Type
- Notes
Filtering Transactions
Filter by:
- Location
- Item
- Transaction type
- Date range
Consumption Settings
Configure how the system calculates item needs.
Consumption Modes
Each location can use one of three modes:
| Mode | How It Works |
|---|---|
| Reservation-Based | Calculates based on actual guest count from reservations |
| Fixed Guests | Uses a fixed guest count (e.g., always prepare for 4 guests) |
| Max Guests | Uses maximum capacity of the unit |
Setting Consumption Mode
- Go to Consumption
- Find the location
- Select the preferred mode
- If using "Fixed Guests", enter the number
- Save
Item Consumption Rules
Configure how many items are needed:
- Per Guest: Items multiplied by guest count (e.g., 1 towel per guest)
- Per Bed: Sheets are linked on each bed (see Bed Sheet Linking) and counted 1× per bed
- Per Bathroom: Items based on bathroom count (e.g., 1 bath mat per bathroom)
- Fixed: Same quantity regardless of guests (e.g., 1 doormat)
Unit Settings (v2)
Each unit has additional settings that affect consumption:
| Setting | Description | Default |
|---|---|---|
| Pillows per Guest | Number of pillows prepared per guest (affects pillowcase count) | 2 |
Bed Sheet Linking (v2)
When creating or editing a bed, you can link it to a specific sheet item:
- Go to the Unit configuration
- Add or edit a bed
- Select the Sheet Item from the dropdown (shows only sheet/linen items)
- Save
This enables accurate per-bed sheet consumption: exactly 1 of the linked sheet per bed.
Estimated Bags
The system now estimates laundry bags needed based on duvet covers:
- Formula:
ceil(duvet_covers ÷ 4) - This is shown as an estimate in consumption previews
Rejected Items (Quality Returns)
Track items received from the laundry supplier that don't meet quality standards. These items should be returned to the supplier.
Important: Rejected items are NOT items we need to buy/replace. They are items the laundry company delivered to us that are unfit for use. Recording them helps:
- Track what to return to the supplier
- Explain why stock levels are lower than expected
- Document quality issues with the laundry service
Recording Rejected Items
When you receive laundry that doesn't meet standards:
- Go to Rejected Items
- Click "Record Rejected Items"
- Select the location (usually the storage/office where delivery arrived)
- For each item:
- Select the item type
- Enter quantity
- Select reason:
- Damaged: Torn, broken, holes
- Stained: Permanent stains that weren't removed
- Worn: Excessive wear and tear
- Optionally add a photo as evidence
- Add notes if needed
- Save
Process Later Flag
For items needing review before final decision:
- Check "Process Later" when recording
- Items appear in a separate list for review
- Come back later to make final decision (accept or return)
Returning Items to Supplier
After recording rejected items:
- Set aside the physical items for return
- Use the Export CSV feature to generate a return list
- Include the list with items when supplier picks up or you drop off
- Mark items as "Processed" once returned
CSV Export
Export rejected items data for reporting:
- Go to Rejected Items
- Click "Export CSV"
- Select filters (date range, location, item type)
- Download the file
Common Workflows
Morning Routine
- Check Dashboard for critical locations (red badges)
- Review the Plan Board work list for delivery priorities
- Plan shifts and laundry deliveries on the Plan Board
- Drivers see their route in the Field App automatically
After Delivery Returns
- Driver marks stops as complete
- Record any rejected items (red bag)
- Verify stock levels if discrepancies
Weekly Inventory Check
- Visit each location (or coordinate with cleaners)
- Count actual stock
- Go to Stock → Adjust for any corrections
- Note reasons for discrepancies
End of Month
- Export Transactions for the month
- Review Rejected Items report
- Export rejected items list for supplier reconciliation
- Verify returns have been credited by supplier
Troubleshooting
Stock Numbers Don't Match Reality
- Go to the location's Stock page
- Click "Adjust" on the incorrect item
- Enter the correct count
- Select reason "Inventory Count"
- Add notes about the discrepancy
Reservation Not Showing
- Verify the reservation dates are correct
- Check if the correct unit is selected
- Make sure the location is active
Demand or Order Suggestions Seem Wrong
- Verify current stock levels are accurate
- Check consumption mode settings for the location
- Review upcoming reservations and guest counts
- Adjust standard stock levels if needed; then review the affected Demand lane or Orders suggestion again
System Running Slow
- Try refreshing the page
- Clear browser cache
- Check internet connection
- Contact IT support if issues persist
Quick Reference
Keyboard Shortcuts
| Shortcut | Action |
|---|---|
Ctrl/Cmd + K |
Quick search |
Escape |
Close modal/dialog |
↑ / ↓ buttons |
Reorder stops in delivery builder |
Status Colors
| Color | Meaning |
|---|---|
| 🔴 Red | Critical - Immediate action needed |
| 🟡 Yellow | Warning - Plan action soon |
| 🟢 Green | OK - No action needed |
| 🔵 Blue | Information |
| ⚪ Gray | Inactive/Disabled |
Contact
For technical issues or feature requests, contact your system administrator.
DSGVO Audit Anonymization
If a confirmed deletion/anonymization request affects audit content, use the dashboard workspace script in dry-run mode first:
pnpm --filter @ops/dashboard anonymize-audit -- --table=<table> --record-id=<id>- Or match by internal user record:
pnpm --filter @ops/dashboard anonymize-audit -- --user-id=<id> - Re-run with
--applyonly after verifying the reported matches.
The script preserves timestamps, diff keys and actor metadata, but replaces before_json and after_json with an anonymized marker.
Scheduling (Requests) and transport
- In Scheduling (Requests), capture the normal Location, optional Unit, and optional date-only Needed by on a pending Request before using Promote to Task. A missing Laundry template offers Enter delivery items & promote; the items and optional bags belong only to the new Task. Historical scheduled Request rows are audit-only and have no actions. Requests themselves do not receive a plan date or shift in this screen. For Other, enter a concrete description; blank descriptions cannot be promoted.
- A Transport / Errand request (stored as
special_dispatch) stores its pickup and dropoff before promotion. Each endpoint is exactly one active managed Location or a named custom endpoint; Custom→Custom is valid and it cannot target a Unit. For a custom endpoint, use the server-provided address candidates and select one before saving if navigation coordinates are needed; a free address edit clears the prior candidate coordinates. The route preview always shows pickup before dropoff. Merge, release and live-staff enablement are tracked separately from this technical contract. - For a Supply refill, choose that request type and use the Supply scope selector to capture either the full active Supply profile or selected physical Supply positions. It can be promoted only after a valid explicit scope is saved; if the scope is missing or invalid, promotion is blocked and triage must be reopened to repair it. A Unit with any Request history, including a terminally closed Request, cannot be moved to another Location: retain that history and create a replacement Unit at the new Location instead.
- A Laundry task marked Needs resolution has no item rows and must be repaired in its task drawer before it can be assigned to a driver shift.
- Use Close without task when incoming work should not become a Task. Select the reason; Other requires a short explanation. This is terminal: closed Requests cannot be reopened. A promoted Request retains its direct Task lineage; completing or cancelling the Task never reopens or changes the Request.
- Direct Task creation does not require a Request. Use a custom destination for Maintenance, Inspection or Other, or a custom pickup and/or dropoff for Transport / Errand; Custom→Custom is supported. Stock transfers still require managed endpoints and real item quantities. Planning Transport creates or reuses endpoint stops with their selected names and addresses. The read-only
docs/runbooks/audit-laundry-ops-slice5.sqlwas executed once as PR evidence for Slice 5; it is not a recurring reporting or operator procedure.
Cleaner: frozen laundry preparation
Cleaners can open My laundry preparation to read the frozen quantities on checkout-cleaning tasks currently assigned to them, including the consuming Unit and storage label. They can confirm the whole task done or report a structured blocker; they cannot change quantities, guest counts, extras, ownership or corrections. Contact Operations when the frozen preparation needs a correction. A blocked attempt remains historical and the same Task becomes open for a new assignment. A manually created reservation may name only an active, non-archived Unit belonging to its Location, even when guest count is blank; otherwise it is rejected before any Reservation or task is created.
End of Staff Manual