Architecture-to-Features Mapping¶
This document maps architecture entities and system components to features, enabling developers and AI assistants to understand which data and systems are involved when implementing any feature.
How to Use This Document¶
- When implementing a feature: Find the feature in the Entity-Feature Matrix to understand which entities it reads/writes
- When modifying an entity: Find the entity in the Entity Ownership table to see all affected features
- When working on a system component: Find the component in System Responsibilities to see its owned features
- When understanding data flows: See Epic Data Flows for simplified diagrams
Quick Reference: Entity Ownership¶
| Entity | Primary Epic | Key Features | Description |
|---|---|---|---|
| User | E1 | E1-F1, E1-F2, E1-F3, E1-F4 | User accounts and authentication |
| UserProfile | E1 | E1-F3, E1-F4, E1-F5 | Ticketing profiles with OIB |
| Match | E2 | E2-F1, E2-F2, E2-F4, E2-F7, E2-F9 | Match configuration and lifecycle |
| Stadium | E2 | E2-F3, E2-F4, E2-F5 | Stadium templates and configurations |
| Sector | E2/E3 | E2-F3, E2-F10, E3-F5, E3-F6 | Stadium sectors and seat groups |
| Seat | E3 | E3-F1, E3-F2, E3-F3, E3-F4 | Individual seat inventory |
| Ticket | E9 | E9-F1, E9-F2, E9-F3, E9-F5 | Issued tickets with QR codes |
| TicketHolder | E4 | E4-F5, E4-F6 | Ticket holder identity information |
| Order | E4/E8 | E4-F4, E4-F8, E8-F2, E8-F3 | Purchase orders |
| Payment | E8 | E8-F1, E8-F3, E8-F4, E8-F5 | Payment transactions |
| Quota | E7 | E7-F1, E7-F2, E7-F3, E7-F4, E7-F7 | Partner/sponsor ticket allocations |
| SubQuota | E7 | E7-F6 | Delegated quota portions |
| QuotaSeat | E7 | E7-F1, E7-F5 | Seats allocated to quotas |
| LoyaltyPoint | E6 | E6-F1, E6-F3 | Fan attendance tracking |
| Reservation | E4/E5 | E4-F4, E5-F4 | Cart and seat reservations |
| Blacklist | E11 | E11-F1, E11-F2, E11-F3, E11-F4 | Banned attendees |
| Queue | E5 | E5-F1, E5-F2, E5-F3, E5-F4, E5-F5 | Waiting queue positions |
| AuditLog | All | E3-F1, E10-F2, E10-F3 | System-wide activity logging |
Entity-Feature Detail Matrix¶
User Entity¶
The User entity is managed by HNS Drupal 10 and referenced by the Ticketing Backend.
| Operation | Features |
|---|---|
| Create | E1-F1 (Registration API) |
| Read | E1-F2, E1-F3, E4-F5, E6-F1, E10-F1 |
| Update | E1-F3, E1-F4 |
| Authenticate | E1-F2 |
UserProfile Entity¶
Ticketing-specific profile data stored in the Ticketing Backend.
| Operation | Features |
|---|---|
| Create | E1-F3 (Default Profile) |
| Read | E4-F5, E7-F5, E10-F1, E12-F1 |
| Update | E1-F3, E1-F4 |
| Validate OIB | E1-F5, E4-F6, E7-F5 |
Match Entity¶
Central entity for event management.
| Operation | Features |
|---|---|
| Create | E2-F1 (Match CRUD) |
| Read | E2-F2, E2-F4, E4-F1, E4-F2, E5-F1, E7-F1, E13-F1, E14-F1 |
| Update | E2-F1, E2-F2, E2-F4, E2-F6, E2-F7, E2-F9 |
| Delete/Cancel | E2-F7 (Cancellation) |
| Close | E2-F9, E6-F3, E13-F2 |
Stadium Entity¶
Stadium templates and per-match configurations.
| Operation | Features |
|---|---|
| Create Template | E2-F3 |
| Read | E2-F4, E2-F5, E3-F5, E4-F2 |
| Update | E2-F3, E2-F10 |
| Configure for Match | E2-F4, E2-F5 |
Sector Entity¶
Logical groupings of seats within a stadium.
| Operation | Features |
|---|---|
| Create | E2-F3, E2-F10 |
| Read | E3-F4, E3-F5, E3-F6, E4-F2, E7-F1 |
| Update | E2-F10, E3-F6 |
| Visualize | E3-F5 |
Seat Entity¶
Individual seat inventory with status tracking.
| Operation | Features |
|---|---|
| Create | E2-F3, E2-F10 |
| Read | E3-F4, E3-F5, E4-F2, E4-F3, E7-F1 |
| Update Status | E3-F1, E3-F2, E3-F3, E4-F4, E4-F8, E7-F5, E8-F3 |
| Reserve | E4-F4, E5-F4, E12-F3 |
| Transfer | E3-F6, E9-F5, E10-F2 |
| Allocate to Quota | E7-F1, E7-F2, E7-F3 |
Ticket Entity¶
Issued tickets with QR codes and holder information.
| Operation | Features |
|---|---|
| Create | E4-F8, E7-F5, E9-F1 |
| Read | E9-F2, E9-F3, E9-F4, E10-F1, E13-F1 |
| Update | E9-F5, E10-F2, E10-F4 |
| Cancel | E8-F3, E10-F3, E11-F4 |
| Transfer | E9-F5, E10-F2 |
| Mark Attended | E2-F9, E6-F3, E13-F2 |
TicketHolder Entity¶
Identity information for ticket holders.
| Operation | Features |
|---|---|
| Create | E4-F5, E7-F5 |
| Read | E4-F6, E10-F1, E11-F3 |
| Update | E9-F5, E10-F2 |
| Validate | E1-F5, E4-F6, E11-F3 |
Order Entity¶
Purchase orders linking payments to tickets.
| Operation | Features |
|---|---|
| Create | E4-F4 (Cart), E4-F8 (Confirm) |
| Read | E8-F2, E10-F1, E14-F1, E14-F3 |
| Update | E4-F7, E8-F3 |
| Complete | E4-F8 |
| Refund | E8-F3, E10-F3 |
Payment Entity¶
Payment transactions and processing.
| Operation | Features |
|---|---|
| Create | E4-F7, E8-F1 |
| Read | E8-F3, E10-F3, E14-F3 |
| Update | E8-F1 (webhooks), E8-F3 (refund) |
| Process | E4-F7, E8-F1, E8-F4 |
| Refund | E8-F3, E10-F3 |
| Invoice | E8-F5 |
Quota Entity¶
Partner and sponsor ticket allocations.
| Operation | Features |
|---|---|
| Create | E7-F1, E7-F2, E7-F3 |
| Read | E7-F4, E12-F2 |
| Update | E7-F5, E7-F7 |
| Cancel | E7-F7 |
| Claim | E7-F5 |
SubQuota Entity¶
Delegated portions of quotas.
| Operation | Features |
|---|---|
| Create | E7-F6 |
| Read | E7-F4 |
| Update | E7-F6 |
| Claim | E7-F5 |
QuotaSeat Entity¶
Seats allocated to specific quotas.
| Operation | Features |
|---|---|
| Create | E7-F1, E7-F2 |
| Read | E7-F4, E7-F5 |
| Update | E7-F5 (claim), E7-F7 (cancel) |
LoyaltyPoint Entity¶
Fan attendance and loyalty tracking.
| Operation | Features |
|---|---|
| Create | E6-F3 (after match) |
| Read | E6-F1, E6-F2 |
| Calculate Balance | E6-F1, E6-F2 |
Reservation Entity¶
Temporary seat holds (cart, queue purchase windows).
| Operation | Features |
|---|---|
| Create | E4-F4, E5-F4, E12-F3 |
| Read | E4-F4, E5-F4 |
| Extend | E4-F4 |
| Release | E4-F4 (TTL), E5-F4 (window) |
| Convert to Order | E4-F8 |
Blacklist Entity¶
Banned attendees database.
| Operation | Features |
|---|---|
| Create | E11-F1 |
| Read | E4-F6, E7-F5, E9-F5, E10-F2, E11-F3 |
| Bulk Import | E11-F2 |
| Check | E11-F3 |
| Auto-Cancel | E11-F4 |
Queue Entity¶
Waiting queue for high-demand matches.
| Operation | Features |
|---|---|
| Join | E5-F1 |
| Read Position | E5-F2 |
| Update | E5-F2 (position), E5-F3 (notification) |
| Grant Window | E5-F4 |
| Handle Disconnect | E5-F5 |
System Component Responsibilities¶
HNS Mobile App¶
Primary responsibility: Customer-facing UI for ticket discovery, purchase, storage, and presentation.
| Epic | Features | Description |
|---|---|---|
| E4 | E4-F1, E4-F2, E4-F3, E4-F4, E4-F5, E4-F6, E4-F7, E4-F8 | Complete ticket purchase flow |
| E5 | E5-F1, E5-F2, E5-F3, E5-F4, E5-F5 | Waiting queue experience |
| E9 | E9-F1, E9-F2, E9-F3, E9-F4, E9-F5 | Ticket wallet and display |
| E6 | E6-F1 (read) | Loyalty points display |
| E7 | E7-F5 (claiming) | Mobile quota claiming |
| E12 | E12-F1 | Petrol sales section (PIN generation) |
| E1 | E1-F2, E1-F3, E1-F4 | Profile management |
| E15 | E15-F2 | Push notification receipt |
Admin Portal¶
Primary responsibility: HNS staff operations for match lifecycle, inventory, quotas, support, and reporting.
| Epic | Features | Description |
|---|---|---|
| E2 | E2-F1 through E2-F10 | Match and stadium management |
| E3 | E3-F1, E3-F2, E3-F3, E3-F4, E3-F5, E3-F6 | Seat inventory operations |
| E7 | E7-F1, E7-F2, E7-F3, E7-F7 | Quota creation and management |
| E10 | E10-F1, E10-F2, E10-F3, E10-F4 | Customer support operations |
| E11 | E11-F1, E11-F2, E11-F4, E11-F5 | Blacklist management |
| E13 | E13-F1, E13-F2 | Access control exports/imports |
| E14 | E14-F1, E14-F2, E14-F3 | Reporting and analytics |
| E6 | E6-F2, E6-F3 | Loyalty configuration and awarding |
| E8 | E8-F3, E8-F4, E8-F5 | Payment and refund operations |
Quota Web Portal¶
Primary responsibility: Web UI for quota holders and partner staff workflows.
| Epic | Features | Description |
|---|---|---|
| E7 | E7-F4 | Quota dashboard |
| E7 | E7-F5 | Web-based quota claiming |
| E7 | E7-F6 | Subquota creation and delegation |
| E12 | E12-F2 | Petrol staff portal (PIN lookup, sale confirmation) |
| E12 | E12-F3 | Petrol reservation management |
Ticketing Backend (PHP/Symfony)¶
Primary responsibility: System of record for all ticketing domain operations. Provides APIs consumed by all frontend applications.
| Category | Features | Description |
|---|---|---|
| User/Profile | E1-F1, E1-F3, E1-F4, E1-F5 | Profile and OIB validation APIs |
| Match/Stadium | E2-F1 through E2-F10 | Match and stadium configuration APIs |
| Inventory | E3-F1 through E3-F6 | Seat status and inventory APIs |
| Purchase | E4-F1 through E4-F8 | Purchase flow APIs |
| Queue | E5-F1 through E5-F5 | Queue management APIs |
| Loyalty | E6-F1, E6-F2, E6-F3 | Loyalty tracking APIs |
| Quota | E7-F1 through E7-F7 | Quota management APIs |
| Payment | E8-F1 through E8-F5 | Payment processing integration |
| Ticket | E9-F1 through E9-F6 | Ticket generation and delivery APIs |
| Support | E10-F1 through E10-F4 | Support operation APIs |
| Security | E11-F1 through E11-F5 | Blacklist management APIs |
| Petrol | E12-F1 through E12-F3 | Petrol flow APIs |
| Access Control | E13-F1, E13-F2 | Export/import APIs |
| Reporting | E14-F1 through E14-F3 | Reporting and analytics APIs |
| Notifications | E15-F1, E15-F2 | Email and push notification dispatch |
HNS Drupal 10¶
Primary responsibility: User account management and authentication (SSO).
| Epic | Features | Description |
|---|---|---|
| E1 | E1-F1 | User registration (identity creation) |
| E1 | E1-F2 | User authentication and session management |
Epic Data Flows¶
E1: User & Profile Management¶
┌─────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ HNS Mobile App │────▶│ HNS Drupal 10 │────▶│ Ticketing Backend │
│ (Login/Profile)│◀────│ (Auth/SSO) │◀────│ (Profile Storage) │
└─────────────────┘ └──────────────────┘ └──────────────────┘
│
▼
┌────────────────────────┐
│ Entities: │
│ - User │
│ - UserProfile │
└────────────────────────┘
Features: E1-F1 → E1-F2 → E1-F3 → E1-F4 → E1-F5
E4: Ticket Purchase Flow¶
┌─────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ HNS Mobile App │────▶│ Ticketing Backend │────▶│ Payment Gateway │
│ (Purchase UI) │◀────│ (Order/Seat Mgmt) │◀────│ (Stripe) │
└─────────────────┘ └──────────────────┘ └──────────────────┘
│
▼
┌────────────────────────┐
│ Entities: │
│ - Match (read) │
│ - Seat (reserve/sold) │
│ - Reservation (create) │
│ - TicketHolder (create)│
│ - Order (create) │
│ - Payment (create) │
│ - Ticket (create) │
│ - Blacklist (read) │
└────────────────────────┘
Features: E4-F1 → E4-F2 → E4-F3 → E4-F4 → E4-F5 → E4-F6 → E4-F7 → E4-F8
E5: Waiting Queue System¶
┌─────────────────┐ ┌──────────────────┐
│ HNS Mobile App │────▶│ Ticketing Backend │
│ (Queue UI) │◀────│ (Redis Queue) │
└─────────────────┘ └──────────────────┘
│ │
│ WebSocket/Polling │
└───────────────────────┘
│
▼
┌────────────────────────┐
│ Entities: │
│ - Queue (positions) │
│ - Reservation (window) │
│ - Match (read) │
└────────────────────────┘
Features: E5-F1 → E5-F2 → E5-F3 → E5-F4 → E5-F5
E7: Quota Management¶
┌─────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Admin Portal │────▶│ Ticketing Backend │────▶│ Email Service │
│ (Quota Creation)│ │ (Quota Engine) │ │ (Invitations) │
└─────────────────┘ └──────────────────┘ └──────────────────┘
│
┌────────────────────────┼────────────────────────┐
▼ ▼ ▼
┌───────────────┐ ┌──────────────────┐ ┌──────────────────┐
│Quota Web Portal│ │ HNS Mobile App │ │ Entities: │
│(Claiming/Deleg)│ │ (Claiming) │ │ - Quota │
└───────────────┘ └──────────────────┘ │ - SubQuota │
│ - QuotaSeat │
│ - Seat (allocate)│
│ - Ticket (claim) │
└──────────────────┘
Features: E7-F1 → E7-F2 → E7-F3 → E7-F4 → E7-F5 → E7-F6 → E7-F7
E8: Payment Processing¶
┌─────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ HNS Mobile App │────▶│ Ticketing Backend │────▶│ Payment Gateway │
│ (Payment UI) │ │ (Payment Service) │◀────│ (Stripe Webhooks)│
└─────────────────┘ └──────────────────┘ └──────────────────┘
│
├──────────────────────────┐
▼ ▼
┌────────────────────────┐ ┌──────────────────┐
│ Entities: │ │ e-racuni.com │
│ - Payment (process) │ │ (Invoicing) │
│ - Order (update) │ └──────────────────┘
│ - Ticket (create/cancel)
│ - Seat (status) │
└────────────────────────┘
Features: E8-F1 → E8-F2 → E8-F3 → E8-F4 → E8-F5
E11: Blacklist & Security¶
┌─────────────────┐ ┌──────────────────┐
│ Admin Portal │────▶│ Ticketing Backend │
│ (Import/Manage) │ │ (Blacklist DB) │
└─────────────────┘ └──────────────────┘
│
┌────────────────────────┼────────────────────────┐
▼ ▼ ▼
┌───────────────────┐ ┌───────────────────┐ ┌───────────────────┐
│ E4-F6: Checkout │ │ E7-F5: Quota Claim│ │ E9-F5: Transfer │
│ (Blacklist Check) │ │ (Blacklist Check) │ │ (Blacklist Check) │
└───────────────────┘ └───────────────────┘ └───────────────────┘
│
▼
┌────────────────────────┐
│ Entities: │
│ - Blacklist (manage) │
│ - Ticket (auto-cancel) │
│ - AuditLog (violations)│
└────────────────────────┘
Features: E11-F1 → E11-F2 → E11-F3 → E11-F4 → E11-F5
E12: Physical Sales (Petrol)¶
┌─────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ HNS Mobile App │────▶│ Ticketing Backend │◀────│ Quota Web Portal │
│ (PIN Request) │ │ (PIN Management) │ │ (Petrol Staff) │
└─────────────────┘ └──────────────────┘ └──────────────────┘
│ │ │
│ PIN Code │ │
└───────────────────────┼────────────────────────┘
│
▼
┌────────────────────────┐
│ Entities: │
│ - Quota (Petrol) │
│ - Reservation (PIN) │
│ - TicketHolder (entry) │
│ - Ticket (create) │
│ - Blacklist (check) │
└────────────────────────┘
Features: E12-F1 → E12-F2 → E12-F3
Cross-Cutting Feature Dependencies¶
Features That Check Blacklist¶
All these features call E11-F3 (Blacklist Check Service):
- E4-F6: Checkout ticket holder validation
- E7-F5: Quota claiming process
- E9-F5: Ticket transfer self-service
- E10-F2: Support ticket transfer
- E12-F1: Petrol PIN generation
Features That Generate Tickets¶
All these features use E9-F1 (Ticket Generation):
- E4-F8: Order confirmation (standard purchase)
- E7-F5: Quota claiming process
- E12-F3: Petrol sale confirmation
Features That Send Notifications¶
All these features use E15-F1/E15-F2:
- E2-F6: Match update notifications
- E4-F8: Order confirmation
- E5-F3: Queue progressive notifications
- E7-F1: Quota invitation
- E7-F5: Quota claim confirmation
- E9-F5: Transfer notification
- E10-F2: Support transfer notification
- E10-F3: Refund notification
Features That Update Seat Status¶
All these features modify Seat entity status via E3-F1:
- E3-F2: Individual seat status change
- E3-F3: Bulk seat operations
- E4-F4: Cart reservation
- E4-F8: Order completion (sold)
- E7-F1: Quota allocation
- E7-F7: Quota cancellation
- E8-F3: Refund processing
- E9-F5: Ticket transfer
Related Documentation¶
Last Updated: January 2026