[rt-users] warning message on set ReferTo

Payam Poursaied me at payam124.com
Thu Dec 25 03:23:29 EST 2014

Hi Alex

That line copied exactly from the script.


The whole idea of my script is searching for specific ticket based on customefiled and refer a newly created ticket to the first ticket which has the same customfiled value. 

First it fills some customfields based on body of the first transaction and tries then find the first ticket which is similar to that ticket (i.e. has the same value in one of its customfield) and creates a “Refer To” link to that ticket.


Concept is very similar to http://requesttracker.wikia.com/wiki/AddRefersToOnEqualCustomField but instead of putting the code as a “Scrips” I run it as a standalone perl script.



I have put my code and some of the errors below


The only thing which might be relevant to this case is, I have one scrips with user defined condition. 

The condition code is in the below table:

return 0 unless $self->TransactionObj->Type eq "Create";

my $ChatArchiverTo='xxxxx\@yyyyy.com';

my $scrip='scripname';

my $TO="";

if (defined($self->TransactionObj->Attachments->First->GetHeader("To"))){

$TO = $self->TransactionObj->Attachments->First->GetHeader("To");


if($self->TicketObj->Subject =~ m/New App Request/){

   return 0;


if (($TO =~ /$ChatArchiverTo/i)){

   $RT::Logger->debug( "$scrip: $TO found in to");

   return 0;



   $RT::Logger->debug( "$scrip: $TO was not found in to");

   return 1;




my $tickets = new RT::Tickets($RT::SystemUser); # Used to store Ticket search results

$tickets->LimitQueue(VALUE =>'Appforall');

$tickets->LimitSubject(VALUE=>'New App Request', OPERATOR=>'=');


$tickets->OrderByCols({FIELD=>'Id', ORDER =>'ASC'});

$tickets->LimitCustomField(CUSTOMFIELD => $afa_req_type,

                            OPERATOR    => "!=",

                            VALUE       => $afa_req_type_type);

while (my $Ticket = $tickets->Next) {

     my $customer_id="";

     my $app_name="";

     my $txns = $Ticket->Transactions;

     while (my $txn = $txns->Next ) {

        if ($txn->Type ne 'Create'){



        my $attachments = RT::Attachments->new($txn->CurrentUser);

        $attachments->Limit( FIELD => 'TransactionID', VALUE => $txn->id );

        $attachments->ContentType (VALUE => 'text/plain');

        $attachments->OrderBy( FIELD => 'Id', ORDER => 'ASC' );

        while ( my $a = $attachments->Next ) {

               if($a->Content =~ /customer_id = (\d+).*app_name = ([^\n]+)/s){








      if ($customer_id  eq '' or $app_name eq ''){

         print "ERROR: customer_id or app_name for ticket $Ticket->Id did not find\n";



      my $ptickets =  new RT::Tickets($RT::SystemUser);

      $ptickets->LimitQueue(VALUE =>'Appforall');

      $ptickets->LimitCustomField(CUSTOMFIELD => $afa_req_type,

                            OPERATOR    => "=",

                            VALUE       => $afa_req_type_type);

      $ptickets->LimitCustomField(CUSTOMFIELD => $afa_appname,

                            OPERATOR    => "=",

                            VALUE       => "$app_name");



      $ptickets->OrderByCols({FIELD=>'Id', ORDER =>'ASC'});

      my $pticket_id='';

      if (my $PTicket=$ptickets->Next){



      print $Ticket->Id,"\t",$customer_id,"\t",$app_name,"PARENT-----$pticket_id\n";


      if (defined($ARGV[0]) and  $ARGV[0] eq 'set'){













      if ($pticket_id ne ''){




  } # Ticket loop




[21743] [Mon Dec 22 08:21:54 2014] [warning]: RT::Handle=HASH(0x802572660) couldn't execute the query 'SELECT COUNT(DISTINCT main.id) FROM Scrips main JOIN ObjectScrips ObjectScrips_1  ON ( ObjectScrips_1.Scrip = main.id ) JOIN ScripConditions ScripConditions_2  ON ( ScripConditions_2.id = main.ScripCondition )  WHERE (ObjectScrips_1.ObjectId = '120' OR ObjectScrips_1.ObjectId = '0') AND (ObjectScrips_1.Stage = 'TransactionBatch') AND (ScripConditions_2.ApplicableTransTypes LIKE '%AddLink%' OR ScripConditions_2.ApplicableTransTypes LIKE '%Any%') AND (main.Disabled = '0') ' at /usr/local/lib/perl5/site_perl/5.14.2/DBIx/SearchBuilder/Handle.pm line 602.

        DBIx::SearchBuilder::Handle::SimpleQuery(RT::Handle=HASH(0x802572660), "SELECT COUNT(DISTINCT main.id) FROM Scrips main JOIN ObjectSc"...) called at /usr/local/lib/perl5/site_perl/5.14.2/DBIx/SearchBuilder.pm line 295

        DBIx::SearchBuilder::_DoCount(RT::Scrips=HASH(0x80dd41c18)) called at /opt/rt4/lib//RT/SearchBuilder.pm line 996

        RT::SearchBuilder::_DoCount(RT::Scrips=HASH(0x80dd41c18)) called at /usr/local/lib/perl5/site_perl/5.14.2/DBIx/SearchBuilder.pm line 1471

        DBIx::SearchBuilder::Count(RT::Scrips=HASH(0x80dd41c18)) called at /opt/rt4/lib//RT/Scrips.pm line 495

        RT::Scrips::_FindScrips(RT::Scrips=HASH(0x80dd41c18), "Stage", "TransactionBatch", "Type", "AddLink") called at /opt/rt4/lib//RT/Scrips.pm line 343

        RT::Scrips::Prepare(RT::Scrips=HASH(0x80dd41c18), "Type", "AddLink", "TransactionObj", RT::Transaction=HASH(0x80deae7b0), "Ticket", undef, "TicketObj", RT::Ticket=HASH(0x80dd41600), ...) called at /opt/rt4/lib//RT/Scrips.pm line 291

        RT::Scrips::Apply(RT::Scrips=HASH(0x80dd41c18), "Stage", "TransactionBatch", "TicketObj", RT::Ticket=HASH(0x80dd41600), "TransactionObj", RT::Transaction=HASH(0x80deae7b0), "Type", "AddLink", ...) called at /opt/rt4/lib//RT/Ticket.pm line 2598

        RT::Ticket::_ApplyTransactionBatch(RT::Ticket=HASH(0x80dd41600)) called at /opt/rt4/lib//RT/Ticket.pm line 2569

        RT::Ticket::ApplyTransactionBatch(RT::Ticket=HASH(0x80dd41600)) called at /opt/rt4/lib//RT/Ticket.pm line 2639

        RT::Ticket::DESTROY(RT::Ticket=HASH(0x80dd41600)) called at 02.pl line 149

        eval {...} called at 02.pl line 149 (/usr/local/lib/perl5/site_perl/5.14.2/Carp.pm:169)


[82765] [Thu Dec 25 04:19:52 2014] [warning]: RT::Handle=HASH(0x802572648) couldn't execute the query 'SELECT  * FROM Tickets WHERE id = ?' at /usr/local/lib/perl5/site_perl/5.14.2/DBIx/SearchBuilder/Handle.pm line 602.

        DBIx::SearchBuilder::Handle::SimpleQuery(RT::Handle=HASH(0x802572648), "SELECT  * FROM Tickets WHERE id = ?", 3330370) called at /usr/local/lib/perl5/site_perl/5.14.2/DBIx/SearchBuilder/Record.pm line 1234

        DBIx::SearchBuilder::Record::_LoadFromSQL(RT::Ticket=HASH(0x80beca300), "SELECT  * FROM Tickets WHERE id = ?", 3330370) called at /usr/local/lib/perl5/site_perl/5.14.2/DBIx/SearchBuilder/Record.pm line 1153

        DBIx::SearchBuilder::Record::LoadByCols(RT::Ticket=HASH(0x80beca300), "id", 3330370) called at /usr/local/lib/perl5/site_perl/5.14.2/DBIx/SearchBuilder/Record/Cachable.pm line 120

        DBIx::SearchBuilder::Record::Cachable::LoadByCols(RT::Ticket=HASH(0x80beca300), "id", 3330370) called at /opt/rt4/lib//RT/Record.pm line 396

        RT::Record::LoadByCols(RT::Ticket=HASH(0x80beca300), "id", 3330370) called at /usr/local/lib/perl5/site_perl/5.14.2/DBIx/SearchBuilder/Record.pm line 1168

        DBIx::SearchBuilder::Record::LoadById(RT::Ticket=HASH(0x80beca300), 3330370) called at /opt/rt4/lib//RT/Ticket.pm line 146

        RT::Ticket::Load(RT::Ticket=HASH(0x80beca300), 3330370) called at /opt/rt4/lib//RT/Ticket.pm line 2581

        RT::Ticket::_ApplyTransactionBatch(RT::Ticket=HASH(0x80becab88)) called at /opt/rt4/lib//RT/Ticket.pm line 2569

        RT::Ticket::ApplyTransactionBatch(RT::Ticket=HASH(0x80becab88)) called at /opt/rt4/lib//RT/Ticket.pm line 2639

        RT::Ticket::DESTROY(RT::Ticket=HASH(0x80becab88)) called at 02.pl line 149

        eval {...} called at 02.pl line 149 (/usr/local/lib/perl5/site_perl/5.14.2/Carp.pm:169)

[82765] [Thu Dec 25 04:19:52 2014] [warning]: TransactionBatch was fired on a ticket that no longer exists; unable to run scrips!  Call ->ApplyTransactionBatch before shredding the ticket, for consistent results. (/opt/rt4/lib//RT/Ticket.pm:2588)


From: Alex Peters [mailto:alex at peters.net] 
Sent: Wednesday, December 17, 2014 2:31 PM
To: Payam Poursaied; rt-users at lists.bestpractical.com <mailto:rt-users at lists.bestpractical.com> 
Subject: Re: [rt-users] warning message on set ReferTo


I can't see any obvious problems based on your error messages.

There seems to be a typo in the code.  Is that directly copied from your script?

Have you considered enabling debugging from within your script?


On Thu, 18 Dec 2014 5:04 am Payam Poursaied <me at payam124.com <mailto:me at payam124.com> > wrote:

Hi All
I have created a script which has below command to create a link

When I run the script ReferTo link created, but I got below warning as well.
RT version 4.2.8
And line 149 of 02.pl <http://02.pl>  is exit line.

Any idea?

[85829] [Wed Dec 17 07:14:20 2014] [warning]: RT::Handle=HASH(0x802572648)
couldn't execute the query 'SELECT  * FROM Tickets WHERE id = ?' at
/usr/local/lib/perl5/site_perl/5.14.2/DBIx/SearchBuilder/Handle.pm line 602.
"SELECT  * FROM Tickets WHERE id = ?", 3311056) called at
/usr/local/lib/perl5/site_perl/5.14.2/DBIx/SearchBuilder/Record.pm line 1234
"SELECT  * FROM Tickets WHERE id = ?", 3311056) called at
/usr/local/lib/perl5/site_perl/5.14.2/DBIx/SearchBuilder/Record.pm line 1153
DBIx::SearchBuilder::Record::LoadByCols(RT::Ticket=HASH(0x80e255cf0), "id",
3311056) called at
line 120
0), "id", 3311056) called at /opt/rt4/lib//RT/Record.pm line 396
        RT::Record::LoadByCols(RT::Ticket=HASH(0x80e255cf0), "id", 3311056)
called at /usr/local/lib/perl5/site_perl/5.14.2/DBIx/SearchBuilder/Record.pm
line 1168
3311056) called at /opt/rt4/lib//RT/Ticket.pm line 146
        RT::Ticket::Load(RT::Ticket=HASH(0x80e255cf0), 3311056) called at
/opt/rt4/lib//RT/Ticket.pm line 2581
called at /opt/rt4/lib//RT/Ticket.pm line 2569
called at /opt/rt4/lib//RT/Ticket.pm line 2639
        RT::Ticket::DESTROY(RT::Ticket=HASH(0x80dd1a9f0)) called at 02.pl <http://02.pl> 
line 149
        eval {...} called at 02.pl <http://02.pl>  line 149

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bestpractical.com/pipermail/rt-users/attachments/20141225/8f790238/attachment.htm>

More information about the rt-users mailing list