Mailing List Archive

rt-crontool on condition x change queue
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.se<mailto:joel.bergmark@t3.se> | www.t3.se<http://www.t3.se/>
[Beskrivning: T3]<http://www.facebook.com/pages/Telecom3-Sverige-AB/126032287454737>
Re: rt-crontool on condition x change queue [ In reply to ]
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
------------------------------------
Re: rt-crontool on condition x change queue [ In reply to ]
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 queue

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 ------------------------------------