| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 888 |
| Technical Name |
custom_selection_fields |
| License | LGPL-3 |
| Website | https://www.brapps.dev/ |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 888 |
| Technical Name |
custom_selection_fields |
| License | LGPL-3 |
| Website | https://www.brapps.dev/ |
Selection fields,
finally manageable from the UI
Stop editing code every time someone needs a new dropdown option. Convert any Odoo selection field into a fully managed many2one — add, rename, reorder, archive, all without a developer.
The dropdown problem, solved
Every selection field in Odoo is hardcoded in Python. That’s fine until you need a new option on a Friday afternoon.
Every change is a deployment
- Edit a Python file, run a migration, restart the server
- Business users wait days for a developer
- No audit trail of who changed what or why
- Renaming an option risks breaking existing records
Options are just data
- Add and edit options through Odoo’s standard UI
- Power users self-serve in seconds
- Full chatter trail on every option and replacement
- Original codes preserved for safe migration
Everything you need, nothing you don’t
A single, focused module that turns any selection into a first-class managed list — with the safety nets to do it without breaking production.
Dynamic field conversion
Pick any selection field on any model and convert it into a many2one with one click. Keeps the original until you say otherwise.
Manage from the UI
Add, rename, reorder (drag-and-drop), and archive options — with full chatter and audit trail on every change.
Bidirectional sync
Existing data is migrated automatically. Writes to either field stay in sync, so nothing breaks while you transition.
Smart view inheritance
Automatically detects every form, list, and kanban view that uses the field and patches them with proper xpath inheritance.
Safe & reversible
Three explicit states: Draft → Configured → Active. Deactivate any time without data loss; uninstall cleans up after itself.
Mail & chatter built-in
Every replacement and option is a mail-thread record — activities, log notes, and full message history come standard.
The management UI, up close
No new screens to learn — everything lives inside Odoo’s standard form and list views.
One form to manage everything
The replacement form shows the model, original field, and new field name at a glance. The state pill tracks Draft → Configured → Active, and the action buttons let you Activate, Deactivate, or Sync without leaving the page.
Drag, drop, done
Reorder options by dragging the sequence handle. Toggle Active to archive without deletion. Each option keeps its original code so existing data stays mapped correctly.
Five steps from selection to managed
No console commands, no manifest edits, no view authoring. The module does the heavy lifting.
Select
Pick the model and selection field you want to convert.
Configure
Existing values import as records, codes preserved.
Customize
Add, rename, reorder, or archive any option.
Activate
Views are patched, data is synced, field is live.
Manage
Iterate freely — no deploys, no downtime.
Built for the real-world dropdown
Custom status workflows
Convert state on sale orders, helpdesk tickets, or projects into workflows the team owns.
Industry-specific options
Add resolution codes, ticket types, or product categories without filing a developer ticket.
Multi-company variation
Different brands or subsidiaries can maintain different option sets without forking code.
Localization
Adapt option labels per region or language using Odoo’s standard translation framework.
Lightweight by design
x_custom_<field>_idCommon questions
Q What happens to existing data when I convert a field?
Existing selection values are imported as records and the original codes are preserved on each one. The original selection field stays in place and the two stay in sync until you deactivate the replacement, so you can roll back at any time without data loss.
Q Can I uninstall cleanly?
Yes. Deactivating a replacement removes the view inheritance and stops the sync but keeps the records. Uninstalling the module removes the custom many2one fields and view inheritances. The original selection field is untouched throughout.
Q Will it work with custom selection fields, not just stock ones?
Yes — any selection field on any model is fair game, including ones added by other modules or by Studio.
Q What about views I’ve customized myself?
The module uses standard xpath view inheritance, so it composes with any other inheritance you have. If you remove a replacement, your customizations are unaffected.
Stop redeploying for dropdowns
Install once and let your team manage selection options the same way they manage everything else in Odoo — through the UI.
Custom Selection Fields · brapps.dev · Support
© 2024 Brapps. Licensed under LGPL-3.
Please log in to comment on this module