[rt-users] Scrip to Generate Parent Tickets
James Higgins
jhguitarist1 at gmail.com
Wed Dec 2 15:10:08 EST 2009
The idea here that if a specific device is down and causing an outage to a
number of systems, that when the first ticket is created and a CF is set to
"Outage" that it will generate a Parent ticket for the Outage and link any
following tickets created for that Outage. I have a partially working scrip
at this point, but am stuck on how to add a ticket to an existing Parent and
on how to generate a new ticket and set it as the Parent. Here is what I
have so far:
Action: User Defined
Template: Blank
Stage TransactionBatch
######################################################################
# Custom Condition:
# Check to confirm ticket is set to Outage
return 0 unless $self->TransactionObj->Type eq "Create";
return 0 unless $self->TicketObj->CustomFieldValues('Type of
Issue')->Next->Content eq 'Outage';
return 1;
######################################################################
# Custom Action:
# Search for other Outage tickets with Matching StartUnit
my $problemUnit = undef;
my $Transaction = $self->TransactionObj;
my $search = RT::Tickets->new($RT::SystemUser);
$problemUnit = $self->TicketObj->CustomFieldValues('Unit Where Issue
Begins')->Next->Content;
$search->LimitQueue(VALUE => 'Network Tech');
#$search->LimitCustomField(CUSTOMFIELD => 'Type of Issue', VALUE =>
'Outage');
#$search->LimitCustomField(CUSTOMFIELD => 'Customer Name', VALUE =>
'Master');
$search->LimitStatus(VALUE => 'new', OPERATOR => '=', ENTRYAGGREGATOR =>
'or');
$search->LimitStatus(VALUE => 'open', OPERATOR => '=');
if ($search->Count == 0) { return 1; }
my $id = undef;
my $startUnit = undef;
my $priority = 3;
while (my $ticket = $search->Next) { #start while
# Ignore the ticket that caused this scrip to run
next if $self->TicketObj->Id == $ticket->Id;
$startUnit = $ticket->CustomFieldValues('Unit Where Issue
Begins')->Next->Content;
# Compare the two 'Unit Where Issue Begins' CFs
if ($startUnit eq $problemUnit){ #start 1st IF
my $master = $ticket->CustomFieldValues('Customer Name')->Next->Content;
# Check to see if Ticket is Master and has Child Tickets
next unless($master eq "Master");
if ($ticket->Members() ge 1){ #start 2nd IF
# Ticket is Master/Parent -> add current Ticket as Child of Parent
$id = $self->TicketObj->id;
$ticket->AddLink(Type=>'MemberOf',Base=>$id);
# Increment Parent ticket Priority
my $priority = $ticket->Priority;
$ticket->SetPriority ($priority + 1);
return 1; #exit scrip
} #end 2nd IF
} #end 1st IF
# No Parent found -> Create new Parent and link as Child
my $child_ticket = RT::Ticket->new ($RT::SystemUser);
my $typeIssue = $self->TicketObj->CustomFieldValues('Type of
Issue')->Next->Content;
my $coop = $self->TicketObj->CustomFieldValues('Coop')->Next->Content;
my $customer = 'Master';
$child_ticket->Create(
Queue => 'Network Tech',
Type => 'Ticket',
Members => $self->TicketObj->Id
);
################ Set CustomFields in Parent ################
$child_ticket->AddCustomFieldValue(Field => 'Coop', Value => $coop);
$child_ticket->AddCustomFieldValue(Field => 'Type of Issue', Value =>
$typeIssue);
$child_ticket->AddCustomFieldValue(Field => 'Unit Where Issue Begins',
Value => $problemUnit);
$child_ticket->AddCustomFieldValue(Field => 'Customer Name', Value =>
$customer);
return 1; #exit scrip
} #end while
return 1;
#############################################################
All help is greatly appreciated!
--
View this message in context: http://old.nabble.com/Scrip-to-Generate-Parent-Tickets-tp26342398p26342398.html
Sent from the Request Tracker - User mailing list archive at Nabble.com.
More information about the rt-users
mailing list