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 filesBroken 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 domainStudio 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 checkRecovery 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 productionDeployMonkey
DeployMonkey's AI agent can help audit Studio customizations and identify potential upgrade issues before they break your production instance.