Skip to content

Fix Odoo Studio Customizations Breaking After Upgrade

DeployMonkey Team · March 23, 2026 8 min read

Studio + Upgrade = Problems

Odoo Studio lets non-developers customize views, add fields, and create automations. However, these customizations frequently break when upgrading Odoo versions because underlying models, views, and APIs change between versions.

Missing Custom Fields

# Error: "Field 'x_studio_field' does not exist"

# Cause: Studio field not migrated during upgrade

# Fix 1: Check if field exists in database
SELECT * FROM ir_model_fields
WHERE name = 'x_studio_field';

# Fix 2: Recreate field in Studio
# Studio → Open model → Add Custom Field
# Use same name and type

# Fix 3: Check module data
# Studio stores customizations in module data
# Settings → Technical → Module Data
# Search: x_studio_field
# If entry exists but field doesn't → data mismatch

# Fix 4: Force reinstall Studio module
# -u web_studio (user does this manually)
# Recreates Studio metadata from XML data files

Broken Custom Views

# Error: "View has no architecture" or
# "Cannot find view definition"

# Cause: Studio view inherits from view that
# was removed or restructured in new version

# Fix 1: Identify broken view
SELECT id, name, model, inherit_id, active
FROM ir_ui_view
WHERE name LIKE '%studio%' AND active = true;

# Fix 2: Deactivate broken views
UPDATE ir_ui_view SET active = false
WHERE id = [broken_view_id];

# Fix 3: Recreate in Studio
# Open the model's form/list view
# Studio → rebuild customizations
# Reference old view XML for field positions

# Fix 4: Check inherit_id references
# Studio views inherit from base views
# If base view ID changed, inherit breaks
SELECT v.name, v.inherit_id, p.name as parent_name
FROM ir_ui_view v
LEFT JOIN ir_ui_view p ON v.inherit_id = p.id
WHERE v.name LIKE '%studio%';

Invalid Domain Filters

# Error: "Invalid domain" in automated actions or filters

# Cause: Studio filter references field that was
# renamed or removed in new version

# Common renames between Odoo versions:
# user_id → user_ids (many2one → many2many)
# state → status (various models)
# type → move_type (account.move)
# categ_id → product_category_id

# Fix 1: Find broken filters
SELECT id, name, domain FROM ir_filters
WHERE domain LIKE '%x_studio%'
   OR domain LIKE '%field_that_changed%';

# Fix 2: Update domain in automated actions
SELECT id, name, filter_domain
FROM base_automation
WHERE filter_domain LIKE '%x_studio%';

# Fix 3: Update via UI
# Settings → Technical → Automated Actions
# Edit each action's filter domain

Studio Automation Errors

# Problem: Server actions created by Studio fail

# Cause 1: Python code references changed API
# Fix: Review and update Python code in action
# Settings → Technical → Server Actions
# Check code field for deprecated methods

# Cause 2: Email template references missing field
# Fix: Edit email template, update field references
# Settings → Technical → Email Templates

# Cause 3: Computed field formula broken
# Fix: Edit computed field in Studio
# Rebuild formula with current field names

# Prevention: Document all Studio customizations
# before upgrading so you know what to check

Recovery Strategy

# Step-by-step recovery:

# 1. Inventory Studio customizations BEFORE upgrade
# List all custom fields, views, automations
# Export Studio customizations module

# 2. Test upgrade on copy of production database
# Never upgrade production directly

# 3. After upgrade, systematically check:
# a. Custom fields exist and have data
# b. Custom views render without errors
# c. Automated actions run correctly
# d. Custom reports generate properly
# e. Dashboard widgets load

# 4. Fix issues one at a time
# Deactivate broken views/actions
# Recreate in Studio on new version

# 5. Consider replacing Studio with code
# Custom modules survive upgrades better
# Studio is for prototyping, code for production

DeployMonkey

DeployMonkey's AI agent can help audit Studio customizations and identify potential upgrade issues before they break your production instance.