IT Support Ticket System

Project Overview

Ticket Lifecycle Sequence Chart

This project was designed as an introductory experience to developing microservice applications using the Spring-Boot framework. It models an online IT ticketing system for internal company use. Employee profiles are assigned one or more roles, each associated with possible actions and permissions:

Example Ticket Lifecycle

Employees can submit IT help tickets, which are then reviewed by managers. At this stage, tickets may be approved or rejected. Approved tickets are assigned to IT support staff, who work to resolve the issue. Once a resolution is provided, the employee can either close the ticket if satisfied or reopen it for further action.

Throughout the ticket’s lifecycle, any participating employee can view the ticket’s details and complete historical record. Email notifications are automatically sent to all relevant parties whenever the ticket status changes, ensuring smooth communication and workflow.

Project Architecture

The project consists of three microservice applications. Each microservice is coded in Java and built on the Spring-Boot framework. The frontend microservice (ticketinggateway) additionally utilizes JavaScript as part of the served .jsp files. The microservices and their functions can be seen here:

Ticketing Gateway

User and JSP Clipart

This service provides the UI, user login & security, and employee data processing. It implements Spring Security for authentication and security and Spring Data JPA for database access. Employees’ user data is stored and accessed from the connected MySQL database to create/verify user accounts/credentials. Frontend webpages are served using a MVC (Model-View-Controller) design pattern and .jsp files styled with Bootstrap styling. Should the user have more than one authorized role (such as MANAGER & ADMIN), they will have access to the functionality of both roles. Creating and updating tickets are actions sent as HTTP requests to the ticketmicroservice application through jQuery calls.

Ticket Microservice

MySQL Logo

This service provides ticket data processing and email content generation functionality. It implements Spring Data JPA for database access and Jackson for JSON serialization. Additionally, it subscribes and publishes messages to an ActiveMQ server embedded in notificationmicroservice to allow inter-service communication. Ticket data is collected from HTTP requests sent by ticketinggateway and saved into the connected MySQL database. It also generates email content to be sent via JMS (Java Message Service) to the ActiveMQ message broker, which would then be read by notificationmicroservice.


Notification Microservice

Notification Bell Clipart

This service provides notification creation and sending, as well as periodic ticket status update trigger via JMS (Java Message Service). It hosts the embedded ActiveMQ server which the ticketmicroservice service connects to. When up, this service will subscribe to the ActiveMQ server and listen for email content JMS messages. These messages, when consumed, would contain the email content generated by ticketmicroservice and trigger an email notification from the desired configured email address to be sent to the listed recipents. Additionally, a daily CRON job runs via a Quartz job scheduler. This job creates a JMS message that, when consumed by ticketmicroservice will update pending tickets to reflect a status indicating they require approval/rejection from a MANAGER.

Key Takeaways & Future Steps

While not a comprehensive list, here are a few key issues that require attention for future versions of the project:

Improvements on Project Structure

Improvement on Project Functionality

View the project’s installation, setup, and run steps.

View the Project Presentation.

View the GitHub Repository.