Ticket Table - edmozley/freeitsm GitHub Wiki

The ticket table

The ticket list can be shown as a table instead of a list of messages: pick the columns, filter and sort them over the whole queue, move through it a page at a time, and save the layout as a view. The folders, the reading pane (or workspace) and every action work as they always have - only the middle column changes.

Added in 4.3.0, contributed by @Dr4inder (#213). Developers: Ticket table - developer guide.


Switching to it

Choose Table in the Ticket list dropdown in the bar at the top of Tickets, or in System → Preferences → Ticket list. Messages goes back. It is your own choice, it is remembered, and it is Messages unless you change it. A preference template can set it for new analysts (Preference templates).

Using it

  • The folder you click is the filter. Open Service Desk → Open on the left and the table shows those tickets, with the Department and Status filters ticked to match. Change a column filter so the rows no longer match the folder, and the title says All tickets rather than keep a folder highlighted that is no longer true.
  • Columns: ticket, subject, status, priority, assigned analyst and created are shown to start with; department, team, ticket type, work begins / ends, snoozed until, company, Requester and Requester email can be added from Columns, and dragged into any order.
  • Who a ticket is for (#292): Requester is the name of the person the ticket was raised for, and Requester email their address - the ticket's requester, not whoever wrote last. Both are hidden until you tick them in Columns, both sort (empty values last, as always), and both go into the CSV when they are showing. They are not filters - to find one person's tickets, search for their address.
  • Filters on status, priority, assigned analyst, department, team and ticket type list every value in the whole queue with its count - not just the ones on this page. — finds tickets with nothing set (no team, nobody assigned).
  • Sorting is over the whole queue. Empty values always sort last.
  • Search looks in the ticket number, subject, requester's address and the emails' subjects and addresses. An apostrophe or quote matches any kind, so we're finds We’re - email subjects often have the curly one. Tick Search message bodies, notes and documents to search their contents instead, as the search panel does.
  • Pages of 25, 50 or 100, in a footer that stays put under the table: 1-50 of 103, Previous, Next, Page 1 of 3 and Rows per page.
  • My tickets and Hide closed in the filter menu apply here too, and Trash and Snoozed show their own tickets.

The table uses the whole width (PR #223, by @Dr4inder). With no ticket open there is no reading pane, rather like Outlook with its reading pane off. Open a ticket and it appears beside the table, with a divider between them: drag it, or focus it and use the arrow keys, Home and End. Neither side can be squeezed below a usable width (440px for the table, 600px for the ticket), and your browser remembers where you left the divider. On a desktop too narrow for both, the ticket takes the whole width instead. Back in the bar - or Escape - closes the ticket and gives the table its width back, on the same page, with the same filters and scroll position, and anything half-written in the ticket is still there when you open it again. In full screen, Back and Escape go straight to the table alone in one step, and full screen stays your layout for the next ticket (PR #289). The arrow keys never open a ticket while the table is shown on its own - opening one shrinks the table, so it would jump on every key press. They (and Shift, Space and Ctrl+A) only move the highlight and the selection; a click or Enter opens the ticket, and once one is open beside the table the arrows show each ticket as you move, so the ticket shown is always the one highlighted (tableShownAlone() in inbox.js). Phones are unchanged.

Everything you do to a ticket works the same as in the message list: click to open it, Ctrl- and Shift-click to select several, right-click for the menu, drag onto a folder, and the bulk actions on a selection. Moving to another page clears the selection, so a bulk action never reaches a ticket you can no longer see.

The table never shows a ticket the message list would not - they are the same list.

If the list cannot be loaded, the rows already on screen stay but are greyed and cannot be clicked, with a Retry button above them.

Saved views

Save view keeps the columns, sort and filters - and whether it was My tickets, Hide closed, Trash or Snoozed - under a name, for yourself, your team or everyone. See Saved table views. A view shows only the tickets each person may see; sharing one never widens anyone's access.


Exporting it as CSV

CSV exports every ticket that matches - all pages, not just this one - with the columns you have showing, in the order shown. Click it again while it runs to cancel.

Because that is a one-click export of the whole queue, an administrator decides who can use it: Tickets → Settings → General → Who can export the ticket list.

Choice Who can export
Administrators only (the default) Administrators
Anyone with Tickets Every analyst with access to Tickets
Nobody No one - the button is not shown

Anyone the setting does not allow does not see the button, and FreeITSM refuses the export even if it is asked for directly.

In the file:

  • Requester and Requester email are exported like any other column when they are showing.
  • Created and Snoozed until are UTC, written as 2026-10-27T09:30:00Z. Work begins and Work ends are the times as typed, with no time zone, because that is how they are stored.
  • A cell that starts with =, +, - or @ is given a leading apostrophe, so a spreadsheet shows a subject like =HYPERLINK(...) as text instead of running it.
  • It opens in Excel with accents and symbols intact (it is UTF-8 with a byte-order mark).

Related pages