diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8c189a1613a3890a3eba60d2661ab85aeb806793..9f9cae9c4361997c35e25c459a1689380728dedd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,15 @@
+# [4.0.0](https://gitlab.com/to-be-continuous/docker/compare/3.5.3...4.0.0) (2023-04-05)
+
+
+### Features
+
+* **publish:** redesign publish on prod strategy ([524ccc1](https://gitlab.com/to-be-continuous/docker/commit/524ccc10686991d63aa6f23b40a9b77f68da4cb9))
+
+
+### BREAKING CHANGES
+
+* **publish:** $PUBLISH_ON_PROD no longer supported (replaced by $DOCKER_PROD_PUBLISH_STRATEGY - see doc)
+
 ## [3.5.3](https://gitlab.com/to-be-continuous/docker/compare/3.5.2...3.5.3) (2023-03-28)
 
 
diff --git a/README.md b/README.md
index e42bc9e2cddc1124f8f376e0845f03c0e661f0a2..896e8c5d7f4f35938ccd47bc63ca8b0c4e732605 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@ In order to include this template in your project, add the following to your `.g
 ```yaml
 include:
   - project: 'to-be-continuous/docker'
-    ref: '3.5.3'
+    ref: '4.0.0'
     file: '/templates/gitlab-ci-docker.yml'
 ```
 
@@ -468,7 +468,7 @@ Here is a `.gitlab-ci.yaml` using an external Docker registry:
 ```yaml
 include:
   - project: 'to-be-continuous/docker'
-    ref: '3.5.3'
+    ref: '4.0.0'
     file: '/templates/gitlab-ci-docker.yml'
 
 variables:
@@ -486,7 +486,7 @@ Here is a `.gitlab-ci.yaml` that builds 2 Docker images from the same project (u
 ```yaml
 include:
   - project: 'to-be-continuous/docker'
-    ref: '3.5.3'
+    ref: '4.0.0'
     file: '/templates/gitlab-ci-docker.yml'
 
 variables:
@@ -543,11 +543,11 @@ With:
 include:
   # main template
   - project: 'to-be-continuous/docker'
-    ref: '3.5.3'
+    ref: '4.0.0'
     file: '/templates/gitlab-ci-docker.yml'
   # Vault variant
   - project: 'to-be-continuous/docker'
-    ref: '3.5.3'
+    ref: '4.0.0'
     file: '/templates/gitlab-ci-docker-vault.yml'
 
 variables:
diff --git a/templates/gitlab-ci-docker-vault.yml b/templates/gitlab-ci-docker-vault.yml
index 103a3fbf69fb0889452558725c83c5c222cec038..90d8803c8277a4cd06fa68d98f16a6af8d849e58 100644
--- a/templates/gitlab-ci-docker-vault.yml
+++ b/templates/gitlab-ci-docker-vault.yml
@@ -11,6 +11,6 @@ variables:
 .docker-base:
   services:
     - name: "$TBC_TRACKING_IMAGE"
-      command: ["--service", "docker", "3.5.3"]
+      command: ["--service", "docker", "4.0.0"]
     - name: "$TBC_VAULT_IMAGE"
       alias: "vault-secrets-provider"
diff --git a/templates/gitlab-ci-docker.yml b/templates/gitlab-ci-docker.yml
index ecfcb9a4d6f3d1bea3015bdaf65cc60a2eedd1ae..d8821a92ca53097f6d6b296b5c675e040a094fe8 100644
--- a/templates/gitlab-ci-docker.yml
+++ b/templates/gitlab-ci-docker.yml
@@ -412,7 +412,7 @@ stages:
 .docker-base:
   services:
     - name: "$TBC_TRACKING_IMAGE"
-      command: ["--service", "docker", "3.5.3"]
+      command: ["--service", "docker", "4.0.0"]
   before_script:
     - *docker-scripts
 
@@ -441,7 +441,7 @@ stages:
     _TRACE: "${TRACE}"
   services:
     - name: "$TBC_TRACKING_IMAGE"
-      command: ["--service", "docker", "3.5.3"]
+      command: ["--service", "docker", "4.0.0"]
     - name: $DOCKER_DIND_IMAGE
       alias: docker
       command: