| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/business-requirement |
| GIT | |
| GIT | https://github.com/OCA/business-requirement.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/business-requirement/tree/16.0/business_requirement |
| VERSION | |
| VERSION | 1.0.1 |
| CATEGORY | |
| CATEGORY | Business Requirements Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), Elico Corp |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), Elico Corp |
| COMMITTERS | |
| COMMITTERS | Daniel Reis, Weblate, OCA-git-bot, oca-ci, Aromera |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/business-requirement |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:12:09 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - base_setup - web - bus - web_tour - uom - portal - web_editor - http_routing - auth_signup |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | A **Business requirement** (BR) is the expression of a business need by a customer or internal project user. A BR contains multiple different parts to explain the stakeholder need and how to meet his/her requirements: - **Customer Story**: this is the requirement as expressed by the customer - **Scenario**: How/where the current solution can provide a suitable scenario to answer the customer story - **Gap**: For the uncovered part of the scenario, elaborate the gap/need for specific developments/setup - **Test case**: A set of conditions under which a tester will determine whether the application, software system or one of its features is working as it was originally established for it to do. - **Deliverables** to be provided to the customer/user - **Resources** necessary to achieve the deliverables - **Additional** information (approval, cost control etc.) This set of modules was originally designed for the service/IT industry but the requirement management design has been kept as generic as possible so that it can apply to many other cases/industries (customer or internal projects): - Construction - Trading (New product development) - Business Consultancy - Web or IT development - R&D projects - etc. More information about business requirements management: - [Wikipedia](https://en.wikipedia.org/wiki/Business_requirements) - [Six Sigma](https://www.isixsigma.com/implementation/project-selection-tracking/business-requirements-document-high-level-review/) |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
br_report |
br_report | ir.ui.view | qweb | New |
layout_br_report |
layout_br_report | ir.ui.view | qweb | New |
layout_br_report_body |
layout_br_report_body | ir.ui.view | qweb | New |
layout_br_report_header |
layout_br_report_header | ir.ui.view | qweb | New |
portal_br_error |
Business requirement error/warning display | ir.ui.view | qweb | New |
portal_br_page |
Business Requirement | ir.ui.view | qweb | New |
portal_br_success |
Business requirement success display | ir.ui.view | qweb | New |
portal_my_br |
My Business Requirements | ir.ui.view | qweb | New |
portal_my_home_br |
Portal My Home : business requirements entries | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_home_menu_br |
Portal layout : business requirement menu entries | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
view_business_requirement_category_form |
business.requirement.category.form | business.requirement.category | form | New |
view_business_requirement_category_tree |
business.requirement.category.form | business.requirement.category | tree | New |
view_business_requirement_form |
business.requirement.form | business.requirement | form | New |
view_business_requirement_graph |
Business requirement | business.requirement | graph | New |
view_business_requirement_kanban_project |
business.requirement.kanban | business.requirement | kanban | New |
view_business_requirement_pivot |
Business requirement | business.requirement | pivot | New |
view_business_requirement_search |
business.requirement.search | business.requirement | search | New |
view_business_requirement_tree |
business.requirement.tree | business.requirement | tree | New |
approval_date
Datetime
copy=False
readonly=True
approved_id
Many2one → res.users
comodel_name='res.users'
copy=False
readonly=True
string='Approved by'
business_requirement
Html
readonly=True
states={'draft': [('readonly', False)]}
string='Customer Story'
category_ids
Many2many → business.requirement.category
comodel_name='business.requirement.category'
readonly=True
relation='business_requirement_category_rel'
states={'draft': [('readonly', False)]}
string='Categories'
change_request
Boolean
readonly=True
states={'draft': [('readonly', False)]}
string='Change Request?'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Company'
confirmation_date
Datetime
copy=False
readonly=True
confirmed_user_id
Many2one → res.users
comodel_name='res.users'
copy=False
readonly=True
string='Confirmed by'
date
Date
default=<expr>
required=True
description
Char
readonly=True
required=True
states={'draft': [('readonly', False)]}
gap
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
kanban_state
Selection
default='normal'
selection=[('normal', 'In Progress'), ('on_hold', 'On Hold'), ('done', 'Ready for next stage')]
tracking=True
name
Char
copy=False
readonly=True
states={'draft': [('readonly', False)]}
origin
Char
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', True)]}
string='Source'
partner_id
Many2one → res.partner
comodel_name='res.partner'
copy=False
readonly=True
states={'draft': [('readonly', False)]}
string='Stakeholder'
portal_published
Boolean
default=False
args: 'In Portal'
priority
Selection
default='1'
required=True
selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')]
requested_user_id
Many2one → res.users
comodel_name='res.users'
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Requested by'
responsible_user_id
Many2one → res.users
comodel_name='res.users'
copy=False
default=<expr>
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Responsible'
reviewer_ids
Many2many → res.users
comodel_name='res.users'
copy=False
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Reviewers'
scenario
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
sequence
Char
copy=False
index=True
readonly=True
state
Selection
copy=False
default='draft'
readonly=False
selection=[('draft', 'Draft'), ('confirmed', 'Confirmed'), ('approved', 'Approved'), ('in_progress', 'In progress'), ('done', 'Done'), ('cancel', 'Cancel'), ('drop', 'Drop')]
states={'draft': [('readonly', False)]}
tracking=True
terms_and_conditions
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
test_case
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
to_be_reviewed
Boolean
user_id
Many2one → res.users
comodel_name='res.users'
default=<expr>
required=True
string='Owner'
tracking=True
create(self, vals_list)
get_portal_confirmation_action(self)
message_post(self, body='', subject=None, message_type='notification', email_from=None, author_id=None, parent_id=False, subtype_xmlid=None, subtype_id=None, partner_ids=None, channel_ids=None, attachments=None, attachment_ids=None, add_sign=True, record_name=False, **kwargs)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
portal_publish_button(self)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
write(self, vals)
name
Char
required=True
parent_id
Many2one → business.requirement.category
comodel_name='business.requirement.category'
ondelete='restrict'
string='Parent Category'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/business-requirement |
| GIT | |
| GIT | https://github.com/OCA/business-requirement.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/business-requirement/tree/15.0/business_requirement |
| VERSION | |
| VERSION | 1.0.3 |
| CATEGORY | |
| CATEGORY | Business Requirements Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), Elico Corp |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), Elico Corp |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, oca-git-bot, Mosab Wadea |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/business-requirement |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:46:44 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - base_setup - web - bus - web_tour - uom - portal - web_editor - http_routing - auth_signup |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
br_report |
br_report | ir.ui.view | qweb | New |
layout_br_report |
layout_br_report | ir.ui.view | qweb | New |
layout_br_report_body |
layout_br_report_body | ir.ui.view | qweb | New |
layout_br_report_header |
layout_br_report_header | ir.ui.view | qweb | New |
portal_br_error |
Business requirement error/warning display | ir.ui.view | qweb | New |
portal_br_page |
Business Requirement | ir.ui.view | qweb | New |
portal_br_success |
Business requirement success display | ir.ui.view | qweb | New |
portal_my_br |
My Business Requirements | ir.ui.view | qweb | New |
portal_my_home_br |
Portal My Home : business requirements entries | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_home_menu_br |
Portal layout : business requirement menu entries | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
view_business_requirement_category_form |
business.requirement.category.form | business.requirement.category | form | New |
view_business_requirement_category_tree |
business.requirement.category.form | business.requirement.category | tree | New |
view_business_requirement_form |
business.requirement.form | business.requirement | form | New |
view_business_requirement_graph |
Business requirement | business.requirement | graph | New |
view_business_requirement_kanban_project |
business.requirement.kanban | business.requirement | kanban | New |
view_business_requirement_pivot |
Business requirement | business.requirement | pivot | New |
view_business_requirement_search |
business.requirement.search | business.requirement | search | New |
view_business_requirement_tree |
business.requirement.tree | business.requirement | tree | New |
approval_date
Datetime
copy=False
readonly=True
approved_id
Many2one → res.users
comodel_name='res.users'
copy=False
readonly=True
string='Approved by'
business_requirement
Html
readonly=True
states={'draft': [('readonly', False)]}
string='Customer Story'
category_ids
Many2many → business.requirement.category
comodel_name='business.requirement.category'
readonly=True
relation='business_requirement_category_rel'
states={'draft': [('readonly', False)]}
string='Categories'
change_request
Boolean
readonly=True
states={'draft': [('readonly', False)]}
string='Change Request?'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Company'
confirmation_date
Datetime
copy=False
readonly=True
confirmed_user_id
Many2one → res.users
comodel_name='res.users'
copy=False
readonly=True
string='Confirmed by'
date
Date
default=<expr>
required=True
description
Char
readonly=True
required=True
states={'draft': [('readonly', False)]}
gap
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
kanban_state
Selection
default='normal'
selection=[('normal', 'In Progress'), ('on_hold', 'On Hold'), ('done', 'Ready for next stage')]
tracking=True
name
Char
copy=False
readonly=True
states={'draft': [('readonly', False)]}
origin
Char
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', True)]}
string='Source'
partner_id
Many2one → res.partner
comodel_name='res.partner'
copy=False
readonly=True
states={'draft': [('readonly', False)]}
string='Stakeholder'
portal_published
Boolean
default=False
args: 'In Portal'
priority
Selection
default='1'
required=True
selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')]
requested_user_id
Many2one → res.users
comodel_name='res.users'
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Requested by'
responsible_user_id
Many2one → res.users
comodel_name='res.users'
copy=False
default=<expr>
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Responsible'
reviewer_ids
Many2many → res.users
comodel_name='res.users'
copy=False
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Reviewers'
scenario
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
sequence
Char
copy=False
index=True
readonly=True
state
Selection
copy=False
default='draft'
readonly=False
selection=[('draft', 'Draft'), ('confirmed', 'Confirmed'), ('approved', 'Approved'), ('in_progress', 'In progress'), ('done', 'Done'), ('cancel', 'Cancel'), ('drop', 'Drop')]
states={'draft': [('readonly', False)]}
tracking=True
terms_and_conditions
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
test_case
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
to_be_reviewed
Boolean
user_id
Many2one → res.users
comodel_name='res.users'
default=<expr>
required=True
string='Owner'
tracking=True
create(self, vals_list)
get_portal_confirmation_action(self)
message_post(self, body='', subject=None, message_type='notification', email_from=None, author_id=None, parent_id=False, subtype_xmlid=None, subtype_id=None, partner_ids=None, channel_ids=None, attachments=None, attachment_ids=None, add_sign=True, record_name=False, **kwargs)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
portal_publish_button(self)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
write(self, vals)
name
Char
required=True
parent_id
Many2one → business.requirement.category
comodel_name='business.requirement.category'
ondelete='restrict'
string='Parent Category'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/business-requirement |
| GIT | |
| GIT | https://github.com/OCA/business-requirement.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/business-requirement/tree/14.0/business_requirement |
| VERSION | |
| VERSION | 1.2.1 |
| CATEGORY | |
| CATEGORY | Business Requirements Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), Elico Corp |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), Elico Corp |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Yann Papouin, OCA Transbot, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, oca-ci, oca-git-bot |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/business-requirement |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:41:13 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - base_setup - web - bus - web_tour - uom - portal - web_editor - http_routing - auth_signup |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_tests |
assets_tests | ir.ui.view | qweb | Inherits web.assets_tests |
br_report |
br_report | ir.ui.view | qweb | New |
layout_br_report |
layout_br_report | ir.ui.view | qweb | New |
layout_br_report_body |
layout_br_report_body | ir.ui.view | qweb | New |
layout_br_report_header |
layout_br_report_header | ir.ui.view | qweb | New |
portal_br_error |
Business requirement error/warning display | ir.ui.view | qweb | New |
portal_br_page |
Business Requirement | ir.ui.view | qweb | New |
portal_br_success |
Business requirement success display | ir.ui.view | qweb | New |
portal_my_br |
My Business Requirements | ir.ui.view | qweb | New |
portal_my_home_br |
Portal My Home : business requirements entries | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_home_menu_br |
Portal layout : business requirement menu entries | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
view_business_requirement_category_form |
business.requirement.category.form | business.requirement.category | form | New |
view_business_requirement_category_tree |
business.requirement.category.form | business.requirement.category | tree | New |
view_business_requirement_form |
business.requirement.form | business.requirement | form | New |
view_business_requirement_graph |
Business requirement | business.requirement | graph | New |
view_business_requirement_kanban_project |
business.requirement.kanban | business.requirement | kanban | New |
view_business_requirement_pivot |
Business requirement | business.requirement | pivot | New |
view_business_requirement_search |
business.requirement.search | business.requirement | search | New |
view_business_requirement_tree |
business.requirement.tree | business.requirement | tree | New |
approval_date
Datetime
copy=False
readonly=True
string='Approval Date'
approved_id
Many2one → res.users
comodel_name='res.users'
copy=False
readonly=True
string='Approved by'
business_requirement
Html
readonly=True
states={'draft': [('readonly', False)]}
string='Customer Story'
category_ids
Many2many → business.requirement.category
comodel_name='business.requirement.category'
readonly=True
relation='business_requirement_category_rel'
states={'draft': [('readonly', False)]}
string='Categories'
change_request
Boolean
readonly=True
states={'draft': [('readonly', False)]}
string='Change Request?'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Company'
confirmation_date
Datetime
copy=False
readonly=True
string='Confirmation Date'
confirmed_user_id
Many2one → res.users
comodel_name='res.users'
copy=False
readonly=True
string='Confirmed by'
date
Date
default=<expr>
required=True
string='Date'
description
Char
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Description'
gap
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Gap'
kanban_state
Selection
default='normal'
selection=[('normal', 'In Progress'), ('on_hold', 'On Hold'), ('done', 'Ready for next stage')]
string='Kanban State'
tracking=True
name
Char
copy=False
readonly=True
states={'draft': [('readonly', False)]}
string='Name'
origin
Char
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', True)]}
string='Source'
partner_id
Many2one → res.partner
comodel_name='res.partner'
copy=False
readonly=True
states={'draft': [('readonly', False)]}
string='Stakeholder'
portal_published
Boolean
default=False
args: 'In Portal'
priority
Selection
default='1'
required=True
selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')]
string='Priority'
requested_user_id
Many2one → res.users
comodel_name='res.users'
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Requested by'
responsible_user_id
Many2one → res.users
comodel_name='res.users'
copy=False
default=<expr>
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Responsible'
reviewer_ids
Many2many → res.users
comodel_name='res.users'
copy=False
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Reviewers'
scenario
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Scenario'
sequence
Char
copy=False
index=True
readonly=True
string='Sequence'
state
Selection
copy=False
default='draft'
readonly=False
selection=[('draft', 'Draft'), ('confirmed', 'Confirmed'), ('approved', 'Approved'), ('in_progress', 'In progress'), ('done', 'Done'), ('cancel', 'Cancel'), ('drop', 'Drop')]
states={'draft': [('readonly', False)]}
string='State'
tracking=True
terms_and_conditions
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Terms and Conditions'
test_case
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Test Case'
to_be_reviewed
Boolean
string='To be Reviewed'
user_id
Many2one → res.users
comodel_name='res.users'
default=<expr>
required=True
string='Owner'
tracking=True
create(self, vals_list)
get_portal_confirmation_action(self)
message_post(self, body='', subject=None, message_type='notification', email_from=None, author_id=None, parent_id=False, subtype_xmlid=None, subtype_id=None, partner_ids=None, channel_ids=None, attachments=None, attachment_ids=None, add_sign=True, record_name=False, **kwargs)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
portal_publish_button(self)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
write(self, vals)
name
Char
required=True
string='Name'
parent_id
Many2one → business.requirement.category
comodel_name='business.requirement.category'
ondelete='restrict'
string='Parent Category'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/business-requirement |
| GIT | |
| GIT | https://github.com/OCA/business-requirement.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/business-requirement/tree/13.0/business_requirement |
| VERSION | |
| VERSION | 1.2.1 |
| CATEGORY | |
| CATEGORY | Business Requirements Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), Elico Corp |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), Elico Corp |
| COMMITTERS | |
| COMMITTERS | Alexandre Díaz, OCA Transbot, sergio-teruel, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, CarlosRoca13 |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/business-requirement |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:34:21 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - base_setup - web - bus - web_tour - uom - portal - web_editor - http_routing - auth_signup |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
br_report |
br_report | ir.ui.view | qweb | New |
layout_br_report |
layout_br_report | ir.ui.view | qweb | New |
layout_br_report_body |
layout_br_report_body | ir.ui.view | qweb | New |
layout_br_report_header |
layout_br_report_header | ir.ui.view | qweb | New |
portal_br_error |
Business requirement error/warning display | ir.ui.view | qweb | New |
portal_br_page |
Business Requirement | ir.ui.view | qweb | New |
portal_br_success |
Business requirement success display | ir.ui.view | qweb | New |
portal_my_br |
My Business Requirements | ir.ui.view | qweb | New |
portal_my_home_br |
Portal My Home : business requirements entries | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_home_menu_br |
Portal layout : business requirement menu entries | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
view_business_requirement_category_form |
business.requirement.category.form | business.requirement.category | form | New |
view_business_requirement_category_tree |
business.requirement.category.form | business.requirement.category | tree | New |
view_business_requirement_form |
business.requirement.form | business.requirement | form | New |
view_business_requirement_graph |
Business requirement | business.requirement | graph | New |
view_business_requirement_kanban_project |
business.requirement.kanban | business.requirement | kanban | New |
view_business_requirement_pivot |
Business requirement | business.requirement | pivot | New |
view_business_requirement_search |
business.requirement.search | business.requirement | search | New |
view_business_requirement_tree |
business.requirement.tree | business.requirement | tree | New |
approval_date
Datetime
copy=False
readonly=True
string='Approval Date'
approved_id
Many2one → res.users
copy=False
readonly=True
string='Approved by'
args: 'res.users'
business_requirement
Html
readonly=True
states={'draft': [('readonly', False)]}
args: 'Customer Story'
category_ids
Many2many → business.requirement.category
readonly=True
relation='business_requirement_category_rel'
states={'draft': [('readonly', False)]}
string='Categories'
args: 'business.requirement.category'
change_request
Boolean
readonly=True
states={'draft': [('readonly', False)]}
string='Change Request?'
company_id
Many2one → res.company
default=_get_default_company
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Company'
args: 'res.company'
confirmation_date
Datetime
copy=False
readonly=True
string='Confirmation Date'
confirmed_user_id
Many2one → res.users
copy=False
readonly=True
string='Confirmed by'
args: 'res.users'
date
Date
default=<expr>
required=True
args: 'Date'
description
Char
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Description'
gap
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
args: 'Gap'
kanban_state
Selection
default='normal'
tracking=True
args: [('normal', 'In Progress'), ('on_hold', 'On Hold'), ('done', 'Ready for next stage')], 'Kanban State'
name
Char
copy=False
readonly=True
states={'draft': [('readonly', False)]}
args: 'Name'
origin
Char
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', True)]}
string='Source'
partner_id
Many2one → res.partner
comodel_name='res.partner'
copy=False
readonly=True
states={'draft': [('readonly', False)]}
string='Stakeholder'
portal_published
Boolean
default=False
args: 'In Portal'
priority
Selection
default='1'
required=True
args: [('0', 'Low'), ('1', 'Normal'), ('2', 'High')], 'Priority'
requested_user_id
Many2one → res.users
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Requested by'
args: 'res.users'
responsible_user_id
Many2one → res.users
copy=False
default=<expr>
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Responsible'
args: 'res.users'
reviewer_ids
Many2many → res.users
copy=False
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Reviewers'
args: 'res.users'
scenario
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
args: 'Scenario'
sequence
Char
copy=False
index=True
readonly=True
args: 'Sequence'
state
Selection
copy=False
default='draft'
readonly=False
selection=[('draft', 'Draft'), ('confirmed', 'Confirmed'), ('approved', 'Approved'), ('in_progress', 'In progress'), ('done', 'Done'), ('cancel', 'Cancel'), ('drop', 'Drop')]
states={'draft': [('readonly', False)]}
string='State'
tracking=True
terms_and_conditions
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
args: 'Terms and Conditions'
test_case
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
args: 'Test Case'
to_be_reviewed
Boolean
string='To be Reviewed'
user_id
Many2one → res.users
default=<expr>
required=True
string='Owner'
tracking=True
args: 'res.users'
create(self, vals)
get_portal_confirmation_action(self)
message_post(self, body='', subject=None, message_type='notification', subtype=None, parent_id=False, attachments=None, notif_layout=False, add_sign=True, model_description=False, mail_auto_delete=True, **kwargs)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
portal_publish_button(self)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
write(self, vals)
name
Char
required=True
string='Name'
parent_id
Many2one → business.requirement.category
comodel_name='business.requirement.category'
ondelete='restrict'
string='Parent Category'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/business-requirement |
| GIT | |
| GIT | https://github.com/OCA/business-requirement.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/business-requirement/tree/12.0/business_requirement |
| VERSION | |
| VERSION | 1.2.0 |
| CATEGORY | |
| CATEGORY | Business Requirements Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), Elico Corp |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), Elico Corp |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Alexandre Díaz, OCA Transbot, Donatas, oca-travis, Weblate, OCA-git-bot, Victor Martin, Victor M.M. Torres |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/business-requirement |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:29:26 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - decimal_precision - base_setup - web - bus - web_tour - uom - portal - http_routing |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
br_report |
br_report | ir.ui.view | qweb | New |
layout_br_report |
layout_br_report | ir.ui.view | qweb | New |
layout_br_report_body |
layout_br_report_body | ir.ui.view | qweb | New |
layout_br_report_header |
layout_br_report_header | ir.ui.view | qweb | New |
portal_br_error |
Business requirement error/warning display | ir.ui.view | qweb | New |
portal_br_page |
Business Requirement | ir.ui.view | qweb | New |
portal_br_success |
Business requirement success display | ir.ui.view | qweb | New |
portal_my_br |
My Business Requirements | ir.ui.view | qweb | New |
portal_my_home_br |
Portal My Home : business requirements entries | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_home_menu_br |
Portal layout : business requirement menu entries | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
view_business_requirement_category_form |
business.requirement.category.form | business.requirement.category | form | New |
view_business_requirement_category_tree |
business.requirement.category.form | business.requirement.category | tree | New |
view_business_requirement_form |
business.requirement.form | business.requirement | form | New |
view_business_requirement_graph |
Business requirement | business.requirement | graph | New |
view_business_requirement_kanban_project |
business.requirement.kanban | business.requirement | kanban | New |
view_business_requirement_pivot |
Business requirement | business.requirement | pivot | New |
view_business_requirement_search |
business.requirement.search | business.requirement | search | New |
view_business_requirement_tree |
business.requirement.tree | business.requirement | tree | New |
approval_date
Datetime
copy=False
readonly=True
string='Approval Date'
approved_id
Many2one → res.users
copy=False
readonly=True
string='Approved by'
args: 'res.users'
business_requirement
Html
readonly=True
states={'draft': [('readonly', False)]}
args: 'Customer Story'
category_ids
Many2many → business.requirement.category
readonly=True
relation='business_requirement_category_rel'
states={'draft': [('readonly', False)]}
string='Categories'
args: 'business.requirement.category'
change_request
Boolean
readonly=True
states={'draft': [('readonly', False)]}
string='Change Request?'
company_id
Many2one → res.company
default=_get_default_company
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Company'
args: 'res.company'
confirmation_date
Datetime
copy=False
readonly=True
string='Confirmation Date'
confirmed_user_id
Many2one → res.users
copy=False
readonly=True
string='Confirmed by'
args: 'res.users'
date
Date
default=<expr>
required=True
args: 'Date'
description
Char
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Description'
gap
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
args: 'Gap'
kanban_state
Selection
default='normal'
track_visibility='onchange'
args: [('normal', 'In Progress'), ('on_hold', 'On Hold'), ('done', 'Ready for next stage')], 'Kanban State'
name
Char
copy=False
readonly=True
states={'draft': [('readonly', False)]}
args: 'Name'
origin
Char
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', True)]}
string='Source'
partner_id
Many2one → res.partner
comodel_name='res.partner'
copy=False
readonly=True
states={'draft': [('readonly', False)]}
string='Stakeholder'
portal_published
Boolean
default=False
args: 'In Portal'
priority
Selection
default='1'
required=True
args: [('0', 'Low'), ('1', 'Normal'), ('2', 'High')], 'Priority'
requested_user_id
Many2one → res.users
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Requested by'
args: 'res.users'
responsible_user_id
Many2one → res.users
copy=False
default=<expr>
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Responsible'
args: 'res.users'
reviewer_ids
Many2many → res.users
copy=False
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Reviewers'
args: 'res.users'
scenario
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
args: 'Scenario'
sequence
Char
copy=False
index=True
readonly=True
args: 'Sequence'
state
Selection
copy=False
default='draft'
readonly=False
selection=[('draft', 'Draft'), ('confirmed', 'Confirmed'), ('approved', 'Approved'), ('in_progress', 'In progress'), ('done', 'Done'), ('cancel', 'Cancel'), ('drop', 'Drop')]
states={'draft': [('readonly', False)]}
string='State'
track_visibility='onchange'
terms_and_conditions
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
args: 'Terms and Conditions'
test_case
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
args: 'Test Case'
to_be_reviewed
Boolean
string='To be Reviewed'
user_id
Many2one → res.users
default=<expr>
required=True
string='Owner'
track_visibility='always'
args: 'res.users'
create(self, vals)
get_portal_confirmation_action(self)
message_post(self, body='', subject=None, message_type='notification', subtype=None, parent_id=False, attachments=None, notif_layout=False, add_sign=True, model_description=False, mail_auto_delete=True, **kwargs)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
portal_publish_button(self)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
write(self, vals)
name
Char
required=True
string='Name'
parent_id
Many2one → business.requirement.category
comodel_name='business.requirement.category'
ondelete='restrict'
string='Parent Category'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/business-requirement |
| GIT | |
| GIT | https://github.com/OCA/business-requirement.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/business-requirement/tree/11.0/business_requirement |
| VERSION | |
| VERSION | 1.2.0 |
| CATEGORY | |
| CATEGORY | Business Requirements Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Elico Corp |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Elico Corp |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Victor Martin |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/business-requirement |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:24:03 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - decimal_precision - base_setup - web - bus - web_tour - portal - http_routing |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
br_report |
br_report | ir.ui.view | qweb | New |
layout_br_report |
layout_br_report | ir.ui.view | qweb | New |
layout_br_report_body |
layout_br_report_body | ir.ui.view | qweb | New |
layout_br_report_header |
layout_br_report_header | ir.ui.view | qweb | New |
portal_br_error |
Business requirement error/warning display | ir.ui.view | qweb | New |
portal_br_page |
Business Requirement | ir.ui.view | qweb | New |
portal_br_success |
Business requirement success display | ir.ui.view | qweb | New |
portal_my_br |
My Business Requirements | ir.ui.view | qweb | New |
portal_my_home_br |
Portal My Home : business requirement entries | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_home_menu_br |
Portal layout : business requirement menu entries | ir.ui.view | qweb | Inherits portal.portal_layout |
view_business_requirement_category_form |
business.requirement.category.form | business.requirement.category | form | New |
view_business_requirement_category_tree |
business.requirement.category.form | business.requirement.category | tree | New |
view_business_requirement_form |
business.requirement.form | business.requirement | form | New |
view_business_requirement_graph |
Business requirement | business.requirement | graph | New |
view_business_requirement_kanban_project |
business.requirement.kanban | business.requirement | kanban | New |
view_business_requirement_pivot |
Business requirement | business.requirement | pivot | New |
view_business_requirement_search |
business.requirement.search | business.requirement | search | New |
view_business_requirement_tree |
business.requirement.tree | business.requirement | tree | New |
approval_date
Datetime
copy=False
readonly=True
string='Approval Date'
approved_id
Many2one → res.users
copy=False
readonly=True
string='Approved by'
args: 'res.users'
business_requirement
Html
readonly=True
states={'draft': [('readonly', False)]}
args: 'Customer Story'
category_ids
Many2many → business.requirement.category
readonly=True
relation='business_requirement_category_rel'
states={'draft': [('readonly', False)]}
string='Categories'
args: 'business.requirement.category'
change_request
Boolean
readonly=True
states={'draft': [('readonly', False)]}
string='Change Request?'
company_id
Many2one → res.company
default=_get_default_company
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Company'
args: 'res.company'
confirmation_date
Datetime
copy=False
readonly=True
string='Confirmation Date'
confirmed_user_id
Many2one → res.users
copy=False
readonly=True
string='Confirmed by'
args: 'res.users'
date
Date
default=<expr>
required=True
args: 'Date'
description
Char
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Description'
gap
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
args: 'Gap'
internal_comment
Html
kanban_state
Selection
default='normal'
track_visibility='onchange'
args: [('normal', 'In Progress'), ('on_hold', 'On Hold'), ('done', 'Ready for next stage')], 'Kanban State'
name
Char
copy=False
readonly=True
states={'draft': [('readonly', False)]}
args: 'Name'
origin
Char
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', True)]}
string='Source'
partner_id
Many2one → res.partner
comodel_name='res.partner'
copy=False
readonly=True
states={'draft': [('readonly', False)]}
string='Stakeholder'
portal_published
Boolean
default=False
args: 'In Portal'
priority
Selection
default='1'
required=True
args: [('0', 'Low'), ('1', 'Normal'), ('2', 'High')], 'Priority'
requested_user_id
Many2one → res.users
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Requested by'
args: 'res.users'
responsible_user_id
Many2one → res.users
copy=False
default=<expr>
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Responsible'
args: 'res.users'
reviewer_ids
Many2many → res.users
copy=False
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Reviewers'
args: 'res.users'
scenario
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
args: 'Scenario'
sequence
Char
copy=False
index=True
readonly=True
args: 'Sequence'
state
Selection
copy=False
default='draft'
readonly=False
selection=<expr>
states={'draft': [('readonly', False)]}
string='State'
track_visibility='onchange'
terms_and_conditions
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
args: 'Terms and Conditions'
test_case
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
args: 'Test Case'
to_be_reviewed
Boolean
string='To be Reviewed'
user_id
Many2one → res.users
default=<expr>
required=True
string='Owner'
args: 'res.users'
create(self, vals)
get_portal_confirmation_action(self)
message_post(self, body='', subject=None, message_type='notification', subtype=None, parent_id=False, attachments=None, content_subtype='html', **kwargs)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
portal_publish_button(self)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
write(self, vals)
name
Char
required=True
string='Name'
parent_id
Many2one → business.requirement.category
comodel_name='business.requirement.category'
ondelete='restrict'
string='Parent Category'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/business-requirement |
| GIT | |
| GIT | https://github.com/OCA/business-requirement.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/business-requirement/tree/10.0/business_requirement |
| VERSION | |
| VERSION | 1.2.0 |
| CATEGORY | |
| CATEGORY | Business Requirements Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Elico Corp |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Elico Corp |
| COMMITTERS | |
| COMMITTERS | GitHub, OCA Transbot, oca-travis, Weblate, Eric @ Elico Corp, elicoidal |
| WEBSITE | |
| WEBSITE | https://www.elico-corp.com/ |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:20:04 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - decimal_precision - base_setup - web_kanban - web - bus - web_tour - report - project - analytic - resource - web_planner |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
br_report |
br_report | ir.ui.view | qweb | New |
internal_layout_br_header |
internal_layout_br_header | ir.ui.view | qweb | New |
layout_br_base |
layout_br_base | ir.ui.view | qweb | New |
view_business_requirement_category_form |
business.requirement.category.form | business.requirement.category | form | New |
view_business_requirement_category_tree |
business.requirement.category.form | business.requirement.category | tree | New |
view_business_requirement_form |
business.requirement.form | business.requirement | form | New |
view_business_requirement_graph |
Business requirement | business.requirement | graph | New |
view_business_requirement_kanban_project |
business.requirement.kanban | business.requirement | kanban | New |
view_business_requirement_pivot |
Business requirement | business.requirement | pivot | New |
view_business_requirement_search |
business.requirement.search | business.requirement | search | New |
view_business_requirement_tree |
business.requirement.tree | business.requirement | tree | New |
approval_date
Datetime
copy=False
readonly=True
string='Approval Date'
approved_id
Many2one → res.users
copy=False
readonly=True
string='Approved by'
args: 'res.users'
business_requirement
Html
readonly=True
states={'draft': [('readonly', False)]}
args: 'Customer Story'
business_requirement_ids
One2many → business.requirement
comodel_name='business.requirement'
copy=False
inverse_name='parent_id'
readonly=True
states={'draft': [('readonly', False)]}
string='Sub Business Requirement'
category_ids
Many2many → business.requirement.category
readonly=True
relation='business_requirement_category_rel'
states={'draft': [('readonly', False)]}
string='Categories'
args: 'business.requirement.category'
change_request
Boolean
default=False
readonly=True
states={'draft': [('readonly', False)]}
string='Change Request?'
company_id
Many2one → res.company
default=_get_default_company
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Company'
args: 'res.company'
confirmation_date
Datetime
copy=False
readonly=True
string='Confirmation Date'
confirmed_id
Many2one → res.users
copy=False
readonly=True
string='Confirmed by'
args: 'res.users'
description
Char
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Description'
gap
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
args: 'Gap'
kanban_state
Selection
default='normal'
required=False
track_visibility='onchange'
args: [('normal', 'In Progress'), ('on_hold', 'On Hold'), ('done', 'Ready for next stage')], 'Kanban State'
level
Integer
compute='_compute_get_level'
store=True
string='Level'
name
Char
copy=False
readonly=True
required=False
states={'draft': [('readonly', False)]}
args: 'Name'
origin
Char
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', True)]}
string='Source'
parent_id
Many2one → business.requirement
comodel_name='business.requirement'
domain="[('id', '!=', id)]"
ondelete='set null'
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Parent'
partner_id
Many2one → res.partner
comodel_name='res.partner'
copy=False
readonly=True
states={'draft': [('readonly', False)]}
store=True
string='Stakeholder'
priority
Selection
default='1'
required=True
args: [('0', 'Low'), ('1', 'Normal'), ('2', 'High')], 'Priority'
project_id
Many2one → project.project
comodel_name='project.project'
copy=False
ondelete='set null'
readonly=True
states={'draft': [('readonly', False)]}
string='Master Project'
ref
Char
copy=False
readonly=True
required=False
states={'draft': [('readonly', False)]}
args: 'WBS'
requested_id
Many2one → res.users
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Requested by'
args: 'res.users'
responsible_id
Many2one → res.users
copy=False
default=<expr>
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Responsible'
args: 'res.users'
reviewer_ids
Many2many → res.users
copy=False
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Reviewers'
args: 'res.users'
scenario
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
args: 'Scenario'
sequence
Char
copy=False
index=True
readonly=True
args: 'Sequence'
state
Selection
copy=False
default='draft'
readonly=False
selection='_get_states'
states={'draft': [('readonly', False)]}
string='State'
track_visibility='onchange'
sub_br_count
Integer
compute='_compute_sub_br_count'
string='Count'
terms_and_conditions
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
args: 'Terms and Conditions'
test_case
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
args: 'Test Case'
to_be_reviewed
Boolean
string='To be Reviewed'
create(self, vals)
message_post(self, body='', subject=None, message_type='notification', subtype=None, parent_id=False, attachments=None, content_subtype='html', **kwargs)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
project_id_change(self)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
write(self, vals)
name
Char
required=True
string='Name'
parent_id
Many2one → business.requirement.category
comodel_name='business.requirement.category'
ondelete='restrict'
string='Parent Category'
No public methods.
br_ids
One2many → business.requirement
comodel_name='business.requirement'
copy=False
inverse_name='project_id'
string='Business Requirements'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/business-requirement |
| GIT | |
| GIT | https://github.com/OCA/business-requirement.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/business-requirement/tree/9.0/business_requirement |
| VERSION | |
| VERSION | 5.1.3 |
| CATEGORY | |
| CATEGORY | Business Requirements Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Elico Corp |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Elico Corp |
| COMMITTERS | |
| COMMITTERS | elicoidal |
| WEBSITE | |
| WEBSITE | https://www.elico-corp.com/ |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:15:25 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - decimal_precision - base_setup - web_kanban - web - bus - report - project - analytic - portal - auth_signup - resource - web_tip - web_planner |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
view_business_requirement_category_form |
business.requirement.category.form | business.requirement.category | form | New |
view_business_requirement_category_tree |
business.requirement.category.form | business.requirement.category | tree | New |
view_business_requirement_form |
business.requirement.form | business.requirement | form | New |
view_business_requirement_graph |
Business requirement | business.requirement | graph | New |
view_business_requirement_search |
business.requirement.search | business.requirement | search | New |
view_business_requirement_tree |
business.requirement.tree | business.requirement | tree | New |
approval_date
Datetime
copy=False
readonly=True
string='Approval Date'
approved_id
Many2one → res.users
copy=False
readonly=True
string='Approved by'
args: 'res.users'
business_requirement
Html
readonly=True
states={'draft': [('readonly', False)]}
args: 'Customer Story'
business_requirement_ids
One2many → business.requirement
comodel_name='business.requirement'
copy=False
inverse_name='parent_id'
readonly=True
states={'draft': [('readonly', False)]}
string='Sub Business Requirement'
category_ids
Many2many → business.requirement.category
readonly=True
relation='business_requirement_category_rel'
states={'draft': [('readonly', False)]}
string='Categories'
args: 'business.requirement.category'
change_request
Boolean
default=False
readonly=True
states={'draft': [('readonly', False)]}
string='Change Request?'
company_id
Many2one → res.company
default=_get_default_company
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Company'
args: 'res.company'
confirmation_date
Datetime
copy=False
readonly=True
string='Confirmation Date'
confirmed_id
Many2one → res.users
copy=False
readonly=True
string='Confirmed by'
args: 'res.users'
description
Char
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Description'
gap
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
args: 'Gap'
kanban_state
Selection
copy=False
default='normal'
required=False
track_visibility='onchange'
args: [('normal', 'In Progress'), ('on_hold', 'On Hold'), ('done', 'Ready for next stage')], 'Kanban State'
level
Integer
compute='_get_level'
store=True
string='Level'
name
Char
copy=False
readonly=True
required=False
states={'draft': [('readonly', False)]}
args: 'Name'
origin
Text
string='Source'
parent_id
Many2one → business.requirement
comodel_name='business.requirement'
domain="[('id', '!=', id)]"
ondelete='set null'
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Parent'
partner_id
Many2one → res.partner
comodel_name='res.partner'
copy=False
readonly=True
states={'draft': [('readonly', False)]}
store=True
string='Stakeholder'
priority
Selection
default='1'
required=True
args: [('0', 'Low'), ('1', 'Normal'), ('2', 'High')], 'Priority'
project_id
Many2one → project.project
comodel_name='project.project'
copy=False
ondelete='set null'
readonly=True
states={'draft': [('readonly', False)]}
string='Master Project'
ref
Char
copy=False
readonly=True
required=False
states={'draft': [('readonly', False)]}
args: 'WBS'
requested_id
Many2one → res.users
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Requested by'
args: 'res.users'
responsible_id
Many2one → res.users
copy=False
default=<expr>
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Responsible'
args: 'res.users'
reviewer_ids
Many2many → res.users
copy=False
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Reviewers'
args: 'res.users'
scenario
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
args: 'Scenario'
sequence
Char
copy=False
index=True
readonly=True
args: 'Sequence'
state
Selection
copy=False
default='draft'
readonly=True
selection='_get_states'
states={'draft': [('readonly', False)]}
string='State'
track_visibility='onchange'
sub_br_count
Integer
compute='_compute_sub_br_count'
string='Count'
test_case
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
args: 'Test Case'
to_be_reviewed
Boolean
string='To be Reviewed'
action_button_approve(self)
action_button_back_draft(self)
action_button_cancel(self)
action_button_confirm(self)
action_button_done(self)
action_button_drop(self)
action_button_in_progress(self)
action_button_stakeholder_approval(self)
create(self, vals)
message_post(self, cr, uid, thread_id, body='', subject=None, type='notification', subtype=None, parent_id=False, attachments=None, context=None, content_subtype='html', **kwargs)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
project_id_change(self)
write(self, vals)
name
Char
required=True
string='Name'
parent_id
Many2one → business.requirement.category
comodel_name='business.requirement.category'
ondelete='restrict'
string='Parent Category'
No public methods.
br_ids
One2many → business.requirement
comodel_name='business.requirement'
copy=False
inverse_name='project_id'
string='Business Requirements'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/business-requirement |
| GIT | |
| GIT | https://github.com/OCA/business-requirement.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/business-requirement/tree/8.0/business_requirement |
| VERSION | |
| VERSION | 5.1.3 |
| CATEGORY | |
| CATEGORY | Business Requirements Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Elico Corp |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Elico Corp |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, GitHub, Andrea, Stéphane Bidoul (ACSONE), OCA Transbot, darshan-serpent, Moises Lopez - https://www.vauxoo.com/, oca-travis, Weblate, Victor Martin, noah, Eric @ Elico Corp, victor, eric, YogeshMahera-SerpentCS |
| WEBSITE | |
| WEBSITE | https://www.elico-corp.com/ |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:11:28 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - decimal_precision - base_setup - web_kanban - web - report - project - analytic - board - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
view_business_requirement_category_form |
business.requirement.category.form | business.requirement.category | form | New |
view_business_requirement_category_tree |
business.requirement.category.form | business.requirement.category | tree | New |
view_business_requirement_form |
business.requirement.form | business.requirement | form | New |
view_business_requirement_graph |
Business requirement | business.requirement | graph | New |
view_business_requirement_search |
business.requirement.search | business.requirement | search | New |
view_business_requirement_tree |
business.requirement.tree | business.requirement | tree | New |
approval_date
Datetime
copy=False
readonly=True
string='Approval Date'
approved_id
Many2one → res.users
copy=False
readonly=True
string='Approved by'
args: 'res.users'
business_requirement
Html
readonly=True
states={'draft': [('readonly', False)]}
args: 'Customer Story'
business_requirement_ids
One2many → business.requirement
comodel_name='business.requirement'
copy=False
inverse_name='parent_id'
readonly=True
states={'draft': [('readonly', False)]}
string='Sub Business Requirement'
category_ids
Many2many → business.requirement.category
readonly=True
relation='business_requirement_category_rel'
states={'draft': [('readonly', False)]}
string='Categories'
args: 'business.requirement.category'
change_request
Boolean
default=False
readonly=True
states={'draft': [('readonly', False)]}
string='Change Request?'
company_id
Many2one → res.company
default=_get_default_company
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Company'
args: 'res.company'
confirmation_date
Datetime
copy=False
readonly=True
string='Confirmation Date'
confirmed_id
Many2one → res.users
copy=False
readonly=True
string='Confirmed by'
args: 'res.users'
description
Char
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Description'
gap
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
args: 'Gap'
kanban_state
Selection
copy=False
default='normal'
required=False
track_visibility='onchange'
args: [('normal', 'In Progress'), ('on_hold', 'On Hold'), ('done', 'Ready for next stage')], 'Kanban State'
level
Integer
compute='_get_level'
store=True
string='Level'
name
Char
copy=False
readonly=True
required=False
states={'draft': [('readonly', False)]}
args: 'Name'
origin
Char
readonly=True
states={'draft': [('readonly', False)]}
string='Source'
parent_id
Many2one → business.requirement
comodel_name='business.requirement'
domain="[('id', '!=', id)]"
ondelete='set null'
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Parent'
partner_id
Many2one → res.partner
comodel_name='res.partner'
copy=False
readonly=True
states={'draft': [('readonly', False)]}
store=True
string='Stakeholder'
priority
Selection
default='1'
required=True
args: [('0', 'Low'), ('1', 'Normal'), ('2', 'High')], 'Priority'
project_id
Many2one → project.project
comodel_name='project.project'
copy=False
ondelete='set null'
readonly=True
states={'draft': [('readonly', False)]}
string='Master Project'
ref
Char
copy=False
readonly=True
required=False
states={'draft': [('readonly', False)]}
args: 'WBS'
requested_id
Many2one → res.users
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Requested by'
args: 'res.users'
responsible_id
Many2one → res.users
copy=False
default=<expr>
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Responsible'
args: 'res.users'
reviewer_ids
Many2many → res.users
copy=False
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
string='Reviewers'
args: 'res.users'
scenario
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
args: 'Scenario'
sequence
Char
copy=False
index=True
readonly=True
args: 'Sequence'
state
Selection
copy=False
default='draft'
readonly=True
selection='_get_states'
states={'draft': [('readonly', False)]}
string='State'
track_visibility='onchange'
sub_br_count
Integer
compute='_compute_sub_br_count'
string='Count'
test_case
Html
readonly=True
states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}
args: 'Test Case'
to_be_reviewed
Boolean
string='To be Reviewed'
create(self, vals)
message_post(self, cr, uid, thread_id, body='', subject=None, type='notification', subtype=None, parent_id=False, attachments=None, context=None, content_subtype='html', **kwargs)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
project_id_change(self)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
write(self, vals)
write(self, vals)
name
Char
required=True
string='Name'
parent_id
Many2one → business.requirement.category
comodel_name='business.requirement.category'
ondelete='restrict'
string='Parent Category'
No public methods.
br_ids
One2many → business.requirement
comodel_name='business.requirement'
copy=False
inverse_name='project_id'
string='Business Requirements'
No public methods.