Flow: Admin Seat Operations¶
Actor¶
Admin with seat management permissions
Preconditions¶
- Admin has valid credentials with inventory management permissions
- Match event exists with stadium/venue configured
- Seat inventory loaded into system
- Understanding of 10+ seat status types: Available, Sold, Reserved, Technical, Official, Blocked, Maintenance, Quarantined, Allocated, Inactive
Flow Steps¶
Part 1: Individual Seat Status Change¶
Access Seat Inventory Management
- Admin logs into admin portal
- Navigates to "Stadium Management" section
- Selects target match/event from dropdown
- Stadium Visualization Options:
- Full Stadium View (UEFA-style): Shows entire stadium with all sections visible
- Zoomable interface - pinch/scroll to zoom into specific areas
- At low zoom: shows section-level color coding (aggregate status)
- At high zoom: shows individual seat-level detail
- Preferred for getting overall stadium status at a glance
- Sector Detail View (Current): Click section to see individual seats
- Traditional view showing sector with seat grid
- Useful for detailed seat-by-seat operations
- Toggle between views via "Stadium View" / "Sector View" buttons
- Full Stadium View (UEFA-style): Shows entire stadium with all sections visible
- Stadium seating map loads with color-coded seat status visualization:
- Green: Available
- Blue: Sold
- Yellow: Reserved
- Purple: Technical
- Orange: Official
- Red: Blocked
- Gray: Maintenance
- Brown: Quarantined
- Teal: Allocated
- Black: Inactive
- Note: Full stadium zoomable view implementation depends on technical feasibility with stadium map data format
Select Individual Seat
- Admin navigates stadium map (pan/zoom enabled)
- Clicks on specific seat (e.g., Section A, Row 5, Seat 12)
- Seat details panel appears:
- Seat identifier (section, row, number)
- Current status
- Last status change (date, time, admin)
- Lock status (if reserved/in-cart)
- Associated order ID (if sold)
- Status history (audit trail)
Change Seat Status
- Admin clicks "Change Status" button
- Status change form displayed:
- Current Status: [e.g., Available]
- New Status (dropdown with valid transitions only):
- Available → Reserved, Sold, Technical, Official, Blocked, Maintenance, Allocated
- Sold → Available (requires refund workflow), Quarantined
- Reserved → Available (if expired), Sold
- Etc. (based on status transition rules)
- Reason (required, free text): e.g., "Safety inspection required"
- System validates transition is allowed
- Admin enters reason and dates
- Admin clicks "Update Status"
Confirm and Apply
- System displays confirmation:
- "Change seat [Section A-Row 5-Seat 12] from [Available] to [Maintenance]?"
- "Reason: Safety inspection required"
- "Effective: Immediately"
- Admin confirms
- System updates seat status
- Audit log entry created
- Seat color updates on map immediately
- Success message: "Seat status updated successfully"
Part 2: Bulk Seat Selection and Operations¶
Selection Method 1: By Section/Sector¶
Select Section
- Admin clicks "Bulk Operations" button
- Selection mode activated
- Admin selects section from dropdown or clicks section on map (e.g., "North Stand Section A")
- System highlights all seats in section
- Selection summary displayed:
- Total seats selected: 1,248
- Current status breakdown:
- Available: 856
- Sold: 312
- Reserved: 24
- Other: 56
- Option to refine selection with filters
Apply Bulk Status Change
- Admin clicks "Change Status" for selection
- Bulk change form displayed:
- Apply to Status (optional filter): "Only change seats with status: [Available]"
- New Status: Blocked
- Reason (required): "Safety inspection - structural assessment"
- Admin fills form
- Preview shows: "856 Available seats will be changed to Blocked"
- Admin clicks "Apply Bulk Change"
Review and Confirm
- Confirmation dialog:
- "Change 856 seats in North Stand Section A?"
- "From: Available → To: Blocked"
- Warning: "This will remove seats from public sale immediately"
- Admin confirms
- Progress bar shows operation status
- System processes changes in batches (transaction safety)
- Success message: "856 seats updated successfully"
- Stadium map updates with new colors
Selection Method 2: By Row Range¶
Select Row Range
- Admin selects section first (e.g., "East Stand Section C")
- Clicks "Select by Row Range"
- Input fields appear:
- From Row: 1
- To Row: 10
- Admin enters row range
- System highlights selected rows on map
- Selection summary: 420 seats selected (Rows 1-10)
Apply Status Change
- Same process as section selection
- Admin changes status from Available to Technical
- Reason: "Press and media allocation for match day"
- System validates and applies change
- 420 seats moved to Technical status
Selection Method 3: By Seat Number Range¶
Select Seat Range
- Admin selects section and row
- Clicks "Select by Seat Range"
- Input fields:
- Section: West Stand B
- Row: 15
- From Seat: 1
- To Seat: 50
- System highlights seats 1-50 in Row 15
- Selection summary: 50 seats selected
Apply Status Change
- Admin changes to Official status
- Reason: "VIP guest allocation"
- Effective immediately
- System applies change to 50 seats
Selection Method 4: Custom Multi-Select¶
Manual Selection
- Admin enables "Multi-Select Mode"
- Clicks individual seats on map (Ctrl+Click for multiple)
- Selected seats highlighted with different color
- Selected seats list displayed in sidebar:
- Section A-Row 3-Seat 5
- Section A-Row 3-Seat 6
- Section B-Row 7-Seat 12
- ... (up to 100 manual selections at once)
- Admin can deselect individual seats or clear all
Apply Status Change
- Admin changes scattered seats to Quarantined
- Reason: "Customer complaints - investigation pending"
- System applies to all selected seats
Selection Method 5: Filter-Based Selection¶
Apply Filters
- Admin clicks "Advanced Filters"
- Filter criteria available:
- Status: [Select one or multiple statuses]
- Section: [Select sections]
- Price Category: [Premium, Standard, Economy]
- Last Modified Date: [Date range]
- Modified By: [Admin user]
- With Active Locks: Yes/No
- Example: Select all "Maintenance" status seats
- System applies filters and highlights matching seats
- Selection summary: 142 seats match filters
Apply Status Change
- Admin changes filtered seats from Maintenance to Available
- Reason: "Maintenance completed - seats ready for sale"
- System validates and updates 142 seats
Part 3: CSV Export¶
Export Current Seat Status
- Admin clicks "Export Inventory" button
- Export options:
- Match/Event: Select specific match or "All upcoming"
- Sections: All or specific sections
- Statuses: All statuses or filter by status
- Admin selects options and clicks "Export"
- System generates file: "seat-inventory-[match-name]-[date].csv"
- File includes columns:
- Stadium ID, Section, Row, Seat Number, Current Status, Price Category, Last Modified, Modified By, Lock Status, Order ID (if sold)
- Admin saves file locally
Part 4: Sector-to-Sector Ticket Transfer¶
Use Case¶
When physical stadium changes occur (e.g., fence moved between sectors, capacity reallocation), admin needs to transfer sold tickets from one sector to another.
Example Scenario: Sector A and B share a boundary. The fence is moved, increasing Sector A by 500 seats and decreasing Sector B by 500. Tickets already sold in the affected area of Sector B need to be transferred to new seats in Sector A, and the original seats in B need to be blocked.
Access Sector Transfer Interface
- Admin logs into admin portal
- Navigates to "Stadium Management" > "Sector Operations"
- Selects target match/event
- Clicks "Sector Transfer" button
Select Source Tickets
- Admin selects source sector (e.g., "Sector B")
- System displays sold tickets in the affected area
- Admin can select tickets by:
- Row range (e.g., Rows 1-10)
- Seat range (e.g., Seats 1-50 per row)
- Individual selection
- Selection summary shows:
- Total tickets selected: [number]
- Ticket holders affected: [count]
- Current seat locations
Select Destination Sector
- Admin selects destination sector (e.g., "Sector A")
- System validates:
- Destination sector has sufficient available seats
- Price category compatibility (or allows price adjustment)
- Admin chooses seat assignment method:
- Automatic (Snake algorithm): System assigns best available seats
- Manual mapping: Admin specifies exact new seat for each ticket
Preview and Confirm Transfer
- System displays transfer preview:
- From: Sector B, Row X, Seat Y → To: Sector A, Row M, Seat N
- For each affected ticket
- Admin reviews mapping
- Admin enters reason: "Physical fence relocation - capacity reallocation"
- Admin clicks "Execute Transfer"
Execute Transfer and Notify
- System performs atomic operation:
- Updates all ticket seat assignments to new sector/seats
- Marks original seats as "Blocked" (unavailable for future sales)
- Creates audit trail entries
- Customer notifications sent automatically:
- Email: "Your seat has been relocated from [old] to [new] due to venue changes"
- Push notification to HNS app
- Updated ticket visible in app with new seat details
- Success summary displayed to admin
Part 5: Search and Modification by Seat/Reservation¶
Search Method 1: Search by Seat Number¶
Access Seat Search Interface
- Admin logs into admin portal
- Navigates to "Stadium Management"
- Clicks "Search Seats" button
- Search interface appears with multiple search options
Search by Specific Seat
- Admin selects search type: "By Seat Number"
- Input fields displayed:
- Stadium/Venue: Dropdown (e.g., Maksimir, Poljud, Opus Arena)
- Match/Event: Dropdown or "All Events"
- Section: Text input (e.g., "A", "P53N", "ISTOK C5")
- Row: Text input (e.g., "5", "15")
- Seat Number: Text input (e.g., "12", "B3")
- Admin enters: Stadium: Maksimir, Section: A, Row: 5, Seat: 12
- Admin clicks "Search"
View Seat Details
- System retrieves seat information
- Detailed seat panel displayed:
- Seat Identifier: Maksimir - Section A - Row 5 - Seat 12
- Current Status: Sold / Reserved / Available / etc.
- Match/Event: Croatia vs Poland - 15.03.2026
- Linked Document:
- Type: QUOTA / ORDER / STORNO
- Document ID: Link to full document (e.g., "Quota #300032x")
- Click to view full document details
- Customer/Owner Information (if sold/reserved):
- Name: [Customer name]
- OIB: [Masked OIB]
- Email: [Masked email]
- Order number: 4100234
- Pricing: 50.00 EUR
- Payment Status: Paid / Pending / Deferred
- Lock Status: Locked / Available
- Last Status Change:
- Date/Time: 15.11.2025 14:32:15
- Changed by: admin@hns.hr
- Reason: "Quota allocation"
- Status History (expandable):
- 15.11.2025 14:32: Available → Reserved (Quota allocation)
- 16.11.2025 10:15: Reserved → Sold (Quota claimed)
- Full audit trail displayed
View Linked Document
- Admin clicks on linked document: "Quota #300032x"
- System opens document details in modal or new tab:
- Quota owner name and organization
- Quota type (e.g., Sponsor, Official, Partner)
- Total allocation and usage
- Deadline
- All seats allocated under this quota
- Contact information
- Payment terms (deferred/immediate)
- Admin can navigate to quota management from here
- Admin returns to seat details
Search Method 2: Search by Reservation/Quota¶
Search by Reservation Number
- Admin selects search type: "By Reservation/Quota"
- Input fields displayed:
- Search Type: Dropdown (Quota, Reservation, Order, Storno)
- Document Number: Text input
- Match/Event: Dropdown or "All Events"
- Customer Name/OIB: Optional text input for filtering
- Admin enters: Type: Quota, Document: "300032x"
- Admin clicks "Search"
View Reservation/Quota Summary
- System retrieves all information for quota 300032x
- Quota summary panel displayed:
- Quota ID: 300032x
- Quota Owner: Hrvatski Telekom (Sponsor)
- Contact: sponsor@ht.hr
- Match/Event: Croatia vs Poland - 15.03.2026
- Allocated Sectors: Section A, Section B (VIP)
- Total Allocation: 50 seats
- Claimed/Used: 42 seats
- Available: 8 seats
- Status: Active
- Deadline: 10.03.2026 23:59
- Payment Terms: Deferred payment
- Created by: admin@hns.hr on 01.11.2025
- Seat List displayed in data table:
- Columns: Section, Row, Seat, Status, Claimed By, Claim Date
- 50 rows showing all allocated seats
- Color-coded by status (claimed/available)
- Sortable and filterable
View Individual Seat from Quota
- Admin clicks on specific seat in quota list (e.g., Section A, Row 5, Seat 12)
- System navigates to seat detail view (same as Search Method 1, Step 3)
- Link back to quota summary available
Search Method 3: Via Interactive Seat Map¶
Access Stadium Map View
- Admin logs into admin portal
- Navigates to "Stadium Management"
- Selects target match/event from dropdown
- Interactive stadium seating map loads with color-coded seat status visualization
- Map controls available:
- Pan: Click and drag to navigate
- Zoom: Mouse wheel or pinch gesture to zoom in/out
- Section labels and row numbers visible at appropriate zoom levels
Navigate and Select Seat via Map
- Admin uses pan/zoom to navigate to desired area of stadium
- Admin zooms in on specific section (e.g., Section A)
- Seat-level detail becomes visible at higher zoom levels
- Admin clicks on specific seat (e.g., Row 5, Seat 12)
- Seat highlights on map
View Seat Details in Modal
- Modal window opens displaying comprehensive seat information:
- Seat Identifier: Maksimir - Section A - Row 5 - Seat 12
- Current Status: Sold / Reserved / Available / etc. (color-coded)
- Match/Event: Croatia vs Poland - 15.03.2026
- Linked Document:
- Type: QUOTA / ORDER / STORNO
- Document ID: Clickable link (e.g., "Quota #300032x")
- Customer/Owner Information (if sold/reserved):
- Name: [Customer name]
- OIB: [Masked OIB]
- Email: [Masked email]
- Order number: 4100234
- Pricing: 50.00 EUR
- Payment Status: Paid / Pending / Deferred
- Lock Status: Locked / Available
- Last Status Change:
- Date/Time: 15.11.2025 14:32:15
- Changed by: admin@hns.hr
- Reason: "Quota allocation"
- Quick Status History (last 5 changes, expandable for full history)
- Modal includes action buttons:
- "Modify Assignment"
- "Change Status"
- "View Full History"
- "View Linked Document"
- "Close"
Perform Operations from Modal
- Admin can perform any modification operation directly from modal:
- Change Status: Opens status change form within modal
- Modify Assignment: Opens assignment modification form
- View Linked Document: Opens document details in new modal layer
- View Full History: Expands to show complete audit trail
- All operations follow same validation and confirmation flows as described in "Modification Operations" section
- After successful operation, modal updates to reflect new seat state
- Admin can close modal and continue navigating map
- Map automatically refreshes to show updated seat color/status
Multi-Seat Selection via Map
- Admin can hold Ctrl/Cmd and click multiple seats on map
- Selected seats highlight with selection border
- Bulk operations button appears: "Modify Selected Seats (X)"
- Admin can apply bulk status changes to map-selected seats
- Follows same bulk operation flow as Part 2
Search Method 4: Search by Email Address¶
Search by Customer Email
- Admin selects search type: "By Email"
- Input field displayed:
- Customer Email: Text input with email format validation
- Match/Event: Dropdown or "All Events"
- Admin enters customer email address (full or partial)
- Admin clicks "Search"
View Email Search Results
- System returns all tickets/seats associated with email
- Results displayed in table:
- Match/Event
- Seat Location (Section, Row, Seat)
- Ticket Status
- Document Type (Order/Quota)
- Order/Quota ID
- Purchase/Claim Date
- Admin can click any row to view full seat details
- Useful for customer support inquiries: "Find all tickets for customer@email.com"
Search Method 5: Multi-Criteria Advanced Search¶
Advanced Search Interface
- Admin clicks "Advanced Search"
- Multiple filter criteria available:
- Match/Event: Multiple selection
- Status: Multiple selection (Available, Sold, Reserved, etc.)
- Section(s): Multiple selection
- Document Type: Quota, Order, Storno, None
- Customer OIB: Text input
- Customer Name: Text input
- Customer Email: Text input (new field)
- Date Range: From/To date pickers
- Modified By: Admin user dropdown
- Payment Status: Paid, Pending, Deferred
- Admin sets multiple filters:
- Match: Croatia vs Poland
- Status: Sold
- Document Type: Quota
- Section: A
- Admin clicks "Search"
View Search Results
- System returns matching seats
- Results displayed in paginated table:
- Columns: Seat Identifier, Status, Document Type, Customer, Price, Claim Date
- Total results: 158 seats
- Export option available (CSV/Excel)
- Admin can click any row to view seat details
- Admin can select multiple rows for bulk operations
Modification Operations¶
Modify Single Seat Assignment
- From seat detail view (Search Method 1, Step 3)
- Admin clicks "Modify Assignment" button
- Modification options displayed:
- Change Status: Dropdown (respecting valid transitions)
- Reassign to Different Customer:
- Search customer by OIB/email
- Transfer seat to new customer
- Original customer notified
- Change Linked Document:
- Unlink from current quota/order
- Link to different quota/order
- Validation: ensure target quota has capacity
- Add Internal Note: Free text field
- Admin selects modification type
- Admin enters required information and reason
- System validates modification is allowed
Confirm Modification
- Confirmation dialog displayed:
- "Modify seat [Section A-Row 5-Seat 12]?"
- "Action: Reassign from Customer A (OIB: 12345) to Customer B (OIB: 67890)"
- "Reason: Customer request - approved transfer"
- Warning: "Both customers will be notified via email"
- Admin confirms modification
- System processes change:
- Updates seat assignment
- Updates customer records
- Updates quota/order records (if applicable)
- Creates audit log entry
- Sends notification emails and push notifications
- Success message: "Seat reassigned successfully"
Audit Trail and History¶
View Complete Audit Trail
- From any seat detail view
- Admin clicks "View Full History"
- Complete audit log displayed:
- All changes to this seat across all events
- Columns: Date/Time, Action, Old Value, New Value, Changed By, Reason, Source
- Example entries:
- 01.11.2025 10:00: Created | Status: null → Available | System | Auto | Import
- 10.11.2025 14:30: Status Change | Available → Reserved | admin@hns.hr | Manual | "Quota allocation 300032x"
- 12.11.2025 16:45: Claimed | Reserved → Sold | quota-system | Auto | "Customer claim"
- 15.11.2025 09:20: Price Override | 50.00 → 40.00 | manager@hns.hr | Manual | "Sponsor discount applied"
- Audit trail exportable (CSV)
- Permanent retention for compliance
Filter Audit Trail
- Filter options:
- Date range
- Action type (Status change, Assignment, Price change, etc.)
- Admin user
- Source (Manual, Auto, Import, API)
- Admin applies filters
- Filtered results displayed
- Export filtered audit trail
Search Performance and Optimization¶
- Indexed Fields: Seat identifiers, customer OIB, document numbers
- Caching: Recent searches cached
- Concurrent Access: Multiple admins can search simultaneously
- Real-Time Updates: Search results reflect latest data (no stale cache for modifications)
Alternative Flows¶
A1: Bulk Operation Conflict - Seats Locked
- Admin attempts bulk status change on section
- System detects 24 seats currently locked (in customer carts)
- Warning displayed: "24 seats are currently reserved in customer carts. These will be skipped."
- Admin options:
- Proceed with non-locked seats only
- Wait and retry later
- If proceed: 832 seats updated, 24 skipped
- Skipped seats listed in report for admin review
A2: Invalid Status Transition Attempted
- Admin tries to change Sold seats to Available without refund
- System blocks operation: "Invalid transition. Sold seats require refund process."
- Admin must:
- Use refund workflow instead
- Or filter selection to exclude Sold seats
A3: Bulk Operation Performance Limit
- Admin selects entire stadium (50,000 seats)
- System warns: "Large operation detected. This may take several minutes."
- Admin confirms
- System processes in batches of 1,000 seats
- Progress bar shows: "Processing batch 12/50..."
- Success summary provided
A4: Concurrent Modification Detected
- Admin A and Admin B attempt to change same section simultaneously
- System uses optimistic locking with version numbers
- First admin's changes commit successfully
- Second admin receives warning: "Section was modified by another user. Please refresh and retry."
- Admin refreshes view to see latest status
- Admin can reapply changes if still needed
Post-Flow Actions¶
Real-Time Synchronization:
- All status changes propagate to:
- Mobile app
- Capacity dashboard (real-time)
- Quota allocation system (immediate)
- Admin receives confirmation of successful sync
Audit Trail Review:
- Complete history for every seat:
- All status changes with timestamps
- Admin who made change
- Reason provided
- Source (manual, bulk, import, scheduled, auto)
- Export capability for compliance
- Retention: Permanent for audit purposes
Status Analytics Dashboard:
- Visual charts showing:
- Current status distribution (pie chart)
- Admin activity summary
- Filterable by date range, match, section, admin
Last Updated: January 2026