Skip to main content
iVentureTeam

upgrade_boolean

The settings checkboxes that open an upgrade popup on Community are one widget: upgrade_boolean. On Enterprise it is an ordinary checkbox; on Community it can never stay checked.

August 11, 2026Updated August 11, 20264 min read
Odoo 19 Community settings page where checking an Enterprise feature rendered by upgrade_boolean opens the upgrade dialog.
Technical nameupgrade_boolean
Field typesboolean
Viewssettings form (res.config.settings)
Moduleweb (settings form view), present in every Odoo database
Used in core45 occurrences across settings views, each marking an Enterprise feature block
VersionsOdoo 20.0, Odoo 19.0, Odoo 18.0, Odoo 17.0, Odoo 16.0
No-code setupNot applicable: it belongs to settings views, not user documents
Alternativesboolean, boolean_toggle

What the upgrade_boolean widget does

Open Settings on a Community database, tick something like a payroll or sign feature, and instead of enabling it Odoo shows an upgrade dialog. That behavior is not scattered logic; it is one widget on those checkboxes.

The implementation, verbatim from the source, is a boolean field with one overridden change handler. At setup it reads odoo.info.isEnterprise. On Enterprise, changes pass straight through to normal boolean behavior. On Community, the change opens UpgradeDialog, and the dialog's close handler updates the field back to false. The revert is the detail people miss: the checkbox is not blocked, it is undone, so the setting genuinely never persists as enabled on Community.

What this means for your team

For a business evaluating Odoo, this widget is the visible boundary between the editions, drawn feature by feature right in Settings. Everything behind an upgrade checkbox works only on Enterprise (or odoo.sh/Online), which makes a Community settings page an honest inventory of what the free edition does not include.

Two practical readings. If you run Community deliberately, these checkboxes are your roadmap of what an Enterprise migration would unlock, worth reviewing annually as your needs grow. And if a team reports "the setting will not stay on", check whether it is one of these before debugging anything; the revert-on-close is designed behavior, not a bug.

Custom modules can reuse the widget for their own edition gating, though most partner modules manage licensing differently.

Supported options in Odoo 19

Verified against upgrade_boolean_field.js in the Odoo 19.0 web module: the descriptor spreads the plain boolean field and declares no options of its own. The behavior split below is the entire widget.

OptionTypeWhat it does
(none)n/aNo supportedOptions declared; the descriptor spreads the plain boolean field. Behavior is fixed: normal boolean on Enterprise, dialog plus revert on Community.

The edition check is client-side and cosmetic-proof. Enterprise features are absent from Community code, so the dialog is honest UX, not the enforcement. Patching the widget to skip the popup enables nothing; the modules behind the setting are simply not there.

Working examples

How core settings use it

<setting>
    <field name="module_hr_payroll" widget="upgrade_boolean"/>
</setting>

On Enterprise the tick installs the module as usual; on Community it opens the upgrade dialog and reverts.

Gating a custom Enterprise-only feature

<field name="module_my_enterprise_addon"
       widget="upgrade_boolean"/>

Legal in your own settings blocks; you inherit the exact core behavior, dialog and revert included.

The revert-on-close trick

The three-line revert deserves its own spotlight because it explains every observed symptom: the dialog's onClose callback runs record.update({ field: false }).

Consequences, all verified by the flow. The checkbox visibly ticks for the moment the dialog is open, then unticks, so screen recordings of "it flickers off" are the design working. Nothing is written to the database at any point, because settings only persist on Save and the value is already false again. And automations watching config values never fire, since no change survives.

The companion file, upgrade_dialog.js, renders the actual popup with its trial and upgrade links; the widget just opens it. Custom rebranding of that dialog is a separate patch on the dialog component, not on this field.

Version compatibility

VersionStatusNotes
Odoo 20.0In developmentNot released. The development branch shows no behavior changes; see below.
Odoo 19.0VerifiedVerified against the shipped source and tested on a clean Community database.
Odoo 18.0VerifiedSame behavior. No XML changes needed.
Odoo 17.0VerifiedSame behavior. No XML changes needed.
Odoo 16.0VerifiedSame behavior. No XML changes needed.

Upgrade note. Stable across Odoo 16 to 19. Moving a database from Community to Enterprise flips isEnterprise, and every one of these checkboxes silently becomes a working boolean, no view changes needed, which is exactly the intended migration story.

What is changing in Odoo 20

Odoo 20 is expected at Odoo Experience in Brussels, 24 to 26 September 2026. The changes below are read from the public development branch and are not final until release.

Nothing changes for this widget. Same edition check, same dialog, same revert. We re-verify once Odoo 20 ships.

Common problems and fixes

SymptomCause and fix
Setting will not stay enabled on CommunityDesigned behavior: the dialog's close handler reverts the value to false. The feature requires Enterprise; plan the edition upgrade if you need it.
Checkbox flickers on then offThe tick shows while the dialog is open, then the revert runs. Expected; nothing to fix.
Upgrade dialog appears on an Enterprise databaseThe web assets still identify as Community: enterprise code not installed or assets stale. Verify the enterprise addons path and regenerate assets; check odoo.info.isEnterprise in the browser console.
Patched the widget but the feature still does not workThe dialog is UX; the Enterprise modules are genuinely absent on Community. Only an edition upgrade provides the feature.

Upgrade_boolean widget vs the alternatives

WidgetBest forKey difference
upgrade_booleanSettings checkboxes gating Enterprise featuresCommunity: upgrade dialog + automatic revert; Enterprise: plain boolean
booleanOrdinary settings and document yes/no fieldsNo edition logic; just stores the value
boolean_toggleFlags that should apply instantlySwitch styling with autosave, unrelated to editions

The practical test: this widget belongs on settings checkboxes gating Enterprise features, and nowhere else. Ordinary yes/no settings are the plain boolean; instant-effect flags elsewhere are the toggle.

Frequently asked questions

Why does checking some Odoo settings open an upgrade popup?+
Those checkboxes use upgrade_boolean, the widget marking Enterprise-only features. On Community it opens the upgrade dialog instead of enabling anything, and closing the dialog reverts the checkbox, verified in the source.
Why does the checkbox untick itself after I close the dialog?+
The dialog's close handler explicitly writes the field back to false. The setting is undone, not just blocked, so nothing persists even if you save afterwards.
Can I bypass the upgrade dialog on Community?+
You can patch the popup away, but it changes nothing: the Enterprise modules behind the setting do not exist in Community code. The dialog is honest signposting, not the enforcement.
What happens to these checkboxes after moving to Enterprise?+
They become ordinary booleans automatically: the widget checks odoo.info.isEnterprise at load, so the same settings views work in both editions with no changes.
Can my own module use upgrade_boolean?+
Yes, put widget="upgrade_boolean" on your settings checkbox and you inherit the exact core behavior. Useful if you ship edition-gated features the same way Odoo does.

Weighing Community against Enterprise?

The upgrade checkboxes show what is gated; the real question is which of those features your processes actually need, and whether the move pays back. We run that assessment and the Community-to-Enterprise migration itself, on Odoo 16 through 19.

Book a free consultation

How this page was produced

The edition check, the dialog flow and the revert-on-close were read from the Odoo 19.0 web module source (upgrade_boolean_field.js and its companion dialog) and confirmed on a clean Odoo 19 Community database, where the screenshot was captured. The Odoo 20 statement comes from the same file on the public development branch, where it is unchanged. Spotted an error? Tell us and we will correct the page.