An extremely simple IT ticketing system adapted for small and medium sized companies with easy integration into Microsoft Teams and Azure Active Directory authentication.
This project was part of my master's thesis and is no longer maintained, but anyone is free to use it, abuse it, and modify it as they please. Feel free to contact me at [email protected] with any questions.
The entire app is in German, but I would like to internationalize it at some point.
With an active virtual environment, the following command can be used to quickly
start the app with some testing data available. You can then use the username
admin
and the password admin
at localhost:8000 to login.
python manage.py quickstart
...or step by step:
- Install packages
pip install -r requirements/dev-requirements.txt
- Migrate the SQLite DB
python manage.py migrate
- Create a superuser (follow prompts)
python manage.py createsuperuser
- Create example data
python manage.py loaddata data_fixtures
- Start the server
python manage.py runserver
- Python 3
- Django
- Docker & Docker-Compose
- Database: Postgres
- File Server & Proxy: Nginx
- WSGI HTTP Server: Gunicorn
- Background Cronjobs: Huey
- Background Tasks: django-background-tasks
For easy integration with a Microsoft account, single sign-on authentication has been implemented. has been implemented. You can select Log in with Microsoft on the login page and follow the instructions. follow. There are a few advantages to this:
- there is no need to remember an additional password or create an account
- the ticket system gets access to the Microsoft data and automatically pulls out the name, e-mail address and API token. With the API token you can retrieve, modify, delete or access data from Microsoft Graph API. change, delete or send data. SSO authentication simplifies integration with Microsoft products, such as Teams.
For users outside the domain, a normal user with credentials can be created.
To create a ticket, the user must select a problem source. Additionally a problem source also have many subproblem sources, which also have subproblem sources and so on.
Problem sources can always be expanded. For example, if IT gets many tickets regarding problem X, but problem X is very complicated or unspecific, IT can create sub-problems so that the user has to describe more precisely what the problem is without having to describe much more in writing.
The idea is that the user doesn't need to describe exactly where the problem occurred and that IT has a better overview of what the problem is. The feature is a kind of semi-automatic categorization and it allows for improved analysis of problems while easing the burden on normal and IT users.
The hierarchical problem sources were implemented by Django-MPTT Middleware implemented. A problem source can have 0..1 parent problem source and 0..n child problem sources.
It has a manifest.json
file that can be used to install the system as an app in Microsoft Teams.
This creates easy access to the ticket system and allows notifications to be sent directly through Teams.
More can be found here.
The app can be registered with Azure Active Directory as part of the company app catalog and is therefore only installable internally.
A ticket detail page shows the user the progress of the ticket or status (open or closed), the person responsible, all details and comments about the ticket and so so on.
On the main page or so-called dashboard, the user sees the entire chronological history of all tickets.