diff --git a/handlers/main.yml b/handlers/main.yml
index 242871a25ff182a0e3d6f0f4d373c0b893de23b8..4bab658dd9c88e31891fb7061043ac3424bdaa16 100644
--- a/handlers/main.yml
+++ b/handlers/main.yml
@@ -1,9 +1,10 @@
 ---
 - name: Start odoo whitelists
-  community.docker.docker_compose:
+  community.docker.docker_compose_v2:
       project_src: /home/docker
       files: whitelists.yaml
       project_name: whitelists
+      state: restarted
 
 - name: Pull odoo ML image
   community.docker.docker_image:
@@ -27,21 +28,33 @@
   when: not ansible_check_mode and not (instance.value.odoo_multilingual | default(false) or instance.value.odoo_python36 | default(false))
 
 - name: Build odoo image
-  community.docker.docker_compose:
+  community.docker.docker_compose_v2:
       project_src: /home/docker/{{ instance.key }}/
-      build: true
-      nocache: true
+      build: always
+      # TODO: ensure build without cache.
       recreate: always
-      restarted: true
       remove_orphans: true
+      state: restarted
   async: 600
   poll: 10
   when: not ansible_check_mode
 
-- name: Start odoo container
-  community.docker.docker_compose:
-      project_src: /home/docker/{{ instance.key }}/
-      remove_orphans: true
+- name: Restart odoo container
+  block:
+    - name: Remove container
+      community.docker.docker_compose_v2:
+          project_src: /home/docker/{{ instance.key }}/
+          remove_orphans: true
+          state: absent
+      listen: restart odoo container
+
+    - name: Start container
+      community.docker.docker_compose_v2:
+          project_src: /home/docker/{{ instance.key }}/
+          recreate: always
+          remove_orphans: true
+          state: present
+      listen: restart odoo container
   when: not ansible_check_mode
 
 - name: Remove intermediate image
diff --git a/tasks/instance.yml b/tasks/instance.yml
index e84704e72a1bf7b2277707d299558b51f5054699..4c87319927f352e15c6917f39a1e0474453d5359 100644
--- a/tasks/instance.yml
+++ b/tasks/instance.yml
@@ -138,6 +138,7 @@
 
 - name: Copy docker compose service
   tags:
+    - "docker_proxy"
     - "metabase"
     - "odoo"
   ansible.builtin.template:
@@ -146,7 +147,7 @@
       owner: root
       group: root
       mode: '0400'
-  notify: Start odoo container
+  notify: "restart odoo container"
 
 # --------------------------------------------------
 # non-prod restore section
@@ -222,6 +223,7 @@
 # Flush handlers.
 - name: Set facts
   tags:
+    - "docker_proxy"
     - "metabase"
     - "odoo"
   ansible.builtin.set_fact:
@@ -231,6 +233,7 @@
 
 - name: Flush handlers
   tags:
+    - "docker_proxy"
     - "metabase"
     - "odoo"
   ansible.builtin.meta: flush_handlers