Skip to main content
Ready to deploy? Start Free Trial

Documentation Deploy & operate

Deployments & rollback

The app screen: build and update an app, its settings, branches and URLs, maintenance mode, runs and logs, and who may do what.

Developer Updated 10/20/2026

The app screen

Each app is one Odoo instance in one environment of a project. Open it from its card in the project, or from the search at the top of the dashboard. The header shows its name, its state and its environment; the buttons on the right act on it: Open (the app in a new tab), Build, Backup and More.

The app screen: sidebar, header actions and the Info tab
The app screen, on its Info tab.
SidebarWhat you find there
OverviewThe app's settings, in four tabs: Info, Configs, URLs and Automation. Below them, the app's history: every change and every run, newest first.
OperationsEverything that ran or is running on the app: workflows, runners and queues. See Following a run.
BackupsThe app's backups. See Backups & restore.
RestorationsRestores into and out of this app.
Restore pointsThe app before each change, and the way back. See Restore points & safe updates.
LoggerThe app's logs. See Logs.
Overview tabWhat it holds
InfoName, address, Odoo version and edition, a note, and the branches the app builds from.
ConfigsThe container, the Odoo configuration and the routing. See Settings.
URLsThe addresses the app answers on and their certificates. Needs the White Label add-on. See URLs.
AutomationWhat runs on every deployment, automatic updates and backups. See Automation.
Building, updating and the Automation, Configs, Operations, Logger and Restore points screens need a plan with automated deployments (Essential, Pro or Premium). Backups and restores need backup automation, in the same plans. See Billing & pricing.

An app's Odoo version is fixed once it has been deployed: its database is on that version, so the version buttons on the Info tab turn read-only. To move to another version, create a new app.

Deploy, update or build

Build opens one dialog with up to three choices. Each one shows only when you may run it and the app is in a state where it makes sense.

ChoiceWhat it doesWhen it is offered
DeployBuilds the app's container and code again and starts it. The first deploy of a new app creates its database.Always.
UpdatePulls the latest code of the app's branches and updates the installed modules. This is the everyday change.Once the app exists (not while it is a draft or being deleted).
BuildReplaces this app's database with a neutralized copy of a production or staging backup, so you can test on real data. This overwrites all current data.On staging and development apps that are deployed or in error.
The Build dialog on a production app, Update selected
Update on a production app: the backup is recommended, and the module update runs on a copy of the database.

The options

OptionWhat it does
Backup before actionBacks the database up first (Zip with the filestore, or Dump with the database only), so the change can be rolled back with its data. Offered once the app has been deployed.
Quick updateUpdate only. Pulls the code and restarts the app on its current image, without pulling or rebuilding the image. Turn on Update database modules to run the module update after the pull; leave it off for a code refresh and restart.
Only changed addonsUpdate only. Runs the module update for the addons that changed since the last run, not for all of them. When the change cannot be worked out safely, it updates the addons it is set up to update.
The Build dialog with Quick update and its module options turned on
Quick update, with the database modules updated for the changed addons only.

On a production app the dialog asks you to take a backup first. When the environment updates on a copy of the database, the dialog says so: a failed module update then changes nothing. See Safe updates.

When Use Clean DB is on in the app's Automation tab, Deploy and Update delete the current database and install a fresh one. The dialog warns you. Clean databases are never allowed in production.

Build from a backup

On staging and development apps, the Build choice restores a backup from another environment of the project. Pick the source (Production or Staging), the source app and the backup to restore, or turn on Build a fresh production backup to take a new one first. Turn on Update database modules after restore when the source runs older code than this app's branch. The copy is neutralized: emails are not sent and scheduled jobs do not run.

Other actions

More groups the rest of the app's actions. You only see the ones you may run.

