Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Estate Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Extra Tools
  3. Helpdesk Mgmt Project Domain v 16.0
  4. Sales Conditions FAQ

Helpdesk Mgmt Project Domain

by Escodoo https://github.com/OCA/helpdesk , Odoo Community Association (OCA) https://github.com/OCA/helpdesk
Odoo
v 16.0 Third Party 3
Download for v 16.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Project (project)
• Discuss (mail)
Community Apps Dependencies Show
• Helpdesk Project
• Helpdesk Management
Lines of code 3863
Technical Name helpdesk_mgmt_project_domain
LicenseAGPL-3
Websitehttps://github.com/OCA/helpdesk
You bought this module and need support? Click here!
Odoo Community Association

Helpdesk Mgmt Project Domain

Beta License: AGPL-3 OCA/helpdesk Translate me on Weblate Try me on Runboat

This module allows you to configure domains to filter projects and tasks available for selection in helpdesk tickets. It provides both static domain configuration and dynamic Python-based filtering for enhanced flexibility.

Table of contents

  • Use Cases / Context
    • Key Benefits
    • Main Use Cases
      • Project Filtering
      • Task Filtering
      • Advanced Rules
  • Configuration
    • Global Configuration (Company)
    • Team Configuration
    • Domain Builder Usage
    • Domain Examples
      • Project Domain Examples
        • Only Active Projects
        • Projects with Partner
        • Projects from Specific Client
        • Projects by Tags (Internal Projects)
        • Projects by Tags (External Projects)
        • Mixed Project Tags (Internal OR External)
      • Task Domain Examples
        • Only Active Tasks
        • Tasks by Tags (Development)
        • Tasks by Tags (Testing)
        • Mixed Task Tags (Development OR Testing)
        • Unassigned Tasks
        • Tasks Assigned to Specific User
        • Tasks with High Priority
    • Python Domain Code
      • Example Python Code
        • Project Domain Example - Client Projects Team
        • Task Domain Example - Unassigned Tasks
        • Task Domain Example - Project-based Filtering
        • Task Domain Example - Mixed Tags
        • Task Domain Example - Priority and Assignment
    • Domain Combination Logic
      • For Projects:
      • For Tasks:
    • Permissions
    • Troubleshooting
  • Usage
    • How It Works
      • Project Filtering
      • Task Filtering
      • Domain Application
  • Bug Tracker
  • Credits
    • Authors
    • Contributors
    • Maintainers

Use Cases / Context

This module allows you to configure domains to filter projects and tasks available for selection in helpdesk tickets, reducing errors and improving efficiency.

Key Benefits

  • Automated Filtering: Configure domains to show only relevant projects and tasks for each team
  • Error Reduction: Minimize manual selection errors by limiting available options
  • Smart Task Filtering: Tasks are automatically filtered by the selected project
  • Flexible Configuration: Use static domains or dynamic Python code for complex rules

Main Use Cases

Project Filtering

  • Show only active projects
  • Filter by client/partner
  • Separate internal from external projects
  • Filter by project tags or categories

Task Filtering

  • Show only tasks from selected project
  • Filter by assignment status (assigned/unassigned)
  • Filter by priority or urgency
  • Filter by task tags or phases

Advanced Rules

  • Use Python code for dynamic filtering based on ticket data
  • Combine multiple conditions with AND/OR operators
  • Apply different rules for different teams

Configuration

To configure this module, you need to:

  1. Configure global project and task domains at company level.
  2. Configure team-specific project and task domains.
  3. Set up Python-based dynamic domains (optional).

Global Configuration (Company)

  1. Go to Settings > Helpdesk to configure the global project and task domains.
  2. In the “Project & Task Domain Configuration” section, set the Project Domain field using the visual domain builder.
  3. Set the Task Domain field using the visual domain builder.
  4. These domains will be applied to all teams that don’t have their own domains configured.
  5. You can also Activate or Deactivate the global domains.

Team Configuration

  1. Go to Helpdesk > Configuration > Teams to configure team-specific domains.
  2. Edit or create a team.
  3. In the Project Domain tab:
    • Set the Project Domain field using the visual domain builder.
    • Configure the Project Domain Python Code field for dynamic domains (optional).
  4. In the Task Domain tab:
    • Set the Task Domain field using the visual domain builder.
    • Configure the Task Domain Python Code field for dynamic domains (optional).
  5. Team domains will be combined with the company domain using AND logic.

Domain Builder Usage

Both “Project Domain” and “Task Domain” fields use a visual builder that allows:

  1. Click on the field to open the domain builder.
  2. Select the field from the Project/Task model (e.g., Active, Partner, Type, User).
  3. Choose the operator (e.g., =, !=, >, <, in, not in).
  4. Define the value (e.g., True, False, partner name, user name).
  5. Add more conditions with AND/OR logic.
  6. Save the domain configuration.

Domain Examples

Project Domain Examples

Only Active Projects
  • Field: Active
  • Operator: =
  • Value: True
  • Domain: [('active', '=', True)]
Projects with Partner
  • Field: Partner
  • Operator: !=
  • Value: False
  • Domain: [('partner_id', '!=', False)]
Projects from Specific Client
  • Field: Partner
  • Operator: =
  • Value: [Client Name]
  • Domain: [('partner_id', '=', 123)] (where 123 is the client ID)
Projects by Tags (Internal Projects)
  • Field: Tags
  • Operator: in
  • Value: [Internal]
  • Domain: [('tag_ids', 'in', [4])] (where 4 is the tag ID)
