OTRS the RT way

I have used RT (Request Tracker) for quite a while. Starting with RT 2.0.15 + MySQL. Later upgraded that version manually (with a couple of nasty PHP scripts) to RT 3.6.x + PostgreSQL. It worked and stayed consistent. I’ve never been very happy about RT. It now contains about 80K tickets and it is slow. I have been reading a lot of forum/mailinglist threads about migrating from OTRS to RT and RT to OTRS because RT or OTRS should be faster. Unfortunately I’ve not found a real conclusion.

While starting a new project I gave OTRS a try. Just because I think it doesn’t really matter if you use RT or OTRS. I liked the way some things worked in RT, so I created some patches to make OTRS work a little bit like RT.

Empty body check

First of all the body part in OTRS is required for some reason. This is annoying. For example when a ticket is resolved and a customer replies to thank you, you just want to close the ticket. Or when you just want to change the owner of a ticket. This patch disables the emtpy body check:

Download: http://pommi.nethuis.nl/…/otrs-3.0.4-remove-empty-body-check.patch

RT-like Dashboard

OTRS: RT-like DashboardIn RT you are responsible for your own tickets. The RT 3.6 dashboard shows you the most recent open tickets you own. And it shows the most recent unowned new tickets. OTRS shows all open tickets, instead of only the ones you own. OTRS also shows all new tickets including the ones that are already locked.

This patch adds a new module called DashboardTicketRT. It’s a customized DashboardTicketGeneric module to make your dashboard work like RT. After you have applied the patch, you can use this module with the following steps:

  1. Login as admin
  2. Go to Sysconfig
  3. Go to Frontend::Agent::Dashboard (Group: Ticket)
  4. In TicketNew change:
    • Attributes: StateType=new; to StateType=new;OwnerIDs=1;
    • Module: Kernel::Output::HTML::DashboardTicketGeneric to Kernel::Output::HTML::DashboardTicketRT
  5. In TicketOpen change:
    • Attributes: StateType=open; to StateType=open;StateType=new;OwnerIDs=UserID;
    • Module: Kernel::Output::HTML::DashboardTicketGeneric to Kernel::Output::HTML::DashboardTicketRT
    • Title: Open Tickets / Need to be answered to My Tickets / Need to be answered
  6. Restart your server

Download: http://pommi.nethuis.nl/…/otrs-3.0.5-dashboardticketrt.patch

Instant Close / Spam

OTRS: InstaClose linkTo work a little bit more efficient this patch adds an InstaClose and InstaSpam link to each ticket. With a single click you can close a ticket or move a ticket to the Junk queue. The patch adds a new module called AgentTicketInsta. You must add this code to Kernel/Config.pm to enable it:

$Self->{'Frontend::Module'}->{'AgentTicketInsta'} = {
 Group       => [ 'admin', 'users' ],
 Description => 'Instant Ticket Actions',
 Title       => 'Insta',

Download: http://pommi.nethuis.nl/…/otrs-3.0.4-instant-close-spam.patch

15 thoughts on “OTRS the RT way

  1. Martin Edenhofer

    Very interesting for people which want to use OTRS as RT replacement.

    I also like the author because of the really strong technical knowledge, very good patches.

  2. Jens


    why are you not just using the “Locked Tickets” link in the dashboard, as the show your tickets.

    You could also try to bullt your own dashlet (in a opm package), so the user has no need to patch. (You’ll find some hints on blog.otrs.org)

  3. Thom


    I’m very interested to implement this in our OTRS instance.
    However we’re running the Windows version.

    I’m not sure how to apply this?

    Do I copy the code in a file called DashboardTicketRT.pm and place it in the HTML folder and that’s it or do I have to update some files so that OTRS knows that the new PM file exists?

  4. pommi Post author

    @Jens: The “Locked Tickets” link is 1 click too far away. You made a good point about the opm package. I didn’t think about that.

    @Thom: It is something like that. Create the .pm file and follow the steps. The patch isn’t more than creating that one file. But I’m planning on creating an opm package for it. Maybe that works easier.

  5. Thom

    I got it to work.
    Had to strip al the “+” signs manually, via the “replace” option it deletes al the “+” signs in the script as well (found out the hard way).
    I placed it in “\\Kernel\Output\HTML” as DashboardTicketRT.pm.

    Then created a new dashlet in \Kernel\Config\Files\ticket.xml
    Copied a dashboard backend and modified it via SysConfig.

  6. Wilbert

    I was just looking for a modification on dashboard for TicketOpen.
    For me the adjustment of the attibute: OwnerIDs=UserID is not working.

    Log file is giving error like this:
    The given param ‘UserID’ in ‘OwnerIDs’ is invalid!
    Invalid integer in query ‘UserID’!

    When I use a fixed value it is working for that particular user. I would like it dynamic that it checks against UserID of the current user. Is that possible? Any idea?

  7. pommi Post author

    Hi Wilbert,
    You can only use ‘OwnerIDs=UserID’ when you use the DashboardTicketRT module. This is not allowed in DashboardTicketGeneric. Compare DashboardTicketGeneric.pm to DashboardTicketRT.pm to see what I changed to make ‘OwnerIDs=UserID’ work.

  8. Wilbert

    Hi Pommi,
    now I applied the patch file with patch command. Then followed your instructions for dashboard settings. I executed scripts, clear cache, set permissions and rebuild config without success and restart the server. It is not showing any ticket. Only for fixed number it works.

    error OTRS-CGI-10 The given param ‘UserID’ in ‘OwnerIDs’ is invalid!
    error OTRS-CGI-10 Invalid integer in query ‘UserID’!

    I am using AD authentication. Don’t know what’s wrong.

  9. Thom

    With my OTRS instance it worked but it still gave errors in the log(same as Wilbert).
    After modifiying the patch so that I could use it for the my Windows version the errors went away and it still works.

    (modifying the patch is just removing the (+) signs for each line btw)

  10. Jnew

    Thanks Pommi! Im having problems however, with the InstaClose! I have made the two files from the patch file (Kernel\Config\Files\Insta.xml & Kernel\Modules\AgentTicketInsta.pm), i’ve added the additional lines of code to the Kernel\config.pm as well, and the two links are not showing up…

  11. pommi Post author

    Hi Jnew, did you delete the cache (bin/otrs.DeleteCache.pl), rebuild your config (bin/otrs.RebuildConfig.pl) and restart your server?

    Did you have a look at these Sysconfig subgroups?


    InstaClose and InstaSpam must show up there. Enable them if they are disabled.

  12. Jeroen


    i’m trying to make the RT-like Dashboard working but it doesnt work.

    i’ve done this: (Had to strip al the “+” signs manually, via the “replace” option it deletes al the “+”)
    I placed it in “\\Kernel\Output\HTML” as DashboardTicketRT.pm.
    just like Thom said but then i need to create a new dashlet in \Kernel\Config\Files\ticket.xml. How does did works?

  13. Rustay24


    did you manage to make an opm for this? if so where can I get a copy? or is there tips to tell me how to make the pm file from the patch you’ve provided?

    Many Thanks 🙂

Leave a Reply

Your email address will not be published.