INTRODUCTION

Your Company Knowledge Lives in Slack Threads and Shared Drives—That Needs to Change

Every growing company hits the same wall. Onboarding documentation lives in a Google Doc that hasn't been updated since 2023. The return policy is pinned in three different Slack channels with three different versions. The sales playbook exists only in the head of your top closer who just gave two weeks' notice. Institutional knowledge is scattered, outdated, and inaccessible exactly when people need it most.

Odoo 19's Knowledge module solves this by embedding a full-featured wiki directly inside your ERP. Articles are organized in a nested tree hierarchy, edited collaboratively in real time (Google Docs style), and can embed live Odoo views—kanban boards, list views, graphs—that update automatically. Templates enforce consistency across SOPs, and sharing controls let you publish articles to the portal or the public web without exposing internal data.

This guide covers every layer of setting up a production-grade company knowledge base in Odoo 19: module configuration, article structure, collaborative editing, embedded views, template articles, sharing with portal users and the public, integration with Helpdesk and Project, version history, full-text search with tags, and permissions management.

01

Installing and Configuring the Knowledge Module in Odoo 19

The Knowledge module is a first-party Odoo app available in both Community and Enterprise editions (Enterprise adds collaborative editing and embedded views). Navigate to Apps, search for knowledge, and click Install. The module creates a new top-level menu entry: Knowledge.

Module Dependencies and Settings

After installation, go to Settings > Knowledge. The key configuration options are:

SettingPathDefaultRecommendation
Enable KnowledgeSettings > KnowledgeEnabled on installN/A
Share with PortalSettings > Knowledge > SharingDisabledEnable if you plan to share SOPs or FAQs with external partners
Share to WebSettings > Knowledge > SharingDisabledEnable for public-facing documentation or help center articles
Helpdesk IntegrationSettings > Helpdesk > KnowledgeDisabledEnable to let agents search and insert Knowledge articles into ticket replies

If you want to install Knowledge programmatically (for instance as part of a custom module that depends on it), add it to your module's __manifest__.py:

Python — __manifest__.py
{
    'name': 'Company Wiki Setup',
    'version': '19.0.1.0.0',
    'category': 'Knowledge',
    'depends': [
        'knowledge',
        'helpdesk',       # Optional: Helpdesk integration
        'project',        # Optional: Project integration
        'website',        # Optional: Public article sharing
    ],
    'data': [
        'security/ir.model.access.csv',
        'data/knowledge_article_templates.xml',
    ],
    'installable': True,
    'application': False,
    'license': 'LGPL-3',
}
02

Building an Article Tree: Sections, Nested Articles, and the Knowledge Sidebar

Knowledge articles are stored in the knowledge.article model and organized in a parent-child tree. The sidebar on the left of the Knowledge interface shows this tree. Each article can have unlimited child articles, creating a hierarchy as deep as you need.

Recommended Top-Level Structure

We recommend starting with 5–7 root-level sections that map to your company's organizational structure:

Root ArticleContentsAudienceIcon
Company HandbookPolicies, benefits, PTO, code of conductAll employees📖
Engineering WikiArchitecture docs, deployment guides, runbooksEngineering team
Sales PlaybookPitch decks, objection handling, pricing rulesSales team💰
Customer SupportTroubleshooting guides, FAQs, escalation proceduresSupport team + Portal🎯
OnboardingDay 1 checklist, tool access, team introductionsNew hires + HR🚀

To create this structure via XML data files (useful for repeatable deployments), use the knowledge.article model:

