Rt-crontool on condition x change queue


#1

Hi,

Just a quick one this time, is there any easy way to use rt crontool get something like this working:

/opt/rt4/bin/rt-crontool --search RT::Search::FromSQL --search-arg “Queue = ‘X’ AND (Status=‘new’ OR Status=‘open’)” --condition RT::Condition::Overdue --action RT::Queue “Newqueue”

I know its not really under rt::action but is there a way to call upon rt::queue from this? Tried a bunch of different syntax but get “RT::Queue::Prepare Unimplemented in main.”

[Beskrivning: T3]http://www.t3.se/

JOEL BERGMARK
Thirdline support
joel.bergmark@t3.semailto:joel.bergmark@t3.se | www.t3.sehttp://www.t3.se/
[Beskrivning: T3]http://www.facebook.com/pages/Telecom3-Sverige-AB/126032287454737


#2

Le 18/10/2016 � 11:03, Joel Bergmark a �crit :

Hi,

Just a quick one this time, is there any easy way to use rt crontool
get something like this working:

/opt/rt4/bin/rt-crontool --search RT::Search::FromSQL --search-arg
"Queue = ‘X’ AND (Status=‘new’ OR Status=‘open’)" --condition
RT::Condition::Overdue --action RT::Queue “Newqueue”

I know its not really under rt::action but is there a way to call upon
rt::queue from this? Tried a bunch of different syntax but get
�RT::Queue::Prepare Unimplemented in main.�

there is no stock SetQueue RT action, you have to write it yourself.
Just put the following content (untested) in
rt/local/lib/RT/Action/SetQueue.pm and call it like this:

/opt/rt4/bin/rt-crontool --search RT::Search::FromSQL --search-arg
"Queue = ‘X’ AND (Status=‘new’ OR Status=‘open’)" --condition
RT::Condition::Overdue --action SetQueue --action-arg “Newqueue”

------------------------------------ cut
package RT::Action::SetQueue;
use base ‘RT::Action’;

use strict;
use warnings;

sub Describe {
my $self = shift;
return (ref $self . " will set a ticket’s queue to the argument
provided.");
}

sub Prepare {
return 1;
}

sub Commit {
my $self = shift;
$self->TicketObj->SetQueue($self->Argument);

}

1;
------------------------------------ cut


#3

Hello,

Indeed you are right, and I found a guy named Andy Smith in the UK that solved the problem, I’ve attached his solution to the email (not sure if attachments works). Put it in rt4/lib/RT/Action/QChange.pm and then call it with relevant query with: --action RT::Action::QChange --action-arg YOURQUEUE --template ‘blank’

Works like a charm, I use it in this way for SLA purposes to escalate a TT that passes over the defined ServiceAgreement:
rt-crontool --transaction last --search RT::Search::FromSQL --search-arg “Queue = ‘SLA’ AND (Status=‘new’ OR Status=‘open’)” --condition RT::Condition::Overdue --action RT::Action::QChange --action-arg QUEUE --template ‘SLA-escalation’

Regards, Joel

Från: rt-users [mailto:rt-users-bounces@lists.bestpractical.com] För Emmanuel Lacour
Skickat: den 18 oktober 2016 16:01
Till: rt-users@lists.bestpractical.com
Ämne: Re: [rt-users] rt-crontool on condition x change queueLe 18/10/2016 à 11:03, Joel Bergmark a écrit :
Hi,

Just a quick one this time, is there any easy way to use rt crontool get something like this working:

/opt/rt4/bin/rt-crontool --search RT::Search::FromSQL --search-arg “Queue = ‘X’ AND (Status=‘new’ OR Status=‘open’)” --condition RT::Condition::Overdue --action RT::Queue “Newqueue”

I know its not really under rt::action but is there a way to call upon rt::queue from this? Tried a bunch of different syntax but get “RT::Queue::Prepare Unimplemented in main.”

there is no stock SetQueue RT action, you have to write it yourself. Just put the following content (untested) in rt/local/lib/RT/Action/SetQueue.pm and call it like this:

/opt/rt4/bin/rt-crontool --search RT::Search::FromSQL --search-arg “Queue = ‘X’ AND (Status=‘new’ OR Status=‘open’)” --condition RT::Condition::Overdue --action SetQueue --action-arg “Newqueue”

------------------------------------ cut ------------------------------------
package RT::Action::SetQueue;
use base ‘RT::Action’;

use strict;
use warnings;

sub Describe {
my $self = shift;
return (ref $self . " will set a ticket’s queue to the argument provided.");
}

sub Prepare {
return 1;
}

sub Commit {
my $self = shift;
$self->TicketObj->SetQueue($self->Argument);

}

1;
------------------------------------ cut ------------------------------------

QChange.pm (2.73 KB)


#4

Unable to get into the link or download QChange.pm mentioned. The link leads to an unknown page. Is the content of QChange.pm same as the code mentioned above between --------cut--------- ? If yes, then the code does not work?


#5

Yes this should be what you’re looking for if its the same thing you were asking about in the thread you recently created. It will work if set up right. Don’t need that QChange.pm, the code you’re looking for is between the '-cut-'s.


#6

I get the following erroir when I use the above code…

Command I Use:
rt-crontool --search RT::Search::FromSQL --search-arg “Queue = ‘DefaultQUEUE’ AND (Status=‘new’ OR Status=‘open’) AND Created > ‘5 hours ago’” --action SetQueue --action-arg “NewQUEUE”

Error I get:
[1052][critical]: Can’t locate object method “new” via package “SetQueue” (perhaps you forgot to load “SetQueue”?) at /usr/bin/rt-crontool line 217. (/usr/share/request-tracker4/lib/RT.pm:394)
Can’t locate object method “new” via package “SetQueue” (perhaps you forgot to load “SetQueue”?) at /usr/bin/rt-crontool line 217.

Am I missing something here?

Thanks


#7

Try --action RT::Action::SetQueue ? Where did you put the file? Basically, compare to the other Actions and try to set it up similar, theres all manner of ways it could not be working.


#8

Perfect… It Works!

I had to use --action RT::Action::SetQueue instead of --action SetQueue.
The file SetQueue.pm was created under “/usr/share/request-tracker4/lib/RT/Action”


#9

Thanks a ton for your help! :slight_smile: