Skip to main content
Smart List Column Reorder — A build-to-order Odoo module that adds drag-and-drop column reordering to any list view and remem — 1/1Illustrative preview

A build-to-order Odoo module that adds drag-and-drop column reordering to any list view and remembers each user's chosen layout across sessions.

ECOSIRE designs, builds, installs, and supports it for your Odoo 17/18/19 database after a scoping call.

What is Smart List Column Reorder?

A build-to-order Odoo module that adds drag-and-drop column reordering to any list view and remembers each user's chosen layout across sessions. ECOSIRE designs, builds, installs, and supports it for your Odoo 17/18/19 database after a scoping call. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.

Key Features

Drag-and-drop column reordering directly on OWL list-view headers, applied live with no page reload
Per-user persistence of column order via a dedicated ORM model (e.g. `smart.list.column.pref`) keyed on `res.users`
Optional per-view/per-action scoping so the same model can hold different layouts in different menus
Layout saved over JSON-RPC on drop, then rehydrated when the list component mounts
One-click 'reset to default' that deletes the stored preference and restores the original `<list>` arch order
Graceful handling of removed or renamed fields — stale columns are ignored, unknown columns fall back to default position
`ir.model.access.csv` plus a record rule so each user can read/write only their own preference rows
Optional admin-locked columns that users are prevented from moving (enforced in the drag handler)
Optional group-level default layouts pushed to a team via `res.groups` mapping
Export/import of a user's saved layout so new hires can inherit a proven column arrangement
Base view XML left untouched — no Studio overrides or `<list>` arch rewrites, so upgrades apply cleanly
Respects Enterprise-only list widgets and optional columns rather than replacing the renderer
Configurable allowlist of which models receive the behavior, set in the module data
Built and regression-tested against Odoo 17.0, 18.0, and 19.0 on both Community and Enterprise

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your Odoo.

  3. 3

    Go live + support

    You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.

Technical Specifications

Odoo Compatibility
Odoo 17, Odoo 18, Odoo 19
Editions
Enterprise & Community
License
Licence confirmation required
Python Requirement
Python 3.10+
Database
PostgreSQL 12+

About this Product

Every operations, sales, and accounting team lives inside Odoo list views, yet the column order is fixed by whoever wrote the XML <tree>/<list> definition. A dispatcher wants the delivery date first; an accountant wants the amount and tax columns adjacent; a salesperson wants the stage before the customer. Out of the box, Odoo only lets a user hide or show optional columns through the view's options menu — it does not let them drag a column to a new position, and any tweak an admin makes to the base view applies to everyone. The result is daily friction: horizontal scrolling to reach the one field that matters, screenshots annotated with "can we move this column," and studio edits that quietly break on the next upgrade.

Smart List Column Reorder is a module we build to close that gap cleanly. It hooks into the OWL list renderer so that column headers become drag handles: a user grabs a header, drops it where they want, and the layout updates immediately — no page reload, no developer involvement. The chosen order is persisted per user and per model (optionally per action/view) in a small backing model such as smart.list.column.pref, written through the standard ORM with create/write and read back when the list mounts. Because persistence is scoped to res.users, one person reordering the Sales Orders list never disturbs a colleague's view. We wire access with ir.model.access.csv plus a record rule so users can only read and write their own preference rows, and we expose a small "reset to default" control that deletes the stored preference and falls back to the original view order.

Technically, the work sits mostly in the web client: an OWL/JS patch of the list header component for the drag interaction, a JSON-RPC round trip to save the new column sequence, and a compute-light Python model to store it. We keep the base view XML untouched — no studio overrides, no brittle field re-ordering in the <list> arch — so your existing views, reports, and automations are unaffected and future Odoo updates apply normally. The behavior degrades safely: if a stored column no longer exists (a field was removed) it is ignored, and unknown columns simply render in their default slot. We can optionally add admin-defined "locked" columns that users may not move, group-level default layouts pushed to a team, and an export of a user's layout so a new hire can inherit a proven configuration. It is built and validated against Odoo 17.0, 18.0, and 19.0, and works on Community and Enterprise (Enterprise's extra list widgets are respected, not overridden).

Delivery is build-to-order: after a short scoping call we confirm exactly which models get the behavior, whether you want per-view or per-model scoping, and any locked/team-default rules, then we build, code-review, and test the module on a staging copy of your database before install. Typical delivery is one working week from confirmed scope. You receive the full installable source, so nothing is a black box. Pricing starts from $999 (indicative, single-company base scope); the number of target models, per-view versus per-model scoping, team-default and locked-column rules, and multi-company deployment increase the quoted scope. We provide a fixed quote after the scoping call.

What you get

  • Installable module source code for your Odoo version (17.0, 18.0, or 19.0), including `__manifest__.py`, models, security files, and OWL/JS assets
  • Installation and configuration on your environment, including the target-model allowlist and any team-default/locked-column rules
  • Technical documentation covering the data model, security rules, and how the OWL header patch works
  • End-user guide plus a live training session for the teams who will use the reordering
  • Post-go-live support window for defect fixes and questions
  • UAT on a staging copy of your database with a documented rollback plan before production install
  • Git repository handover with full commit history and tagged release
  • Signed-off scope document listing exactly which models, views, and rules were built

