Repository
OCA/business-requirement · module folder · Try on Runboat
Module version
1.0.1
Category
Business Requirements Management
Folder size
1.45 MB
License
AGPL-3
Application
Yes
Auto-installable
No
Website
https://github.com/OCA/business-requirement
Last tracking update
2026-08-07 08:09:33
Authors
Odoo Community Association (OCA), Elico Corp, Tecnativa
Maintainers
Odoo Community Association (OCA), Elico Corp, Tecnativa
Committers
Daniel Reis, Weblate, OCA-git-bot, oca-ci, Aromera
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
business_requirement_crm
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/)

Code Analysis

Views touched (18)
XML IDNameModelTypeStatus
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
HTTP endpoints (3)
Route(s)HandlerAuthTypeMethodsFlags
/my/business_requirement/<int:br_id> CustomerPortal.portal_br_page public http ALL website
/my/business_requirement/pdf/<int:br_id> CustomerPortal.portal_br_report public http ALL sudo website
/my/business_requirements, /my/business_requirements/page/<int:page> CustomerPortal.portal_my_br user http ALL sudo website
Models touched (2)

New fields (27)
  • 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
Public methods (8)
  • create(self, vals_list)
    @api.model_create_multi
  • 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)
    @api.returns('mail.message', <expr>)
  • name_get(self)
    Display display [Name] Description
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
    Search BR based on Name or Description
  • portal_publish_button(self)
  • read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
    @api.model
    Read group customization in order to display all the stages in the kanban view. if the stages values are there it will group by state.
  • write(self, vals)

New fields (2)
  • name Char
    required=True
  • parent_id Many2one → business.requirement.category
    comodel_name='business.requirement.category' ondelete='restrict' string='Parent Category'
Public methods (0)

No public methods.

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Status
Open migration PR — not merged yet for this version
CI status
green — ready to merge
Open since
27 days ago
Last activity
27 days ago
Repository
OCA/business-requirement
Pull request
[17.0][MIG] business_requirement: Migration to 17.0 (#394)