XML — data/knowledge_article_structure.xml
<odoo>
  <data noupdate="1">

    <!-- Root articles -->
    <record id="article_company_handbook" model="knowledge.article">
      <field name="name">Company Handbook</field>
      <field name="internal_permission">write</field>
      <field name="category">workspace</field>
      <field name="icon">📖</field>
      <field name="sequence">10</field>
      <field name="is_article_visible_by_everyone" eval="True"/>
    </record>

    <!-- Child article under Company Handbook -->
    <record id="article_pto_policy" model="knowledge.article">
      <field name="name">PTO &amp; Leave Policy</field>
      <field name="parent_id" ref="article_company_handbook"/>
      <field name="internal_permission">write</field>
      <field name="sequence">10</field>
      <field name="body"><![CDATA[
        <h2>Paid Time Off Policy</h2>
        <p>All full-time employees accrue 20 days of PTO per year...</p>
      ]]></field>
    </record>

    <!-- Engineering Wiki with restricted access -->
    <record id="article_engineering_wiki" model="knowledge.article">
      <field name="name">Engineering Wiki</field>
      <field name="internal_permission">none</field>
      <field name="category">workspace</field>
      <field name="icon">⚙</field>
      <field name="sequence">20</field>
    </record>

    <!-- Grant access to Engineering group -->
    <record id="article_member_engineering" model="knowledge.article.member">
      <field name="article_id" ref="article_engineering_wiki"/>
      <field name="partner_id" ref="base.main_partner"/>
      <field name="permission">write</field>
    </record>

  </data>
</odoo>
Drag-and-Drop Reordering

The Knowledge sidebar supports drag-and-drop. Users can reorder articles and move them between parents directly in the UI. The sequence and parent_id fields update automatically. This makes reorganization effortless as your wiki grows.

Key Fields on knowledge.article

FieldTypePurpose
nameCharArticle title displayed in sidebar and breadcrumb
bodyHtmlRich-text article content (stored as sanitized HTML)
parent_idMany2oneParent article (creates the tree hierarchy)
child_idsOne2manyChild articles under this article
internal_permissionSelectionwrite, read, or none for internal users
categorySelectionworkspace (shared), private, or shared
iconCharEmoji icon displayed next to the article title
cover_image_idMany2oneCover image from knowledge.cover displayed at article top
article_member_idsOne2manyPer-user or per-group permission overrides
is_article_visible_by_everyoneBooleanWhen True, all internal users can see the article regardless of member rules
03

Real-Time Collaborative Editing: How Multiple Users Edit the Same Article

Odoo 19 Enterprise includes real-time collaborative editing powered by the same OdooEditor engine used in the Website Builder and Email Marketing. When two or more users open the same Knowledge article, they see each other's cursors and changes appear in real time—no save button, no version conflicts, no "someone else is editing this document" lockout.

How It Works Under the Hood

The collaborative editing system uses Operational Transformation (OT) over Odoo's bus system (WebSocket on port 8072). Each keystroke generates an operation that is broadcast to all connected clients. The server merges concurrent operations and guarantees eventual consistency. The body field on knowledge.article stores the final merged HTML after all operations are applied.

Rich Content Blocks

The editor supports far more than plain text. Use the / slash command inside any article to insert structured content blocks:

Slash CommandBlock TypeUse Case
/headingH1/H2/H3 headingsSection structure within articles
/listBulleted, numbered, or checklistSOPs, step-by-step procedures
/tableResponsive tableComparison charts, pricing matrices
/codeCode block with syntax highlightingTechnical documentation, API examples
/imageInline image with captionScreenshots, diagrams
/fileAttached file download linkPDF templates, spreadsheets
/kanbanEmbedded Kanban viewLive task boards inside documentation
/list viewEmbedded List viewFiltered records from any Odoo model
/graphEmbedded Graph viewLive charts and dashboards
/articleLink to another Knowledge articleCross-referencing between wiki pages
Concurrent Editing Limit

There is no hard limit on the number of simultaneous editors. We've tested up to 15 users editing the same article without noticeable lag on a standard Odoo deployment (4 workers, 8GB RAM). Beyond 20 concurrent editors, consider splitting long articles into smaller child articles to reduce OT merge complexity.

04

Embedded Views: Live Kanban, List, and Graph Views Inside Articles

This is the feature that separates Odoo Knowledge from a generic wiki tool like Confluence or Notion. You can embed live, interactive Odoo views directly inside an article. These views query real data from any Odoo model, respect access rights, and update in real time. When a task moves to "Done" in the Project app, the embedded kanban board in your Engineering Wiki reflects it instantly.

