Thanks Raed. I tried you're script but am getting error.
Jun 12 13:09:54 data1 RT: Scrip 26 Commit failed: Can't locate object method "TicketsObj" via package "RT::Action::UserDefined" at (eval 4184) line 1. Stack: [(eval 4184):1] [/opt/rt3/lib/RT/ScripAction_Overlay.pm:241] [/opt/rt3/lib/RT/Scrip_Overlay.pm:507] [/opt/rt3/lib/RT/Scrips_Overlay.pm:192] [/opt/rt3/lib/RT/Transaction_Overlay.pm:170] [/opt/rt3/lib/RT/Record.pm:1438] [/opt/rt3/lib/RT/Ticket_Overlay.pm:720] [/opt/rt3/lib/RT/Interface/Email.pm:765] [/opt/rt3/share/html/REST/1.0/NoAuth/mail-gateway:58] (/opt/rt3/lib/RT/Action/UserDefined.pm:81) there are also errors that are related to syntax (ie missing ; , Ticketobj instead of ticketsobj). This is the scrip that I'm running. Thanks! scrip: return undef unless ($self->TicketsObj->Subject =~ / \*\* PROBLEM (\w+) - (.*) (\w+) \*\*/ ) ; my $subject = $self->TicketsObj->Subject(); my $TicketsObj = RT::Tickets->new($RT::SystemUser); $TicketsObj->LimitQueue(VALUE => 'IT'); $TicketsObj->Limit(FIELD => 'Subject' ,VALUE => $subject , OPERATOR => 'LIKE' ); #This tries to match on the whole subject line if ($TicketsObj->Count == 0) { return 1; } my $id = undef; while (my $ticket = $TicketsObj->Next) { next if $self->TicketsObj->Id == $ticket->Id; $id = $ticket->Id; last; } $id || return 1; $RT::Logger->debug("Merging ticket " . $self->TicketsObj->Id . " into $id because of OA number match."); $self->TicketsObj->MergeInto($id); 1; On Fri, Jun 12, 2009 at 10:31 AM, Raed El-Hames <r...@vialtus.com> wrote: > 1- Your error log: > - If you have not a directory /var/log/rt3 , create it and create the file > rt.log by touch > touch /var/log/rt3/rt.log > then make sure its owned by the user:group running the web server (apache > or whatever) > -if you have not already make sure you have the below line in RT_SiteConfig > Set($LogDir, '/var/log/rt3'); > > Then restart httpd > > 2- Your scrip > Why do you need the CF still does n't make since to me? > In any case for if subject match then merge you can do : Global/Scrips/New > scrip > > Condition: On Create (# so we trigger this when a ticket is created) > Action: User defined > Template: Blank > > in Custom action preparation code put: > return 1; > > in > Custom action cleanup code: > return undef unless ($self->TicketObj->Subject =~ / \*\* PROBLEM (\w+) - > (.*) (\w+) \*\*/ ) ; > my $subject = $self->TicketObj->Subject() > my $TicketsObj = RT::Tickets->new($RT::SystemUser); > $TicketsObj->LimitQueue(VALUE => 'IT'); > $TicketsObj->Limit(FIELD => 'Subject' ,VALUE => $subject , OPERATOR => > 'LIKE' ); #This tries to match on the whole subject line > if ($TicketsObj->Count == 0) { return 1; } > my $id = undef; > while (my $ticket = $TicketsObj->Next) { > next if $self->TicketObj->Id == $ticket->Id; > $id = $ticket->Id; > last; > } > $id || return 1; > $RT::Logger->debug("Merging ticket " . $self->TicketObj->Id . " into $id > because of OA number match."); > $self->TicketObj->MergeInto($id); > 1; > > Regards; > > Roy > > > rmp dmd wrote: > >> I just want to merge new tickets with existing tickets with matching >> subject line. >> I have been provided with the script below. But getting errors on this >> line cause the Custom field is not present. >> error $TicketsObj->LimitCustomField(CUSTOMFIELD => 'OAReqNum', OPERATOR >> => '=', VALUE => $oa); >> I need to get the ID of the existing ticket and merge the new ticket with >> this ID. >> The scrip also has $RT::Logger->debug but I can not see anything on >> /opt/rt3/var/log/rt.log. I only see errors on /var/log/messages >> I already add on /opt/rt3/etc/RT_SiteConfig.pm >> Set($LogToFileNamed , "rt.log"); >> Set($LogToFile , 'debug'); >> and set permissions for the file: >> touch /opt/rt3/var/log/rt.log >> chown apache:apache /opt/rt3/var/log/rt.log >> Viewing the debug logs will surely help. >> Thanks for all the help >> Roehl >> # from >> http://archives.free.net.ph/message/20040319.180325.27528377.en.html >> # >> # If the subject of the ticket matches a pattern suggesting >> # that an OA request number is in the subject AND there is >> # an existing ticket is the OAReq queue with a matching >> # status field, (that is not this ticket) >> # merge this ticket into that ticket >> my $oa = undef; >> my $Transaction = $self->TransactionObj; >> my $subject = $Transaction->Attachments->First->GetHeader('Subject'); >> if ( $subject =~ /\*\* PROBLEM (\w+) - (.*) (\w+) \*\*/ ) { >> $oa = $1; >> $RT::Logger->debug("Found oa: $oa"); >> } >> else { return 1; } >> >> my $TicketsObj = RT::Tickets->new($RT::SystemUser); >> $TicketsObj->LimitQueue(VALUE => 'IT'); >> $TicketsObj->LimitCustomField(CUSTOMFIELD => 'OAReqNum', OPERATOR => '=', >> VALUE => $oa); >> if ($TicketsObj->Count == 0) { return 1; } >> my $id = undef; >> while (my $ticket = $TicketsObj->Next) { >> next if $self->TicketObj->Id == $ticket->Id; >> $id = $ticket->Id; >> last; >> } >> $id || return 1; >> $RT::Logger->debug("Merging ticket " . $self->TicketObj->Id . " into $id >> because of OA number match."); >> $self->TicketObj->MergeInto($id); >> 1; >> >> >> On Fri, Jun 12, 2009 at 9:33 AM, Raed El-Hames <r...@vialtus.com<mailto: >> r...@vialtus.com>> wrote: >> >> You answered you are own question , yes you are getting the error >> because you do not have the custom field >> Create the custom field and apply it to all queues (unless the >> scrip below is not a global scrip -- but I doubt that--) >> >> Can you explain what you are trying to do, maybe we can help you, >> I am not sure you need to search on custom fields (considering >> they don't exist to begin with) >> >> Roy >> >> rmp dmd wrote: >> >> >> I changed this >> $TicketsObj->LimitStatus(VALUE => 'new'); >> $TicketsObj->LimitStatus(VALUE => 'open'); >> to: >> $TicketsObj->LimitCustomField(CUSTOMFIELD => >> 'OAReqNum', OPERATOR >> => '=', VALUE => $oa); >> but I'm getting error >> Jun 11 22:13:13 data1 RT: Query error in << ( 'CF.' = >> 'alert' ) >> AND ( 'Queue' = 'IT' ) >>: Unknown field: CF. at >> /opt/rt3/lib/RT/Tickets_Overlay_SQL.pm line 308. Stack: >> [/opt/rt3/lib/RT/Tickets_Overlay_SQL.pm:308] >> [/opt/rt3/lib/RT/Tickets_Overlay_SQL.pm:482] >> [/opt/rt3/lib/RT/Tickets_Overlay.pm:2641] >> [/opt/rt3/lib/RT/Tickets_Overlay.pm:2314] [(eval 4308):24] >> [/opt/rt3/lib/RT/ScripAction_Overlay.pm:241] >> [/opt/rt3/lib/RT/Scrip_Overlay.pm:507] >> [/opt/rt3/lib/RT/Scrips_Overlay.pm:192] >> [/opt/rt3/lib/RT/Transaction_Overlay.pm:170] >> [/opt/rt3/lib/RT/Record.pm:1438] >> [/opt/rt3/lib/RT/Ticket_Overlay.pm:720] >> [/opt/rt3/lib/RT/Interface/Email.pm:765] >> [/opt/rt3/share/html/REST/1.0/NoAuth/mail-gateway:58] >> (/opt/rt3/lib/RT/Tickets_Overlay_SQL.pm:484) >> 'm guessing, this is because I do not a >> CustomField. I attached >> our RT interface. Anybody kindly help, identify the problem. >> My RT interface shows some of this information: >> #2345: Re: ** PROBLEM alert - Echo PC02/check_usa is >> CRITICAL ** >> *Ticket metadata* >> The Basics: >> Id: 2345 >> Status: new >> Left: 0 min >> Priority: 60/0 >> Queue: IT >> Custom Fields: >> Machine Name: No Value >> Customer: No Value >> People: >> Owner: Nobody >> Requestors: rmp.dmd1...@gmail.com >> <mailto:rmp.dmd1...@gmail.com> <mailto:rmp.dmd1...@gmail.com >> <mailto:rmp.dmd1...@gmail.com>> >> >> Thanks! >> Roehl >> >> >> On Thu, Jun 11, 2009 at 3:44 PM, rmp dmd >> <rmp.dmd1...@gmail.com <mailto:rmp.dmd1...@gmail.com> >> <mailto:rmp.dmd1...@gmail.com >> <mailto:rmp.dmd1...@gmail.com>>> wrote: >> >> Thank you very much Raed. >> This problem explains while I merging the newly >> created >> tickets to a ticket with status 'new' on the top of >> the list. >> I need to merge new ticket to an existing >> ticket with subject >> matching ** PROBLEM - any words - CRITICAL ** . >> 1st request, this is a match: #2316: ** PROBLEM >> alert - Echo >> PC02/check_usa is CRITICAL ** >> 2nd request, this is a match: #2317: ** PROBLEM alert - >> Echo >> PC02/check_usa is CRITICAL ** The >> existing ticket has an ID: 2312 with Subject: ** PROBLEM >> alert - Echo PC02/check_usa is CRITICAL ** >> I will merge ticket 2316 and 2317 with 2312. >> Somehow this merge to a ticket DRP with ID 720. >> This is >> ticket is on the top of IT queue list >> 223 Centralize Sever login open IT >> 668 test on Saturn open IT >> 720 DRP new IT >> 745 Backup - all corporate open IT >> 873 Image Ken Gen open IT >> 1135 DSS-3 tapes new IT >> Below is the script. I hope somebody can help. >> Thanks! >> Roehl >> my $oa = undef; >> my $Transaction = $self->TransactionObj; >> my $subject = >> $Transaction->Attachments->First->GetHeader('Subject'); >> if ( $subject =~ /\*\* PROBLEM (\w+) - (.*) (\w+) \*\*/ ) { >> $oa = $1; >> #$RT::Logger->debug("Found oa: $oa"); >> } >> else { return 1; } >> >> my $TicketsObj = RT::Tickets->new($RT::SystemUser); >> $TicketsObj->LimitQueue(VALUE => 'IT'); >> $TicketsObj->LimitStatus(VALUE => 'new'); >> $TicketsObj->LimitStatus(VALUE => 'open'); >> if ($TicketsObj->Count == 0) { return 1; } >> my $id = undef; >> while (my $ticket = $TicketsObj->Next) { >> next if $self->TicketObj->Id == $ticket->Id; >> $id = $ticket->Id; >> last; >> } >> $id || return 1; >> $RT::Logger->debug("Merging ticket " . >> $self->TicketObj->Id . >> " into $id because of OA number match."); >> $self->TicketObj->MergeInto($id); >> 1; >> >> >> >> >>
_______________________________________________ http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users Community help: http://wiki.bestpractical.com Commercial support: sa...@bestpractical.com Discover RT's hidden secrets with RT Essentials from O'Reilly Media. Buy a copy at http://rtbook.bestpractical.com