Service Level Agreements

project_sla
REPOSITORY
REPOSITORYOCA/project
GIT
GIThttps://github.com/OCA/project.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/project/tree/10.0/project_sla
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYProject Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Daniel Reis
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Daniel Reis
COMMITTERS
COMMITTERSPedro M. Baeza, Stéphane Bidoul (ACSONE)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:58
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - project_issue
    - project
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - report
    - analytic
    - resource
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Contract SLAs
===============

SLAs are assigned to Contracts, on the Analytic Account form, SLA Definition
separator. This is also where new SLA Definitions are created.

One Contract can have several SLA Definitions attached, allowing for
"composite SLAs". For example, a contract could have a Response Time SLA (time
to start resolution) and a Resolution Time SLA (time to close request).


SLA Controlled Documents
========================

Only Project Issue documents are made SLA controllable.
However, a framework is made available to easilly build extensions to make
other documents models SLA controlled.

SLA controlled documents have attached information on the list of SLA rules
they should meet (more than one in the case for composite SLAs) and a summary
SLA status:

  * "watching" the service level (it has SLA requirements to meet)
  * under "warning" (limit dates are close, special attention is needed)
  * "failed" (one on the SLA limits has not been met)
  * "achieved" (all SLA limits have been met)

Transient states, such as "watching" and "warning", are regularly updated by
a hourly scheduled job, that reevaluates the warning and limit dates against
the current time and changes the state when find dates that have been exceeded.

To decide what SLA Definitions apply for a specific document, first a lookup
is made for a ``analytic_account_id`` field. If not found, then it will
look up for the ``project_id`` and it's corresponding ``analytic_account_id``.

Specifically, the Service Desk module introduces a Analytic Account field for
Project Issues. This makes it possible for a Service Team (a "Project") to
have a generic SLA, but at the same time allow for some Contracts to have
specific SLAs (such as the case for "premium" service conditions).


SLA Definitions and Rules
=========================

New SLA Definitions are created from the Analytic Account form, SLA Definition
field.

Each definition can have one or more Rules.
The particular rule to use is decided by conditions, so that you can set
different service levels based on request attributes, such as Priority or
Category.
Each rule condition is evaluated in "sequence" order, and the first onea to met
is the one to be used.
In the simplest case, a single rule with no condition is just what is needed.

Each rule sets a number of hours until the "limit date", and the number of
hours until a "warning date". The former will be used to decide if the SLA
was achieved, and the later can be used for automatic alarms or escalation
procedures.

Time will be counted from creation date, until the "Control Date" specified for
the SLA Definition.  That would usually be the "Close" (time until resolution)
or the "Open" (time until response) dates.

The working calendar set in the related Project definitions will be used (see
the "Other Info" tab). If none is defined, a builtin "all days, 8-12 13-17"
default calendar is used.

