Prevent status change?

Hi,

I would like to ask if it sounds possible to implement some kind of
basic workflows in RT (3.8), especially preventing some status changes.

We are currently designing a hotline/helpdesk, and we need some people
not to be able to change the status of some tickets. Because the
workflow we want to implement say it’s not possible to go from open to
resolved directly, or stuff like that.

Basically, I’d like to be able to configure RT and tell it which
transitions are authorized and which ones aren’t, but it doesn’t seem
possible atm.

Scrips doesn’t seem ok either, because they can be applied on a running
transaction, but can’t prevent a transaction to occur. So I could see
that a new transaction changes the status, but the only thing I could do
would be to change it back, with another transcaction.

I’m looking at RT code now, and it seems to see if it would be possible
(using Callbacks for example), to prevent some transitions (for example
by looking at the “next” status and the “current” status, and only
allowing some combination.

But it seems that there is no common callback. Modifying ticket status
seems to be possible in Create.html (obviously), with a BeforeCreate
callback which seems to be able to set a $skip_create preventing the
creation, in Update.html with no usable callback, and in
Modify/ModifyAll.html, without usable callback either.

Is there a (clean) way to do that and implement some basic workflow in
RT 3.8? I know it should be possible to do that “the dirty way” as, for
example, there are CustomField with strong requirements, and if the
edition doesn’t pass the CustomField validation, it’ll be rejected.

It’d be even better if there wasn’t any way for an user to do unwanted
things “a priori”, but if I can only do that after he validates, but
before the transaction occurs, it’d be ok too I guess.

Cheers and many thanks for any help,
Yves-Alexis

Hi,

I would like to ask if it sounds possible to implement some kind of
basic workflows in RT (3.8), especially preventing some status changes.

We are currently designing a hotline/helpdesk, and we need some people
not to be able to change the status of some tickets. Because the
workflow we want to implement say it’s not possible to go from open to
resolved directly, or stuff like that.

Basically, I’d like to be able to configure RT and tell it which
transitions are authorized and which ones aren’t, but it doesn’t seem
possible atm.

We’ve done some work for this for a client on 3.8, though it needs more
work for general availability. It’s a core feature in the upcoming RT
4.0. (Not that that helps you very much yet)

Best,
Jesse

Hi,

I would like to ask if it sounds possible to implement some kind of
basic workflows in RT (3.8), especially preventing some status changes.

We are currently designing a hotline/helpdesk, and we need some people
not to be able to change the status of some tickets. Because the
workflow we want to implement say it’s not possible to go from open to
resolved directly, or stuff like that.

Basically, I’d like to be able to configure RT and tell it which
transitions are authorized and which ones aren’t, but it doesn’t seem
possible atm.

We’ve done some work for this for a client on 3.8, though it needs more
work for general availability.

Would it be possible to share the work, see if we could tune it to match
our needs?

It’s a core feature in the upcoming RT
4.0. (Not that that helps you very much yet)

Yeah, we can’t really wait for RT4, I guess. But it sure would be nicer
if it don’t do too much incompatible stuff. If the workflow we design
now can be cleanly integrated in RT4 it will be very nice. But I’m not
really confident about that, if the core has changed a lot. (it may be
worth installing an RT4 devel just to see how it looks, too)

I think we’ll try to follow the callback road, maybe adding few ones a
tuning the code so we can prevent tickets modifications early, but
keeping the modification the lowest possible.

Cheers,
Yves-Alexis

We’ve done some work for this for a client on 3.8, though it needs more
work for general availability.

Would it be possible to share the work, see if we could tune it to match
our needs?

It’s not currently. I’m sorry about that. It’s still very much in the
realm of “things we can help you with as part of a development
contract”. We made a decision to target RT4 for the public release of
this functionality.

Best,
Jesse

Hello,
We are trying the approach of making a local SelectStatus element, so
that it filters which statuses to display in the dropdown box on the
basis of the current one:

[…]
%foreach my $status (@status) {
%next if ($SkipDeleted && $status eq ‘deleted’);

==> example conditions:
%next if (($Default =~ /new/) && ($status ne ‘new’));
%next if (($DefaultLabel =~ /new/) && ($status ne ‘open’ && $status ne
’stalled’ && $status ne ‘new’));
%next if (($DefaultLabel =~ /open/) && ($status ne ‘stalled’ && $status
ne ‘resolved’ && $status ne ‘open’));
%next if (($DefaultLabel =~ /resolved/) && ($status ne ‘open’ && $status
ne ‘archived’ && $status ne ‘resolved’));

[…]

><%loc($status)%> % } [...]

The current status would not be the only factor to determine possible
next ones, but at least we can prevent obvious errors, like going back
from ‘open’ to ‘new’.
So far it seems to be working,
HTH,

Gabriele Franzini
ICT Applications Manager
Nerviano Medical Sciences SRL
PO Box 11 - Viale Pasteur 10
20014 Nerviano Italy
tel +39 0331581477
fax +39 0331581456

Message: 1
Date: Thu, 29 Jan 2009 18:29:43 +0100
From: Yves-Alexis Perez corsac@corsac.net
Subject: [rt-users] Prevent status change?
To: RT-Users@lists.bestpractical.com
Message-ID: 1233250184.13586.20.camel@miria
Content-Type: text/plain; charset=UTF-8

Hi,

I would like to ask if it sounds possible to implement some kind of
basic
workflows in RT (3.8), especially preventing some status changes.

We are currently designing a hotline/helpdesk, and we need some people
not
to be able to change the status of some tickets. Because the workflow
we
want to implement say it’s not possible to go from open to resolved
directly, or stuff like that.

Basically, I’d like to be able to configure RT and tell it which
transitions
are authorized and which ones aren’t, but it doesn’t seem possible
atm.
[…]