RT4 Custom status transitions

Hello you all,

I did the upgrade to RT4 and configured an extra status “wait-ok”. All seems well, except one thing.
When a ticket has the status “wait-ok” we can’t change its status anymore. Only the option “wait-ok” is visible in the dropdown
You can find the LifeCycle as I defined it in RT_SiteConfig.pm hereby.
Did I make some kind of typo? Something else? Thanks for looking in to it.

Lifecycles

Set(%Lifecycles,
default => {
initial => [ ‘new’ ],
active => [ ‘open’, ‘wait-ok’,‘stalled’ ],
inactive => [ ‘resolved’, ‘rejected’, ‘deleted’ ],

    defaults => {
        on_create => 'new',
        on_merge  => 'resolved',
        approved  => 'open',
        denied    => 'rejected',
    },

    transitions => {
        ''       => [qw(new open resolved wait-ok)],

        # from   => [ to list ],
        new      => [qw(open stalled resolved rejected deleted wait-ok)],
        open     => [qw(new stalled resolved rejected deleted wait-ok)],
        stalled  => [qw(open rejected resolved deleted wait-ok)],
        resolved => [qw(open stalled rejected deleted wait-ok)],
        rejected => [qw(open stalled resolved deleted wait-ok)],
        deleted  => [qw(open stalled rejected resolved wait-ok)],
        wait-ok  => [qw(open stalled rejected deleted resolved)],
    },
    rights => {
        '* -> deleted'  => 'DeleteTicket',
        '* -> *'        => 'ModifyTicket',
    },
    actions => [
        'new -> open'      => {
            label  => 'Open It', # loc
            update => 'Respond',
        },
        'new -> resolved'  => {
            label  => 'Resolve', # loc
            update => 'Comment',
        },
        'new -> rejected'  => {
            label  => 'Reject', # loc
            update => 'Respond',
        },
        'new -> deleted'   => {
            label  => 'Delete', # loc
        },
        'new -> wait-ok'    => {
            label  => 'Wait for OK', # loc
        },

        'open -> stalled'  => {
            label  => 'Stall', # loc
            update => 'Comment',
        },
        'open -> resolved' => {
            label  => 'Resolve', # loc
            update => 'Comment',
        },
        'open -> rejected' => {
            label  => 'Reject', # loc
            update => 'Respond',
        },
        'open -> wait-ok'    => {
            label  => 'Wait for OK', # loc
        },

        'stalled -> open'  => {
            label  => 'Open It', # loc
        },
        'stalled -> wait-ok'    => {
            label  => 'Wait for OK', # loc
        },
        'resolved -> open' => {
           label  => 'Re-open', # loc
            update => 'Comment',
        },
        'resolved -> wait-ok'    => {
            label  => 'Wait for OK', # loc
        },
        'rejected -> open' => {
            label  => 'Re-open', # loc
            update => 'Comment',
        },
        'rejected -> wait-ok'    => {
            label  => 'Wait for OK', # loc
        },
        'deleted -> open'  => {
            label  => 'Undelete', # loc
        },
        'deleted -> wait-ok'    => {
            label  => 'Wait for OK', # loc
        },
        'wait-ok -> open' => {
            label  => 'Re-open', # loc
        },
        'wait-ok -> resolved' => {
            label  => 'Resolve', # loc
        },
        'wait-ok -> deleted' => {
            label  => 'Delete', # loc
        },
        'wait-ok -> rejected' => {
            label  => 'Reject', # loc
        },
    ],
},

don’t change lifecyle of the approvals, they are not capable to deal with

custom statuses

approvals => {
    initial         => [ 'new' ],
    active          => [ 'open', 'stalled' ],
    inactive        => [ 'resolved', 'rejected', 'deleted' ],

    defaults => {
        on_create => 'new',
        on_merge => 'resolved',
    },

    transitions => {
        ''       => [qw(new open resolved)],

        # from   => [ to list ],
        new      => [qw(open stalled resolved rejected deleted)],
        open     => [qw(new stalled resolved rejected deleted)],
        stalled  => [qw(new open rejected resolved deleted)],
        resolved => [qw(new open stalled rejected deleted)],
        rejected => [qw(new open stalled resolved deleted)],
        deleted  => [qw(new open stalled rejected resolved)],
    },
    rights => {
        '* -> deleted'  => 'DeleteTicket',
        '* -> rejected' => 'ModifyTicket',
        '* -> *'        => 'ModifyTicket',
    },
    actions => [
        'new -> open'      => {
            label  => 'Open It', # loc
            update => 'Respond',
        },
        'new -> resolved'  => {
            label  => 'Resolve', # loc
            update => 'Comment',
        },
        'new -> rejected'  => {
            label  => 'Reject', # loc
            update => 'Respond',
        },
        'new -> deleted'   => {
            label  => 'Delete', # loc
        },

        'open -> stalled'  => {
            label  => 'Stall', # loc
            update => 'Comment',
        },
        'open -> resolved' => {
            label  => 'Resolve', # loc
            update => 'Comment',
        },
        'open -> rejected' => {
            label  => 'Reject', # loc
            update => 'Respond',
        },

        'stalled -> open'  => {
            label  => 'Open It', # loc
        },
        'resolved -> open' => {
            label  => 'Re-open', # loc
            update => 'Comment',
        },
        'rejected -> open' => {
            label  => 'Re-open', # loc
            update => 'Comment',
        },
        'deleted -> open'  => {
            label  => 'Undelete', # loc
        },
    ],
},

);

Thx,
Lieven Bridts

Did I make some kind of typo? Something else? Thanks for looking in to it.

There’s a Perl syntax error in your config, unfortunately.

    transitions => {
        ''       => [qw(new open resolved wait-ok)],
        # from   => [ to list ],
        new      => [qw(open stalled resolved rejected deleted

wait-ok)],
open => [qw(new stalled resolved rejected deleted wait-ok)],
stalled => [qw(open rejected resolved deleted wait-ok)],
resolved => [qw(open stalled rejected deleted wait-ok)],
rejected => [qw(open stalled resolved deleted wait-ok)],
deleted => [qw(open stalled rejected resolved wait-ok)],
wait-ok => [qw(open stalled rejected deleted resolved)],

wait-ok needs to be quoted on the left hand side because it contains a
hyphen. If it was just bare alphanumeric like the others, you wouldn’t
need to quote it.

         'wait-ok'  => [qw(open stalled rejected deleted resolved)],

should fix your problem.

Many thanks from a total Perl-newbie
The quotes did the trick

Lieven

Thomas Sibley wrote:

Did I make some kind of typo? Something else? Thanks for looking in to
it.

There’s a Perl syntax error in your config, unfortunately.
wait-ok needs to be quoted on the left hand side because it contains a
hyphen. If it was just bare alphanumeric like the others, you wouldn’t
need to quote it.

         'wait-ok'  => [qw(open stalled rejected deleted resolved)],

should fix your problem.

    },

RT Training Sessions (http://bestpractical.com/services/training.html)

  • Boston March 5 & 6, 2012

View this message in context: http://old.nabble.com/RT4-Custom-status-transitions-tp33400048p33400639.html