Inserting an Embedded View

Type /kanban, /list, or /graph inside the article editor. A configuration panel appears where you select the model (e.g., project.task), apply filters (e.g., stage_id.name = 'In Progress'), and choose group-by fields. The result is a fully interactive view embedded inline:

View TypeBest ForExample Usage
KanbanVisual workflow trackingSprint board inside Engineering Wiki, recruitment pipeline inside HR Handbook
ListTabular data with sorting/filteringOpen helpdesk tickets inside Support Knowledge, inventory levels inside Warehouse SOP
GraphCharts, trends, KPIsMonthly sales chart inside Sales Playbook, expense breakdown inside Finance Wiki

To create embedded views programmatically (useful for template articles that ship with your custom module), use the embedded.view tag within the article body HTML:

XML — Embedded Kanban view in article body
<record id="article_sprint_board" model="knowledge.article">
  <field name="name">Current Sprint Board</field>
  <field name="parent_id" ref="article_engineering_wiki"/>
  <field name="internal_permission">write</field>
  <field name="body"><![CDATA[
    <h2>Active Sprint</h2>
    <p>This board updates in real time from the Project app.</p>
    <div class="o_knowledge_behavior_anchor
                o_knowledge_behavior_type_embedded_view"
         data-behavior-props='{
           "act_window": {
             "name": "Sprint Tasks",
             "res_model": "project.task",
             "view_mode": "kanban",
             "domain": "[
               [\"project_id.name\", \"=\", \"Product Development\"],
               [\"tag_ids.name\", \"in\", [\"Sprint 24\"]]
             ]",
             "context": {
               "group_by": "stage_id",
               "default_project_id": 7
             }
           }
         }'/>
  ]]></field>
</record>
Access Rights Apply

Embedded views respect the viewing user's access rights. If a sales user opens an article with an embedded HR payroll list view, they'll see an "Access Denied" message for that embedded block—not the actual data. The rest of the article renders normally. This means you can safely embed sensitive views in shared articles.

05

Template Articles and Sharing: SOPs, Portal Access, and Public URLs

Template Articles

Templates let you create reusable article structures that enforce consistency. Navigate to Knowledge > Configuration > Article Templates (or set is_template = True on any article). When a user creates a new article, they can choose "Use a Template" and the template's content, structure, and embedded views are cloned into the new article.

Common template examples:

Template NameSectionsUsed By
Meeting NotesAttendees, Agenda, Decisions, Action Items (checklist)All teams
SOP DocumentPurpose, Scope, Procedure Steps, Responsible Party, Revision HistoryOperations, Quality
Product SpecOverview, Requirements, Technical Design, Acceptance Criteria, embedded task kanbanEngineering, Product
Troubleshooting GuideSymptoms, Diagnosis Steps, Solution, Related Tickets (embedded list)Support team

Sharing with Portal Users

To share an article with portal users (external partners, clients), open the article, click the Share button in the toolbar, and toggle "Share to Portal". The article becomes visible to portal users who have been explicitly invited via the article_member_ids relationship. They can read the article but cannot edit it unless you grant write permission.

Publishing to the Public Web

For public-facing documentation (help centers, product guides, FAQs), toggle "Share to Web" on the article. Odoo generates a public URL at /knowledge/article/{{ article.id }} that is accessible without login. The published article uses a clean, read-only layout with your website's theme applied.

Python — Programmatic sharing via RPC
# Share an article to portal and web programmatically
article = env['knowledge.article'].browse(42)

# Grant portal access to a specific partner
env['knowledge.article.member'].create({
    'article_id': article.id,
    'partner_id': portal_partner.id,
    'permission': 'read',
})

# Make article publicly accessible on the web
article.write({
    'website_published': True,
})

# Generate the public URL
public_url = f"/knowledge/article/{article.id}"
06

Integrating Knowledge with Helpdesk, Project, and Other Odoo Modules

