[rt-users] SLA and ticket parking

Robert Wysocki robert.wysocki at contium.pl
Tue Jun 5 02:31:47 EDT 2012


Dnia 2012-05-22, wto o godzinie 07:09 +0200, Robert Wysocki pisze:
> Hi,
> 
> I'm working on a solution for "parking" tickets with SLA.
> Right now I have a custom status AwaitingClientResponse, which is 
> (I hope) self-explanatory.
> 
> The idea is that Owner sets this status and when Requestors answers,
> Scrip sets the status back to previous one (or to open, that really
> doesn't matter) and sets the Due date like that:
> Due date = Due date + (date now - last status change date)
> 
> It all works well, status is being changed, due date is being calculated
> and set correctly, and right after that the original SLA Scrip - Set due
> date if needed - kicks in and changes due date back to its original
> value.
> 
> Of course the first thing I tried was to move my Scrip to the end of
> Scrip list (both by # number and by name), but still SLA Scrip has the
> last word about the due date.
> 
> Should I hack the original Scrip?

I've made some development about it, and I would like to know, if my
approach could be better in some way?

First I've added two CF's: SLA-originalDueDate and SLA-dueExtraTime.
The first one is used to store original DueDate calculated by SLA
extension, the second one - to store extra time that the customer takes
to respond after status has been changed to AwaitingClientResponse.
Those two are set by Scrip whenever there's a correspondence from one
of the requestors and ticket status is 'AwaitingClientResponse'.

Next I've hacked Action/SLA_SetDue.pm like this:

--- SLA_SetDue.pm-original	2012-06-05 08:20:15.000000000 +0200
+++ SLA_SetDue.pm	2012-06-05 08:20:36.000000000 +0200
@@ -49,10 +49,14 @@
         Time => $last_reply->CreatedObj->Unix,
     );
 
+    my $time = $ticket->CreatedObj->Unix;
+    my $dueExtraTime = $ticket->FirstCustomFieldValue('SLA-DueExtraTime');
+    $time+=$dueExtraTime;
+
     my $resolve_due = $self->Due(
         Level => $level,
         Type => 'Resolve',
-        Time => $ticket->CreatedObj->Unix,
+        Time => $time,
     );
 
     my $due;

and Condition/SLA_RequireDueSet.pm like this:

--- SLA_RequireDueSet.pm-original	2012-06-05 08:29:22.000000000 +0200
+++ SLA_RequireDueSet.pm	2012-05-29 08:36:28.000000000 +0200
@@ -21,7 +21,8 @@
     return 0 unless $self->SLAIsApplied;
 
     my $type = $self->TransactionObj->Type;
-    if ( $type eq 'Create' || $type eq 'Correspond' ) {
+    if (($type eq 'Create' || $type eq 'Correspond') and 
+        ($self->TicketObj->Status ne 'AwaitingClientResponse')) {
         return 1 if $self->TicketObj->FirstCustomFieldValue('SLA');
         return 0;
     }


Can I do anything better? Would it be possible to achieve the same
result without those two extra CF's?

Best regards,
-- 
Robert Wysocki
administrator systemów linuksowych
Contium S.A., http://www.contium.pl






More information about the rt-users mailing list