#!/usr/bin/perl -w # bulk sets RT custom field values based on ticket queue membership # 21 Feb 2006 use strict; use lib ( "/usr/local/rt3/local/lib", "/usr/local/rt3/lib" ); use RT; use RT::Queues; use RT::Tickets; $| = 1; RT::LoadConfig(); RT::Init(); my $cf_to_set = "CECN Area"; my %queues_values = ( cecnsupport => "CECN", ece_poster => "ECE", ece_support => "ECE", geomaint => "GMES", internal => "CECN", rsimaint => "RSI", softsupport => "SofT" ); foreach my $this_queue (keys %queues_values) { print "Processing queue $this_queue..."; my $tickets_obj = RT::Tickets->new($RT::SystemUser); my $cf_obj = RT::CustomField->new($RT::SystemUser); my $queue_obj = RT::Queue->new($RT::SystemUser); my $query = "queue='" . $this_queue . "'"; $tickets_obj->FromSQL($query); $queue_obj->Load($this_queue); $cf_obj->LoadByNameAndQueue( Queue => $queue_obj->Id, Name => $cf_to_set ); my $value = $queues_values{$this_queue}; my $num_tickets = 0; while (my $this_ticket = $tickets_obj->Next) { my $old_cf = $this_ticket->FirstCustomFieldValue($cf_to_set); $this_ticket->DeleteCustomFieldValue( Field => $cf_obj->Id, Value => $old_cf ); $this_ticket->AddCustomFieldValue( Field => $cf_obj->Id, Value => $value ); $num_tickets++; } print "done.\n"; print " Set $cf_to_set = $value on $num_tickets tickets.\n\n"; }