- Service Level Agreements
  - Show me a basic config that simply works?
  - Does it support business time instead of real time?
  - Does business time support holidays?
  - Does it support response due?
  - Could I ignore Due date for stalled tickets?

# Service Level Agreements

This is used to automate `Starts`/`Due` date setting. Almost everything is controlled in RT's config using `%ServiceAgreements` and `%ServiceBusinessHours`. Please check their documents in `RT_Config.pm` for full details. This is a cookbook to give you a quick sense of how flexible and powerful RT's SLA support is.

## Show me a basic config that simply works?

No problem.

        Set( %ServiceAgreements, (
            Default => 'standard',
            Levels => {
                'standard' => {
                    Starts => { RealMinutes => 0 },
                    Resolve => { RealMinutes => 8*60 },
                },
                'urgent' => {
                    Starts => { RealMinutes => 0 },
                    Resolve => { RealMinutes => 2*60 },
                },
            },
        ));

With this, tickets' `Starts` date will be set to tickets' `Created` date, and `Due` date will be set to 2 or 8 hours after `Created` date, based on the which SLA value ("standard" or "urgent") is chosen.

## Does it support business time instead of real time?

Sure.

        Set( %ServiceAgreements, (
            Default => 'standard',
            Levels => {
                'standard' => {
                    Resolve => { BusinessMinutes => 4*60 },
                },
            },
        ));

You also need to define what business time is:

        Set( %ServiceBusinessHours, (
            'Default' => {
                1 => { Name => 'Monday', Start => '9:00', End => '18:00' },
                2 => { Name => 'Tuesday', Start => '9:00', End => '18:00' },
                3 => { Name => 'Wednesday', Start => '9:00', End => '18:00' },
                4 => { Name => 'Thursday', Start => '9:00', End => '18:00' },
                5 => { Name => 'Friday', Start => '9:00', End => '18:00' },
            },
        ));

## Does business time support holidays?

Yep!

        Set( %ServiceBusinessHours, (
            'Default' => {
                1 => { Name => 'Monday', Start => '9:00', End => '18:00' },
                2 => { Name => 'Tuesday', Start => '9:00', End => '18:00' },
                3 => { Name => 'Wednesday', Start => '9:00', End => '18:00' },
                4 => { Name => 'Thursday', Start => '9:00', End => '18:00' },
                5 => { Name => 'Friday', Start => '9:00', End => '18:00' },
                holidays => [qw(01-01 12-25 2015-10-12)],
            },
        ));

## Does it support response due?

Yep. e.g.

        Set( %ServiceAgreements, (
            Default => 'standard',
            Levels => {
                'standard' => {
                    Starts => { RealMinutes => 0 },
                    Response => { RealMinutes => 8*60 },
                },
            },
        ));

With this, `Due` date will be automatically unset after you reply to your clients. When your clients reply back, it'll be set to 8 hours after that.

You can define both "Response" and "Resolve" and RT will pick the one that comes earlier as the `Due` date.

## Could I ignore `Due` date for stalled tickets?

Sure!

        Set( %ServiceAgreements, (
            Default => 'standard',
            Levels => {
                'standard' => {
                    Starts => { RealMinutes => 0 },
                    Resolve => { RealMinutes => 8*60, IgnoreOnStatuses => ['stalled'] },
                },
            },
        ));

← Back to index