If you need to customize Odoo, you can develop an Odoo app yourself, have it developed, or you can use an app from the Odoo Apps Store. Odoo apps are created by developers and the customizations are done in code. This code is readable (so you can see what has been modified) and secured with a version control system (GitHub).
There are several problems with Odoo Apps from the Odoo App Store (also called third-party apps, or 3p apps). We wrote about this on another blog.
Read our blog: Why have we stopped using apps from the Odoo App Store?
Odoo also offers the Odoo Studio tool. Odoo Studio allows you to customize Odoo through the interface of Odoo itself. You can create fields, change views, or even create new functionality from scratch. These changes are not done in code, but these changes are stored in Odoo's database.
If you can customize Odoo directly from Odoo itself, why hire a developer to make the customizations? With Odoo studio, you can easily do it yourself. Yes, indeed it seems.
Odoo Studio looks great, but it's not the holy grail, and in this blog I'll explain why.
You can't do everything with Odoo Studio
With Odoo Studio, you can make quite a bit. You can create entirely new functionality or extend existing functionality. It can be very useful, but you can't do everything. Creating complete processes, in which data has to flow from one model to another, is actually impossible. Odoo Studio is limited to separate new functionality or adjusting existing functionality, which means that it can only be used to a limited extent and the overview is quickly lost.
Conflicts with other customization
Odoo Studio customizations are only stored in the Odoo database. If a developer develops a custom app for Odoo, he always develops it for a standard Odoo version or a version with all other customizations coded as modules. A developer doesn't have the customer's production database, so he doesn't have any customizations made in Odoo studio, either. That makes it more difficult for a developer to create an adequate solution and can cause technical conflicts.
Difficult to maintain
Writing code (well) brings many important benefits, such as creating automatic tests to guarantee functionality after adjustments and grouping functionalities to keep a complete process together. As mentioned earlier, Odoo Studio customizations are only stored in the Odoo database and not in code. Therefore, these benefits are not present. Changes can have unforeseen consequences for the overall process, and it is more difficult to get a complete overview of all changes that have been made. This makes the Odoo system more difficult to maintain.
Breaks with an Odoo upgrade
When Odoo is upgraded to a new version, the Odoo migration platform also tries to migrate all Odoo Studio customizations. But because each user of Odoo can make their own unique customizations, it is impossible for the migration platform to migrate everything correctly. So you see that multiple Studio customizations cannot be migrated and must be recreated after migration.
Unfamiliarity with the Odoo database
Adding fields to the database, creating calculated fields and relational fields, it's all fairly easy with Odoo. But if you don't know how the Odoo database works and what you can do in a database and what not, you will definitely break Odoo. To make it possible to make adjustments in a generic way, Odoo cannot possibly consider the performance of individual situations. The risk of causing slowdowns in the system is therefore huge, and there is no security for that.
In my opinion, it is almost impossible that a functional Odoo user, with no technical knowledge, can make the right choices when creating complex database fields in Odoo.
And, I'll be very honest. I'm writing this down because I've made these mistakes myself several times... unfortunately 😰.
Create something that already exists
Suppose you are looking for something, but you can't find it in Odoo. Does this mean it doesn't exist in Odoo, or you need to install an extra Odoo App?
Or maybe you don't have the rights to see certain information? Imagine those two situations. This is where Odoo Studio is useful. You 'just' create the missing functionality yourself, with the result that you have created something that already exists in Odoo.
This may seem a bit exaggerated, but believe me, we see it a lot.
Completely destroy Odoo
Yes, you can completely break Odoo with Odoo Studio. Sometimes your adjustment works well in the beginning and you think nothing is wrong. Until suddenly many people started working with Odoo.
An example I once saw is that a user thought: "It is useful to see the available stock on an order line". The field with the (dynamic) stock has been added to the order line as a relationship field, in this way, the value of the stock is stored on the order line.
Done that way and at a quiet time during the weekend, without anyone being bothered. Until Monday, everyone started working with Odoo and Odoo updated all order lines with every stock adjustment. After a few hours, Odoo had become unmanageably slow. Sadly, no one connected it to last Saturday's Studio adaptation.
Difficult to detect errors
Is the system slow? Is the data incorrect? Is a button or menu missing? Is a field missing? This can have several causes, but are all problems that can be caused by Studio. If a code change has been made, there are all kinds of tools to check it, but for studio changes there are no handy log or debug tools that can be consulted. This ensures that errors often go unnoticed for a long time and take a lot of time, money, and energy to repair.
Use Odoo Studio to customize screens by adding existing fields or simply creating new fields. Don't create complex fields and relational fields if you don't know what you're doing. Odoo Studio seems like a nice tool, but it cannot replace the knowledge and skills of a programmer.
Odoo is probably a very important software system in your company. Use it wisely, and if you don't know what you're doing, get help from an Odoo Expert. We are ready for you.