Who this is for

Operations & dispatch leads

Teams that live in high-volume list views (deliveries, manufacturing orders, tickets) and need the most decision-critical column first without horizontal scrolling, set individually per operator.

Finance and accounting managers

Users who want amount, tax, due-date, and journal columns arranged in their own reading order across invoice and payment lists — without an admin editing the shared view for everyone.

Odoo administrators and internal IT

Owners of the database who want the flexibility of user-controlled layouts without Studio overrides that break on upgrade, and who need clean security scoping and source-code ownership.

Sales operations teams

Reps and managers who reorder pipeline, quotation, and customer lists to match their workflow, and want new hires to inherit a proven column layout on day one.

How Smart List Column Reorder Compares

CriterionECOSIRECustom BuildCompetitorOdoo Native
Column reorderingLive drag-and-drop on list headersPossible, but you specify and pay for the exact interactionUsually drag-and-drop, but fixed to the vendor's assumptionsNot available — order fixed in view XML
Per-user persistenceSaved per user (and optionally per view) via a scoped ORM modelOnly if you scope it in; often overlookedSometimes per user, sometimes global depending on the appNone — no user-level column memory
Security scoping`ir.model.access.csv` + record rule so users see only their own layoutDepends entirely on the developer's diligenceRarely documented; may store globallyN/A — no stored preferences
Upgrade safetyBase view XML untouched; no Studio overridesVaries; ad-hoc arch edits can break on upgradeDepends on how the vendor patched the rendererSafe, but only because nothing is configurable
Source-code ownershipFull source + git repo handoverYes, you own what you paid to buildOften obfuscated or license-lockedN/A
Fit to your modelsAllowlist of exactly the models you chooseFully bespoke, at bespoke cost/timeApplies broadly with limited targetingN/A
Version coverageBuilt & tested for 17.0/18.0/19.0, Community + EnterpriseWhatever you commission and testVaries; may lag new major versionsShips with every version but non-configurable
Support & deliveryScoping call, staging UAT, rollback plan, post-go-live windowDepends on your internal team's capacityTicket-based support of variable qualityStandard Odoo support only

Frequently Asked Questions about Smart List Column Reorder

Is this an existing app I can download and install today?

No. Smart List Column Reorder is built to order. After a scoping call we build, code-review, and test the module against your Odoo version and your specific target models, then install it. You receive the full source code — it is not a black-box download.

How long does delivery take?

Typical delivery is one working week from confirmed scope. The exact timeline is fixed in your quote and depends on how many models get the behavior, whether you need per-view scoping, and extras like team-default or locked-column rules. Simple single-model scope lands toward the shorter end.

How does pricing and scoping work?

Pricing starts from $999 as an indicative single-company base scope. The number of target models, per-view versus per-model scoping, team-default and locked-column rules, and multi-company deployment increase the quoted scope. We give you a firm fixed quote after the scoping call — the from-price is a starting point, not the final figure.

Will one user's reordering affect other people's lists?

No. Column order is persisted per user (keyed on `res.users`) and protected by a record rule so each person can only read and write their own preferences. If you want a shared team default, we can add a group-level layout that seeds new users while still letting them personalize afterward.

Does this modify my existing views or risk breaking upgrades?

No. We deliberately leave your base view XML untouched — the behavior lives in the OWL list renderer and a small preference model, with no Studio overrides or `<list>` arch rewrites. That keeps your views, QWeb reports, and automated actions unaffected and lets standard Odoo updates apply normally.

What about support and updates after go-live?

Every build includes a post-go-live support window for defect fixes and questions, and a git repository handover so your team owns the code. Because you hold the source, you can maintain it yourselves or engage us for a support/maintenance arrangement, including forward-porting to a newer Odoo major version later.

Does it work on Odoo Community as well as Enterprise?

Yes. It is built and regression-tested against Odoo 17.0, 18.0, and 19.0 on both Community and Enterprise. On Enterprise we respect the extra list widgets and optional-column behavior rather than replacing the renderer, so nothing you already rely on is lost.

Request a quote

Smart List Column Reorder

A build-to-order Odoo module that adds drag-and-drop column reordering to any list view and remembers each user's chosen layout across sessions. ECOSIRE designs, builds, installs, and supports it for your Odoo 17/18/19 database after a scoping call.

  • Drag-and-drop column reordering directly on OWL list-view headers, applied live with no page reload
  • Per-user persistence of column order via a dedicated ORM model (e.g. `smart.list.column.pref`) keyed on `res.users`
  • Optional per-view/per-action scoping so the same model can hold different layouts in different menus
  • Layout saved over JSON-RPC on drop, then rehydrated when the list component mounts

Request a Quotation

Tell us about your Smart List Column Reorder requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.