Help migrating from 4.4.0 to 5.0.3 - Error Status '' isn't a valid status for tickets in this queue

Hi Folks,
I am attempting to migrate RT from 4.4.0 on CentOS 7 to 5.0.3 on a new Rocky 9 server. After I finally got all the perl modules straightened out, it seemed to work fine. Then I imported the DB dump from the old server, and ran ‘sudo make upgrade-database’. After a reboot, I can log in with my user account, and see all my old tickets. Everything looks good, but when I try to create a new ticket in RT, there are no statuses to select from, and if I ignore that and try to create one anyway, I get a new window that says, “RT ERROR Status ‘‘ isn’t a valid status for tickets in this queue.” I’ve been beating on this for a long time. Any assistance would be appreciated. Many thanks.

Trying to migrate from 4.4.0 to 5.0.3
Rocky 9.6
MariaDB 10.5
Perl v5.32.1
Original DB default character set is Latin1
SELinux is off

I know there should be some status in here. There was before I imported the DB But now there’s no status to select. No idea why.

Log snippet

[1761] [Wed Jan 7 19:42:40 2026] [debug]: RT::Date used Time::ParseDate to make ‘5 days’ 1768246960 (/opt/rt5/sbin/../lib/RT/Date.pm:279)
[1761] [Wed Jan 7 19:42:40 2026] [warning]: Use of uninitialized value $args{“Status”} in lc at /opt/rt5/sbin/../lib/RT/Ticket.pm line 289. (/opt/rt5/sbin/../lib/RT/Ticket.pm:289)
[1761] [Wed Jan 7 19:42:40 2026] [error]: Status ‘’ isn’t a valid status for tickets in this queue. (/opt/rt5/share/html/Elements/Error:78)

What does your lifecycle look like? Maybe some config files didn’t come over?

I haven’t modified the lifecycles at all, so I think the default values are being applied from RT_Config.pm. But I copied this from RT_Config.pm and put it in RT_SiteConfig.pm for good measure. Same results.

