Tài liệu chính thức của Odoo cho biết dịch vụ RPC cơ sở dữ liệu cũ bị loại bỏ trong Odoo 20. Các API XML-RPC và JSON-RPC rộng hơn đã bị deprecate từ phiên bản 19.0, nhưng Odoo 20 không loại bỏ mọi dịch vụ cũ. Odoo ghi nhận các dịch vụ common và object vẫn khả dụng đến Odoo 22. (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API) Vì vậy, các nhóm tích hợp cần xác định dịch vụ được dùng bởi từng kết nối bên ngoài, thay vì coi hỗ trợ RPC cũ như một tính năng duy nhất với một ngày bị loại bỏ.

Trang sự kiện Americas của Odoo cho biết Odoo 20 sẽ được phát hành trong sự kiện tại San Francisco vào ngày 2 và 3 tháng 9 năm 2026. (Oxp26 Americas Introduction) Việc lập kế hoạch nâng cấp có thể tính đến việc loại bỏ dịch vụ cơ sở dữ liệu đã được ghi nhận ngay bây giờ, nhưng các quyết định sản xuất nên được đối chiếu với tài liệu phát hành cuối cùng của Odoo 20.

Việc loại bỏ này áp dụng cho một dịch vụ cụ thể

Odoo xác định `/xmlrpc`, `/xmlrpc/2` và `/jsonrpc` là các endpoint cũ đã bị deprecate từ phiên bản 19.0. Trong các API đó, dịch vụ cơ sở dữ liệu bị loại bỏ trong Odoo 20, trong khi các dịch vụ common và object dự kiến sẽ còn đến Odoo 22. (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API) Một tích hợp sử dụng dịch vụ còn được giữ lại có thể tiếp tục hoạt động sau khi nâng cấp lên Odoo 20, nhưng chỉ riêng endpoint không xác nhận được tính tương thích.

Một hệ thống có thể dùng các dịch vụ khác nhau thông qua giao diện RPC cũ. Vì vậy, việc rà soát tích hợp nên ghi lại cả endpoint lẫn dịch vụ được gọi. Mô tả một ứng dụng chỉ là tích hợp XML-RPC hoặc JSON-RPC không cho thấy liệu nó có phụ thuộc vào một thao tác đã bị loại bỏ trong Odoo 20 hay không. (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API)

Việc các dịch vụ common và object tiếp tục khả dụng chỉ là tạm thời. Odoo dự kiến loại bỏ cả hai trong Odoo 22. (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API) Các nhóm có thể tách riêng công việc khẩn cấp với các lời gọi dịch vụ cơ sở dữ liệu khỏi việc di chuyển các dịch vụ còn được giữ lại, nhưng cả hai đều cần có kế hoạch.

JSON-2 thay đổi hợp đồng của yêu cầu

Odoo ghi nhận JSON-2 là API thay thế. Định dạng endpoint của nó là `/json/2/<model>/<method>`, trong đó model và method được đưa vào URL. (Odoo master Docs: Reference External API) Vì vậy, việc di chuyển không chỉ là thay base path trong một RPC client hiện có. Mỗi thao tác phải được ánh xạ sang route model và method phù hợp.

JSON-2 yêu cầu các đối số có tên trong phần thân JSON của yêu cầu, thay vì các đối số RPC theo vị trí. (Odoo master Docs: Reference External API) Các wrapper, middleware và client được tạo sinh sẵn có thể giả định rằng thứ tự đối số quyết định ý nghĩa. Những thành phần đó cần được rà soát riêng. Chuyển hướng một yêu cầu cũ sang endpoint mới sẽ không hoạt động nếu client vẫn tiếp tục tạo các tham số theo vị trí.

Với mỗi thao tác đã di chuyển, các nhóm nên ghi lại model đích, method và các đối số có tên mà JSON-2 yêu cầu. (Odoo master Docs: Reference External API) Sau đó, cần kiểm thử các yêu cầu trong môi trường Odoo 20 liên quan, đặc biệt khi một thư viện tích hợp dùng chung tạo các lời gọi cho nhiều ứng dụng. So sánh tĩnh payload không thể xác nhận cách máy chủ hoặc client xử lý toàn bộ yêu cầu.

Xác thực cũng phải thay đổi

JSON-2 sử dụng xác thực API key bearer. (Odoo master Docs: Reference External API) Công việc di chuyển cần bao gồm tạo khóa, lưu trữ an toàn, xử lý tiêu đề ủy quyền và thay thế khóa. Cần kiểm tra proxy, gateway và thư viện phía client để bảo đảm chúng giữ nguyên tiêu đề khi chuyển tiếp yêu cầu. Cũng cần rà soát ghi nhật ký, giám sát và xử lý lỗi để không làm lộ thông tin xác thực.

Tài liệu xác lập phương thức xác thực, nhưng mỗi tổ chức phải tự xác định cách khóa API phù hợp với các kiểm soát thông tin xác thực của mình. (Odoo master Docs: Reference External API) Điều đó bao gồm việc phân công trách nhiệm cho khóa, kiểm soát nơi khóa có thể được sử dụng và xác định cách các tích hợp bị ảnh hưởng sẽ được cập nhật khi một khóa được thay thế.

