RT 4.4.4 / 5.0.0: Due / Started not automatically set with SLAs enabled

So I want to enable SLAs for a couple of queues and used the example code from this bestpractical blog entry to start myself off:

Set( %ServiceAgreements, (
    Levels => {
        '10x5' => {
            Starts => { BusinessMinutes => 0 },
            Resolve => { BusinessMinutes => 60*8*5 },
            BusinessHours => 'My BusinessHours',
        },
        '24x7' => {
            Starts => { RealMinutes => 0 },
            Response => { RealMinutes => 30 },
            Resolve => { RealMinutes => 60*2 },
        },
    },
    Default => '10x5',
    QueueDefault => {
        'Basic' => '10x5',
        'support' => '10x5',
    },
));
Set( %ServiceBusinessHours, (
    'My BusinessHours' => {
        1 => { Name => 'Monday', Start => '08:00', End => '18:00' },
        2 => { Name => 'Tuesday', Start => '08:00', End => '18:00' },
        3 => { Name => 'Wednesday', Start => '08:00', End => '18:00' },
        4 => { Name => 'Thursday', Start => '08:00', End => '18:00' },
        5 => { Name => 'Friday', Start => '08:00', End => '16:00' },
    },
));

However, when I create a ticket in my queue named “support”, it’s neither receiving a “Started” nor a “Due” date. It just sits there with a Created and LastModified Date.
There are no errors or warnings in the logs that I can make any sense of, and SLA is enabled on the queue.
This happens on 4.4.4 (production) and 5.0.0 (staging) instances with legacy configs, as well as on a empty 5.0.0 installation that I use for disruptive testing.

Any ideas or pointers what could be wrong? I combed through the blog as well as Customizing/SLA in the documentation, but I can’t find what I’m missing. Do I need to set some specific scrips?

Like usual - as soon as I had typed up this post, I resolved the issue by myself. My legacy installation was missing the following global conditions, actions and scrips:

  • Set starts date if needed according to SLA
  • Set due date if needed according to SLA
  • Require Starts set according to SLA
  • Require Due set according to SLA
  • Set starts date according to SLA
  • Set due date according to SLA

As soon as I had created these (looking at my test instance for the correct syntax), the SLAs started working.
On the test instance, however, something is wrong with RT’s caching of config files, my file RT_SiteConfig.d/sla.pm isn’t read at all, and an outdated version of RT_Siteconfig.pm seems to be cached. I have no idea why, but that’s irrelevant.

If that that’s the 5.0.0 its because Best Practical moved to having a database based config in 5.x. I’ve found it to be more of a hindrance than a help to be honest, and its often the cause of people confused as to why changes to their RT_SiteConfig.pm don’t seem to work any more.