Does anyone know of a way to notify the parent ticket’s owner
on resolve?
Jeff,
Here’s some code I developed for a 3.8 installation.
It will add “TimeWorked” to each parent of a ticket up the ladder and
sideways (if a ticket has more than one parent), regardless of how many.
Use it as an example of how to determine if there is a parent and then as a
condition to send a notification.
Hope this helps.
Kenn
Custom condition:
Set initial values
my $trans = $self->TransactionObj;
my $ticket = $self->TicketObj;
Get out if not for “TimeWorked”
return 0 unless ($trans->Type eq ‘Set’ &&
$trans->Field eq ‘TimeWorked’);
return 1;
Custom action preparation code:
Set initial values
my $trans = $self->TransactionObj;
my $ticket = $self->TicketObj;
my $Time = (($trans->NewValue) - ($trans->OldValue));
my $MemberOf = $ticket->MemberOf;
get out if current ticket is not a “MemeberOf” (child of some parent)
return 0 unless $MemberOf;
Loop thru each parent and add the Child’s “TimeWorked” to them
You can skip a parent ticket if it is not in active state by uncommenting
the “next” statement
while( my $l = $MemberOf->Next )
{
next unless( $l->TargetObj->Status =~ /^(?:new|open|stalled)$/ );
my $ParentTime = $l->TargetObj->TimeWorked;
my $NewTime = ($ParentTime + $Time);
$l->TargetObj->SetTimeWorked($NewTime);
}
return 1;
Custom action cleanup code: None
return 1;On Mon, Jun 4, 2012 at 10:04 AM, Jeff Blaine jblaine@kickflop.net wrote:
Does anyone know of a way to notify the parent ticket’s owner
on resolve?
That’s a good start to work with.
Any leads on the proper way to go about sending mail via a template
from inside a scrip would be welcome.
Do I just subclass Action::SendEmail, build my message, and commit()
it? I don’t see a way to reference/use a template for that.
Condition: On Resolve
Action: User-defined
Template: ??????
Custom condition code:
N/A
Custom action preparation code:
if ticket has no parents
return 1
# otherwise... do stuff, send email
Custom action cleanup code:
return 1;
That’s a good start to work with.
Any leads on the proper way to go about sending mail via a template
from inside a scrip would be welcome.
This is what scrips are meant to do at their core. ![]()
Do I just subclass Action::SendEmail, build my message, and commit()
it? I don’t see a way to reference/use a template for that.Condition: On Resolve Action: User-defined Template: ??????
Think about it this way. Make your Condition custom “On Resolve + Has
Parents”
Then use a standard Notify* action and set the Template on the scrip.
Thanks Thomas
Think about it this way. Make your Condition custom “On Resolve + Has
Parents”
Right.
Then use a standard Notify* action and set the Template on the scrip.
The goal is: On resolve of a child ticket, notify each parent
tickets’ owner that the child was resolved.
There is no “standard Notify* action” for “Owners of parent
tickets”, so I’m confused by what you mean there.
You also said “the Template”. Are you suggesting that I write
the logic into a new custom template and force the “To:”
field there? Or did you intend “the Template” to mean any
existing template of my choice.
I really don’t follow you due to terseness, though I am certainly
not looking for anyone to provide the code either.
Jeff,
OK. Here’s what you do:
Create a Template called “Notify Parents on Resolve”.
The Template should have code similar to this (loop thru all parents and
add the Emailaddress of the ticket owner to the “To:” line in the Template)
at the top (test the code to correct my mistakes):To: {my $parent = $Ticket->MemberOf;);
my $OUTPUT;
while ( my $value = $parent->Next )
{
$OUTPUT .= $value->OwnerObj->EmailAddress;
$OUTPUT .= “<—\n”;
}
$OUTPUT;
}
Subject: This Child Ticket has been Resolved
Then create a scrip titled “Notify Parents of Resolved Child”.
The code should be like this:
Condition: User Defined
Action: Notify Others (“To:” address built by template code in
template below)
Template: Global template: Notify Parents of Resolved Child
Stage: TransactionBatch
Custom condition:
Set initial values
my $trans = $self->TransactionObj;
my $ticket = $self->TicketObj;
my $MemberOf = $ticket->MemberOf;
Check for value change on Ticket Status
return ($self->TransactionObj->Type eq “Status” &&
$self->TransactionObj->NewValue eq “resolved” &&
$MemberOf);
Custom action preparation code: None
Custom action clean-up code: None
Anyway, I just whipped this up and you should verify all the code. The
thing is you want to set a condition that tests that the ticket is being
resolved and it is a child. The template should have code that replaces the
"To:" address with the email address of the owner for any parent above and
that way all parents, grandparents, etc get an email saying that a child
ticket has been resolved. My code may be off but the mechanics should be
correct.
Hope this helps.
Kenn
Create a Template called “Notify Parents on Resolve”.
The Template should have code similar to this (loop thru all parents and
add the Emailaddress of the ticket owner to the “To:” line in the
Template) at the top (test the code to correct my mistakes):To: {my $parent = $Ticket->MemberOf;); …
[snip]
Kenn,
That’s what I was stumbling toward, but it seemed like I was
perhaps missing a better way to do it. It can be a little
daunting trying to figure out where to customize RT before
you even get to the how part.
You could have just said, “Yes, override the To: with code
in a custom template”, but I’ll gladly take your much more
detailed response! ![]()
Thanks.
PS: You got a tip via an Amazon purchase yesterday ![]()
Jeff,
Kool. Don’t forget about the action being “Notify Others” so your override
takes effect.
thanks for the tip on my guide.
KennOn Wed, Jun 6, 2012 at 9:31 AM, Jeff Blaine jblaine@kickflop.net wrote:
On 6/5/2012 6:40 PM, Kenneth Crocker wrote:
Create a Template called “Notify Parents on Resolve”.
The Template should have code similar to this (loop thru all parents and
add the Emailaddress of the ticket owner to the “To:” line in the
Template) at the top (test the code to correct my mistakes):To: {my $parent = $Ticket->MemberOf;); …
[snip]
Kenn,
That’s what I was stumbling toward, but it seemed like I was
perhaps missing a better way to do it. It can be a little
daunting trying to figure out where to customize RT before
you even get to the how part.You could have just said, “Yes, override the To: with code
in a custom template”, but I’ll gladly take your much more
detailed response!Thanks.
PS: You got a tip via an Amazon purchase yesterday
There are two solutions on the wiki that either open parent or put a
comment on it. One solution triggers when any dependency is resolved,
another when all child tickets are resolved. It is there for ages.
Ruslan from phone.04.06.2012 21:05 пользователь “Jeff Blaine” jblaine@kickflop.net написал:
Does anyone know of a way to notify the parent ticket’s owner
on resolve?