The More menu of an app, grouped in Application, Maintenance, SSL and Danger Zone
The More menu.
ActionWhat it does
Application
Sync VariablesRefreshes the settings the platform renders for the app's runs from its current configuration. It does not change the container's environment variables.
Sync BackupsMatches the app's backup list with the backup files found on its server.
RestoreRestores a backup into this app. See Backups & restore.
Maintenance
Restart ServiceRestarts Odoo. The code, the configuration and the data stay as they are.
Update ModulesRuns the module update for the modules you name (separated by commas or spaces), behind the maintenance page. You can take a backup first.
Apply ConfigWrites the Odoo configuration, the container settings and the routing from the Configs tab, then restarts the app. See Settings.
Enable Maintenance / Disable MaintenanceShows or takes down the maintenance page. Only the one that fits the app's state is offered. See Maintenance mode.
SSL
Renew SSLRenews the certificates of the app's URLs.
Danger Zone
Delete InstanceRemoves the app from its server. On production you confirm twice, the second time by typing DELETE.

When the app's last run failed or was canceled, a Retry button appears in the header. It runs the failed run again from the step that failed.

Settings: the Configs tab

The Configs tab: Container, Odoo Config, and TLS and Routing
The Configs tab.
SettingWhat it does
Container
CPU Limit (cores), Memory Limit (MB)Hard caps, so one app cannot starve its server. 0 means no cap. New apps take the environment's defaults.
Additional PackagesExtra system packages installed in the Odoo image, separated by commas or new lines. Only add what your code needs at run time.
Custom Environment VariablesTurn it on to give the container your own variables, one NAME=value per line. The values are stored encrypted.
Odoo Config
Database, Workers, Max Cron ThreadsWhere the app's database lives, and how many workers and cron threads Odoo runs. View Config shows the resulting odoo.conf.
Admin PasswordOdoo's master password. You can reveal it (your own password is asked first) or generate a new one.
Use OCA QueueRuns the OCA job queue in the app.
Use Config PatchAdds your own lines to odoo.conf.
TLS & Routing
Database Manager AllowedOff: Odoo's database manager is closed, both at the front door (/web/database answers with a branded page) and in Odoo itself.
Search IndexingBlocked: every answer tells search engines to leave the site out. Allowed in production and blocked in staging and development, unless you change it.
Max Body SizeRefuses requests larger than this. Unlimited means no cap.
Response Timeout (s)How long a request may take before it is cut off. 0 keeps the default. Raise it for large uploads or long requests.

When a change takes effect

ChangeRun
Workers, cron threads, database manager, indexing, body size, timeout, CPU and memory limits, environment variablesApply Config (More → Maintenance). It restarts the app.
Config patch, additional packagesBuild → Deploy.
New code on the branchesBuild → Update, or let automatic updates run it.

Branches

The Branches table on the Info tab lists the repositories and branches the app builds from. The starred branch is the main one.

ColumnMeaning
Repository, Git BranchWhere the code comes from.
Commit SHAThe commit the app should run. Auto-sync: it follows the branch's latest commit.
Actual SHAThe commit the server really runs. A warning sign means it differs from the expected one.

Use Add Branch to build from one more repository, the pencil to change a branch, and the refresh button to read the commit from the server again. In a branch's menu, Download Addons downloads its code, and Mark for Deletion flags it: it shows Pending Deletion and leaves the app at its next successful Deploy or Update. Restore takes the mark off. A branch deleted in its repository shows Remote Deleted. The main branch is never removed.

URLs and certificates

Every app gets an address of its own. With the White Label add-on, the URLs tab lets you add your own domains and pick who issues their certificates.

The URLs tab with its certificate provider and the app's address
The URLs tab.
PartWhat it does
Certificate ProviderWho issues the certificates of every address of the app: Let's Encrypt or Buypass. Changing it issues them again right away.
Add Custom URLAdds one of your domains. Enter the domain only, without https://. Point its DNS at the app first.
URL columnThe address, with a public check: Answering, Not answering or Not checked.
Certificate columnValid, expiring or missing, with its expiry date and issuer.
Latest Apply, RunnersThe last run that set the address up, and its steps.

A URL's actions: edit it, check its certificate, refresh its route, retry its last run, mark it for deletion or delete it now.

Automation

The app's Automation tab says what runs on every deployment and what happens on its own.

