[rt-users] [phish?] Re: Updating Ticket Status via PostgreSQL
mzagrabe at d.umn.edu
Wed Dec 2 09:29:25 EST 2015
On Wed, Dec 2, 2015 at 8:05 AM, Aaron W. Swenson
<aaron at grandmasfridge.org> wrote:
> On 2015-12-01 15:58, Matt Zagrabelny wrote:
>> Hi Aaron,
>> I believe you can do this all in RT.
>> On Tue, Dec 1, 2015 at 2:33 PM, Aaron W. Swenson
>> <aaron at grandmasfridge.org> wrote:
>>> I'm sure this has been answered by someone somewhere, but my Google-fu is
>>> not helping me.
>>> I have a few hundred tickets in a production system that I want to change
>>> the status with some criteria a bit more sophisticated than RT (4.2.12)
>>> allowing me to do.
>>> The SQL I want to issue is:
>>> UPDATE tickets
>>> SET status = 'noresponse'
>>> WHERE status = 'open' AND told < '2015-11-01'
>>> AND told > lastupdated;
>>> The last condition is the one I can't enter in RT.
>> In your RT web interface, go to: Search -> Tickets -> New Search.
>> The key here is knowing that "Last Contacted" is really "Told", or so I
>> From a grep in the source directory:
>> share/html/Elements/SelectDateType:<option value="Told"><&|/l&>Last
>> Once you get your search results, you can bulk update the status change.
> What I'm getting at is that RT won't let me compare told to last updated
> through that interface.
> I can check that told was before a certain date and that last updated was
> before a certain date, but I can't check for told being older or newer than
> last updated.
Sure. Sorry for not catching that in your query.
>>> Effectively, update the status of all tickets that are still open to
>>> "noresponse", where the last update was us sending the requester an
>>> Is this safe?
>> Nope. Don't perform update/insert/delete queries directly on the
>> database. There are things like effective ticket id that your query
>> doesn't handle. Scrips and things wouldn't fire either.
> Is there a way to feed ticket IDs or something to rt-crontool?
Perhaps the "rt" tool.
I just looked at some (paper!) documentation. Here is what I see:
rt edit ticket/[TICKET ID] set status=noresponse
Write your ticket ids to a file, one per line. psql uses "less" to
page the results - you can write the results to a file using '-o'.
Wrap the above command in a bash for loop.
for id in `cat /path/to/file/with/ids`; do
/opt/rt4/bin/rt edit ticket/$id set status=noresponse
Give that a whirl?
More information about the rt-users