Every IT department eventually outgrows shared inboxes and spreadsheets. When support requests arrive through email, Slack, walk-ups, and phone calls, tracking who is working on what becomes impossible. MVC Helpdesk Manager replaces that chaos with a structured ticketing system that enforces SLA deadlines, routes tickets to the right agents, and gives end users a self-service portal to check status without sending another "any update?" email.
Product Overview
MVC Helpdesk Manager is an ASP.NET Core MVC application designed for internal IT support teams. It ships with pre-built modules for ticket management, SLA policy configuration, helpdesk team organization, and a self-service portal. The codebase follows Vertical Slice Architecture with CQRS handlers, making it straightforward to extend with custom fields, integrations, or approval workflows. Every feature is wired through role-based access control: Guest submitters create tickets, Member agents resolve them, and Admin managers configure SLAs and reassign workloads.
The platform is built to handle thousands of tickets across multiple helpdesk teams. A reporting dashboard surfaces ticket volume trends, average resolution time, SLA compliance percentages, and agent workload distribution, giving IT managers the visibility they need to make staffing and process decisions.
Helpdesk Teams and Agent Management
MVC Helpdesk Manager organizes support staff into helpdesk teams, each with its own set of agents. An Admin creates a team (e.g., "Network Support", "Application Support", "Desktop Support"), assigns agents to it, and configures the ticket groups that team handles. Agents belong to one or more teams, and tickets are routed based on the ticket group they fall into.
Agent management includes workload visibility: managers can see how many open tickets each agent has, their average resolution time, and their SLA compliance rate. When an agent is overloaded, an Admin can reassign tickets to balance the workload across the team. The system also supports agent availability status so that tickets are not assigned to agents who are on leave or out of office.
SLA Policy Configuration
Service Level Agreements are the backbone of any professional helpdesk. MVC Helpdesk Manager lets Admins define SLA policies with response time and resolution time targets. Each policy specifies the maximum time an agent has to first respond to a ticket and the maximum time to resolve it, measured in business hours.
SLA policies are assigned per ticket group, so critical infrastructure issues can have a 1-hour response SLA while software requests might have an 8-hour response window. The SLA engine continuously calculates the solve-by deadline for every open ticket and triggers visual warnings as deadlines approach. Overdue tickets are flagged prominently in the dashboard and agent queue.
Ticket Groups and Categorization
Tickets are organized into ticket groups that represent categories of support requests. Common groups include Hardware, Software, Network, Access & Permissions, and General Inquiry. Each group maps to a specific helpdesk team and SLA policy, ensuring that every incoming ticket follows the correct workflow from the moment it is created.
Ticket groups also define the default priority and can be configured with custom fields so that different types of requests capture different information. A hardware ticket might ask for asset tag and location, while a software ticket might ask for application name and version.
Ticket Lifecycle: New → InProgress → OnHold → Solved
The ticket lifecycle is a state machine with clear transitions and role-based guards. A ticket starts as New when a user submits it through the portal or an agent creates it on their behalf. An agent picks it up and moves it to InProgress, signaling that work has begun and stopping the first-response SLA clock.
If the agent needs more information or is waiting on a third party, the ticket moves to OnHold, which pauses the resolution SLA timer. When the blocker is resolved, the ticket returns to InProgress. Once the issue is resolved, the agent moves it to Solved, and the system records the resolution time for SLA compliance reporting.
var ticket = await _context.Tickets
.Include(t => t.SlaPolicy)
.FirstOrDefaultAsync(t => t.Id == command.TicketId);
ticket.Status = TicketStatus.InProgress;
ticket.AssignedAgentId = command.AgentId;
ticket.FirstResponseAt = DateTime.UtcNow;
if (ticket.SlaPolicy != null)
{
ticket.SolveByEstimation = ticket.FirstResponseAt.Value
.AddHours(ticket.SlaPolicy.ResolutionTimeHours);
}
await _context.SaveChangesAsync(cancellationToken);
Only the assigned agent can move a ticket through the lifecycle, enforced by authorization handlers that check ticket ownership. Admins can override assignments and statuses when necessary, but the audit trail records every transition for accountability.
Discussion Threads and Collaboration
Each ticket includes a threaded discussion area where the submitter and assigned agent communicate. Agents can post internal notes visible only to other agents, or public replies that the submitter sees in the self-service portal. File attachments are supported so users can include screenshots, log files, or error dumps directly in the discussion.
When an agent posts a public reply, the submitter receives an email notification with a direct link to the ticket. This keeps communication inside the ticketing system rather than scattered across email threads, preserving full context for anyone who later reviews the ticket.
Self-Service Portal for End Users
End users log into a dedicated portal where they can submit new tickets, view the status of their existing tickets, and reply to agent questions. The submission form dynamically adjusts based on the selected ticket group, showing only the fields relevant to that category. Users see their ticket history, can reopen solved tickets if the issue recurs, and receive email notifications when an agent updates their ticket.
The self-service portal reduces walk-up interruptions and "status check" emails by giving users real-time visibility into where their tickets stand. It also includes a knowledge base section where common solutions are published, deflecting repetitive tickets before they are even created.
Reporting Dashboard
The reporting dashboard provides IT managers with actionable metrics: ticket volume over time, average resolution time by agent and by ticket group, SLA compliance percentage, and ticket backlog trends. Charts show incoming vs. resolved ticket rates so managers can spot whether the team is keeping up or falling behind.
Key metrics include first-response time against SLA targets, mean time to resolution (MTTR), ticket reopen rate, and self-service deflection rate. These KPIs help justify headcount requests, identify training needs, and demonstrate IT's value to the broader organization.
FAQ
How are SLA policies configured? An Admin defines SLA policies with response time and resolution time targets in business hours, then assigns each policy to one or more ticket groups. The SLA engine calculates solve-by deadlines and triggers warnings as they approach.
Can multiple agents collaborate on a ticket? Yes. While only the assigned agent can change the ticket status, any agent on the same helpdesk team can post internal notes and view the full discussion thread. An Admin can also reassign the ticket to another agent at any time.
How does the self-service portal work? End users log in with their account, submit tickets through a dynamic form that adapts to the selected ticket group, view all their tickets and their statuses, reply to agent messages, and access a knowledge base of common solutions.