MiTo Team

Support Ticketing System added to site

We used Mantis bug tracker as support system. But this is heavy system with separate registration and logging in. It has a lot of over-features for user who just wants to report a sinple bug or ask a question. So we wanted some simple and user friendly way for users to report bugs or ask a questions on our site.

We had played with several third-party Drupal CMS modules and our new Support Ticketing System was born as result. Now you can leave you support requests (Support Tickets) at our site. You have to be registered user to be able to add a ticket. Use My Support Tickets link to add new ticket or view existing ones.

Our Mantis bug tracker is still available. But it will be used mostly internally by our developers. You can read about our custom Support Ticketing System building below.

Drupal is really good and extendible CMS. There are a lot of third-party modules for it allowing to construct almost any functionality you want at your site. There is only one problem with all this stuff - documentation lack. And as we see this is common problem for many open source projects. Hope our short description will help somebody.

We had reviewd and tried a lot of Drupal modules during Support Ticketing System building. Some of them are too simple, some have functionality lacks or not ready (alpha or beta version), some are not integrated with others gracefully. But there are several really good modules with really great functionality and cross-integration. There is a list of Drupal modules we used to build Support Ticketing System with short usage comments.

AJAX Comments

http://drupal.org/project/ajax_comments, v6.x-1.6

This module enables AJAX functionality for Post Comment form. So you can add comments to nodes (including Support Tickets) without reloading whole page.

Content Construction Kit (CCK)

http://drupal.org/project/cck, v6.x-2.1

One of greatest CMS modules we'd ever seen. It allows do add fields of different data types to any content in Drupal.

We created new content type "Support Ticket" for our Support Ticketing System. Then we added Responsible field to it. This field has User Reference type and references user assigned as responsible for for ticket.

editablefields

http://drupal.org/project/editablefields, v6.x-1.1
depends on http://drupal.org/project/ajax_load module

This is CCK extention module (extention for extention  ). It makes possible to make any field of node to be editable right from view page rather then opening edit page and saving node with changing. We use it to make ticket Responsible field editable right from ticket view page for support staff.

Panels

http://drupal.org/project/panels, v6.x-3.0-alpha2
depends on http://drupal.org/project/ctools module

Another greate must have module for Drupal. It allows you to create pages that are divided into areas of the page. Every area can contain HTML code, PHP code, node content, list of something and so on. There are a lot of predefined layouts for pages. This are really a lot of features provide with this module and it is hard to understand it without good documentation. But when you learn it you can create pages with any layout and content you can imagine.

We use this module for My Support Tickets page and for Support Admins page. We have a plans to use it for other pages too, to improve layout.

Printer, e-mail and PDF versions

http://drupal.org/project/print, v6.x-1.1

This module allows you to generate the following printer-friendly, PDF and 'send to friend by e-mail' versions of any content. And this is what we are use it for.

Rules

http://drupal.org/project/rules, v6.x-1.0-beta3

The rules modules allows site administrators to define conditionally executed actions based on occurring events. It closely integrates with other modules providing different events, conditions and actions. This module is replacement for standard Drupal's Trigger module. But it is much more flexible.

We use it to generate e-mail notifications to ticket authors and support staff about Support Ticket status changes, new comments, new user registrations on site and so on.

Views

http://drupal.org/project/views, v6.x-2.2

One more must have module. This module provides a flexible method for Drupal site designers to control how lists of content are presented. This tool is essentially a smart query builder that, given enough information, can build the proper content list and display it in various ways.

We used it for:

  • Projects Overview page + RSS feed
  • My Support Tickets sortable list with filters (one of Panels module panes on this page is a view - nice example of modules cross-integration) + RSS feed
  • Several ticket lists for Support Admin page - unassigned tickets, assigned to me tickets, all tickets, tickets without answer
  • News archive page, front page with news list + RSS feed
  • Changes lists for our projects

Workflow

http://drupal.org/project/workflow, v6.x-1.1

This module allows the creation and assignment of arbitrary workflows to Drupal content nodes. Workflows are made up of workflow states. You can also set up available transitions for each state and user roles allowed to make this transitions.

We use this module to maintain Support Tickets workflow. There are several states of each Support Ticket:

  • Request submitted
  • Request accepted (Responsible user assigned here)
  • Problem solving in progress
  • Requested additional information
  • Successfully solved
  • Couldn't be solved

Ticket author can edit his Support Ticket while it is in "Request submitted". After this state is changed by support staff authors and support staff can communicate through Support Ticket comments.

There was a small hack to this module sources added "Node state changed" event for Rules module.


It was a great experience of building custom Support Ticketing system with Drupal CMS and several third-party modules. We are ready to share this experience with anyone interested in or even help to set up something similar for you sites.

So you are always welcomed to ask any questions you are interested in. You can contact us by e-mail or with new Support Ticketing System.