diff --git a/contract/models/abstract_contract_line.py b/contract/models/abstract_contract_line.py
index 7b1a5313d1..e1ac0d6c98 100644
--- a/contract/models/abstract_contract_line.py
+++ b/contract/models/abstract_contract_line.py
@@ -17,8 +17,10 @@ class ContractAbstractContractLine(models.AbstractModel):
     _description = "Abstract Recurring Contract Line"
 
     product_id = fields.Many2one("product.product", string="Product")
-
     name = fields.Text(string="Description", required=True)
+    partner_id = fields.Many2one(
+        comodel_name="res.partner", related="contract_id.partner_id"
+    )
     quantity = fields.Float(default=1.0, required=True)
     product_uom_category_id = fields.Many2one(  # Used for domain of field uom_id
         comodel_name="uom.category",
diff --git a/contract/views/contract.xml b/contract/views/contract.xml
index faf40baf67..f970bffe77 100644
--- a/contract/views/contract.xml
+++ b/contract/views/contract.xml
@@ -662,4 +662,11 @@
         action="action_supplier_contract"
         sequence="99"
     />
+
+    <!-- Base menu for contracts reporting -->
+    <record model="ir.ui.menu" id="menu_contract_reporting">
+        <field name="name">Contracts</field>
+        <field name="parent_id" ref="account.menu_finance_reports" />
+        <field name="sequence" eval="40" />
+    </record>
 </odoo>
diff --git a/contract/views/contract_line.xml b/contract/views/contract_line.xml
index 40cd43ebfa..4f762c9a29 100644
--- a/contract/views/contract_line.xml
+++ b/contract/views/contract_line.xml
@@ -193,4 +193,108 @@
             </field>
         </field>
     </record>
+
+    <!--TREE view - reporting -->
+    <record id="contract_line_report_tree_view" model="ir.ui.view">
+        <field name="name">contract.line report tree view (in contract)</field>
+        <field name="model">contract.line</field>
+        <field name="arch" type="xml">
+            <tree>
+                <field name="contract_id" />
+                <field name="partner_id" />
+                <field name="product_id" />
+                <field
+                    name="analytic_account_id"
+                    groups="analytic.group_analytic_accounting"
+                />
+                <field
+                    name="analytic_tag_ids"
+                    widget="many2many_tags"
+                    groups="analytic.group_analytic_tags"
+                />
+                <field name="quantity" />
+                <field name="uom_id" />
+                <field name="price_unit" />
+                <field name="discount" groups="base.group_no_one" />
+                <field name="price_subtotal" />
+                <field name="date_start" />
+                <field name="date_end" />
+                <field name="recurring_interval" />
+                <field name="recurring_rule_type" />
+                <field name="recurring_next_date" />
+                <field name="last_date_invoiced" />
+                <field name="is_auto_renew" />
+                <field name="is_canceled" />
+                <field name="state" />
+
+            </tree>
+        </field>
+    </record>
+
+    <!-- Contract lines search view - reporting -->
+    <record id="contract_line_search_view" model="ir.ui.view">
+        <field name="name">contract.line search view (in contract)</field>
+        <field name="model">contract.line</field>
+        <field name="arch" type="xml">
+            <search>
+                <field name="contract_id" />
+                <field name="product_id" />
+                <field name="name" />
+                <field name="date_start" />
+                <field name="date_end" />
+                <field name="recurring_next_date" />
+                <field name="last_date_invoiced" />
+                <separator />
+                <filter name="is_canceled" domain="[('is_canceled', '=', True)]" />
+                <filter name="is_auto_renew" domain="[('is_auto_renew', '=', True)]" />
+                <group expand="0" string="Group By...">
+                    <filter
+                        string="Contract"
+                        name="group_by_contract"
+                        domain="[]"
+                        context="{'group_by':'contract_id'}"
+                    />
+                    </group>
+            </search>
+        </field>
+    </record>
+
+    <!-- Add action for contract lines -->
+    <record id="action_supplier_contract_lines" model="ir.actions.act_window">
+        <field name="name">Supplier Contract Lines</field>
+        <field name="res_model">contract.line</field>
+        <field name="view_mode">tree,form</field>
+        <field name="domain">[('contract_id.contract_type', '=', 'purchase')]</field>
+        <field name="context">
+            {'search_default_group_by_contract': 1}
+        </field>
+        <field name="search_view_id" ref="contract_line_search_view" />
+        <field name="view_id" ref="contract_line_report_tree_view" />
+    </record>
+
+    <record id="action_customer_contract_lines" model="ir.actions.act_window">
+        <field name="name">Customer Contract Lines</field>
+        <field name="res_model">contract.line</field>
+        <field name="view_mode">tree,form</field>
+        <field name="domain">[('contract_id.contract_type', '=', 'sale')]</field>
+        <field name="context">
+            {'search_default_group_by_contract': 1}
+        </field>
+        <field name="search_view_id" ref="contract_line_search_view" />
+        <field name="view_id" ref="contract_line_report_tree_view" />
+    </record>
+
+    <record model="ir.ui.menu" id="menu_customer_contract_line_report">
+        <field name="name">Customer Contract lines</field>
+        <field name="parent_id" ref="contract.menu_contract_reporting" />
+        <field name="action" ref="contract.action_customer_contract_lines" />
+        <field name="sequence" eval="10" />
+    </record>
+    <record model="ir.ui.menu" id="menu_supplier_contract_line_report">
+        <field name="name">Supplier Contract lines</field>
+        <field name="parent_id" ref="contract.menu_contract_reporting" />
+        <field name="action" ref="contract.action_supplier_contract_lines" />
+        <field name="sequence" eval="11" />
+    </record>
+
 </odoo>