Mail Activity Plan Domain

mail_activity_plan_domain
REPOSITORY
REPOSITORYOCA/mail
GIT
GIThttps://github.com/OCA/mail.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/mail/tree/18.0/mail_activity_plan_domain
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYDiscuss
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSVíctor Martínez, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/mail
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:18
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module extends Odoo's activity plan feature with domain-based filtering at
two levels:

**Plan domain**

Each activity plan gains a *Domain* field. Only records matching this domain
will have the plan available in the scheduling wizard
(`mail.activity.schedule`). This lets you restrict plans to, for example,
company-type partners or records in a specific stage.

**Template domain**

Each line of an activity plan (template) gains its own *Domain* field. When
executing a plan, activities whose template domain does not match the target
record are silently skipped. This allows a single plan to cover heterogeneous
records while still generating only the relevant activities per record.

**Notes**

- The error preview shown in the scheduling wizard (missing responsible,
  etc.) deliberately ignores template domains so that all potential
  configuration issues remain visible.
- When scheduling a plan on multiple records, execution is serialized
  record by record so that each record is evaluated independently against
  both plan and template domains.
- Domain syntax follows the standard Odoo domain format,
  e.g. `[('is_company', '=', True)]`.

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
mail_activity_plan_template_view_form_domain mail.activity.plan.template.view.form.domain mail.activity.plan.template xpath Inherits mail.mail_activity_plan_template_view_form
mail_activity_plan_view_form_domain mail.activity.plan.view.form.domain mail.activity.plan field Inherits mail.mail_activity_plan_view_form
mail_activity_plan_view_form_template_domain mail.activity.plan.view.form.template.domain mail.activity.plan xpath Inherits mail.mail_activity_plan_view_form
Models touched (3)

New fields (1)
  • domain Char
    default='[]' help="Domain to filter the records on which this plan is applicable. Leave empty or use '[]' to apply to all records of the target model."
Public methods (0)

No public methods.

New fields (1)
  • domain Char
    default='[]' help="Domain to filter the records for which this activity will be scheduled. Leave empty or use '[]' to always schedule this activity."
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • action_schedule_plan(self)
REPOSITORY
REPOSITORYOCA/mail
GIT
GIThttps://github.com/OCA/mail.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/mail/tree/17.0/mail_activity_plan_domain
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYDiscuss
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSVíctor Martínez, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/mail
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:10
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module extends Odoo's activity plan feature with domain-based filtering at
two levels:

**Plan domain**

Each activity plan gains a *Domain* field. Only records matching this domain
will have the plan available in the scheduling wizard
(`mail.activity.schedule`). This lets you restrict plans to, for example,
company-type partners or records in a specific stage.

**Template domain**

Each line of an activity plan (template) gains its own *Domain* field. When
executing a plan, activities whose template domain does not match the target
record are silently skipped. This allows a single plan to cover heterogeneous
records while still generating only the relevant activities per record.

**Notes**

- The error preview shown in the scheduling wizard (missing responsible,
  etc.) deliberately ignores template domains so that all potential
  configuration issues remain visible.
- When scheduling a plan on multiple records, execution is serialized
  record by record so that each record is evaluated independently against
  both plan and template domains.
- Domain syntax follows the standard Odoo domain format,
  e.g. `[('is_company', '=', True)]`.

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
mail_activity_plan_template_view_form_domain mail.activity.plan.template.view.form.domain mail.activity.plan.template xpath Inherits mail.mail_activity_plan_template_view_form
mail_activity_plan_view_form_domain mail.activity.plan.view.form.domain mail.activity.plan xpath Inherits mail.mail_activity_plan_view_form
mail_activity_plan_view_form_template_domain mail.activity.plan.view.form.template.domain mail.activity.plan xpath Inherits mail.mail_activity_plan_view_form
Models touched (3)

New fields (1)
  • domain Char
    default='[]' help="Domain to filter the records on which this plan is applicable. Leave empty or use '[]' to apply to all records of the target model."
Public methods (0)

No public methods.

New fields (1)
  • domain Char
    default='[]' help="Domain to filter the records for which this activity will be scheduled. Leave empty or use '[]' to always schedule this activity."
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • action_schedule_plan(self)