A timezone and leave calendars will  also used, based on either the assigned
user (document's `user_id`) or on the current user.


Setup checklist
===============

The basic steps to configure SLAs for a Project are:

  * Set Project's Working Calendar, at Project definitions, "Other Info" tab
  * Go to the Project's Analytic Account form; create and set SLA Definitions
  * Use the "Reapply SLAs" button on the Analytic Account form
  * See Project Issue's calculated SLAs in the new "Service Levels" tab


Credits and Contributors
========================

  * Daniel Reis (https://launchpad.net/~dreis-pt)
  * David Vignoni, author of the icon from the KDE 3.x Nuvola icon theme

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
edit_project_sla edit_project_sla project.project field Inherits project.edit_project
project_issue_form_view_sla project_issue_form_view_sla project.issue page Inherits project_issue.project_issue_form_view
project_issue_tree_view_sla project_issue_tree_view_sla project.issue field Inherits project_issue.project_issue_tree_view
project_task_form_view_sla project_task_form_view_sla project.task page Inherits project.view_task_form2
project_task_tree_view_sla project_task_tree_view_slak project.task field Inherits project.view_task_tree2
view_account_analytic_account_form_sla view_account_analytic_account_form_sla account.analytic.account page Inherits analytic.view_account_analytic_account_form
view_project_issue_filter_sdesk view_project_issue_filter_sdesk project.issue field Inherits project_issue.view_project_issue_filter
view_project_sla_report_graph project.sla.report.graph project.sla.report graph New
view_project_sla_report_search project.sla.report.search project.sla.report search New
view_project_sla_report_tree project.sla.report.tree project.sla.report tree New
view_project_task_filter_sdesk project.task filter Inherits project.view_task_search_form
view_sla_control_tree view_sla_control_tree project.sla.control tree New
view_sla_form view_sla_form project.sla form New
view_sla_lines_tree view_sla_lines_tree project.sla.line tree New
Models touched (8)

New fields (0)

No new fields.

Public methods (1)
  • reapply_sla(self, cr, uid, ids, context=None)
    Reapply SLAs button action

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • reapply_slas(self, cr, uid, ids, context=None)
    Reapply SLAs button action

New fields (0)

No new fields.

Public methods (3)
  • store_sla_control(self, cr, uid, docs, context=None)
    Used by controlled documents to ask for SLA calculation and storage. ``docs`` is a Browse object
  • update_sla_states(self, cr, uid, context=None)
    Updates SLA States, given the current datetime: Only works on "open" sla states (watching, warning and will fail): - exceeded limit date are set to "will fail" - exceeded warning dates are set to "warning" To be used by a scheduled job.
  • write(self, cr, uid, ids, vals, context=None)
    Update the related Document's SLA State when any of the SLA Control lines changes state

New fields (0)

No new fields.

Public methods (3)
  • create(self, cr, uid, vals, context=None)
  • unlink(self, cr, uid, ids, context=None)
  • write(self, cr, uid, ids, vals, context=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • init(self, cr)
  • read_group(self, cr, uid, *args, **kwargs)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/project
GIT
GIThttps://github.com/OCA/project.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/project/tree/9.0/project_sla
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYProject Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Daniel Reis
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Daniel Reis
COMMITTERS
COMMITTERSPedro M. Baeza, Stéphane Bidoul (ACSONE)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:21
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - project_issue
    - sales_team
    - base
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - project
    - product
    - decimal_precision
    - report
    - analytic
    - portal
    - auth_signup
    - resource
    - web_tip
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Contract SLAs
===============

SLAs are assigned to Contracts, on the Analytic Account form, SLA Definition
separator. This is also where new SLA Definitions are created.

One Contract can have several SLA Definitions attached, allowing for
"composite SLAs". For example, a contract could have a Response Time SLA (time
to start resolution) and a Resolution Time SLA (time to close request).


SLA Controlled Documents
========================

Only Project Issue documents are made SLA controllable.
However, a framework is made available to easilly build extensions to make
other documents models SLA controlled.

SLA controlled documents have attached information on the list of SLA rules
they should meet (more than one in the case for composite SLAs) and a summary
SLA status:

  * "watching" the service level (it has SLA requirements to meet)
  * under "warning" (limit dates are close, special attention is needed)
  * "failed" (one on the SLA limits has not been met)
  * "achieved" (all SLA limits have been met)

Transient states, such as "watching" and "warning", are regularly updated by
a hourly scheduled job, that reevaluates the warning and limit dates against
the current time and changes the state when find dates that have been exceeded.

To decide what SLA Definitions apply for a specific document, first a lookup
is made for a ``analytic_account_id`` field. If not found, then it will
look up for the ``project_id`` and it's corresponding ``analytic_account_id``.

Specifically, the Service Desk module introduces a Analytic Account field for
Project Issues. This makes it possible for a Service Team (a "Project") to
have a generic SLA, but at the same time allow for some Contracts to have
specific SLAs (such as the case for "premium" service conditions).


SLA Definitions and Rules
=========================

New SLA Definitions are created from the Analytic Account form, SLA Definition
field.

Each definition can have one or more Rules.
The particular rule to use is decided by conditions, so that you can set
different service levels based on request attributes, such as Priority or
Category.
Each rule condition is evaluated in "sequence" order, and the first onea to met
is the one to be used.
In the simplest case, a single rule with no condition is just what is needed.

Each rule sets a number of hours until the "limit date", and the number of
hours until a "warning date". The former will be used to decide if the SLA
was achieved, and the later can be used for automatic alarms or escalation
procedures.

Time will be counted from creation date, until the "Control Date" specified for
the SLA Definition.  That would usually be the "Close" (time until resolution)
or the "Open" (time until response) dates.

The working calendar set in the related Project definitions will be used (see
the "Other Info" tab). If none is defined, a builtin "all days, 8-12 13-17"
default calendar is used.

A timezone and leave calendars will  also used, based on either the assigned
user (document's `user_id`) or on the current user.


Setup checklist
===============

The basic steps to configure SLAs for a Project are:

  * Set Project's Working Calendar, at Project definitions, "Other Info" tab
  * Go to the Project's Analytic Account form; create and set SLA Definitions
  * Use the "Reapply SLAs" button on the Analytic Account form
  * See Project Issue's calculated SLAs in the new "Service Levels" tab


Credits and Contributors
========================

  * Daniel Reis (https://launchpad.net/~dreis-pt)
  * David Vignoni, author of the icon from the KDE 3.x Nuvola icon theme

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
edit_project_sla edit_project_sla project.project field Inherits project.edit_project
project_issue_form_view_sla project_issue_form_view_sla project.issue page Inherits project_issue.project_issue_form_view
project_issue_tree_view_sla project_issue_tree_view_sla project.issue field Inherits project_issue.project_issue_tree_view
project_task_form_view_sla project_task_form_view_sla project.task page Inherits project.view_task_form2
project_task_tree_view_sla project_task_tree_view_slak project.task field Inherits project.view_task_tree2
view_account_analytic_account_form_sla view_account_analytic_account_form_sla account.analytic.account page Inherits analytic.view_account_analytic_account_form
view_project_issue_filter_sdesk view_project_issue_filter_sdesk project.issue field Inherits project_issue.view_project_issue_filter
view_project_sla_report_graph project.sla.report.graph project.sla.report graph New
view_project_sla_report_search project.sla.report.search project.sla.report search New
view_project_sla_report_tree project.sla.report.tree project.sla.report tree New
view_project_task_filter_sdesk project.task filter Inherits project.view_task_search_form
view_sla_control_tree view_sla_control_tree project.sla.control tree New
view_sla_form view_sla_form project.sla form New
view_sla_lines_tree view_sla_lines_tree project.sla.line tree New
Models touched (8)

New fields (0)

No new fields.

Public methods (1)
  • reapply_sla(self, cr, uid, ids, context=None)
    Reapply SLAs button action

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • reapply_slas(self, cr, uid, ids, context=None)
    Reapply SLAs button action

New fields (0)

No new fields.

Public methods (3)
  • store_sla_control(self, cr, uid, docs, context=None)
    Used by controlled documents to ask for SLA calculation and storage. ``docs`` is a Browse object
  • update_sla_states(self, cr, uid, context=None)
    Updates SLA States, given the current datetime: Only works on "open" sla states (watching, warning and will fail): - exceeded limit date are set to "will fail" - exceeded warning dates are set to "warning" To be used by a scheduled job.
  • write(self, cr, uid, ids, vals, context=None)
    Update the related Document's SLA State when any of the SLA Control lines changes state

New fields (0)

No new fields.

Public methods (3)
  • create(self, cr, uid, vals, context=None)
  • unlink(self, cr, uid, ids, context=None)
  • write(self, cr, uid, ids, vals, context=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • init(self, cr)
  • read_group(self, cr, uid, *args, **kwargs)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/project
GIT
GIThttps://github.com/OCA/project.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/project/tree/8.0/project_sla
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYProject Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Daniel Reis
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Daniel Reis
COMMITTERS
COMMITTERSStéphane Bidoul, Yannick Vaucher, Alexandre Fayolle, Pedro M. Baeza, Daniel Reis, Stéphane Bidoul (ACSONE), OCA Transbot, Dmytro Katyukha, oca-travis, Weblate, Matjaž Mozetič, tv-openbig
WEBSITE
WEBSITEhttps://odoo-community.org/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:23
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - project_issue
    - sales_team
    - base
    - mail
    - base_setup
    - web_kanban
    - web
    - web_kanban_sparkline
    - project
    - product
    - decimal_precision
    - report
    - analytic
    - board
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Contract SLAs
===============

SLAs are assigned to Contracts, on the Analytic Account form, SLA Definition
separator. This is also where new SLA Definitions are created.

One Contract can have several SLA Definitions attached, allowing for
"composite SLAs". For example, a contract could have a Response Time SLA (time
to start resolution) and a Resolution Time SLA (time to close request).


SLA Controlled Documents
========================

Only Project Issue documents are made SLA controllable.
However, a framework is made available to easilly build extensions to make
other documents models SLA controlled.

SLA controlled documents have attached information on the list of SLA rules
they should meet (more than one in the case for composite SLAs) and a summary
SLA status:

  * "watching" the service level (it has SLA requirements to meet)
  * under "warning" (limit dates are close, special attention is needed)
  * "failed" (one on the SLA limits has not been met)
  * "achieved" (all SLA limits have been met)

Transient states, such as "watching" and "warning", are regularly updated by
a hourly scheduled job, that reevaluates the warning and limit dates against
the current time and changes the state when find dates that have been exceeded.

To decide what SLA Definitions apply for a specific document, first a lookup
is made for a ``analytic_account_id`` field. If not found, then it will
look up for the ``project_id`` and it's corresponding ``analytic_account_id``.

Specifically, the Service Desk module introduces a Analytic Account field for
Project Issues. This makes it possible for a Service Team (a "Project") to
have a generic SLA, but at the same time allow for some Contracts to have
specific SLAs (such as the case for "premium" service conditions).


SLA Definitions and Rules
=========================

New SLA Definitions are created from the Analytic Account form, SLA Definition
field.

Each definition can have one or more Rules.
The particular rule to use is decided by conditions, so that you can set
different service levels based on request attributes, such as Priority or
Category.
Each rule condition is evaluated in "sequence" order, and the first onea to met
is the one to be used.
In the simplest case, a single rule with no condition is just what is needed.

Each rule sets a number of hours until the "limit date", and the number of
hours until a "warning date". The former will be used to decide if the SLA
was achieved, and the later can be used for automatic alarms or escalation
procedures.

Time will be counted from creation date, until the "Control Date" specified for
the SLA Definition.  That would usually be the "Close" (time until resolution)
or the "Open" (time until response) dates.

The working calendar set in the related Project definitions will be used (see
the "Other Info" tab). If none is defined, a builtin "all days, 8-12 13-17"
default calendar is used.

A timezone and leave calendars will  also used, based on either the assigned
user (document's `user_id`) or on the current user.


Setup checklist
===============

The basic steps to configure SLAs for a Project are:

  * Set Project's Working Calendar, at Project definitions, "Other Info" tab
  * Go to the Project's Analytic Account form; create and set SLA Definitions
  * Use the "Reapply SLAs" button on the Analytic Account form
  * See Project Issue's calculated SLAs in the new "Service Levels" tab


Credits and Contributors
========================

  * Daniel Reis (https://launchpad.net/~dreis-pt)
  * David Vignoni, author of the icon from the KDE 3.x Nuvola icon theme

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
edit_project_sla edit_project_sla project.project field Inherits project.edit_project
project_issue_form_view_sla project_issue_form_view_sla project.issue page Inherits project_issue.project_issue_form_view
project_issue_tree_view_sla project_issue_tree_view_sla project.issue field Inherits project_issue.project_issue_tree_view
project_task_form_view_sla project_task_form_view_sla project.task page Inherits project.view_task_form2
project_task_tree_view_sla project_task_tree_view_slak project.task field Inherits project.view_task_tree2
view_account_analytic_account_form_sla view_account_analytic_account_form_sla account.analytic.account page Inherits analytic.view_account_analytic_account_form
view_project_issue_filter_sdesk view_project_issue_filter_sdesk project.issue field Inherits project_issue.view_project_issue_filter
view_project_sla_report_graph project.sla.report.graph project.sla.report graph New
view_project_sla_report_search project.sla.report.search project.sla.report search New
view_project_sla_report_tree project.sla.report.tree project.sla.report tree New
view_project_task_filter_sdesk project.task filter Inherits project.view_task_search_form
view_sla_control_tree view_sla_control_tree project.sla.control tree New
view_sla_form view_sla_form project.sla form New
view_sla_lines_tree view_sla_lines_tree project.sla.line tree New
Models touched (8)

New fields (0)

No new fields.

Public methods (1)
  • reapply_sla(self, cr, uid, ids, context=None)
    Reapply SLAs button action

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • reapply_slas(self, cr, uid, ids, context=None)
    Reapply SLAs button action

New fields (0)

No new fields.

Public methods (3)
  • store_sla_control(self, cr, uid, docs, context=None)
    Used by controlled documents to ask for SLA calculation and storage. ``docs`` is a Browse object
  • update_sla_states(self, cr, uid, context=None)
    Updates SLA States, given the current datetime: Only works on "open" sla states (watching, warning and will fail): - exceeded limit date are set to "will fail" - exceeded warning dates are set to "warning" To be used by a scheduled job.
  • write(self, cr, uid, ids, vals, context=None)
    Update the related Document's SLA State when any of the SLA Control lines changes state

New fields (0)

No new fields.

Public methods (3)
  • create(self, cr, uid, vals, context=None)
  • unlink(self, cr, uid, ids, context=None)
  • write(self, cr, uid, ids, vals, context=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • init(self, cr)
  • read_group(self, cr, uid, *args, **kwargs)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/project
GIT
GIThttps://github.com/OCA/project.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/project/tree/7.0/project_sla
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYProject Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Daniel Reis
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Daniel Reis
COMMITTERS
COMMITTERSAlexandre Fayolle, Daniel Reis, moylop260, Dmytro Katyukha, Дмитро Катюха
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:07:14
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - project_issue
    - base_status
    - base
    - crm
    - base_action_rule
    - mail
    - base_setup
    - web_kanban
    - web
    - process
    - email_template
    - base_calendar
    - resource
    - board
    - fetchmail
    - project
    - product
    - decimal_precision
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Contract SLAs
===============

SLAs are assigned to Contracts, on the Analytic Account form, SLA Definition
separator. This is also where new SLA Definitions are created.

One Contract can have several SLA Definitions attached, allowing for
"composite SLAs". For example, a contract could have a Response Time SLA (time
to start resolution) and a Resolution Time SLA (time to close request).


SLA Controlled Documents
========================

Only Project Issue documents are made SLA controllable.
However, a framework is made available to easily build extensions to make
other documents models SLA controlled.

SLA controlled documents have attached information on the list of SLA rules
they should meet (more than one in the case for composite SLAs) and a summary
SLA status:

  * "watching" the service level (it has SLA requirements to meet)
  * under "warning" (limit dates are close, special attention is needed)
  * "failed" (one on the SLA limits has not been met)
  * "achieved" (all SLA limits have been met)

Transient states, such as "watching" and "warning", are regularly updated by
a hourly scheduled job, that reevaluates the warning and limit dates against
the current time and changes the state when find dates that have been exceeded.

To decide what SLA Definitions apply for a specific document, first a lookup
is made for a ``analytic_account_id`` field. If not found, then it will
look up for the ``project_id`` and it's corresponding ``analytic_account_id``.

Specifically, the Service Desk module introduces a Analytic Account field for
Project Issues. This makes it possible for a Service Team (a "Project") to
have a generic SLA, but at the same time allow for some Contracts to have
specific SLAs (such as the case for "premium" service conditions).


SLA Definitions and Rules
=========================

New SLA Definitions are created from the Analytic Account form, SLA Definition
field.

Each definition can have one or more Rules.
The particular rule to use is decided by conditions, so that you can set
different service levels based on request attributes, such as Priority or
Category.
Each rule condition is evaluated in "sequence" order, and the first onea to met
is the one to be used.
In the simplest case, a single rule with no condition is just what is needed.

Each rule sets a number of hours until the "limit date", and the number of
hours until a "warning date". The former will be used to decide if the SLA
was achieved, and the later can be used for automatic alarms or escalation
procedures.

Time will be counted from creation date, until the "Control Date" specified for
the SLA Definition.  That would usually be the "Close" (time until resolution)
or the "Open" (time until response) dates.

The working calendar set in the related Project definitions will be used (see
the "Other Info" tab). If none is defined, a builtin "all days, 8-12 13-17"
default calendar is used.

A timezone and leave calendars will  also used, based on either the assigned
user (document's `user_id`) or on the current user.


Setup checklist
===============

The basic steps to configure SLAs for a Project are:

  * Set Project's Working Calendar, at Project definitions, "Other Info" tab
  * Go to the Project's Analytic Account form; create and set SLA Definitions
  * Use the "Reapply SLAs" button on the Analytic Account form
  * See Project Issue's calculated SLAs in the new "Service Levels" tab


Credits and Contributors
========================

  * Daniel Reis (https://launchpad.net/~dreis-pt)
  * David Vignoni, author of the icon from the KDE 3.x Nuvola icon theme

Code Analysis

Views touched (13)
XML IDNameModelTypeStatus
edit_project_sla edit_project_sla project.project group Inherits project.edit_project
project_issue_form_view_sla project_issue_form_view_sla project.issue page Inherits project_issue.project_issue_form_view
project_issue_tree_view_sla project_issue_tree_view_sla project.issue field Inherits project_issue.project_issue_tree_view
view_account_analytic_account_form_sla view_account_analytic_account_form_sla account.analytic.account page Inherits analytic.view_account_analytic_account_form
view_project_issue_filter_sdesk view_project_issue_filter_sdesk project.issue filter Inherits project_issue.view_project_issue_filter
view_project_sla_report_graph project.sla.report.graph project.sla.report graph New
view_project_sla_report_search project.sla.report.search project.sla.report search New
view_project_sla_report_tree project.sla.report.tree project.sla.report tree New
view_sla_control_tree view_sla_control_tree project.sla.control tree New
view_sla_form view_sla_form project.sla form New
view_sla_lines_form view_sla_lines_form project.sla.line form New
view_sla_lines_tree view_sla_lines_tree project.sla.line tree New
view_sla_tree view_sla_tree project.sla tree New
Models touched (7)

New fields (0)

No new fields.

Public methods (1)
  • reapply_sla(self, cr, uid, ids, context=None)
    Reapply SLAs button action

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • reapply_slas(self, cr, uid, ids, context=None)
    Reapply SLAs button action

New fields (0)

No new fields.

Public methods (3)
  • store_sla_control(self, cr, uid, docs, context=None)
    Used by controlled documents to ask for SLA calculation and storage. ``docs`` is a Browse object
  • update_sla_states(self, cr, uid, context=None)
    Updates SLA States, given the current datetime: Only works on "open" sla states (watching, warning and will fail): - exceeded limit date are set to "will fail" - exceeded warning dates are set to "warning" To be used by a scheduled job.
  • write(self, cr, uid, ids, vals, context=None)
    Update the related Document's SLA State when any of the SLA Control lines changes state

New fields (0)

No new fields.

Public methods (4)
  • create(self, cr, uid, vals, context=None)
  • store_sla_control(self, cr, uid, ids, context=None)
  • unlink(self, cr, uid, ids, context=None)
  • write(self, cr, uid, ids, vals, context=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • init(self, cr)
  • read_group(self, cr, uid, *args, **kwargs)
REPOSITORY
REPOSITORYOCA/contract
GIT
GIThttps://github.com/OCA/contract.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/contract/tree/7.0/project_sla
VERSION
VERSION 1.0
CATEGORY
CATEGORYProject Management
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Daniel Reis
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Daniel Reis
COMMITTERS
COMMITTERSAlexandre Fayolle, Daniel Reis
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:07:13
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - project_issue
    - base_status
    - base
    - crm
    - base_action_rule
    - mail
    - base_setup
    - web_kanban
    - web
    - process
    - email_template
    - base_calendar
    - resource
    - board
    - fetchmail
    - project
    - product
    - decimal_precision
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Contract SLAs
===============

SLAs are assigned to Contracts, on the Analytic Account form, SLA Definition
separator. This is also where new SLA Definitions are created.

One Contract can have several SLA Definitions attached, allowing for
"composite SLAs". For example, a contract could have a Response Time SLA (time
to start resolution) and a Resolution Time SLA (time to close request).


SLA Controlled Documents
========================

Only Project Issue documents are made SLA controllable.
However, a framework is made available to easily build extensions to make
other documents models SLA controlled.

SLA controlled documents have attached information on the list of SLA rules
they should meet (more than one in the case for composite SLAs) and a summary
SLA status:

  * "watching" the service level (it has SLA requirements to meet)
  * under "warning" (limit dates are close, special attention is needed)
  * "failed" (one on the SLA limits has not been met)
  * "achieved" (all SLA limits have been met)

Transient states, such as "watching" and "warning", are regularly updated by
a hourly scheduled job, that reevaluates the warning and limit dates against
the current time and changes the state when find dates that have been exceeded.

To decide what SLA Definitions apply for a specific document, first a lookup
is made for a ``analytic_account_id`` field. If not found, then it will
look up for the ``project_id`` and it's corresponding ``analytic_account_id``.

Specifically, the Service Desk module introduces a Analytic Account field for
Project Issues. This makes it possible for a Service Team (a "Project") to
have a generic SLA, but at the same time allow for some Contracts to have
specific SLAs (such as the case for "premium" service conditions).


SLA Definitions and Rules
=========================

New SLA Definitions are created from the Analytic Account form, SLA Definition
field.

Each definition can have one or more Rules.
The particular rule to use is decided by conditions, so that you can set
different service levels based on request attributes, such as Priority or
Category.
Each rule condition is evaluated in "sequence" order, and the first onea to met
is the one to be used.
In the simplest case, a single rule with no condition is just what is needed.

Each rule sets a number of hours until the "limit date", and the number of
hours until a "warning date". The former will be used to decide if the SLA
was achieved, and the later can be used for automatic alarms or escalation
procedures.

Time will be counted from creation date, until the "Control Date" specified for
the SLA Definition.  That would usually be the "Close" (time until resolution)
or the "Open" (time until response) dates.

The working calendar set in the related Project definitions will be used (see
the "Other Info" tab). If none is defined, a builtin "all days, 8-12 13-17"
default calendar is used.

A timezone and leave calendars will  also used, based on either the assigned
user (document's `user_id`) or on the current user.


Setup checklist
===============

The basic steps to configure SLAs for a Project are:

  * Set Project's Working Calendar, at Project definitions, "Other Info" tab
  * Go to the Project's Analytic Account form; create and set SLA Definitions
  * Use the "Reapply SLAs" button on the Analytic Account form
  * See Project Issue's calculated SLAs in the new "Service Levels" tab


Credits and Contributors
========================

  * Daniel Reis (https://launchpad.net/~dreis-pt)
  * David Vignoni, author of the icon from the KDE 3.x Nuvola icon theme

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
edit_project_sla edit_project_sla project.project group Inherits project.edit_project
project_issue_form_view_sla project_issue_form_view_sla project.issue page Inherits project_issue.project_issue_form_view
project_issue_tree_view_sla project_issue_tree_view_sla project.issue field Inherits project_issue.project_issue_tree_view
view_account_analytic_account_form_sla view_account_analytic_account_form_sla account.analytic.account page Inherits analytic.view_account_analytic_account_form
view_project_issue_filter_sdesk view_project_issue_filter_sdesk project.issue filter Inherits project_issue.view_project_issue_filter
view_sla_control_tree view_sla_control_tree project.sla.control tree New
view_sla_form view_sla_form project.sla form New
view_sla_lines_tree view_sla_lines_tree project.sla.line tree New
Models touched (6)

New fields (0)

No new fields.

Public methods (1)
  • reapply_sla(self, cr, uid, ids, context=None)
    Reapply SLAs button action

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • reapply_slas(self, cr, uid, ids, context=None)
    Reapply SLAs button action

New fields (0)

No new fields.

Public methods (3)
  • store_sla_control(self, cr, uid, docs, context=None)
    Used by controlled documents to ask for SLA calculation and storage. ``docs`` is a Browse object
  • update_sla_states(self, cr, uid, context=None)
    Updates SLA States, given the current datetime: Only works on "open" sla states (watching, warning and will fail): - exceeded limit date are set to "will fail" - exceeded warning dates are set to "warning" To be used by a scheduled job.
  • write(self, cr, uid, ids, vals, context=None)
    Update the related Document's SLA State when any of the SLA Control lines changes state

New fields (0)

No new fields.

Public methods (3)
  • create(self, cr, uid, vals, context=None)
  • unlink(self, cr, uid, ids, context=None)
  • write(self, cr, uid, ids, vals, context=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.