Set(%Lifecycles,
default => {
initial => [qw(new)], # loc_qw
active => [qw(open stalled)], # loc_qw
inactive => [qw(resolved rejected deleted)], # loc_qw

    defaults => {
        on_create => 'new',
        approved  => 'open',
        denied    => 'rejected',
        reminder_on_open     => 'open',
        reminder_on_resolve  => '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         resolved rejected deleted)],
        resolved => [qw(new open stalled          rejected deleted)],
        rejected => [qw(new open stalled resolved          deleted)],
        deleted  => [qw(new open stalled resolved rejected        )],
    },
    rights => {
        '* -> deleted'  => 'DeleteTicket',
        '* -> *'        => 'ModifyTicket',
    },
    actions => [
        'new -> open'      => { label  => 'Open It', update => 'Respond' }, # loc{label}
        'new -> resolved'  => { label  => 'Resolve', update => 'Comment' }, # loc{label}
        'new -> rejected'  => { label  => 'Reject',  update => 'Respond' }, # loc{label}
        'new -> deleted'   => { label  => 'Delete',                      }, # loc{label}
        'open -> stalled'  => { label  => 'Stall',   update => 'Comment' }, # loc{label}
        'open -> resolved' => { label  => 'Resolve', update => 'Comment' }, # loc{label}
        'open -> rejected' => { label  => 'Reject',  update => 'Respond' }, # loc{label}
        'stalled -> open'  => { label  => 'Open It',                     }, # loc{label}
        'resolved -> open' => { label  => 'Re-open', update => 'Comment' }, # loc{label}
        'rejected -> open' => { label  => 'Re-open', update => 'Comment' }, # loc{label}
        'deleted -> open'  => { label  => 'Undelete',                    }, # loc{label}
    ],
},

Can you peep in the database and see what is actually recorded for the particular Ticket ID you’re having problems with? is the ticket generated with the normal RT user interface, or custom local code?

Jon

Hi, thanks for chiming in. I’m creating the ticket in the Web UI, but it isn’t created successfully. It errors because the status is blank, and I’m unable to select anything because there aren’t any choices. I don’t see any record of the ticket in the database. Thanks.

Is the Helpdesk queue supposed to have its own Lifecycle? Can you assign the default Lifecycle to that Queue? Are you able to create new Tickets in other Queues?

Hi. No, the Helpdesk queue is supposed to just use the default Lifecycle. All queues have this exact same problem. Is there a good way to verify that the lifecycle config is correct? Thanks.

In the Admin menu, under Tools, there should be a System Configuration option. Search for “Lifecycle” to see what RT thinks the Lifecycle config is.

Can you look at your Queue configurations, and see what they have set as the Queue Lifecycles?

The queues are all using the default lifecycle, as ‘default’ is the only option there. This looks like what I expected, seems ok to me, but maybe not? Thanks again for your input.

Lifecycles
{
  'default' => {
                 'rights' => {
                               '* -> deleted' => 'DeleteTicket',
                               '* -> *' => 'ModifyTicket'
                             },
                 'inactive' => [
                                 'resolved',
                                 'rejected',
                                 'deleted'
                               ],
                 'actions' => [
                                'new -> open',
                                {
                                  'label' => 'Open It',
                                  'update' => 'Respond'
                                },
                                'new -> resolved',
                                {
                                  'update' => 'Comment',
                                  'label' => 'Resolve'
                                },
                                'new -> rejected',
                                {
                                  'label' => 'Reject',
                                  'update' => 'Respond'
                                },
                                'new -> deleted',
                                {
                                  'label' => 'Delete'
                                },
                                'open -> stalled',
                                {
                                  'label' => 'Stall',
                                  'update' => 'Comment'
                                },
                                'open -> resolved',
                                {
                                  'update' => 'Comment',
                                  'label' => 'Resolve'
                                },
                                'open -> rejected',
                                {
                                  'label' => 'Reject',
                                  'update' => 'Respond'
                                },
                                'stalled -> open',
                                {
                                  'label' => 'Open It'
                                },
                                'resolved -> open',
                                {
                                  'label' => 'Re-open',
                                  'update' => 'Comment'
                                },
                                'rejected -> open',
                                {
                                  'update' => 'Comment',
                                  'label' => 'Re-open'
                                },
                                'deleted -> open',
                                {
                                  'label' => 'Undelete'
                                }
                              ],
                 'defaults' => {
                                 'reminder_on_open' => 'open',
                                 'denied' => 'rejected',
                                 'approved' => 'open',
                                 'reminder_on_resolve' => 'resolved',
                                 'on_create' => 'new'
                               },
                 'transitions' => {
                                    'rejected' => [
                                                    'new',
                                                    'open',
                                                    'stalled',
                                                    'resolved',
                                                    'deleted'
                                                  ],
                                    'new' => [
                                               'open',
                                               'stalled',
                                               'resolved',
                                               'rejected',
                                               'deleted'
                                             ],
                                    '' => [
                                            'new',
                                            'open',
                                            'resolved'
                                          ],
                                    'resolved' => [
                                                    'new',
                                                    'open',
                                                    'stalled',
                                                    'rejected',
                                                    'deleted'
                                                  ],
                                    'stalled' => [
                                                   'new',
                                                   'open',
                                                   'resolved',
                                                   'rejected',
                                                   'deleted'
                                                 ],
                                    'deleted' => [
                                                   'new',
                                                   'open',
                                                   'stalled',
                                                   'resolved',
                                                   'rejected'
                                                 ],
                                    'open' => [
                                                'new',
                                                'stalled',
                                                'resolved',
                                                'rejected',
                                                'deleted'
                                              ]
                                  },
                 'initial' => [
                                'new'
                              ],
                 'active' => [
                               'open',
                               'stalled'
                             ]
               },
  'assets' => {
                'active' => [
                              'allocated',
                              'in-use'
                            ],
                'initial' => [
                               'new'
                             ],
                'transitions' => {
                                   'deleted' => [
                                                  'allocated'
                                                ],
                                   'allocated' => [
                                                    'in-use',
                                                    'recycled',
                                                    'stolen',
                                                    'deleted'
                                                  ],
                                   'recycled' => [
                                                   'allocated'
                                                 ],
                                   'in-use' => [
                                                 'allocated',
                                                 'recycled',
                                                 'stolen',
                                                 'deleted'
                                               ],
                                   'stolen' => [
                                                 'allocated'
                                               ],
                                   '' => [
                                           'new',
                                           'allocated',
                                           'in-use'
                                         ],
                                   'new' => [
                                              'allocated',
                                              'in-use',
                                              'stolen',
                                              'deleted'
                                            ]
                                 },
                'defaults' => {
                                'on_create' => 'new'
                              },
                'type' => 'asset',
                'actions' => {
                               '* -> allocated' => {
                                                     'label' => 'Allocate'
                                                   },
                               '* -> in-use' => {
                                                  'label' => 'Now in-use'
                                                },
                               '* -> stolen' => {
                                                  'label' => 'Report stolen'
                                                },
                               '* -> recycled' => {
                                                    'label' => 'Recycle'
                                                  }
                             },
                'rights' => {
                              '* -> *' => 'ModifyAsset'
                            },
                'inactive' => [
                                'recycled',
                                'stolen',
                                'deleted'
                              ]
              },
  'approvals' => {
                   'actions' => [
                                  'new -> open',
                                  {
                                    'update' => 'Respond',
                                    'label' => 'Open It'
                                  },
                                  'new -> resolved',
                                  {
                                    'label' => 'Resolve',
                                    'update' => 'Comment'
                                  },
                                  'new -> rejected',
                                  {
                                    'label' => 'Reject',
                                    'update' => 'Respond'
                                  },
                                  'new -> deleted',
                                  {
                                    'label' => 'Delete'
                                  },
                                  'open -> stalled',
                                  {
                                    'label' => 'Stall',
                                    'update' => 'Comment'
                                  },
                                  'open -> resolved',
                                  {
                                    'update' => 'Comment',
                                    'label' => 'Resolve'
                                  },
                                  'open -> rejected',
                                  {
                                    'update' => 'Respond',
                                    'label' => 'Reject'
                                  },
                                  'stalled -> open',
                                  {
                                    'label' => 'Open It'
                                  },
                                  'resolved -> open',
                                  {
                                    'update' => 'Comment',
                                    'label' => 'Re-open'
                                  },
                                  'rejected -> open',
                                  {
                                    'label' => 'Re-open',
                                    'update' => 'Comment'
                                  },
                                  'deleted -> open',
                                  {
                                    'label' => 'Undelete'
                                  }
                                ],
                   'inactive' => [
                                   'resolved',
                                   'rejected',
                                   'deleted'
                                 ],
                   'rights' => {
                                 '* -> deleted' => 'DeleteTicket',
                                 '* -> *' => 'ModifyTicket',
                                 '* -> rejected' => 'ModifyTicket'
                               },
                   'initial' => [
                                  'new'
                                ],
                   'transitions' => {
                                      'open' => [
                                                  'new',
                                                  'stalled',
                                                  'resolved',
                                                  'rejected',
                                                  'deleted'
                                                ],
                                      'deleted' => [
                                                     'new',
                                                     'open',
                                                     'stalled',
                                                     'rejected',
                                                     'resolved'
                                                   ],
                                      'resolved' => [
                                                      'new',
                                                      'open',
                                                      'stalled',
                                                      'rejected',
                                                      'deleted'
                                                    ],
                                      'stalled' => [
                                                     'new',
                                                     'open',
                                                     'rejected',
                                                     'resolved',
                                                     'deleted'
                                                   ],
                                      '' => [
                                              'new',
                                              'open',
                                              'resolved'
                                            ],
                                      'new' => [
                                                 'open',
                                                 'stalled',
                                                 'resolved',
                                                 'rejected',
                                                 'deleted'
                                               ],
                                      'rejected' => [
                                                      'new',
                                                      'open',
                                                      'stalled',
                                                      'resolved',
                                                      'deleted'
                                                    ]
                                    },
                   'defaults' => {
                                   'on_create' => 'new',
                                   'reminder_on_resolve' => 'resolved',
                                   'reminder_on_open' => 'open'
                                 },
                   'active' => [
                                 'open',
                                 'stalled'
                               ]
                 }
}

Nothing in there jumps out at me as wrong. I’m wondering if it’s something barely-perceptible, like smart-quotes instead of straight ones, but I’m not sure if those matter anymore.

Do existing Tickets have Status in your upgraded database, or are they having trouble too?

That’s a good question about existing tickets. They all have the correct status. Some I’ve seen just now have New, Open, or Resolved statuses, but each one only has that one status to choose from, I can’t change it to anything else. FWIW I can change the owner or queue of the ticket as expected, all those owners and queues are available to choose from. It’s only the Status field that’s giving me trouble. Thanks again.