Skip to main content
iVentureTeam

Odoo 20 Release Notes: General Changes

All 41 General changes from the official Odoo 20 release notes, explained in plain words with a screenshot from a live Odoo 20 database, plus where to find each one and what it means for your upgrade.

Planning the move? See our Odoo upgrade services, the Odoo 20 upgrade guide or get a number from the migration cost calculator.

New feature 16Enhancement 22Refactoring 2Removal 1In Community 38Enterprise only 3
Type
Edition

Change 1 of 41

Activities

EnhancementCommunity + Enterprise

Part 1

Various UX enhancements have been made to the scheduling, management, and tracking of activities, including in the "Schedule Activity" pop-up window and in the chatter.

Official Odoo 20 release note

In plain words

The Schedule Activity popup has a simpler layout: the activity types are buttons at the top, each field has an icon instead of a label, and call activities get a phone number line. In the chatter, email activities have a Send button, call activities a Call button, and the one-click Cancel is gone (delete now sits inside Edit).

CRM > Pipeline > opportunity > ActivityThe rebuilt Schedule Activity popup on a Call activity: icon badges for the type, then summary, phone number (prefilled from the opportunity), due date, assigned to, role and note as one column of rows.

Part 2

When creating a new activity, assign it to an individual or to a role.

Official Odoo 20 release note

In plain words

You can assign an activity to a role, meaning a group of users, instead of one person. Everyone in the role sees it, and whoever takes it clicks Assign. The activity menu at the top of the screen shows how many are waiting to be assigned.

CRM > Pipeline > opportunity > ActivityThe same popup with Assigned to left empty and the new Role row set to Sales Team. Any member of that role can claim the activity later from the chatter or the activity systray.

Part 3

Meeting activities are now more informative, both before and after a meeting.

Official Odoo 20 release note

In plain words

A meeting activity in the chatter now shows the date and time, who is attending, where it is, and a Join Meeting link. Once it is done, the chatter message links to the meeting.

CRM > Pipeline > opportunity, chatterA meeting activity in the chatter: date and time range, the three attendees, the location, then Done, View and Join Meeting. Odoo 19 showed only the summary and a Reschedule button here.

Where to find it

  1. Once: Settings > Users & Companies > Roles, create "Sales Team" with a few users.
  2. Once: on the CRM opportunity "Office Design and Architecture", schedule a meeting with attendees, a location and a video call link.
  3. Bullet 1: open the opportunity, click Activity in the chatter, pick the Call type. The phone number is prefilled.
  4. Bullet 2: in the same popup, clear Assigned to and pick the role "Sales Team". After Save the chatter shows "for @Sales Team" with an Assign button.
  5. Bullet 3: reload the opportunity. Planned Activities shows the meeting with time, attendees, location, View and Join Meeting.

For users

New popup layout, a Role line under Assigned to, an Assign button on role activities, richer meeting blocks in the chatter. To delete an activity, open Edit first.

For developers

Code that creates activities must allow an empty user when a role is set. Anything using the old Trigger Next Activity fields on activity types breaks. Views or JS that patch the Schedule Activity popup or the chatter activity need to be checked.

Upgrading from Odoo 19

New database columns for role and phone number on activities and a default role on activity types. Activity types that used Trigger chaining lose that automation; replace it with an activity plan or a server action.

  • Also changed: activity types no longer trigger a next activity automatically. Each type keeps one suggested next activity, and Done & Schedule Next opens the scheduling popup.

Change 2 of 41

Calendar view side panel

New featureCommunity + Enterprise

When the scheduling is enabled in the calendar view, easily unschedule records by dragging and dropping them into the side panel.

Official Odoo 20 release note

In plain words