The Knowledge module isn't an isolated wiki—it connects to the rest of your Odoo ecosystem. These integrations turn static documentation into a living knowledge layer that surfaces relevant information exactly where users need it.

Helpdesk Integration

Enable this at Settings > Helpdesk > Knowledge. Once active, helpdesk agents see a "Knowledge" button in the ticket view. They can:

  • Search the entire knowledge base without leaving the ticket
  • Insert article content directly into a ticket reply with one click
  • Create a new Knowledge article from a ticket (turning a solved issue into documentation)
  • Link articles to ticket types so suggested articles appear automatically

Project Integration

Each project in Odoo 19 can have a linked Knowledge section. Navigate to Project > Settings > (your project) and enable "Knowledge". A new "Articles" tab appears on the project form. Articles created here are automatically nested under a project-specific root article and inherit the project's access permissions.

Custom Integration via Python

You can link Knowledge articles to any model using a Many2one field. Here's how to add a "Related Article" field to the CRM lead form:

Python — models/crm_lead.py
from odoo import fields, models


class CrmLead(models.Model):
    _inherit = 'crm.lead'

    knowledge_article_id = fields.Many2one(
        'knowledge.article',
        string='Related Knowledge Article',
        help='Link a Knowledge article for sales context.',
        domain="[('internal_permission', '!=', 'none')]",
    )
    knowledge_article_body = fields.Html(
        related='knowledge_article_id.body',
        string='Article Preview',
        readonly=True,
    )
07

Full-Text Search, Tags, Favorites, and the Permission Model

Full-Text Search

The Knowledge app includes a global search bar at the top of the sidebar. It performs full-text search across article titles and body content. Odoo uses PostgreSQL's tsvector/tsquery for fast text matching. Results are ranked by relevance and filtered by the user's access rights—you'll never see articles you don't have permission to read in search results.

Tags and Categorization

Articles support tags via the tag_ids Many2many field pointing to knowledge.tag. Tags appear as colored chips on the article and are searchable. Create tags at Knowledge > Configuration > Tags or inline while editing an article. We recommend a flat tag structure (no nested tag hierarchies) with naming conventions like dept:engineering, type:sop, status:draft.

Favorites

Users can star articles to add them to their Favorites section in the sidebar. Favorites are per-user and don't affect other users' views. The favorite_ids field on knowledge.article tracks which users have favorited each article.

The Permission Model

Knowledge uses a cascading permission model. Permissions are evaluated in this order:

  1. Article member rules (knowledge.article.member) — per-user or per-partner overrides. These take highest priority.
  2. Internal permission (internal_permission field) — blanket permission for all internal users: write, read, or none.
  3. Parent inheritance — if an article's internal_permission is not set, it inherits from its parent article, recursively up the tree.
Scenariointernal_permissionMember RuleResult
Company Handbook for all employeesreadHR Manager: writeEveryone reads, HR edits
Engineering Wiki restrictednoneEngineering group: writeOnly engineers see it
CEO private notesnoneCEO user: writeOnly CEO can access
Customer FAQ (public)readPortal users invitedInternal reads, portal reads via share link

Version History and Audit Trail

Every edit to a Knowledge article is tracked in the chatter (mail thread) below the article. Odoo logs the user, timestamp, and a diff of what changed. For Enterprise users, the body field also maintains revision snapshots. Click "History" in the article toolbar to view previous versions and restore any snapshot with a single click.

The revision history is particularly important for regulated industries. If you need to prove what version of an SOP was in effect on a specific date, the Knowledge history log gives you that audit trail without any third-party tool.

08

3 Knowledge Module Mistakes That Undermine Your Company Wiki

1

Flat Article Structure Creates an Unnavigable Mess

We see this constantly: teams create 200+ root-level articles with no hierarchy. Within a month, the sidebar becomes an unsorted wall of titles and nobody can find anything. Search helps, but only if you remember the exact wording. Users stop contributing because "the wiki is useless anyway"—the classic knowledge base death spiral.

Our Fix

