User guide · Modules

Maintenance

Work orders for repairs anywhere on the property: report an issue, assign a technician or an outside contractor, block the room while it is unsafe, track parts and cost, and close it for good.
Whole guide

Purpose and who uses it

MaintenanceHousekeeping MgrReceptionist

One record per fault, an M-code work order, from the moment it is reported until it is closed.

Maintenance keeps a work order for every fault: a broken AC, a leaking tap in the lobby, a pool pump. Anyone with Rooms Edit can report one; the maintenance team works it through six statuses. A work order tied to a room can block that room, it shows as Maintenance on the Rooms page and leaves the sellable pool, until the repair is completed.

  • Maintenance technicians live in the list and board, moving orders along and recording cost.
  • Housekeeping and front desk report what they find (“AC not cooling”, “lamp broken in 204”).
  • Managers watch the KPI tiles, open requests, high priority, estimated cost, and use the list filters for a weekly review.

Maintenance sits under the Rooms permission module, the same as Housekeeping.

Screen anatomy

A list-first page: five KPI tiles that double as filters, a paged table with editable cells (or the same page as cards), and a board for open work only.

Maintenance → List (the default view)
1234568
  1. 1
    KPI tiles
    Open requests, High priority, In progress, Resolved, Est. cost. Click a tile to filter the list by it; click again to clear.
  2. 2
    Filter bar
    Search (code, issue, location), Status, Priority, Category, Technician (Unassigned / External / a person).
  3. 3
    List / Cards / Board switch
    Board shows open work only, “completed and closed orders live in the list”.
  4. 4
    Rows
    ID, Issue, Location, Category, Priority, Technician, Due, Cost, Status. Priority, Technician and Status are editable in place.
  5. 5
    Row click
    Opens the work-order drawer with every field editable and the next-step buttons in the footer.
  6. 6
    Pagination
    Newest first, 25 per page by default. Filters and page live in the address bar.
  7. 8
    Report issue
    Opens the “Report maintenance issue” dialog.

The Board tab lays the same open orders out as cards in the columns Reported · Assigned · In Progress · Waiting for Parts · Completed. Because it only loads open work, the Completed column is where cards leave the board: drop one there and it reappears in the list. Closed orders never show on the board.

Reporting an issue

ReceptionistHousekeeping MgrMaintenance

Title, category, priority and where it is, a room, or a free-text location for anywhere else.

  1. 1
    Click Report issue
    Top right. Needs Rooms Edit.
  2. 2
    Describe it in Issue title
    At least three characters, e.g. “AC not cooling”. Submitting with less shows “Describe the issue”.
  3. 3
    Category and Priority
    Category is free text with suggestions from categories already in use (default “General”). Priority is High, Medium or Low, Medium unless you change it.
  4. 4
    Room (optional) or Location
    Pick a room, or leave “Not a room” and type a Location such as “Lobby, Pool deck…”. An empty location is saved as “General area”.
  5. 5
    Click Submit
    The order gets an M-code and starts in Reported. A notification “Maintenance: AC not cooling” is posted, red for High priority, amber otherwise. The toast reads “Maintenance request created”.

Assigning and working an order

Maintenance

Assign from the Technician cell or the drawer; move status with the drawer buttons, the inline Status cell or the board.

  1. 1
    Assign a technician
    Click the Technician cell in the list (or the field in the drawer) and pick a person, or External contractor. Any active account can be chosen. Assigning an order that is still Reported moves it to Assigned on its own.
  2. 2
    Start work
    From Assigned choose In Progress: or Waiting for Parts if you already know a part is needed. In the drawer these are footer buttons; in the list the Status cell offers “→ In Progress” and “→ Waiting for Parts”; on the board drag the card or click its “→ In Progress” button.
  3. 3
    Record what it will cost and when
    In the drawer edit Estimated cost (whole shillings; it feeds the Est. cost tile) and Due (a date). Every edit saves as you leave the field.
  4. 4
    Waiting for parts
    Move to Waiting for Parts while a part is on order. The room stays blocked. When it arrives go back to In Progress, or straight to Completed if the fit is trivial.
  5. 5
    Complete
    The purple Completed button in the drawer. The room is unblocked and returns to its normal status. The technician can no longer be changed.
  6. 6
    Close
    A supervisor checks the work and clicks Closed. From here the order is read-only, “Closed orders are read-only.”: and it cannot be reopened.

Every status change and field edit is written to the audit log with the from/to status and the fields that changed. Moving a card to a column the workflow does not allow shows “Move to an allowed next column on this work order”.

Statuses and what they drive

Six stored statuses; only Completed → Closed and the two parts loops go sideways. Room blocking is derived from status + the toggle.

Work-order workflow (only these moves are accepted)
Work-order workflow (only these moves are accepted)assignReportedAssignedIn ProgressWaiting for PartsCompletedClosed
  • ReportedAssigned (assign)
  • AssignedIn Progress
  • AssignedWaiting for Parts
  • In ProgressWaiting for Parts
  • Waiting for PartsIn Progress
  • In ProgressCompleted
  • Waiting for PartsCompleted
  • CompletedClosed
  • Reported: logged, nobody on it. The only way forward is assigning someone (which happens automatically when you pick a technician).
  • Assigned: owned by a technician or an external contractor.
  • In Progress and Waiting for Parts: active work; you can bounce between them.
  • Completed: repair done. Counts as “Resolved”. Technician is locked; other fields still editable.
  • Closed: signed off. Read-only, no reopening. Never shown on the board.