Projects by Tags (External Projects)
  • Field: Tags
  • Operator: in
  • Value: [External]
  • Domain: [('tag_ids', 'in', [5])] (where 5 is the tag ID)
Mixed Project Tags (Internal OR External)
  • Field: Tags
  • Operator: in
  • Value: [Internal, External]
  • Domain: ['|', ('tag_ids', 'in', [4]), ('tag_ids', 'in', [5])]

Task Domain Examples

Only Active Tasks
  • Field: Active
  • Operator: =
  • Value: True
  • Domain: [('active', '=', True)]
Tasks by Tags (Development)
  • Field: Tags
  • Operator: in
  • Value: [Development]
  • Domain: [('tag_ids', 'in', [1])] (where 1 is the tag ID)
Tasks by Tags (Testing)
  • Field: Tags
  • Operator: in
  • Value: [Testing]
  • Domain: [('tag_ids', 'in', [2])] (where 2 is the tag ID)
Mixed Task Tags (Development OR Testing)
  • Field: Tags
  • Operator: in
  • Value: [Development, Testing]
  • Domain: ['|', ('tag_ids', 'in', [1]), ('tag_ids', 'in', [2])]
Unassigned Tasks
  • Field: User
  • Operator: =
  • Value: False
  • Domain: [('user_ids', '=', False)]
Tasks Assigned to Specific User
  • Field: User
  • Operator: in
  • Value: [User Name]
  • Domain: [('user_ids', 'in', [123])] (where 123 is the user ID)
Tasks with High Priority
  • Field: Priority
  • Operator: =
  • Value: 1
  • Domain: [('priority', '=', '1')]

Python Domain Code

For advanced users, you can use Python code to create dynamic domains:

  1. Go to the team configuration.
  2. Edit the Project Domain Python Code or Task Domain Python Code field.
  3. Write Python code that returns a domain list.
  4. Available variables: ticket, env, user, company, AND, OR, normalize.

Example Python Code

Project Domain Example - Client Projects Team
# Filter projects based on ticket partner (from demo data)
if ticket.partner_id:
    domain = [('commercial_partner_id', '=', ticket.commercial_partner_id.id)]
else:
    domain = [('id', '=', 0)]  # No projects if no partner
Task Domain Example - Unassigned Tasks
# Filter tasks not assigned to anyone (from demo data)
domain = [('user_ids', '=', False)]
Task Domain Example - Project-based Filtering
# Filter tasks based on ticket project
if ticket.project_id:
    domain = [('project_id', '=', ticket.project_id.id)]
else:
    domain = [('id', '=', 0)]  # No tasks if no project selected
Task Domain Example - Mixed Tags
# Filter tasks by development or testing tags (from demo data)
domain = ['|', ('tag_ids', 'in', [1]), ('tag_ids', 'in', [2])]
Task Domain Example - Priority and Assignment
# Filter high priority tasks assigned to specific users
if ticket.partner_id:
    domain = AND([
        [('priority', '=', '1')],  # High priority
        [('user_ids', '!=', False)]  # Assigned tasks
    ])
else:
    domain = [('priority', '=', '1')]  # High priority only

Domain Combination Logic

All domains are combined using AND logic:

For Projects:

  1. Company global project domain (base filter for all teams).
  2. Team static project domain (always combined with company domain).
  3. Team Python project code (always combined with company + team domains).

For Tasks:

  1. Company global task domain (base filter for all teams).
  2. Team static task domain (always combined with company domain).
  3. Team Python task code (always combined with company + team domains).

The final project domain will be: Company Project Domain AND Team Project Domain AND Python Project Domain.

The final task domain will be: Company Task Domain AND Team Task Domain AND Python Task Domain.

Permissions

There are no specific permissions required for this module. The domain filtering respects the user’s existing project access permissions set in the system.

Troubleshooting

If domains are not working as expected:

  1. Check that the domain syntax is correct.
  2. Verify that the Python code (if used) has no syntax errors.
  3. Ensure that the fields referenced in domains exist in the Project model.
  4. Check the Odoo logs for any domain evaluation errors.

Usage

How It Works

Project Filtering

  1. Ticket Creation: When a ticket is created, the system checks:
    • If the team has a configured project domain
    • If not, uses the company’s global project domain
    • If no domain is configured, all projects remain available
  2. Ticket Editing: The project domain is automatically applied to the “Project” field of the ticket
  3. Validation: If the project domain is invalid, the system ignores it and shows all projects

Task Filtering

  1. Project Selection: When a project is selected in a ticket:
    • The system applies the configured task domain
    • Tasks are automatically filtered by the selected project
    • Only tasks belonging to the selected project are shown
  2. Dynamic Filtering: Task filtering is updated when:
    • The project field changes
    • The team changes
    • Other relevant ticket fields change
  3. Smart Filtering: The system ensures tasks are always relevant to the selected project, preventing selection of tasks from other projects

Domain Application

  • Static Domains: Applied immediately when fields change
  • Python Domains: Evaluated dynamically based on current ticket data
  • Combination Logic: All applicable domains are combined using AND logic
  • Fallback Behavior: If any domain fails, the system gracefully falls back to showing all available options

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed feedback.

Do not contact contributors directly about support or help with technical issues.

Credits

Authors

  • Escodoo

Contributors

  • Escodoo:
    • Marcel Savegnago marcel.savegnago@escodoo.com.br

Maintainers

This module is maintained by the OCA.

Odoo Community Association

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

Current maintainer:

marcelsavegnago

This module is part of the OCA/helpdesk project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Please choose a rating from 1 to 5 for this module.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with