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