- UPGRADING FROM RT 4.2.0 and greater

# UPGRADING FROM RT 4.2.0 and greater

This documentation notes internals changes between the 4.2 and 4.4 series that are primarily of interest to developers writing extensions or local customizations. It is not an exhaustive list.

- The mailgate has been completely redesigned in a backwards-incompatible way. See docs/extending/mail_plugins.pod.

- jQuery has been updated from 1.9.1 to 1.11.3 and jQuery UI from 1.10.0 to 1.11.4.

  https://jqueryui.com/upgrade-guide/1.10/ https://jqueryui.com/upgrade-guide/1.11/

- Customizations which link to attachments should take RT::ExternalStorage into account. See "ExternalStorageURLFor" in RT::System and share/html/Ticket/Elements/ShowAttachments for an example.

- We've added support for more object types in `initialdata`-like files: `@Classes`, `@Categories`, `@CustomRoles`, etc.

- We've added a "Label" in RT::Group method for displaying groups in the UI, as "Name" in RT::Group was not overrideable.

- We've dropped a number of unused fields:

  For Users, we've dropped `EmailEncoding`, `WebEncoding`, `ExternalContactInfoId`, `ContactInfoSystem`, `ExternalAuthId`, `AuthSystem`, and `PGPKey`. (Note: GPG keys have always been stored in attributes on the User record in RT, never in the `PGPKey` column)

  For Tickets, we've dropped `IssueStatement`, `Resolution`, and `Disabled`.

  For Groups, we've dropped `Type`. Use "Domain" in RT::Group.

  For Principals, we've dropped `ObjectId`. Use "id" in RT::Principal.

- The JOIN from tickets to watcher groups has changed from INNER to LEFT to support lazily-created watcher groups for custom roles.

- Previously we've called the "Roles" in RT::Record::Role::Roles method on classes, like so:

          RT::Queue->Roles

  Now that custom roles can be applied to individual objects it's important to switch such cases to

          $QueueObj->Roles

  (`RT::Queue->Roles` will continue to function, but may include roles that are not applied to the specific queue you're dealing with)

- The `/User/Prefs.html` page was moved to `/Prefs/AboutMe.html` for consistency. Callbacks may need to be adjusted.

- TicketSQL now supports `Status = '__Active__'` and `Status = '__Inactive__'`.

- We removed the `InitialPriority`, `FinalPriority`, and `DefaultDueIn` columns from the Queues table. In their stead we have a more general `->DefaultValue` call, e.g.

          $queue->DefaultValue('InitialPriority')
          $queue->DefaultValue('FinalPriority')
          $queue->DefaultValue('Due')

  Note that "Due" can now be anything that can be parsed as a date.

  With this, we've also added the ability to add default values for "Starts" and custom fields. All of them may be set on a queue's DefaultValues admin page.

- You can now split settings from RT_SiteConfig.pm into separate files under an etc/RT_SiteConfig.d/ directory. All files ending in `.pm` will be parsed, in alphabetical order, after the main RT_SiteConfig.pm is loaded.

  You also no longer need the `1;` at the end of site config files.

← Back to index