- APPS
- Viindoo Customizer 19.0
Change how Odoo looks and works - without writing a line of code
For companies that run Odoo Community or Viindoo themselves, and the consultants who customize it for them
Shape Odoo around the way your business works - no code required
Click Customization Mode in the top bar and the screen you are on opens in a live editor. Move fields, add columns and filters, create new fields, models and apps, edit menus and lay out printed reports. Your edits stay on the right element when apps are updated, and you can export the whole set as an installable module for another database.
At a Glance
The facts of Viindoo Customizer, in one place. Published by Viindoo.
Is this you?
Adding one field or one column to a screen means a developer ticket and a wait.
You edited a view by hand, and after an app update the change stopped working or moved to the wrong field.
You build the same customizations again on every client database, or again from test to production.
A custom field such as a margin or an internal note is visible to everyone who can open the screen.
Moving a block on a quotation or a delivery slip needs someone who can edit report templates.
What You Get
Every small change waits for a developer.
→ Make it yourself on the live screen - drag, drop, set a property, save. Undo and Redo are always one click away.
Hand edits break or drift after app updates.
→ Keep every edit on its element. An edit that can no longer find its element is set aside, never applied somewhere else, and you decide whether to retry, re-anchor or delete it.
Rebuilding the same work on each database.
→ Export it once as an installable module, check exactly what travels before you download, and import it wherever you need it.
Custom data seen by the wrong people.
→ Restrict a custom field to chosen groups everywhere it appears - screens, exports and the API - while administrators keep access.
Report layout changes need template code.
→ Lay out printed reports by drag and drop on a live preview, then check the real print preview.
How it works
One person does it all: an administrator (Role: Administrator).
Open
Click the Customization Mode icon in the top bar. On a screen the Customizer can edit, the editor opens on that very view; anywhere else it opens the Customizer home with your apps.
Edit
Rearrange the canvas, set field properties, add fields, models, apps and menus, or open Reports to lay out a printed document. Undo, Redo and Undo All cover every step.
Review
After an app update, a notice on the editor lists any detached changes (Retry, Re-anchor, Delete) and any changes that may move (Pin to current element, Re-anchor, Delete).
Carry
Click Export, read the pre-export check, download the module and load it on another database with Import Module.
Key Features
Every view type, one live canvas
Form, list, kanban, search, calendar, graph, pivot and activity views from one editor. Switch view types, add one the model does not have yet, or open Edit Source Code for advanced XML.
New fields, models, apps and menus
Add plain, related or selection fields to any model, create models from ready-made templates, launch a new app with its own icon, and add, rename or reorder menus.
Printed reports by drag and drop
Start from an external, internal or blank layout, drag rows, columns, fields, text, images and tables onto a live preview, and set paper format and print menu.
Control who sees what
Restrict a custom field to chosen groups across screens, exports and the API, hide one element on one screen per group, and edit the model's access rights in place.
Edits that survive app updates
Each edit is anchored on its element's identity. If the element disappears, the edit is set aside as a detached change, never applied to another element.
Carry your work to another database
The Export button checks what will not travel, what travels as is and what must be fixed first, then packs an installable module with EXPORT_NOTES.txt.
What This App Does Not Do
Read this before you buy.
It is a separate app for Odoo Community and Viindoo.
For automated actions, the Tools menu opens the core Automations editor (base_automation), already filtered to the model you are customizing.
Users without the Role: Administrator (the Role field on the user form) do not see Customization Mode.
Such edits are always listed under "Changes that may move" so you can pin or re-anchor them.
Export first; the uninstall wizard lists what will be deleted.
Your other customizations keep working, and the uninstall wizard names the fields affected.
Works Well With
The Customizer edits the screens and reports of the apps you already run, for example:
Sales
Add fields and columns to quotations and orders, and adjust the printed quotation.
sale_managementWho Should Use Viindoo Customizer?
Business owner or operations director
Pain: every screen change becomes a developer request and a wait.
Gain: Odoo keeps up with how the business works, and changes stay in place through app updates.
In-house Odoo administrator or power user
Pain: hand-editing view XML and finding it broken after an update.
Gain: edit on the live screen, with a clear list of anything that needs attention after an update.
Implementation consultant or Odoo partner
Pain: rebuilding the same customizations on each client or each environment.
Gain: export once as an installable module, check what travels, import it without overwriting the target's own work.
IT lead
Pain: unclear dependencies and uninstall consequences.
Gain: four standard dependencies, every change held in one data module, and an uninstall wizard that says what goes.
Best for: companies that run Odoo Community or Viindoo themselves and want their administrator to shape screens, fields, apps and reports without a developer, and the partners who carry those customizations from one database to another.
Features
Edit the screen you are on
Click Customization Mode and drag fields, groups and notebook pages on the live form.
Switch view types or add a new one
Move between the model's views, or add a kanban or calendar view it does not have yet.
Add a field in a short dialog
Drop a field type on the form, name it, and choose its groups.
Launch a new app
Name the app, design or upload its icon, and create its first menu.
Lay out a printed report
Drag fields, text, images and tables onto a live preview of the document.
Restrict a custom field to groups
Choose the groups that may see a custom field everywhere it appears.
Review changes after an app update
See detached changes and changes that may move, and retry, re-anchor, pin or delete each one.
Check before you export
See what is not carried, what is carried as is and what must be fixed first.
Import into another database
Load the exported module with the standard Import Module wizard.
Frequently Asked Questions
Do I need a developer or Odoo Enterprise?
No. Screens, fields, models, apps, menus and reports are all built in the visual editor on Odoo Community or Viindoo. Edit Source Code is there for advanced XML changes, but you never have to use it.
Will my changes survive an app update?
Each edit is anchored on its element's identity, so it stays on that element when an update adds or moves things around it. If the element is gone, the edit is set aside as a detached change - it never lands on another element - and you choose Retry, Re-anchor or Delete. An edit that can only be anchored by position is listed under "Changes that may move" so you can pin it.
Can I move my customizations to a client's database, or from test to production?
Yes. The Export button runs a check first: what is not carried, what is carried as is but should be checked on the target, and what must be fixed before exporting. The download is an installable module with an EXPORT_NOTES.txt file. On the other database, load it with Import Module.
Will an import overwrite changes made on the target database?
No. What the target database's own Customizer created, and the edits it made to the screens of installed apps, are kept as they are when a module is imported or updated. Records that came in with an earlier import belong to that import, so importing a newer version of it updates them.
Who can use it, and where do I start?
Administrators (Role: Administrator). Click the Customization Mode icon in the top bar: it opens the editor on a screen the Customizer supports and the Customizer home everywhere else. The icon appears on screens of tablet width and up; on a narrower window the editor's side panel becomes a drawer you open with Toggle panel.
What happens if I uninstall it?
Uninstalling the Customizer removes only the editor; your customizations keep working, but group restrictions on custom fields stop applying. Uninstalling Viindoo Customization Data removes every customization, and its wizard lists what will be deleted and recommends exporting first.
Can I add automations or business rules?
The Customizer does not write Python. Its Tools menu opens the standard Automations, Webhooks and Filter Rules editors, already filtered to the model you are customizing.
See Viindoo Customizer in Action
v19demo-int.viindoo.com
Sign in as an administrator and click Customization Mode in the top bar, or use the Live Preview button at the top of this page.
The Documentation tab of this app
Need help with Viindoo Customizer?
For questions, implementation help or a custom feature, contact Viindoo.
Pre-Sales and Partnership
sales@viindoo.comPlease include your Odoo or Viindoo version, the number of users and the apps you use.
Technical Support
apps.support@viindoo.comPlease include your Odoo or Viindoo version, the technical name viin_customizer, the steps to reproduce, and screenshots if you have them.
Technical Requirement
Changes log
19.0 - re-enabled on the 19.0 series
- New Update-safe anchoring - edits stay on their element; displaced ones are set aside as detached changes (Retry, Re-anchor, Delete) and position-based ones are listed as changes that may move (Pin to current element, Re-anchor, Delete).
- New Three-group pre-export check (not carried, carried as is, fix before exporting) with EXPORT_NOTES.txt in the exported module.
- New Field access groups for custom fields, enforced across screens, exports and the API.
- Improved On narrow windows the editor's side panel becomes a drawer opened with Toggle panel.
- Improved The report editor now runs on Odoo's html_editor.
Viindoo Customizer
Viindoo Customizer lets an administrator change forms, lists, kanban cards, menus, search filters and print reports directly on the screen being edited, without writing code. What is shown while editing is exactly what the people using that screen will see afterwards. Every customization can be exported as an installable module and imported into another database.
Installation
- Open Apps.
- Search for Viindoo Customizer.
- Click Activate on the Viindoo Customizer card.
Installing Viindoo Customizer also installs the few Odoo apps it depends on, such as Discuss and Automation Rules, if they are not already installed. No further setup is required to start using it.
Configuration
Viindoo Customizer is used by one role: the System Administrator - typically the person who sets up Odoo for the company - who customizes screens, reports, models, menus and access rights on the live database, then exports them for other databases.
Only a user whose Role is Administrator sees the Customization icon. To grant it, open Settings‣Users & Companies‣Users, open the user, and set Role to Administrator on the Access Rights tab.
A few behaviors apply everywhere in the Customizer, worth knowing before the first use:
- The Customization icon is not shown on a screen narrower than 768 px (a phone). Start the Customizer from a wider window; if that window is narrowed afterwards, the Customizer keeps working with its left panel turned into a drawer (see Work on a narrow screen below).
- The canvas and the Label box show labels in your interface language. A label that has no translation in that language, such as a field you created in English only, is shown in the language it was created in.
- The canvas always shows every element so that it can be selected and edited: invisible and column-invisible elements (including ones the Customizer itself hid), elements restricted to security groups the editing administrator does not belong to, and hidden notebook pages, button-box buttons, kanban parts and search filters. An element that people using the screen will not see stays marked with a hatched (striped) placeholder, so you still know what they will not see. Because the Customizer runs in developer mode, content that Odoo reserves for technical features is shown as well. Saving never changes an element the editing user cannot see, even when another element on the same screen shares its name.
Usage
Open the Customizer
Open the screen to customize, for example Sales‣Orders‣Orders.
In the top-right systray, click the cogs icon titled Customization Mode.
The icon is never disabled. On a screen the Customizer can edit, it opens the Customizer on that screen. On any other screen - the home screen, Discuss, a dashboard - it opens the Customizer's landing page, Choose an app to customize: open an app from the menu to edit its screens, or use New App, Export and Import in the top bar. When you open the Customizer from such a screen, a notice also tells you that the action is not supported in customization.
Opening the Customizer switches the page into developer mode for the rest of the session. The editor then opens full-screen: a dark top bar with Edit Menu, New Model, Export, Import, New App and Close; a toolbar with Undo All, Undo, Redo, Reports, Access Rights, Tools and the view-switcher icons; the same screen re-rendered as a live, editable canvas; and a left panel with Add, View and Properties tabs. When the window is too narrow for the whole toolbar - or the labels are longer in your language - the items that do not fit, such as Reports and Access Rights, move into the More menu (the three-dot button). For a kanban view, the canvas shows a single sample card rather than the full board.
What you change in an installed Odoo app - a menu such as Sales, an action, a field label, a report, a view - stays yours when the app is updated or upgraded. The menus, actions, reports and other records of the app that you edit keep their protection: an update does not overwrite them. A view edit stays on the element it was made on; if an update removes or reshapes that element, the edit can no longer apply, so it is set aside as a detached change instead of landing on another element (see Detached changes and changes that may move below).
Click Close in the top-right corner to leave the Customizer and return to the screen.
Work on a narrow screen
When the window is narrower than 768 px, the Customizer rearranges itself so that the canvas keeps the full width:
- The left panel becomes a drawer. Click Toggle panel (the three-line button in the toolbar) to slide it open over the canvas, and click it again - or press Esc, or click the dimmed canvas - to close it. Clicking Re-anchor in the detached-changes notice closes the drawer by itself, so that you can click the element on the canvas; the hint telling you to do so then shows above the canvas.
- In the top bar, Edit Menu, New Model, Export and Import show only their icons; hover an icon to see its name. New App and Close keep their labels.
- The app's own menus are reached from the menu button at the start of the top bar.
Edit a form view
Open a record's form, then start the Customizer.
Click a field on the canvas - its value, not just its caption text. Every editable element shows a dashed outline on hover. Clicking a field's value selects it and switches the left panel to the Properties tab, showing that field's Class, Invisible (with a Condition link to make it conditional), Required, Readonly, Bold, Technical name, Type, Label, Help Tooltip, Placeholder, Widget and, for a relational field, Domain and Context. Every selected element also gets Limit visibility to groups and Forbid visibility to groups, to restrict who sees it on this screen. A selected field also shows a Field access section (see Field access below). Clicking only a field's separate caption text (where the screen lays one out on its own) selects just that caption, offering its Label plus the same group-visibility controls.
Click Remove to take the field off the form, then confirm. A field that belongs to the original screen is hidden rather than deleted, so other apps that build on this screen keep working; to bring it back later, select the hatched field directly on the canvas and clear Invisible. A field you added with the Customizer is deleted. If the field is required and has no default value, the confirmation also warns that hiding it may block creating new records. The left panel then clears back to the Add tab, since nothing is selected anymore.
Click Undo in the toolbar to bring it back, or Redo to remove it again. Click Undo All to discard every change made since the Customizer opened, after a confirmation. Every change is saved at once - the toolbar shows Saved - and the canvas updates live, with no page reload.
To add a smart button to the button box, click the + tile titled Add a stat button, before the existing stat buttons. Fill in a Label, pick an Icon and choose a related field under Select a related field in the Add a Button dialog, then click Confirm.
To add a button to the form's header, next to the existing action buttons, click + Add a button, give it a label, and choose whether it runs a server action or calls a method.
Field access
Limit visibility to groups hides one element on one screen. Field access goes further: it restricts the field itself, wherever it appears. It is available for custom fields - the fields whose technical name starts with x_, as every field created with the Customizer does.
Select a custom field on a form or list canvas.
In the Properties tab, scroll down to Field access and choose one or more access groups, for example Sales / User: All Documents.
Users outside those groups cannot see, read or change the field anywhere - views, exports and the API. Automated actions run with full rights, so the restriction does not apply to them. Administrators always keep access, shown by the fixed Administrators (always kept) tag. A few rules apply:
- The field that holds the record's name cannot be restricted.
- A required field can be restricted only while it has a default value that applies to every user, company and condition.
- For a standard field, access is defined by the module that provides it and cannot be changed here; the section says so.
- To restrict a new field from the start, fill in Field access (all views) in the Create a new field dialog (see Create new fields below).
The access groups of a custom field are enforced by the Customizer. If Viindoo Customizer is uninstalled, they stop applying (see Uninstall a customization below).
Edit a list view
Open the list, then start the Customizer.
Click a column header or any cell of that column to select it. The Properties tab shows the same properties as a field on a form - Class, Invisible, Required, Readonly, Bold, Technical name, Type, Label, Widget, Domain and Context for a relational field, the group-visibility controls and Field access - plus a Remove button for that column.
Type a new value in Label to rename the column header shown to end users.
Click Remove to drop the column, then confirm. As on a form, a standard column is hidden and a column you added is deleted. Undo and Redo work the same way as on a form.
Edit a kanban view
Open the kanban view, then start the Customizer. The card shown on the canvas is a single live sample record, not the full board.
On the Add tab, open Components to see the four structural pieces a card can carry: Side Panel, Menu, Ribbon and Color Picker (each one only listed while the card does not already have one). Expand Existing Fields to see the model's fields as draggable rows; type in Search fields to filter them, or click the + next to the heading, titled Create new field, to create one.
Drag an existing-field row, or a component, onto the card to place it.
Unlike a form or list, a kanban card has no New Fields tile grid - only existing fields and the four structural components can be dropped onto it.
Control who can create, edit or delete
The View tab also carries record-level and display options for the view type currently open:
Form and List - toggle Can Create, Can Edit and Can Delete to control whether users may add, change or remove records from this screen.
List only - choose When Creating Record (how a new row opens), toggle Enable Mass Editing and, once the list is editable, Show link to record; set Sort By (and then Order), and a Default Group By.
Kanban only - toggle Can Create and Quick Create (to create records straight from the board), set Sort By (and then Order), toggle Open Record On Click, and choose a Highlight Color Field.
Every view's View tab also carries Edit Source Code and a destructive Reset Default button - it discards only the changes made to that view in this database and cannot be undone with Undo, only by customizing it again. Changes that came from an imported module stay: they can only be changed in the database that exported them, then imported again (see Import customizations below).
Switch between view types
Inside the Customizer, the toolbar's view-switcher icon group (after Tools) lists one icon per view type already active for the current screen, followed by the magnifier icon of the search view. Hover an icon to see which view it opens (Form view, List view, Kanban view, and so on). Click any icon to swap the canvas to that view type instantly, without leaving the Customizer.
Add a new view type
Click the + icon at the end of the view-switcher group, titled Add view. It only appears when at least one addable view type remains - a screen that already has every view type, such as Sales‣Orders‣Orders, has none.
Pick a type from the dropdown, for example Pivot.
The canvas switches to the new view type immediately, seeded with sensible defaults for the model, and its icon now stays in the view-switcher row for this screen. The screen still opens on the view it opened on before; the new type is listed after the existing ones.
To take a view type away again, switch to it, open the View tab, click Remove View and confirm. The Customizer can remove a view type only when it created that view type itself - one you added with Add view, or the list and form views it generated for a model you created with New Model. The view type and every customization made to it are removed from this screen; this cannot be undone. View types that came with an installed app cannot be removed.
Edit the search view
In the Customizer, click the magnifier icon at the end of the view switcher to open the search view - it cannot be added from the Add view dropdown.
The canvas shows the search panel's Filters, Group by and Favourites columns, and the Autocompletion Fields offered while typing in the search box.
On the Add tab, open Components to drag a Filter or a Separator onto the filters, or expand Existing Fields to drag a field into the group-by, filter or autocompletion zone.
Hidden search elements are not left out: the canvas always shows them, marked with a hatched (striped) placeholder, so they can be selected and edited too.
Configure a Calendar, Graph, Pivot or Activity view
These four view types cannot be edited by clicking the canvas. Every option lives on the View tab instead:
Calendar - toggle Quick Create to allow creating records straight from the calendar, and choose the Start Date Field, Stop Date Field, Delay Field, Color field, the All Day field and the Default Display Mode (Day, Week, Month, Year).
Graph - choose the chart Type (Bar, Line, Pie) and its Sorting, toggle Access records from graph and Stacked graph (hidden when Type is Pie), and choose the First dimension, Second dimension and Measure.
Pivot - toggle Access records from cell to allow opening the underlying records from a pivot cell, and choose the Column grouping, Row grouping - First level, Row grouping - Second level and Measures.
Activity - has no options of its own; its View tab offers only Edit Source Code and Reset Default, the same as every other view type.
Every change on the View tab redraws the canvas immediately.
Create new fields
On a form or list view's Add tab, the New Fields tile grid offers about twenty field types - Text, Multiline Text, Integer, Date, Selection, Many2one, Tags, Image, Related Field and more. Click a tile, or drag it onto the canvas, to open the Create a new field dialog. A dragged tile places the new field at the drop point; a clicked tile lets the Customizer choose the place, and you can drag the field elsewhere afterwards.
A plain field - fill in Field Name (the box already starts with x_; keep that prefix), Field Label (what end users see) and, optionally, Field Help, then click Save (or Discard to cancel). To restrict the new field to some groups from the start, also fill in Field access (all views) under Properties (see Field access above). The field appears live on the canvas.
A related field - click the Related Field tile, fill in Field Name, then type the source path in Related Field Definition (for example create_uid.email). Odoo fills in Field Type automatically once the path is recognized - no manual type choice is needed. Field Label is required even for a related field.
A selection field - click the Selection tile, fill in Field Name and Field Label, then under Selection Options click Add a line to add one Value / Name pair per option. Drag the handle to reorder options.
Create a new model
In the top bar, click New Model.
Fill in Model name - the x_ prefix is shown fixed in front of the box, so type only the rest, for example delivery_route, and the new model is named x_delivery_route. If you type x_ at the start anyway, it is dropped, so the prefix never appears twice. Fill in Model description, then click Configure Model; the button stays disabled until a model name is typed.
In the Suggest features for new model dialog that opens next, tick which views to generate under View Active (Form View, List View, Pivot View, Graph View) - Form View and List View are ticked by default.
Optionally tick one or more Model Templates to add ready-made fields and behavior: Contact details, Company, Chatter, User assignment, Date & Calendar, Pipeline stages, Tags, Picture, Lines, Notes, Monetary value, Custom Sorting and Archiving. Chatter, Custom Sorting and Archiving are ticked by default; untick any of them the model does not need. Picking the Company template also adds a record rule that restricts each record to its own company - a record left without a company stays visible to every company. Picking Pipeline stages, Tags or User assignment makes the new field available as a trigger ("Stage is set to", "Tag is added", "User is set") when creating an automation rule on this model afterward, unless the model also uses the Company, Contact details or Monetary value template - in that case the trigger may bind to one of those fields instead.
Scroll down to the Access Rights section and click Add a line to grant a security group read, write, create or delete access to the new model.
Click Create Model (or Back to return to the first step).
The Customizer opens directly into editing the new model's freshly generated list view, and a menu item for the new model is added to the current app's menu.
Create a new application
In the Customizer's top bar, click New App. The button is there on every Customizer screen, including the landing page.
On the welcome page, click Start now.
Type the app's name, then design its icon (choose the colors and the pictogram) or click Upload Icon.
Click the right arrow to advance, then type the name of the first menu's object and choose whether it opens a New Model or an Existing Model.
Choosing New Model opens the same Suggest features for new model dialog described above; finish it, then finish the wizard. The new app appears in the Odoo app switcher with the chosen icon, containing one menu that opens the newly created model's list and form.
Edit the application menu
In the top bar, click Edit Menu to open the current app's full menu tree.
Click Add a new menu item, fill in the Add Menu form (Menu, an Action to open, plus the Access Rights and Submenus tabs), then click Save - the menu item is created immediately and already appears in the real app menu, even before the tree dialog is closed.
Use the pencil icon on a row to rename or edit it, and the trash icon to mark that menu and its children for deletion. Drag a row to the right to nest it as a submenu.
Click Apply to save the new order, the nesting and the deletions. A menu added or edited with Save is saved at once - Cancel does not undo it; only the reordering and the pending deletions depend on Apply.
Create and lay out a report
The report editor is built on Odoo's standard HTML editor (the html_editor module, installed with Viindoo Customizer), so text and images on a report are edited the same way as elsewhere in Odoo.
In the toolbar, click Reports (in the More menu when the toolbar is short of room) to open a kanban of the model's existing print reports.
Click New, type a Report name, and pick a starting layout: External (business header and footer), Internal (minimal header and footer) or Blank (no header or footer). Click Create.
The report editor opens with a live preview and a draggable block palette on the Add tab - Block: Row, Column, Field, Block Text, Image; Inline: Inline Text, Inline Field; Data Table: Dynamic Table, Table Column and Sequence Column. Drag a block onto the report to place it; dragging Field opens a field picker.
Select a block to see its own properties on the Properties tab: a DOM Structure tree, a Grid System (column Size / Offset), and Text Options (Margins, Text align, Color, Background, Font Size, Font Weight, Class, Style); selecting a field block also shows its Field Expression and Widget. The block properties have no visibility toggle - to show or hide part of a report under a condition, open the Report tab and edit the XML directly.
In the DOM Structure tree, the trash icon on a row removes that element. An element that comes with the report is hidden rather than deleted, so modules that extend the report keep working: its row stays in the tree, marked (hidden), with an eye icon (Show) that brings it back. An element you added is deleted.
On the Report tab, set the Report Name, the Paper Format, whether it appears in the print menu (Show in print menu) and whether it reloads from a saved attachment (Reload from attachment). Click More for the underlying report record, Edit Source Code to hand-edit the report's XML, or Reset Report to discard every change and start over.
Use the report editor's own Undo and Redo - independent from the view editor's history - and switch Editor / Preview to see a real print preview with a Print button. The preview shows a record of the report's model; use the pager to move to another one. A record that this report cannot print is reported as such instead of being shown.
If a report was built with several conditional branches (using an XML t-if/t-elif), a branch selector appears above the canvas; it only chooses which existing branch the editor currently displays, it does not create a new condition. Removing one of those branches hides it: when the report is printed, the remaining branches are checked in their usual order with their own conditions, exactly as if the removed one were not there.
Edit view source directly
On the View tab, click Edit Source Code to open a resizable side panel in place of the left panel.
The panel shows a resource picker (a dropdown of the view's resources), Save and Close buttons, a Format button that pretty-prints the XML, and a code editor with the raw XML.
Edit the XML directly as an alternative to drag-and-drop, click Save, then Close. The visual canvas reflects the hand-typed change immediately.
Review access rights
Click Access Rights in the toolbar (in the More menu when the toolbar is short of room) to open an inline-editable list of access rules for the current model, with the Name, Model, Group and the four Read Access / Write Access / Create Access / Delete Access columns.
Click New, pick a Group, tick the permissions to grant, then save the row.
Review automation rules and other tools
Click Tools in the toolbar (only shown when at least one of these is available) to reach, already scoped to the current model: Automations, Webhooks, Filter Rules, Views, Model Pages - Actions and Model Pages - Menus.
Click Automations to land on the standard Automation Rules editor, pre-scoped to the model being customized, without hunting for it under Settings‣Technical.
Detached changes and changes that may move
When a view has detached changes or changes that may move, the Customizer shows a notice listing them at the top of the left panel. Each entry shows the change and the element it is Anchored on.
- Detached changes - view edits that no longer find the element they were anchored on, for example because an app update removed or reshaped it. They are kept aside and do not apply, so the screen shows the app's own layout meanwhile. For each one, click Retry to apply it again, Re-anchor and then click the element it should apply to, or Delete to discard it after a confirmation.
- Changes that may move - edits that still apply, but reach their element only by its position or match several elements, so a change made by another module may move them onto a different element. Click Pin to current element to anchor the edit on the element it applies to now, Re-anchor to anchor it on another element, or Delete to discard it. When such a change comes from an imported module, it cannot be changed here (see Import customizations below).
Export your customizations
Export and Import sit in the Customizer's top bar, next to New App. Like New App, they are there on every Customizer screen, including the landing page, because they act on every customization in this database, not on the screen being edited. When the window is not wide enough, only their icons show - a download icon for Export and an upload icon for Import; hover over one to see its name, Export Module or Import Module. Click Export.
Export first checks what can be carried to another database. If everything can, the download starts at once. Otherwise a dialog lists what the check found, in up to three parts:
- Fix before exporting - references that would widen access or stop the module from installing on the other database if they were left out: an access group the other database could not identify, or a required field restricted to access groups whose default value cannot be carried. Each line names the record and says how to fix it. While any remains, Export anyway stays disabled; fix the records, then click Export again.
- Not carried; set up again on the target database - records or values the other database could not load with the same meaning, for example a default value that names a record of this database. Each line names the record and the reason. They do not stop the export: click Export anyway to download the module, then recreate them on the other database if they are needed.
- Carried as is; check them on the target database - values the module carries unchanged but that name records of this database by their id, for example a domain or context that holds a record id. The same id can point at another record, or at none, on the other database. They do not stop the export either: after importing, check on the other database that each id points at the right record.
The download is a .zip file: an installable Odoo module named viin_customization that packages every customization made with the Customizer in this database - new fields, view edits, new models, menus, reports, access rights, rules and automations, including customizations imported earlier - ready to install on another database. The export contains only what the Customizer created plus what that content needs to load correctly; EXPORT_NOTES.txt, a file inside the downloaded module, lists the same lines the dialog showed as not carried, with the reason, and the same lines it showed as carried as is, each in its own section. Open it when a customization does not appear after importing elsewhere, or does not point at the right record. Neither the check nor the export changes anything in this database.
Import customizations
In the same top bar, click Import to open Odoo's own Import Module wizard.
Click Upload your file, pick the .zip file exported earlier and click Install. The module installs and its customizations become active immediately. Import matches an existing model or field by its technical name; the Force init box is ticked by default, which makes a match that this database did not create overwrite the existing model or field's label, help and other attributes with the imported version - untick it to leave anything that already exists untouched instead. Whatever the box says, an import never overwrites a customization that this database's Customizer created, or that it edited on a record of an installed Odoo app, whether a model, field, view edit, menu, action, report, access right or rule: it keeps its local values, so your own changes always win, and importing this database's own export again changes nothing for these. A change that another database makes to a customization this database owns does not come back here when its export is imported. Leave Load demo data unticked unless the imported module also ships demo records you want. Either way, a matched model or field is updated or left as it is, not duplicated, and is kept in place if the imported module is later uninstalled.
Once imported, a customization belongs to the imported module, and what you edit afterwards here is kept apart from it:
- View edits you make after an import are kept separately and win over the imported changes, because they apply after them. When you import an updated version of the module, what it brought is updated and the edits made here still apply on top.
- Changes that may move - when the Customizer lists a change with the module it comes from, that change cannot be pinned, re-anchored or deleted here. Fix it in the database that exported it, then import the module again.
- Other records - fields, menus, actions, reports and so on that an imported module brought: editing one saves your edit on that record, but the record stays the imported module's, so importing that module again updates it and may overwrite your edit. This applies only to what an imported module brought. Records of an installed Odoo app are different: your edits to them are always kept, and updating or upgrading the app does not overwrite them (a view edit whose element the update removed or reshaped is set aside as a detached change instead). Records created in this database with the Customizer are yours too, and no import overwrites them.
Uninstall a customization
Everything made with the Customizer, and everything imported with Import, is stored in one module named Viindoo Customization Data (viin_customization). Uninstalling that module shows, before confirming, how many models, fields, views, reports, menus, actions, access rights and record rules it would delete, and recommends exporting first. This removes every imported customization at once, together with the ones made here.
Uninstalling the Viindoo Customizer app itself is different depending on the database:
- On a database that never imported a customization module, it does not remove any customization: they stay in Viindoo Customization Data and keep working. One thing stops: the access groups a custom field is restricted to are enforced only by the Customizer, so once it is uninstalled every user who can see the model can see, read and change that field. Before you confirm, Odoo's uninstall dialog lists these fields (model and label) in a warning.
- On a database that imported one, the imported module (it is Viindoo Customization Data itself) can depend on the Viindoo Customizer - for example when it restricts a field to access groups - and then Odoo's uninstall dialog lists Viindoo Customization Data under Apps to Uninstall. Confirming removes it too, and every customization with it. Read that list before clicking Uninstall, and export first.
Troubleshooting
- The Customization icon does not appear in the systray
- Check that the current user's Role is Administrator (see Configuration above), and that the window is at least 768 px wide - the icon is not shown on a narrower screen. The icon is never disabled: on a screen the Customizer cannot edit, it opens the landing page instead.
- Clicking the icon shows "Choose an app to customize" instead of my screen
- The screen you were on, such as the home screen or Discuss, cannot be customized. Open the app you want from the menu in the Customizer's top bar, or use New App, Export or Import.
- Saving a new field shows "Missing required fields"
- The Field Label box is highlighted in red. Field Label is required for every field type, including a Related Field - fill it in before saving.
- Saving a new menu item shows "Missing required fields"
- The Action box is highlighted in red. Pick an existing action, or create one, in it before saving the menu form.
- Deleting a model I created fails with "Cannot rename/delete fields that are still present in views"
- This is how Odoo protects the screens that still use the model. Remove the Customizer's views of that model first (see Add a new view type above), then delete the model again from Settings‣Technical‣Database Structure‣Models.
- A field or button that should be there does not show on the canvas
- The canvas shows every element, so it should be there. An element that people using the screen will not see - because it is invisible, or restricted to a security group - appears as a hatched (striped) placeholder. Select it to edit it, for example to clear Invisible.
- A drag-and-drop from the Add tab does not seem to place anything
- Drop the item on the exact zone the field or component belongs to (for example, inside the highlighted drop area, not on plain canvas background), then check the Properties tab to confirm it landed where expected.
- The Export anyway button is disabled
- The export check found something under Fix before exporting. Fix each record listed there - the line says how - then click Export again.
- Opening a report shows "This report no longer exists."
- The report was deleted elsewhere - by another user, or from Settings‣Technical‣Actions‣Reports - while this tab was still pointing at it. Nothing on the screen can be edited or saved anymore. Close it and reopen Reports from the toolbar to pick a report that is still there.
FAQ
- Does the Customizer work on a phone or tablet?
- The Customization icon is shown from 768 px of screen width up, so a tablet of at least that width works like a desktop browser. On a narrower screen the icon is not shown; a Customizer window that becomes narrower than 768 px keeps working, with the left panel turned into a drawer (see Work on a narrow screen above).
- Does the Customizer translate my screens into other languages?
- No. The canvas shows labels in your interface language when a translation exists. Translate a screen with Odoo's standard translation feature, separately from customizing it.
- What happens to my customizations if I uninstall Viindoo Customizer?
- On a database that never imported a customization module, they stay and keep working: customizations live in the Viindoo Customization Data module, not in the Customizer app. The one exception is the access groups on custom fields: only the Customizer enforces them, so after the uninstall every user who can see the model can see, read and change those fields, and Odoo's uninstall dialog lists them (model and label) in a warning before you confirm. On a database that imported one, the imported module (it is Viindoo Customization Data itself) may depend on the Customizer, and then Odoo's uninstall dialog lists Viindoo Customization Data under Apps to Uninstall - uninstalling removes it and every customization. Export first, and read that list before confirming. To remove the customizations on purpose, uninstall Viindoo Customization Data.
- Can I move my customizations to another database?
- Yes. Use Export to download an installable module, then Import it on the other database. The export check tells you beforehand what has to be fixed, what is not carried and what to check after importing.
- Do my changes stay in place when an app is updated?
- Wherever the screen gives an element a technical name - its own or that of a nearby element - a change is anchored on that name rather than on the element's position, so it stays on the right element when an update or another app adds or moves elements around it. Removing a standard element hides it instead of deleting it, so apps that build on it keep working. When an update removes or reshapes the element a change was anchored on, the change is set aside and listed in the notice (see Detached changes and changes that may move above).
- Which platforms is Viindoo Customizer supported on?
- Odoo Community Edition and Viindoo.
This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file).
You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one).
It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software.
The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.