[rt-users] Action Upon Approval
Todd Chapman
rt at chaka.net
Mon Dec 13 14:33:22 EST 2004
It's not fair unless everyone at home get to play along.
So, one step at a time:
Are you having a problem getting a scrip to run when a ticket
is resolved? My approach below is to create the 2nd ticket
when the first ticket is resolved, not before.
-Todd
On Mon, Dec 13, 2004 at 03:06:56PM -0500, Ben Blakely wrote:
> Hey Todd,
>
> Thanks for the reply. Im new to the custom fields and fairly familiar
> with the user defined script stuff. I did create a custom field, and
> read the documentation relating to it, but still dont understand how
> this custom field helps to create a child ticket on resolve. Do you
> think you could explain a little more? Basically, what Im trying to
> accomplish is having a ticket come into a certain queue, request
> approval for it, and upon approval create a child ticket in another
> queue.
>
> Ive figured out the Approval stuff and howto get a child created in
> another queue, but cant seem to get RT to perform an action once its
> been approved. I have even created scrips within those queue's that
> perform an action on resolve ( RT seems to put tickets into a resolved
> status once approved ), to no avail.
>
> I did create a script with the user defined information above and set
> the stage to disabled. I also create a custom field named Resolve
> Action for that queue, but tailing RT's logs indicate its not doing
> anything on resolve. Any kind of help relating to my setup would be
> muchly appreciated.
>
> Regards,
>
> Ben Blakely
>
> On Mon, 13 Dec 2004 13:11:49 -0500, Todd Chapman <rt at chaka.net> wrote:
> > I create a custom field called 'Resolve Action' that creates a new
> > ticket when the current ticket is resolved. This allows for
> > very simple (2 steps) workflow. This scrip is kind of complicated
> > because of other things we do, but I can share some snippets:
> >
> > Custom condition:
> > my $trans = $self->TransactionObj->Type;
> > if ($trans eq 'Status' && $self->TransactionObj->NewValue =~ /(resolved|rejected|deleted)/i) {
> > return 1;
> > }
> >
> > Custom action preparation code:
> >
> > 1;
> >
> > Custom action cleanup code:
> >
> > if ($status =~ /Resolved/i) {
> >
> > my $cfValues = $self->TicketObj->CustomFieldValues('Resolve Action');
> > if ($cfValues->Count) {
> > $RT::Logger->debug("Processing resolve actions: " . $cfValues->Count);
> > # run resolve_action
> > # for each action, create a ticket, set its parent to my parent
> > # (assuming one parent)
> > my @new_tickets;
> > while (my $value = $cfValues->Next) {
> > #$RT::Logger->debug("Resolve value: '$value'");
> > my $ticket = new RT::Ticket($RT::SystemUser);
> > #need to set Queue Requestor Cc AdminCc Type? Subject
> > my ($reqtype,$AdminCc,$Cc) = split(/:/, $value->Content);
> > my $type; #20
> > if ($reqtype =~ /approval/i) { $type = 'approval'; }
> > else { $type = 'ticket'; }
> > my $content;
> > if ($self->TicketObj->Transactions->First) {
> > $content = MIME::Entity->build(Charset => 'utf8', Data => $self->TicketObj->Transactions->First->Content);
> > }
> > my %ticket_args = (
> > Subject => $self->TicketObj->Subject,
> > Queue => $self->TicketObj->QueueObj->Name,
> > Requestor => $self->TicketObj->RequestorAddresses,
> > Cc => $Cc,
> > AdminCc => $AdminCc,
> > Type => $type,
> > MIMEObj => $content || undef,
> > );
> > if ($self->TicketObj->MemberOf->First) {
> > $ticket_args{MemberOf} =
> > $self->TicketObj->MemberOf->First->TargetObj->Id;
> > }
> > else {
> > $ticket_args{MemberOf} = $self->TicketObj->Id;
> > }
> > #need to set custom field
> > my $customfield = new RT::CustomField($RT::SystemUser);
> > $customfield->LoadByNameAndQueue(Queue => $self->TicketObj->QueueObj->Name, Name => "Request Type");
> > my $cfid = $customfield->Id;
> > $ticket_args{"CustomField-$cfid"} = $value->Content;
> > $RT::Logger->debug("Setting cf $cfid to: " . $value->Content);
> > my ($id, undef, $msg) = $ticket->Create(%ticket_args);
> > $RT::Logger->debug("Created ticket from resolve action: " . $id);
> > $RT::Logger->debug("Ticket creation error: $msg") unless $id;
> > next unless $id;
> > push @new_tickets, $id;
> > #then add comment for parent first and last? #50
> > }
> > unless (@new_tickets) {
> > $RT::Logger->debug("No resolve actions successful for ticket: " . $self->TicketObj->Id);
> > return 1;
> > }
> >
> > On Mon, Dec 13, 2004 at 11:55:41AM -0500, Ben Blakely wrote:
> > > Hello All,
> > >
> > > I have configured the Approvals within RT. I was wondering if anyone
> > > has an idea on howto get an action to be performed after approval.
> > >
> > > For example, id like to create a child ticket within another queue
> > > once the initial approval has been approved.
> > >
> > > Regards,
> > >
> > > Ben Blakely
> > > _______________________________________________
> > > http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users
> > >
> > > Be sure to check out the RT wiki at http://wiki.bestpractical.com
> >
More information about the rt-users
mailing list