Start with 5–7 root sections (see our recommended structure in Step 02). Enforce a rule: every new article must be created under an existing parent, never at root level. Assign a "Knowledge Owner" per root section who reviews structure monthly and merges or archives stale content.

2

Embedded Views Break When the Source Record Is Archived

An embedded kanban view filtering by project_id.name = 'Q1 Launch' works perfectly—until someone archives that project. The embedded view then shows an empty state with no explanation. Users don't realize it's because the underlying data was archived; they assume the wiki is broken. This is especially problematic for articles that reference time-bound records like sprints, campaigns, or fiscal periods.

Our Fix

Add active_test: false to the embedded view's context so it includes archived records. Better yet, use domains based on stable identifiers (IDs, tags) rather than names that might change. Schedule a quarterly review of articles with embedded views to verify they still show meaningful data.

3

Portal-Shared Articles Accidentally Expose Internal Content

When you share a parent article to the portal, its child articles do not automatically inherit the share setting—but they do inherit the internal_permission. This creates a false sense of security. An admin shares the "Customer Support" root article with a client portal user, assuming the children are also shared. But the child article "Internal Escalation Procedures" (with internal_permission = read) is still visible to internal users only. The portal user sees a broken link or empty page when they navigate to it. Worse, if someone later sets that child to website_published = True without checking the content, the internal escalation contacts and SLA details become public.

Our Fix

Before sharing any parent article, audit every child article's permissions. Create a dedicated "Public FAQ" root section where every article is explicitly designed for external consumption. Keep internal procedures in a separate root section that is never shared. Use the knowledge.article.member model to explicitly grant portal access per article rather than relying on inheritance.

BUSINESS ROI

What a Centralized Knowledge Base Saves Your Business

The Knowledge module is included in Odoo Enterprise at no extra per-user cost. The ROI comes from time saved and knowledge retained:

40%Faster Onboarding

New hires with access to a structured wiki reach full productivity in 3 weeks instead of 5. Every SOP, process, and policy is documented and searchable from day one.

2.5hSaved per Employee per Week

McKinsey estimates employees spend 1.8 hours/day searching for information. A well-structured Knowledge base with full-text search and embedded views cuts that by at least 30%.

$0Extra Tooling Cost

Replaces Confluence ($6/user/month), Notion ($10/user/month), or Google Sites + Docs. For a 50-person company, that's $3,600–$6,000/year in eliminated SaaS spend.

Beyond the numbers: institutional knowledge is a business asset that depreciates when it's not documented. Every time an experienced employee leaves without their knowledge being captured in a wiki, the company loses months of accumulated expertise. The Knowledge module makes capturing that expertise a natural part of daily work—not a separate "documentation sprint" that never happens.

SEO NOTES

Optimization Metadata

Meta Desc

Complete guide to building a company wiki in Odoo 19 Knowledge. Article hierarchy, collaborative editing, embedded views, templates, portal sharing, Helpdesk integration, and permissions.

H2 Keywords

1. "Installing and Configuring the Knowledge Module in Odoo 19"
2. "Real-Time Collaborative Editing: How Multiple Users Edit the Same Article"
3. "Embedded Views: Live Kanban, List, and Graph Views Inside Articles"
4. "3 Knowledge Module Mistakes That Undermine Your Company Wiki"

Stop Losing Knowledge When People Leave

Your company's most valuable documentation shouldn't live in someone's head, a pinned Slack message, or a Google Doc that only one person knows the link to. Odoo 19 Knowledge gives you a structured, searchable, collaboratively-edited wiki that lives inside the same system your team already uses for projects, tickets, sales, and accounting.

Start with the five root sections we outlined. Create templates for your most common document types. Enable Helpdesk integration so support agents can turn solved tickets into documentation. Set up embedded views so your wiki pages show live data instead of stale screenshots. And configure permissions so the right people see the right content.

Need help setting up your company's knowledge base in Odoo 19? We configure the article hierarchy, permissions model, templates, Helpdesk/Project integrations, and portal sharing. The setup takes 2–3 days and gives your team a wiki that people actually use.

Book a Free Knowledge Audit