The Automation tab: Automated Installation, and Updates and Backups
The app's Automation tab.
SettingWhat it does
Use Automate InstallationInstalls and updates your addons on every deployment: all of them (All Addons, minus the Excluded Addons) or the ones you list.
Use Clean DBStarts from a new, empty database on every deployment. Not allowed in production.
Without DemoInstalls without demo data.
Force Pull TemplatePulls the latest base image even when the server already has one.
Run Odoo Tests, Use Coverage, Acceptable CoverageRuns your Odoo tests on deployment and measures their coverage against the threshold you set.
Restrict Auto UpdateKeeps automatic updates off this app: it only changes when a person runs Build. Rolling the code back turns it on until someone updates the app again.
Auto BackupTakes a backup every night. On by default in production.
DeadlineOutside production: removes the app after a date you set.

What a push does

What happens when a branch receives a push is set per environment: open the project, pick the environment, switch to Settings and open its Automation tab.

A production environment's Automation settings
A production environment's Automation settings.
SwitchWhat it doesDevelopmentStagingProduction
Auto-Update AppsUpdates the branch's apps on every push.OnOnOff
Auto-Deploy AppsDeploys the branch's apps on every push, and creates an app for a branch it has not seen.OnOffOff
Auto-Delete Apps on Branch RemovalDeletes a branch's apps when the branch is deleted upstream.OnOffAlways off

These are the defaults of a new environment; you can change them, except Auto-Delete, which never runs in production. The same tab holds the environment's update copy policy outside production.

Maintenance mode

Enable Maintenance puts a maintenance page in front of the app: visitors get it, with an HTTP 503 status, instead of Odoo. The page carries your workspace's branding, the app's name, an expected duration and a contact. The app itself keeps running behind it. Disable Maintenance takes the page down.

The platform also shows the page on its own while it changes your data: during Update Modules and while a rollback restores data.

Following a run

Every change you start (and every automatic one) is a run. The app's Operations menu shows them in three tabs: Workflows (each change, step by step), Runners (each step's attempts, with their output) and Queues (changes waiting their turn).

The Operations menu of an app, on its Workflows tab
An app's runs, on the Workflows tab.
StateMeaning
Draft, IdleCreated, not started yet.
Running, Partial DoneUnder way; some steps are done.
RetryingA step failed and the platform will try it again in a few minutes.
DoneEvery step worked.
ErrorA step failed and no more automatic attempts are coming. Open it to read why, then use Retry.
CanceledStopped before it finished.

One change at a time

An app runs one change at a time. While something runs on it, Build is hidden, and Restart Service, Update Modules and maintenance are refused with a message that names what is running, for example Cannot restart v19-0 while 'a backup' is running. Wait for it to finish, then try again.

When the platform is busy, runs wait for a free slot. A run a person started gets the next free slot before automatic updates, so your change does not wait behind a batch of pushes.

Logs

The Logger shows the app's log files. odoo.log is the app's own log, including what its container prints; the other files are the logs of its setup, backups, restores and transfers.

The Logger with its log files on the left and a saved snapshot open
The Logger, showing a saved snapshot.
  • Live follows the end of the file as it grows; stop and resume it with the buttons above the log.
  • The level buttons (Info, Warning, Error, Debug, Other) count the lines of each level and filter them.
  • Search the log, and jump between matches with Enter and Shift+Enter.
  • Snapshots are copies of logs the platform saved, such as the setup log of a deployment; they stay readable after the file has moved on.
  • The view options let you download the full log file.

Who may do what

What you may do on an app depends on your role in the workspace and on the app's environment.

ActionDevelopmentStagingProduction
See the app and its settingsViewerViewerViewer
Build, Retry, Backup, Restart, Update Modules, Apply Config, maintenance, Renew SSL, change settingsDeveloperDeveloper PlusMaintainer
Delete InstanceDeveloperDeveloper PlusAdmin
Open a terminal on the app's serverDeveloperDeveloperMaintainer

See Permissions & access for the roles.

Going back

Every change leaves a restore point: the app's code and data just before it. If a change went wrong, roll the app back to the point before it, by its code, its data or both. See Restore points & safe updates.

Was this page helpful?

Your answer helps us prioritize documentation improvements.

Thanks — your feedback helps us improve.