Calendar views that list records still to be scheduled in the side panel (a project's tasks, Planning shifts) now work both ways. Drag a task from the calendar onto the side panel and the panel turns into a "Drop here to unschedule" zone; releasing it clears the date and the task goes back to the to-schedule list. In Odoo 19 you had to open the task and clear the date by hand.

Project > Projects > Office Design, calendar viewCaptured mid-drag: the task "Black Chairs for managers" is being pulled off 19 September onto the side panel, which has turned into the Drop here to unschedule zone.

Where to find it

  1. Project > Projects, open "Office Design", switch to the calendar view.
  2. The side panel on the right ends with "6 to schedule", the open tasks with no deadline.
  3. Drag a task from the calendar (for example "Black Chairs for managers") over the side panel: it shows "Drop here to unschedule". Release to clear the deadline.

For users

Open a project's tasks in the calendar view: the side panel lists the tasks with no date. Drag a dated task onto the panel to remove its date. The list only shows when you open the calendar from inside a project.

For developers

The to-schedule panel is now a calendar view option: add schedule="1" to a calendar arch. Override _getUnscheduleData or _getUnscheduleContext in the calendar model to change what is written on unschedule. Project's own to-plan code (project_task_calendar_list_to_plan) is gone.

Upgrading from Odoo 19

No data change. Custom modules that patched the Odoo 19 project task calendar side panel need to be rewritten on the web calendar hooks.

  • Also changed: the to-schedule list used to exist only for project tasks. It is now a standard calendar option (schedule="1" on the view), so other apps can use it. Planning already does.

Change 3 of 41

CC email recipients

New featureCommunity + Enterprise

Part 1

Add recipients in CC when sending an email from Odoo.

Official Odoo 20 release note

In plain words

The email composer has a Cc line under To. Add any contact there and they get a copy of the email.

CRM > opportunity > Send messageThe composer with the new Cc line: Billy Fox is added in copy, while Ready Mat stays the main recipient.

Part 2

Emails logged in the chatter now show who was added in CC.

Official Odoo 20 release note

In plain words

When an email with Cc recipients is posted in the chatter, the message header lists the To and the Cc people separately, so you can see later who was in copy.

CRM > opportunity, chatterThe sent email in the chatter now shows who received it: To Ready Mat and Cc Billy Fox, with their addresses.

Where to find it

  1. CRM > Pipeline, open "Office Design and Architecture".
  2. Click Send message, add Billy Fox in the Cc line, write a message and send it.
  3. The sent message in the chatter shows To Ready Mat and Cc Billy Fox.

For users

Open Send message on any record: a Cc field sits below the recipients. The chatter keeps the Cc list on every sent email.

For developers

message_post and the mail composer accept Cc partners; mail.message stores them. Code that builds outgoing emails by hand should pass Cc through the new API instead of adding headers.

Upgrading from Odoo 19

New columns and relations on mail messages; no manual step.

Change 4 of 41

Chatter filter

EnhancementCommunity + Enterprise

Partly confirmed in the Odoo 20 source code. Parts of this note could not be traced.

Filter the chatter to focus on conversations or tracked changes in the chatter.

Official Odoo 20 release note

In plain words

The chatter search has a filter menu with three choices: All, Conversations (messages and notes) and Tracked Changes (field changes only). The same three filters already exist in the Odoo 19 source; Odoo 20 mainly restyles the menu.

CRM > opportunity, chatter searchThe chatter filter menu with All, Conversations and Tracked Changes. Tracked Changes is selected, so only the creation log is left.

Where to find it

  1. CRM > Pipeline, open any opportunity.
  2. In the chatter click the magnifier, then the funnel icon next to the search box.
  3. Pick Tracked Changes: only field change messages stay.

For users

Click the search icon in the chatter, then the filter icon, and pick Conversations or Tracked Changes.

For developers

No API change found. The filter lives in mail/static/src/core/common/search_message_input.js in both versions.

Upgrading from Odoo 19

None.

  • Checked against Odoo 19: search_message_input.js in Odoo 19 already has the Conversations and Tracked Changes filters, so this entry is only partly new.

Change 5 of 41

Currency aggregates: date

EnhancementCommunity + Enterprise

When total amounts are converted from one currency to another, the exchange rate date is displayed.

Official Odoo 20 release note

In plain words

When a list total mixes currencies, Odoo converts it into one currency. Hover the total and the tooltip now says which rate was used and from which date, for example "at $ 1.16 on Sep 1".

Sales > Orders, list totalThe tooltip on the converted total: 26,724.12 EUR at a rate of $ 1.16, with the rate date Sep 1.

Where to find it

  1. Sales > Orders, filter a few orders where one is in EUR.
  2. Hover the total at the bottom of the Total column.

For users

In a list with amounts in several currencies (for example Sales Orders), hover the converted total to see the rate and its date.

For developers

res.currency returns the date of the last rate update along with the rate; the web client uses it in the aggregate tooltip.

Upgrading from Odoo 19

None.

Change 6 of 41

Decimal separator

EnhancementCommunity + Enterprise

When typing decimal numbers, either a dot or a comma can be used as the decimal separator, irrespective of the localization selected in the user's profile.

Official Odoo 20 release note

In plain words

In number fields you can type a dot or a comma as decimal separator, whatever language you use. On an English (US) profile, typing 2,5 gives 2.5 instead of 25.

Sales > Quotation, order lineTyping 2,5 in the quantity on an English (US) user. Odoo reads it as 2.5.

Where to find it

  1. Sales > Orders, open a draft quotation.
  2. In a line quantity type 2,5 and leave the field.

For users

Type decimals the way you are used to; both 2.5 and 2,5 are read as two and a half.

For developers

The number parser in the web client accepts any of the three separators. Custom widgets that call parseFloat directly do not get this behavior.

Upgrading from Odoo 19

None.

Change 7 of 41

Dialog design

EnhancementCommunity + Enterprise

The design of dialogs has been improved.

Official Odoo 20 release note

In plain words

Dialogs have a new look: more spacing, a lighter header and friendlier wording. The delete confirmation, for example, is now titled "Bye-bye, record!".

CRM > opportunity > Actions > DeleteThe redesigned delete confirmation dialog, with its new title and the Delete and No, keep it buttons.

Where to find it

  1. Open any record, click the gear or action menu and choose Delete.

For users

Confirmation and form dialogs look cleaner. Nothing changes in how they work.

For developers

Dialog styles and some default texts changed in the web client. Tests or tours that look for old dialog titles such as "Confirmation" may need updating.

Upgrading from Odoo 19

Check custom tours and tests that match dialog titles.

Change 8 of 41

Digest email KPIs

EnhancementCommunity + Enterprise

New KPIs have been added to the digest emails.

Official Odoo 20 release note

In plain words

The periodic digest email has new KPIs, grouped by app. For example eLearning (attendee registrations, certified attendees), Survey (participants, certified participants) and Events (registrations).

Settings > Technical > Digest EmailsThe KPIs tab of the digest. The boxed groups (eLearning, Survey, Events) are among the new KPIs in Odoo 20.

Where to find it

  1. Activate developer mode.
  2. Settings > Technical > Emails > Digest Emails, open "Your Odoo Periodic Digest".
  3. The KPIs tab lists the KPIs per app.

For users

Settings > Technical > Digest Emails: tick the new KPIs you want in the digest.

For developers

Apps add KPIs by adding kpi_* fields and compute methods on digest.digest. See event, survey and website_slides for examples.

Upgrading from Odoo 19

New fields on digest.digest; existing digests keep their selection.

Change 9 of 41

Download attachments in bulk

New featureCommunity + Enterprise

Download attachments in bulk via the "Technical" menu, even when the attachments are located in different apps, models, and records.

Official Odoo 20 release note

In plain words

The Attachments list (Settings > Technical) has a Download action. Select attachments from any app or record and download them together in one go.

Settings > Technical > AttachmentsFive event ticket PDFs from different registrations are selected; the new Download action is in the Actions menu.

Where to find it

  1. Activate developer mode.
  2. Settings > Technical > Database Structure > Attachments.
  3. Tick a few attachments, open Actions, click Download.

For users

Select several attachments, open Actions and click Download. Odoo gives you one zip file.

For developers

A new server action in mail adds the download to attachment list and kanban views.

Upgrading from Odoo 19

None.

Change 10 of 41

Email template preview

EnhancementCommunity + Enterprise

The email template preview interface has been improved and now allows navigation between records.

Official Odoo 20 release note

In plain words

The email template preview has a record picker with previous and next arrows. You can step through real records and see the email for each one.

Settings > Technical > Email Templates > PreviewThe preview of "Sales: Send Quotation" with the new record selector: S00053, record 1 of 10, with previous and next arrows.

Where to find it

  1. Activate developer mode.
  2. Settings > Technical > Email Templates, open "Sales: Send Quotation".
  3. Click Preview and use the arrows at the top right.

For users

Open an email template and click Preview. Use the arrows next to the record name to switch records.

For developers

The preview wizard uses a new floating record selector component in mail.

Upgrading from Odoo 19

None.

Change 11 of 41

Favorited searches

EnhancementCommunity + Enterprise

Favorited searches in a list view now retain the visible columns.

Official Odoo 20 release note

In plain words

When you save a list search as a favorite, the columns you showed or hid are saved too. Opening the favorite later brings back the same columns.

Sales > Quotations, search panelThe Favorites area with the saved search. Opening it restores the visible columns, including Customer Reference on the right.

Where to find it

  1. Sales > Quotations, show the Customer Reference column from the column picker.
  2. Search > Save current search, name it "Orders with salesperson and reference".
  3. Reset the view and pick the favorite again.

For users

Show an optional column (for example Customer Reference), save the search as a favorite, then open it again later: the column is still there.

For developers

Optional field visibility can now be set through the search context. Favorites store it in their context.

Upgrading from Odoo 19

Favorites saved in Odoo 19 do not have column settings; save them again to include them.

Change 12 of 41

File sharing on mobiles

New featureCommunity + Enterprise

Share files from your mobile device with Odoo to digitize bills and expenses, or to create tasks, leads, to-dos, and time off requests.

Official Odoo 20 release note

In plain words

With Odoo installed as an app on your phone, share a photo or file to Odoo from the phone's share menu. Odoo asks what to create: an expense, a vendor bill, a time off request, a lead, a task or a to-do.

Mobile: Share > OdooA shared receipt photo in Odoo on a phone. The buttons let you choose what to create from it.

Where to find it

  1. On a phone, add Odoo to the home screen.
  2. In the gallery, share a receipt photo and choose Odoo.
  3. Pick Expense and click Create.

For users

Install Odoo on the phone home screen, then use Share on a photo of a receipt and pick Odoo.

For developers

The PWA share target (v2) is in the web module. Apps register what they can create from a shared file.

Upgrading from Odoo 19

None.

Change 13 of 41

Gantt view

EnhancementEnterprise only

Part 1

Clicking on a row or column of a Gantt view selects all the corresponding cells.

Official Odoo 20 release note

In plain words

In multi-create mode, clicking a row header selects every cell of that row, and clicking a column header selects the whole column. Handy for creating the same record for a full period.

Time Off > Management > OverviewClicking the row header of Aka Foster selected all 30 cells of the row, ready for Apply.

Part 2

Define starting and ending buffers that are displayed in the Gantt view.

Official Odoo 20 release note

In plain words

A Gantt view can show buffers before and after each bar, for example travel time before and after a Field Service intervention.

Planning > Schedule by Resource, DayA shift with its buffer drawn before the bar (the lighter part at the start).

Part 3

Enable the "Scheduling" option of a Gantt view via Studio, then drag and drop records to/from the side panel to unschedule/schedule them.

Official Odoo 20 release note

In plain words

The scheduling side panel can be turned on for a Gantt view in Studio. Drag records from the panel onto the Gantt to schedule them, or back onto the panel to unschedule them.

Planning > Schedule by ResourceThe side panel lists 5 shifts to schedule. Drag them onto the Gantt, or drag a bar back to unschedule it.

Where to find it

  1. Bullet 1: Time Off > Management > Overview, turn on dense mode and multi-create, click an employee name.
  2. Bullet 2: Planning > Schedule by Resource, Day scale: bars show the travel buffers.
  3. Bullet 3: Planning > Schedule by Resource, open the side panel: "5 to schedule".

For users

Time Off overview: click an employee name in multi-create mode to select the row. Planning: shifts show travel buffers and a to-schedule panel.

For developers

web_gantt supports start and stop buffer fields with display conditions, and new hooks for side panel (un)scheduling data.

Upgrading from Odoo 19

None for standard views. Custom Gantt views can opt in to buffers and the side panel.

Change 14 of 41

Import product variants

EnhancementCommunity + Enterprise

When importing products, define a product variant per line and its variant-specific data, such as the attribute values, the cost, the quantity on hand, and more (available from 19.0).

Official Odoo 20 release note

In plain words

The product import template has a Product Values column. Each line can be one variant (for example Sleeves:Long, Size:S) with its own cost, price and quantity on hand. The release note says this is already available from 19.0.

Sales > Products > ImportThe import preview of the product template: the Product Values column (Sleeves:Long, Size:S) defines the variant of each line.

Where to find it

  1. Sales > Products, Actions > Import records.
  2. Upload the Import Template for Products.
  3. The Product Values column maps to Product Values.

For users

Download the import template from the Import screen and fill one line per variant.

For developers

product.template import groups lines into templates and variants based on Product Values.

Upgrading from Odoo 19

None.

Change 15 of 41

Incremental edits on duration fields

New featureCommunity + Enterprise

Use "+=", "-=", "*=", or "/=" operators to edit duration fields. For example, if the duration is 10h, typing "+=2" updates the duration to 12h.

Official Odoo 20 release note

In plain words

Duration fields accept +=, -=, *= and /=. If a task has 10h allocated, typing +=2 shows 12h right away.

Project > Task, Allocated TimeTyping +=2 in Allocated Time: the preview under the field already shows 12h.

Where to find it

  1. Project > Tasks, open a task with Allocated Time 10h.
  2. Click the field and type +=2.

For users

In any hours field, start with an operator to change the current value instead of retyping it.

For developers

The float_time field parses these formulas. Custom duration widgets that do not extend float_time do not get it.

Upgrading from Odoo 19

None.

Change 16 of 41

Label design

EnhancementCommunity + Enterprise

Product, manufacturing, and packaging labels have been redesigned.

Official Odoo 20 release note

In plain words

Product, manufacturing and packaging labels have a new design: product name at the top, a larger barcode, then reference and price on one line. More label sizes are available.

Sales > Products > Print LabelsThe first rows of a 4 x 7 label sheet. One label is boxed: name, barcode, reference and price.

Where to find it

  1. Sales > Products, select some products, Print Labels.
  2. Choose a format (for example 4 x 7 with price) and confirm.

For users

Print Labels from a product gives the new layout.

For developers

Label reports in product, stock and mrp share new base templates. Customized label QWeb views need review.

Upgrading from Odoo 19

Custom label templates that inherit the old QWeb will likely break.

Change 19 of 41

List view: expand/collapse groups

New featureCommunity + Enterprise

Quickly expand or collapse all groups of the same level in list view using the ALT + click shortcut.

Official Odoo 20 release note

In plain words

Alt + click on a group header in a list opens or folds all groups of the same level at once.

Sales > Orders, grouped by CustomerOne Alt + click opened every customer group at once.

Where to find it

  1. Sales > Orders, group by Customer.
  2. Alt + click the first group header.

For users

Group a list by Customer, then Alt + click any group header.

For developers

Handled in the list renderer; no API change.

Upgrading from Odoo 19

None.

Change 20 of 41

Mail plugins

EnhancementCommunity + Enterprise

Part 1

From the Gmail or Outlook mail plugin: Search for a contact, task, or helpdesk ticket and log your email in the chatter of any of these records.

Official Odoo 20 release note

In plain words

In the Gmail and Outlook plugins you can search for a contact, a task or a helpdesk ticket and log the email in its chatter.

Part 2

Select the relevant recipient(s) when multiple people are part of the conversation.

Official Odoo 20 release note

In plain words

When the email has several people, you pick which recipients to use.

Where to find it

  1. Install the Odoo add-in in Gmail or Outlook and connect it to your database.
  2. Open an email: search a record and click Log Email.

For users

These changes are inside the Gmail and Outlook add-ins, not in the Odoo web client.

For developers

The mail_plugin modules were refactored and company enrichment was removed from them. helpdesk_mail_plugin adds ticket search.

Upgrading from Odoo 19

Custom code relying on plugin enrichment endpoints must be adapted.

  • No screenshot: the plugins run inside Gmail and Outlook, which this test setup does not include. The server side is verified in the commits.

Change 21 of 41

Map view: unlocated records

EnhancementEnterprise only

In the map view, view records without a defined address and click to view and edit them.

Official Odoo 20 release note

In plain words

The map view lists records without an address (or that could not be located) in an Unlocated group in the side list. Click one to open it in a dialog and fill in the address.

Contacts > MapThe Unlocated group lists every contact without a usable address. Clicking one opens its form in a dialog.

Where to find it

  1. Contacts, switch to the Map view.
  2. Open the Unlocated group at the top of the side list.

For users

Contacts > Map: open the Unlocated group and click a name.

For developers

web_map renders unlocated records and opens them in a form dialog.

Upgrading from Odoo 19

None.

Change 22 of 41

Material Symbols

RefactoringCommunity + Enterprise

Font Awesome icons have been replaced by Material Symbols icons.

Official Odoo 20 release note

In plain words

Icons across Odoo now use Material Symbols instead of Font Awesome, for example the view switcher icons.

CRM > Pipeline, view switcherThe view switcher drawn with Material Symbols icons.

Where to find it

  1. Open any app, for example CRM, and look at the view switcher.

For users

Icons look slightly different everywhere; nothing moves.

For developers

Use the oi class with data-icon="name" (Material Symbols names). Font Awesome classes (fa fa-*) in custom views and templates should be migrated.

Upgrading from Odoo 19

Review custom XML, QWeb and JS that use fa-* classes.

Change 23 of 41

Mobile

EnhancementCommunity + Enterprise

Partly confirmed in the Odoo 20 source code. Parts of this note could not be traced.

Part 1

Swipe down on the main dashboard to open the command palette on mobile.

Official Odoo 20 release note

In plain words

On a phone, swiping down on the home screen opens the command palette.

Mobile: home screen, swipe downThe command palette opened on a phone.

Part 2

The date picker is opened in a bottom sheet on mobile devices.

Official Odoo 20 release note

In plain words

On phones, the date picker opens in a bottom sheet that slides up from the bottom.

Mobile: Sales > Quotation, ExpirationThe date picker as a bottom sheet on a phone.

Part 3

The design of forms on touchscreen devices has been improved.

Official Odoo 20 release note

In plain words

Forms on touch screens have a new design: each field is a bordered box with its label inside.

Mobile: Sales > QuotationA quotation on a phone: every field is a box with its label inside.

Part 4

The new mobile login screen supports secure authentication.

Official Odoo 20 release note

In plain words

A new mobile login screen supports secure authentication. Not verified from the supplied source code.

Where to find it

  1. Bullet 1: on a phone open Odoo and swipe down on the home screen.
  2. Bullet 2: open a quotation and tap the Expiration date.
  3. Bullet 3: open a quotation form.

For users

Better phone experience: quick access to the palette, easier date picking, clearer forms.

For developers

Touch detection drives these layouts. Custom form views get the new field style automatically.

Upgrading from Odoo 19

None.

  • Bullet 4 (secure mobile login) has no screenshot: no matching change was found in the source.

Change 24 of 41

Multi-record drag and drop

New featureCommunity + Enterprise

Drag and drop multiple records in list and Kanban views to reorder them or move them to another group or stage.

Official Odoo 20 release note

In plain words

Select several records in a list or Kanban view and drag them together to reorder them or move them to another group or stage.

CRM > PipelineThree selected cards dragged together: the helper reads "Move 3 records".

Where to find it

  1. CRM > Pipeline, select three opportunities in Proposition.
  2. Drag one of them to Won.

For users

CRM pipeline: select three cards, drag one of them, and all three move to the new stage.

For developers

The list and kanban renderers support multi-record drag and drop. Custom renderers overriding the drag hooks need checking.

Upgrading from Odoo 19

None.

Change 25 of 41

Multiple partner identifiers

New featureCommunity + Enterprise

Add multiple partner identifiers, such as the DUNS number or country-specific identifiers, using the multi-ID feature on a partner's contact form. Identifiers can be added by type and are validated.

Official Odoo 20 release note

In plain words

A contact can hold several identifiers, not just the Tax ID. Click + next to TIN to add another one by type (DUNS, EAN/GLN and country IDs). Odoo checks the format of each.

Contacts > Ready MatTIN, DUNS and EAN/GLN on the same contact. The + adds more.

Where to find it

  1. Contacts, open Ready Mat.
  2. Click + next to TIN, add DUNS and EAN/GLN.

For users

On a company contact, click + next to TIN and choose an identifier type.

For developers

Partner identifiers are stored in one JSON field (additional_identifiers). Localizations register their identifier types there.

Upgrading from Odoo 19

Existing identifier fields are moved into the new field. Custom code reading the old fields must be updated.

Change 26 of 41

My Subscription page

New featureCommunity + Enterprise

The new "My Subscription" page under the user menu centralizes all of a user's information, including their current subscription plan, IAP services, and database management.

Official Odoo 20 release note

In plain words

A new My Subscription page in the user menu shows your plan, your In-App Purchase services and your database (version, upgrade).

User menu > My SubscriptionThe My Subscription page: current plan, IAP services and database section.

Where to find it

  1. Click your avatar, then My Subscription.

For users

User menu > My Subscription.

For developers

New module mysubscription with a client action.

Upgrading from Odoo 19

Installed automatically.

Change 27 of 41

Offline mode

New featureCommunity + Enterprise

Part 1

Create, edit, archive, unarchive, and delete records while being offline.

Official Odoo 20 release note

In plain words

When you are offline, you can still create, edit, archive, unarchive and delete records. Odoo keeps the changes and sends them when you are back online. The Working offline menu lists what is waiting.

Contacts, offlineThe Working offline menu lists the contact created while offline, waiting to sync.

Part 2

Execute previously run searches while working offline.

Official Odoo 20 release note

In plain words

Offline, the search bar offers the searches you already ran, so you can run them again.

Contacts, offline searchOffline, the search bar offers the earlier search Name: Ready.

Where to find it

  1. Bullet 1: open Contacts online, go offline, create a contact and save.
  2. Bullet 2: run a search online, go offline, open the search bar.

For users

A yellow Working offline badge appears; your changes sync later.

For developers

Offline support is in the web client. Views must be visited once online to be available offline.

Upgrading from Odoo 19

None.

Change 28 of 41

Partner autocomplete

RemovalCommunity + Enterprise

When a partner is created using the Autocomplete feature, industry information is no longer automatically added as partner tags. This information remains available in the chatter (available from 17.0).

Official Odoo 20 release note

In plain words

Creating a company with Autocomplete no longer turns its industry into contact tags. The company information is posted in the chatter instead. The release note says this applies from 17.0.

Where to find it

  1. Contacts > New, type a company name and pick an Autocomplete suggestion.

For users

No new tags appear after autocomplete; look in the chatter for the industry.

For developers

partner_autocomplete posts the data in the chatter through iap_mail.

Upgrading from Odoo 19

Existing tags are kept.

  • No screenshot: Autocomplete needs IAP credits and a live connection, not available in this setup.

Change 29 of 41

Pin messages in the chatter

New featureCommunity + Enterprise

Pin important messages in the chatter.

Official Odoo 20 release note

In plain words

Pin a message in the chatter to keep it on top. The pin icon opens a Pinned Messages list.

CRM > opportunity, chatterThe Pinned Messages panel above the chatter with the pinned email.

Where to find it

  1. CRM > Pipeline, open an opportunity.
  2. Hover a message and click Pin, then click the pin icon in the chatter header.

For users

Hover a message, choose Pin. The pin icon in the chatter header shows all pinned messages.

For developers

mail.message has pinned_at on chatter messages too (Discuss already had it).

Upgrading from Odoo 19

None.

Change 30 of 41

Portal layout

New featureCommunity + Enterprise

Reorder the cards in the user portal.

Official Odoo 20 release note

In plain words

In the website editor, the portal home page lists all its cards. Drag them to change the order, or switch them off to hide them.

Website editor on /myThe portal card list: drag the handles to reorder, use the toggles to hide a card.

Where to find it

  1. Website, go to /my, click Edit.
  2. Click the page background, open Style > Page Options.

For users

Open /my in the website editor, click the page background, and use the card list in the Style tab.

For developers

portal.entry records drive the cards (sequence, show_in_portal). The website builder has a portal card option.

Upgrading from Odoo 19

Portal card templates changed; custom portal cards should become portal.entry records.

Change 31 of 41

Record deletion

EnhancementCommunity + Enterprise

If a record cannot be deleted, the option to archive it is offered instead.

Official Odoo 20 release note

In plain words

If a record cannot be deleted because other records use it, Odoo says where it is used and offers to archive it instead.

Sales > Products > DeleteThe product is used in a sales order line, so Odoo offers Archive instead.

Where to find it

  1. Sales > Products, select "Elevator Installation" (used on a confirmed order).
  2. Actions > Delete, confirm.

For users

Delete a product used on a confirmed order: click Archive in the dialog.

For developers

The web client catches the database RESTRICT error and shows this dialog.

Upgrading from Odoo 19

None.

Change 32 of 41

Relative range tooltip

EnhancementCommunity + Enterprise

In a search, a tooltip indicates the resulting dates used when selecting a relative range (e.g., "Last 30 days").

Official Odoo 20 release note

In plain words

In a custom filter on a date, the relative ranges (Today, Last 7 days, Last 30 days...) show a tooltip with the real dates. Hovering Last 30 days showed Aug 27 → Sep 25 on the test date.

Sales > Orders > Custom FilterThe Last 30 days range in a custom filter. The browser tooltip on it (Aug 27 → Sep 25) does not appear in screenshots.

Where to find it

  1. Sales > Orders, Filters > Add Custom Filter.
  2. Pick Order Date, operator is in, value Last 30 days, then hover it.

For users

Hover the range choice to see which dates it covers.

For developers

Tooltips are title attributes in the tree editor.

Upgrading from Odoo 19

None.

Change 33 of 41

Rich-text editor

EnhancementCommunity + Enterprise

The media editor toolbar in the rich-text editor has been simplified.

Official Odoo 20 release note

In plain words

The image toolbar in the text editor is shorter. The description and transform buttons are gone and the rest are reordered.

Project > Task, descriptionThe simplified image toolbar above the picture.

Where to find it

  1. Project > Tasks, open a task with an image in its description.
  2. Click the image.

For users

Click an image in a description field to see the new toolbar.

For developers

html_editor image plugins changed. Custom toolbar buttons that relied on removed ones need review.

Upgrading from Odoo 19

None.

Change 34 of 41

Product catalog: units of measure

EnhancementCommunity + Enterprise

Select the unit of measure or packaging to use when adding products via the catalog.

Official Odoo 20 release note

In plain words

In the product catalog of a quotation or purchase order, choose the unit or packaging next to the quantity. It shows when the product has more than one unit.

Sales > Quotation > CatalogPedal Bin in the catalog with Pack of 6 chosen in the new unit menu.

Where to find it

  1. Settings: enable Units of Measure & Packagings. On Pedal Bin, add Pack of 6.
  2. Sales > quotation > Catalog, add Pedal Bin, pick Pack of 6.

For users

Turn on Units of Measure, give a product a packaging, open the catalog: a unit menu appears next to the quantity.

For developers

The catalog reads available units from product._get_available_uoms().

Upgrading from Odoo 19

None.

Change 35 of 41

Sendcloud shipping labels

EnhancementEnterprise only

Choose the format for Sendcloud shipping labels: PDF, ZPL, or PNG.

Official Odoo 20 release note

In plain words

On a Sendcloud shipping method, choose the label format: PDF, PNG or ZPL.

Shipping Methods > SendcloudThe Label Format field with PDF, PNG and ZPL.

Where to find it

  1. Open a Sendcloud shipping method.
  2. In the SendCloud Configuration tab, open Label Format.

For users

Inventory > Configuration > Shipping Methods, open a Sendcloud one, set Label Format.

For developers

New field sendcloud_label_type sent to the Sendcloud API.

Upgrading from Odoo 19

Existing carriers get the default (PDF).

Change 36 of 41

Simplified access rights

RefactoringCommunity + Enterprise

Access rights have been simplified by removing record rules and adding a domain directly at the access right level to determine which records the access right applies to.

Official Odoo 20 release note

In plain words

Access rights and record rules are now one model, ir.access. Each line gives a group some operations on a model, and can have a domain. With a group it is a permission; without a group it is a restriction (like a global record rule).

Settings > Technical > Access Rights"Account multi-company" was a record rule. Now it is an access line with a domain, type Restriction.

Where to find it

  1. Activate developer mode.
  2. Settings > Technical > Access Rights.

For users

Settings > Technical > Access Rights shows one list with a Domain column and a Type (Permission or Restriction).

For developers

ir.model.access and ir.rule are gone. Modules ship security/ir.access.csv with id, name, model_id, group_id/id, operation (letters crud), domain.

Upgrading from Odoo 19

Big one for custom modules: convert ir.model.access.csv and ir.rule records to ir.access.

Change 37 of 41

Tablets: bottom sheets

EnhancementCommunity + Enterprise

Bottom sheets, i.e., content panels that slide up from the bottom of the screen, are now enabled for tablets in touch mode.

Official Odoo 20 release note

In plain words

On tablets in touch mode, menus open as bottom sheets like on phones.

Tablet: CRM > opportunity > actionsThe action menu as a bottom sheet on a tablet.

Where to find it

  1. On a tablet, open a CRM opportunity.
  2. Tap the gear (⋮) next to the title.

For users

On a tablet, the action menu of a form slides up from the bottom.

For developers

Bottom sheet use is decided by touch support, not only screen size.

Upgrading from Odoo 19

None.

Change 38 of 41

Tax included/excluded on orders and invoices

New featureCommunity + Enterprise

Switch between "Tax Included" and "Tax Excluded" prices on sales orders, purchase orders, and invoices. Individual taxes can be configured to override this feature.

Official Odoo 20 release note

In plain words

Sales orders, purchase orders and invoices have a Tax Excl. / Tax Incl. switch. Switching it shows and enters prices with or without tax. A tax can be set to ignore the switch.

Sales > QuotationThe Tax Excl. / Tax Incl. switch with Tax Incl. selected.

Where to find it

  1. Sales > Quotations, open a draft.
  2. Click Tax Incl. above the order lines.

For users

On a draft quotation, click Tax Incl. above the lines.

For developers

New field document_tax_mode; tax computation uses it through _is_price_included.

Upgrading from Odoo 19

Default mode follows the current taxes.

Change 39 of 41

Text messages

New featureCommunity + Enterprise

Schedule text messages and insert dynamic placeholders in SMS templates.

Official Odoo 20 release note

In plain words

The SMS composer has a Send Later button. Pick a time and the SMS is scheduled. SMS templates also have a button to insert dynamic placeholders.

Contacts > Send SMSThe SMS composer after choosing a time: Schedule, and "Sending Sep 26, 8:00 AM".

Where to find it

  1. Contacts, open Billy Fox, send an SMS.
  2. Click the clock icon, pick Tomorrow Morning, Save.

For users

Send SMS, click the clock, choose Tomorrow Morning, then Schedule.

For developers

sms.composer has scheduled_date and action_schedule_message.

Upgrading from Odoo 19

None.

Change 40 of 41

Translation

New featureCommunity + Enterprise

Part 1

Install the "Translation Mode" module to enable entering translation mode via the command palette. Translation mode opens an in-context and interactive translation UI to streamline the module translation process using Weblate.

Official Odoo 20 release note

In plain words

Install Translation Mode, then in developer mode use the command palette: "Activate interactive translation mode". You translate the screens in place, through Weblate.

Command palette, developer modeThe Activate interactive translation mode command.

Part 2

Import multi-language data into translatable text fields via Excel or CSV.

Official Odoo 20 release note

In plain words

Import translations: add columns like Name@fr_FR next to Name@en_US in your CSV or Excel file.

Products > ImportName@en_US and Name@fr_FR are both mapped to Name, each with its language.

Part 3

Export translatable fields per language, along with their ISO language code.

Official Odoo 20 release note

In plain words

Export a translatable field in chosen languages. Each column gets the language code.

Products > ExportThe Languages option set to French.

Where to find it

  1. Bullet 1: Apps, install Translation Mode. In developer mode press Ctrl+K and type translation.
  2. Bullet 2: Products, Import, upload a file with Name@en_US and Name@fr_FR.
  3. Bullet 3: Products, select one, Export, add French in Languages.

For users

Translate the interface in place, and import or export multi-language data with one file.

For developers

Import column format is field@lang_code. Export has a Languages option. The module is test_translation_mode.

Upgrading from Odoo 19

None. Do not use Translation Mode on production databases.

Change 41 of 41

Translation wizard

EnhancementCommunity + Enterprise

Use the new translation wizard to ease the translation of text and HTML fields.

Official Odoo 20 release note

In plain words

The translation dialog for text and HTML fields was rebuilt. It lists each language with its value so you can edit them side by side.

Sales > Product > NameThe translation dialog for Name with English and French.

Where to find it

  1. Sales > Products, open a product.
  2. Click the language code (EN) in the Name field.

For users

Click the language code next to a translatable field.

For developers

The translation dialog was refactored in the web views.

Upgrading from Odoo 19

Customizations of the old translation dialog need review.

See all 585 Odoo 20 changes across 52 apps

Odoo 20 General: common questions

What is new in Odoo 20 General?

The official Odoo 20 release notes list 41 General changes (16 new features, 22 enhancements, 2 refactorings, 1 removal). They include Activities, Calendar view side panel, CC email recipients, Chatter filter and more.

Are the Odoo 20 General changes available in Community edition?

38 of the 41 changes are in Odoo 20 Community (and Enterprise). 3 are Enterprise only. Each change on this page is labeled with its edition.

Do Odoo 20 General changes affect my customizations when upgrading from Odoo 19?

18 of the 41 changes have something to check when upgrading from Odoo 19, for example Activities, Calendar view side panel, CC email recipients. Each change on this page has an "Upgrading from Odoo 19" note. Test custom modules on a copy of your database before moving production.

How do I upgrade General to Odoo 20?

Restore a copy of your database, run the Odoo 20 upgrade on the copy, fix any custom modules that extend General, then test your main General flows with real users before switching production. iVentureTeam runs Odoo upgrades end to end, including custom module migration and user testing.

Odoo services for this

More Odoo 20 release notes

Planning your Odoo 20 move

Want these General changes in your database?

We upgrade Odoo databases with their customizations and data intact, and test every custom module against the new version before go-live.