What is derived, not stored

  • Open requests = Reported + Assigned + In Progress + Waiting for Parts. In progress tile = In Progress + Waiting for Parts. Resolved = Completed + Closed. Est. cost sums every order's estimate.
  • The room's Maintenance status is recomputed after every change: a room is blocked only while an order on it has Room blocked while open switched on and is in one of the four open statuses. Completing or closing the order, or flipping the toggle to Sellable, releases the room automatically.
  • Location reads “Room 204” for room orders and the free-text label otherwise.

Work-order fields

What the report dialog asks for and what the drawer lets you edit afterwards.

Work order (drawer: every field editable until Closed)
FieldTypeNotes
IDM-…Assigned automatically. Search matches it.
Issue title *text 3–120What is wrong. Editable in the drawer.
Category *text 2–40Free text; the dialog suggests categories already in use. Filterable.
PriorityHigh / Medium / LowDefault Medium. Editable in the list cell and drawer. High open orders feed the “High priority” tile.
RoomroomOptional. Fixed once created, the Location cannot be changed from a room to free text later.
Locationtext ≤ 80Used when no room is chosen; “General area” if left blank. Editable in the drawer for non-room orders.
Technicianuser / ExternalAny active account, or External contractor. Locked once Completed.
DuedateOptional target date. Saved as midday hotel time.
Estimated costwhole currency unitsDefaults to 0. Non-negative integer; the drawer rounds what you type.
Room blocked while opentoggleOnly for room orders. On (“Out of service”) by default; “Sellable” keeps the room in the pool. Shown in the drawer only.
Status *enumReported → … → Closed as in the diagram. Editable from the list cell (shows only allowed next steps), drawer footer and board.

Permissions

Rooms View reads; Rooms Edit reports, assigns, edits and moves, including Close. There is no separate Full-only action.

Default Rooms levels, Maintenance uses this module
RoleRooms
Super AdminFull
Hotel ManagerFull
ReceptionistEdit
AccountantNone
Housekeeping MgrFull
MaintenanceEdit
Restaurant MgrNone
HR ManagerNone
SecurityView
None No accessView View onlyEdit Can editFull Full access
  • Rooms View: see the list, board and drawer. Cells show as plain text; the drawer says “You have view-only access to maintenance.”
  • Rooms Edit: Report issue, every inline edit, every status move including Completed and Closed.

Default roles with Edit or better: Maintenance, Receptionist, Housekeeping Mgr, Hotel Manager, Super Admin. Security has View. Accountants and HR do not see the module; if they need cost figures, use the Reports module instead.

Tips

Tiles as filters, inline cells, the address bar and live updates.

  • Tiles are filters. Click Open requests to hide everything completed or closed; click High priority to stack it with the priority filter. The Status dropdown clears the “open only” tile filter and vice versa.
  • Edit without opening. Priority, Technician and Status change straight from the table. A refused change shows a toast and the cell snaps back; Esc cancels an open cell.
  • Bookmark a view. /maintenance?tech=external&status=parts reopens exactly that list. Your List/Board choice is remembered per browser.
  • Weekly review. Filter Status → Completed and close orders in bulk from the Status cell, one click each.
  • Live. Any change by a colleague refreshes your list, tiles and board within seconds; the drawer keeps your place.
  • Maintenance has no offline queue, if the connection drops, changes fail with a toast and you retry when it returns. Rooms → Out of service is the offline-capable way to pull a room quickly.

Errors you may see

Two conflicts from the server, both about status; everything else is a validation message.

409Cannot move from reported to progress
Why
The target status is not an allowed next step from the order's current status (the message names both). Reported can only go to Assigned; Completed only to Closed; Closed nowhere.
Fix
Assign a technician first, then start work. Follow the diagram one step at a time.
409Closed work orders cannot be reopened
Why
A status change was sent for a closed order. In practice the previous message (“Cannot move from closed to …”) fires first, so you will rarely see this one.
Fix
Report a new issue instead; a closed order is history.
404Work order not found
Why
The order was removed or the tab is stale.
Fix
Reload the page.
404Room not found
Why
The room chosen in the report dialog no longer exists.
Fix
Close and reopen the dialog.

Client-side: “Describe the issue” (title under three characters); “Could not create work order” / “Could not update work order” for other failures. A title over 120 characters, a category over 40, or a negative cost is rejected as a 400 validation error before it reaches the server rules.

Work order
One maintenance record with an M-code, from Reported to Closed.
Blocks room
The toggle that keeps a room out of the sellable pool while its order is open.
External
A contractor outside the hotel; the order has no user assigned but counts as Assigned.
Open work
Reported, Assigned, In Progress and Waiting for Parts, what the board shows.