Trường nhị phân có một thay đổi tương thích riêng

Nhật ký thay đổi ORM của Odoo ghi nhận thêm một thay đổi RPC của Odoo 20: biểu diễn của các trường nhị phân bổ sung `BinaryValue.filename`. (Odoo master Docs: Orm Changelog) Điều này tách biệt với việc loại bỏ database-service vì nó thay đổi dữ liệu trả về chứ không phải khả năng sẵn có của dịch vụ. Các ứng dụng đọc, biến đổi hoặc xác thực phản hồi có chứa trường nhị phân nên được đưa vào kiểm thử tương thích.

Nhật ký thay đổi xác nhận rằng thành phần `filename` được thêm vào, nhưng tác động thực tế của nó phụ thuộc vào client. (Odoo master Docs: Orm Changelog) Các bài kiểm thử nên kiểm tra xem lược đồ chặt, bộ tuần tự hóa, so sánh phản hồi và các biến đổi ở downstream có chấp nhận thành phần bổ sung hay không. Các client bỏ qua trường không xác định có thể không cần điều chỉnh, nhưng hành vi đó nên được xác minh chứ không nên mặc định.

Cách xác định phạm vi kiểm tra tích hợp

Bắt đầu bằng cách xác định các kết nối dùng `/xmlrpc`, `/xmlrpc/2` hoặc `/jsonrpc`, mà Odoo đánh dấu là các điểm cuối đã ngừng hỗ trợ. (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API) Danh mục kiểm kê nên bao gồm các ứng dụng do nội bộ phát triển, middleware, quy trình lập lịch và bộ kết nối của bên thứ ba khi có sẵn cấu hình hoặc mã nguồn. Gán một chủ sở hữu cho từng kết nối để có thể xác minh mục đích và trạng thái của nó.

Tiếp theo, phân loại từng kết nối theo dịch vụ cũ. Việc sử dụng database-service cần khắc phục cho Odoo 20, trong khi việc dùng common và object service vẫn được tài liệu ghi nhận là còn khả dụng đến Odoo 22. (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API) Điều này hỗ trợ một kế hoạch theo giai đoạn: xử lý điểm không tương thích của Odoo 20 trước, sau đó ấn định ngày di chuyển cho các lệnh gọi đã ngừng hỗ trợ còn lại.

Đối với các tích hợp chuyển sang JSON-2, ghi lại tuyến `/json/2/<model>/<method>`, các đối số yêu cầu có tên và xác thực bearer bằng API key mà giao diện thay thế yêu cầu. (Odoo master Docs: Reference External API) Các trường hợp kiểm thử nên bao gồm yêu cầu thành công, xác thực bị từ chối, đối số có tên không hợp lệ và xử lý dữ liệu trả về của ứng dụng. Thêm các trường hợp cho trường nhị phân ở bất cứ nơi nào các trường đó xuất hiện.

Xác nhận hành vi cuối cùng của Odoo 20

Chi tiết về việc loại bỏ được lấy từ tài liệu dành cho nhà phát triển của Odoo, còn thời điểm phát hành được công bố đến từ một trang sự kiện nêu rằng Odoo 20 sẽ được phát hành trong sự kiện Americas tháng 9 năm 2026. (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API; Oxp26 Americas Introduction) Trước khi triển khai, các nhóm nên kiểm tra lại tài liệu cho phiên bản Odoo 20 đã phát hành và đúng edition cùng bản dựng mà họ dự định sử dụng.

Việc sử dụng một điểm cuối RPC đã ngừng hỗ trợ không tự nó chứng minh rằng một tích hợp sẽ ngừng hoạt động trong Odoo 20, vì common và object service vẫn được tài liệu ghi nhận là còn đến Odoo 22. Ngược lại, việc hoạt động thành công trên phiên bản trước không xác lập khả năng tương thích cho lệnh gọi database-service sau khi nó bị loại bỏ. (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API)

Danh sách kiểm tra quyết định nâng cấp

Trước khi phê duyệt nâng cấp lên Odoo 20, người ra quyết định nên yêu cầu một danh mục tích hợp cho thấy từng điểm cuối đã ngừng hỗ trợ, dịch vụ được gọi, chủ sở hữu của nó và biện pháp khắc phục dự kiến. Các phụ thuộc vào database-service phải có một giải pháp thay thế đã được kiểm thử. Các tích hợp còn lại trên common hoặc object service nên có một ngày di chuyển riêng phản ánh việc chúng sẽ bị loại bỏ theo tài liệu trong Odoo 22. (Odoo master Docs: Reference External API; Tài liệu chính thức Odoo: Tham chiếu External Rpc API)

Bản rà soát nên xác nhận rằng các triển khai JSON-2 đặt model và method trong URL, dùng các đối số JSON có tên và xác thực bằng bearer API key. Khi có các trường nhị phân, việc kiểm thử cần tính đến việc bổ sung `BinaryValue.filename`. (Tài liệu chính thức Odoo: Tham chiếu External API; Tài liệu chính thức Odoo: Orm Changelog) Những kiểm tra này giúp phân biệt việc loại bỏ ngay lập tức dịch vụ database của Odoo 20 với việc ngừng các dịch vụ kế thừa còn lại ở giai đoạn sau.