Odoo’s master documentation states that the legacy RPC database service is removed in Odoo 20. The broader XML-RPC and JSON-RPC APIs have been deprecated since version 19.0, but Odoo 20 does not remove every legacy service. Odoo documents the common and object services as remaining available until Odoo 22. (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API) Integration teams therefore need to identify the service used by each external connection, rather than treating legacy RPC support as a single feature with one removal date.

Odoo’s Americas event page said Odoo 20 would be released during its San Francisco event on 2 and 3 September 2026. (Oxp26 Americas Introduction) Upgrade planning can account for the documented database-service removal now, but production decisions should be checked against the final Odoo 20 release documentation.

The removal applies to a specific service

Odoo identifies `/xmlrpc`, `/xmlrpc/2` and `/jsonrpc` as legacy endpoints deprecated from version 19.0. Within those APIs, the database service is removed in Odoo 20, while the common and object services are scheduled to remain until Odoo 22. (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API) An integration using a retained service may continue to operate after an Odoo 20 upgrade, but the endpoint alone does not establish compatibility.

A system can use different services through the legacy RPC interface. An integration review should therefore record both the endpoint and the service called. Describing an application only as an XML-RPC or JSON-RPC integration does not show whether it depends on an operation removed in Odoo 20. (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API)

The continued availability of the common and object services is temporary. Odoo schedules both for removal in Odoo 22. (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API) Teams can separate urgent work on database-service calls from the migration of retained services, but both require a plan.

JSON-2 changes the request contract

Odoo documents JSON-2 as the replacement API. Its endpoint format is `/json/2/<model>/<method>`, with the model and method included in the URL. (Odoo master Docs: Reference External API) Migration therefore involves more than replacing the base path in an existing RPC client. Each operation must be mapped to the appropriate model and method route.

JSON-2 requires named arguments in a JSON request body rather than positional RPC arguments. (Odoo master Docs: Reference External API) Existing wrappers, middleware and generated clients may assume that argument order determines meaning. Those components need individual review. Redirecting a legacy request to the new endpoint will not work if the client continues to construct positional parameters.

For each migrated operation, teams should document the target model, method and named arguments required by JSON-2. (Odoo master Docs: Reference External API) Requests should then be tested in the relevant Odoo 20 environment, particularly when a shared integration library constructs calls for several applications. Static payload comparisons cannot confirm how the server or client handles the complete request.

Authentication must also change

JSON-2 uses bearer API-key authentication. (Odoo master Docs: Reference External API) Migration work should cover key creation, secure storage, authorisation-header handling and key replacement. Proxies, gateways and client libraries should be checked to ensure that they preserve the header when forwarding requests. Logging, monitoring and error handling should also be reviewed so that credentials are not exposed.

The documentation establishes the authentication method, but each organisation must determine how API keys fit its credential controls. (Odoo master Docs: Reference External API) That includes assigning responsibility for keys, controlling where they can be used and defining how affected integrations will be updated when a key is replaced.

Binary fields have a separate compatibility change

Odoo’s ORM changelog records another Odoo 20 RPC change: the representation of binary fields adds `BinaryValue.filename`. (Odoo master Docs: Orm Changelog) This is separate from the database-service removal because it changes returned data rather than service availability. Applications that read, transform or validate responses containing binary fields should be included in compatibility testing.

The changelog confirms that the `filename` member is added, but its practical effect depends on the client. (Odoo master Docs: Orm Changelog) Tests should check whether strict schemas, serializers, response comparisons and downstream transformations accept the additional member. Clients that ignore unknown fields may require no adjustment, but that behaviour should be verified rather than assumed.

How to scope the integration audit

Begin by identifying connections that use `/xmlrpc`, `/xmlrpc/2` or `/jsonrpc`, which Odoo marks as deprecated endpoints. (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API) The inventory should cover internally developed applications, middleware, scheduled processes and third-party connectors where configuration or source code is available. Assign an owner to each connection so that its purpose and status can be verified.

Next, classify each connection by legacy service. Database-service use requires remediation for Odoo 20, while common and object service use remains documented as available until Odoo 22. (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API) This supports a phased plan: address the Odoo 20 incompatibility first, then set migration dates for the remaining deprecated calls.

For integrations moving to JSON-2, record the `/json/2/<model>/<method>` route, named request arguments and bearer API-key authentication required by the replacement interface. (Odoo master Docs: Reference External API) Test cases should cover successful requests, rejected authentication, invalid named arguments and application handling of returned data. Add binary-field cases wherever those fields occur.

Confirm the final Odoo 20 behaviour

The removal details are drawn from Odoo’s master developer documentation, while the announced release timing comes from an event page stating that Odoo 20 would be released during the September 2026 Americas event. (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API; Oxp26 Americas Introduction) Before deployment, teams should recheck the documentation for the released Odoo 20 version and the exact edition and build they intend to use.

Using a deprecated RPC endpoint does not by itself prove that an integration will stop working in Odoo 20, because the common and object services remain documented until Odoo 22. Conversely, successful operation on an earlier version does not establish compatibility for a database-service call after its removal. (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API)

Upgrade decision checklist

Before approving an Odoo 20 upgrade, decision-makers should request an integration register showing each deprecated endpoint, the service called, its owner and the planned remediation. Database-service dependencies should have a tested replacement. Integrations remaining on common or object services should have a separate migration date reflecting their documented removal in Odoo 22. (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API)

The review should confirm that JSON-2 implementations place the model and method in the URL, use named JSON arguments and authenticate with a bearer API key. Where binary fields are present, testing should account for the addition of `BinaryValue.filename`. (Odoo master Docs: Reference External API; Odoo master Docs: Orm Changelog) These checks distinguish the immediate Odoo 20 database-service removal from the later retirement of the remaining legacy services.