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

Reply via email to