diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8ff1385dc..9cc276117 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -40,6 +40,7 @@ All notable changes to this project will be documented in this file.
- opa: Remove `1.0.1` ([#1279]).
- spark: Remove `3.5.5` ([#1280]).
- spark-connect-client: Remove unused example script from the image ([#1280]).
+- kafka: Remove `3.9.0` ([#1283]).
[#1207]: https://github.com/stackabletech/docker-images/pull/1207
[#1215]: https://github.com/stackabletech/docker-images/pull/1215
@@ -58,6 +59,7 @@ All notable changes to this project will be documented in this file.
[#1277]: https://github.com/stackabletech/docker-images/pull/1277
[#1263]: https://github.com/stackabletech/docker-images/pull/1263
[#1279]: https://github.com/stackabletech/docker-images/pull/1279
+[#1283]: https://github.com/stackabletech/docker-images/pull/1283
## [25.7.0] - 2025-07-23
diff --git a/kafka/boil-config.toml b/kafka/boil-config.toml
index eadded2a0..22ecf677f 100644
--- a/kafka/boil-config.toml
+++ b/kafka/boil-config.toml
@@ -8,16 +8,6 @@ java-devel = "21"
scala-version = "2.13"
jmx-exporter-version = "1.3.0"
-[versions."3.9.0".local-images]
-java-base = "21"
-java-devel = "21"
-"kafka/kcat" = "1.7.0"
-"kafka/kafka-opa-plugin" = "1.5.1"
-
-[versions."3.9.0".build-arguments]
-scala-version = "2.13"
-jmx-exporter-version = "1.3.0"
-
[versions."3.9.1".local-images]
java-base = "21"
java-devel = "21"
diff --git a/kafka/stackable/patches/3.9.0/0001-Add-CycloneDX-plugin.patch b/kafka/stackable/patches/3.9.0/0001-Add-CycloneDX-plugin.patch
deleted file mode 100644
index 87610bda7..000000000
--- a/kafka/stackable/patches/3.9.0/0001-Add-CycloneDX-plugin.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From f172eee080ac79daf38a039e1f5dd06ad3968ce8 Mon Sep 17 00:00:00 2001
-From: Lukas Voetmand
-Date: Thu, 17 Oct 2024 11:01:40 +0200
-Subject: Add CycloneDX plugin
-
----
- build.gradle | 42 ++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 42 insertions(+)
-
-diff --git a/build.gradle b/build.gradle
-index 5b064f4203..2d7b442e7b 100644
---- a/build.gradle
-+++ b/build.gradle
-@@ -51,6 +51,48 @@ plugins {
- // We are going to drop JDK8 support. Hence, the spotless is upgrade to newest version and be applied only if the build env is compatible with JDK 11.
- // spotless 6.15.0+ has issue in runtime with JDK8 even through we define it with `apply:false`. see https://github.com/diffplug/spotless/issues/2156 for more details
- id 'com.diffplug.spotless' version "6.14.0" apply false
-+ id 'org.cyclonedx.bom' version '1.10.0'
-+}
-+
-+cyclonedxBom {
-+ // Specified the type of project being built. Defaults to 'library'
-+ projectType = "application"
-+ // Specified the version of the CycloneDX specification to use. Defaults to '1.5'
-+ schemaVersion = "1.5"
-+ // Boms destination directory. Defaults to 'build/reports'
-+ destination = file("build/reports")
-+ // The file name for the generated BOMs (before the file format suffix). Defaults to 'bom'
-+ outputName = "bom"
-+ // The file format generated, can be xml, json or all for generating both. Defaults to 'all'
-+ outputFormat = "json"
-+ includeConfigs = ["runtimeClasspath"]
-+ // Exclude test components. This list needs to be checked and, if it changed, updated for every new Kafka version.
-+ // The list can be obtained by running `gradle projects | grep upgrade-system-tests`
-+ skipProjects = [
-+ 'upgrade-system-tests-0100',
-+ 'upgrade-system-tests-0101',
-+ 'upgrade-system-tests-0102',
-+ 'upgrade-system-tests-0110',
-+ 'upgrade-system-tests-10',
-+ 'upgrade-system-tests-11',
-+ 'upgrade-system-tests-20',
-+ 'upgrade-system-tests-21',
-+ 'upgrade-system-tests-22',
-+ 'upgrade-system-tests-23',
-+ 'upgrade-system-tests-24',
-+ 'upgrade-system-tests-25',
-+ 'upgrade-system-tests-26',
-+ 'upgrade-system-tests-27',
-+ 'upgrade-system-tests-28',
-+ 'upgrade-system-tests-30',
-+ 'upgrade-system-tests-31',
-+ 'upgrade-system-tests-32',
-+ 'upgrade-system-tests-33',
-+ 'upgrade-system-tests-34',
-+ 'upgrade-system-tests-35',
-+ 'upgrade-system-tests-36',
-+ 'upgrade-system-tests-37'
-+ ]
- }
-
- ext {
diff --git a/kafka/stackable/patches/3.9.0/0002-Change-Gradle-to-use-the-Nexus-Build-Repo.patch b/kafka/stackable/patches/3.9.0/0002-Change-Gradle-to-use-the-Nexus-Build-Repo.patch
deleted file mode 100644
index 79d30fd7e..000000000
--- a/kafka/stackable/patches/3.9.0/0002-Change-Gradle-to-use-the-Nexus-Build-Repo.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 933fb35d713c86e349175176c54fe83b03b491c6 Mon Sep 17 00:00:00 2001
-From: Lars Francke
-Date: Thu, 12 Dec 2024 10:09:47 +0100
-Subject: Change Gradle to use the Nexus Build Repo
-
----
- build.gradle | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/build.gradle b/build.gradle
-index 2d7b442e7b..3e727be2f0 100644
---- a/build.gradle
-+++ b/build.gradle
-@@ -20,7 +20,9 @@ import java.nio.charset.StandardCharsets
-
- buildscript {
- repositories {
-- mavenCentral()
-+ maven {
-+ url 'https://build-repo.stackable.tech/repository/maven-public/'
-+ }
- }
- apply from: "$rootDir/gradle/dependencies.gradle"
-
-@@ -171,7 +173,9 @@ ext {
- allprojects {
-
- repositories {
-- mavenCentral()
-+ maven {
-+ url 'https://build-repo.stackable.tech/repository/maven-public/'
-+ }
- }
-
- dependencyUpdates {
diff --git a/kafka/stackable/patches/3.9.0/0003-Build-custom-Stackable-version.patch b/kafka/stackable/patches/3.9.0/0003-Build-custom-Stackable-version.patch
deleted file mode 100644
index d171307a6..000000000
--- a/kafka/stackable/patches/3.9.0/0003-Build-custom-Stackable-version.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-From de4d98f9cd65d93bb4bb061c233f6647efc951f4 Mon Sep 17 00:00:00 2001
-From: dervoeti
-Date: Wed, 18 Jun 2025 12:16:46 +0200
-Subject: Build custom Stackable version
-
----
- docs/js/templateData.js | 2 +-
- docs/streams/upgrade-guide.html | 2 +-
- gradle.properties | 2 +-
- kafka-merge-pr.py | 2 +-
- streams/quickstart/java/pom.xml | 2 +-
- .../java/src/main/resources/archetype-resources/pom.xml | 2 +-
- streams/quickstart/pom.xml | 2 +-
- tests/kafkatest/__init__.py | 2 +-
- tests/kafkatest/version.py | 4 ++--
- 9 files changed, 10 insertions(+), 10 deletions(-)
-
-diff --git a/docs/js/templateData.js b/docs/js/templateData.js
-index 13d352fc70..42d3549382 100644
---- a/docs/js/templateData.js
-+++ b/docs/js/templateData.js
-@@ -19,6 +19,6 @@ limitations under the License.
- var context={
- "version": "39",
- "dotVersion": "3.9",
-- "fullDotVersion": "3.9.0",
-+ "fullDotVersion": "3.9.0-stackable0.0.0-dev",
- "scalaVersion": "2.13"
- };
-diff --git a/docs/streams/upgrade-guide.html b/docs/streams/upgrade-guide.html
-index 6a30e6671b..6d2ecb81aa 100644
---- a/docs/streams/upgrade-guide.html
-+++ b/docs/streams/upgrade-guide.html
-@@ -133,7 +133,7 @@
- More details about the new config StreamsConfig#TOPOLOGY_OPTIMIZATION
can be found in KIP-295.
-
-
--
-+
-
-
- The introduction of KIP-1033
-diff --git a/gradle.properties b/gradle.properties
-index 0c14658608..b79ee9f0cf 100644
---- a/gradle.properties
-+++ b/gradle.properties
-@@ -23,7 +23,7 @@ group=org.apache.kafka
- # - streams/quickstart/pom.xml
- # - streams/quickstart/java/src/main/resources/archetype-resources/pom.xml
- # - streams/quickstart/java/pom.xml
--version=3.9.0
-+version=3.9.0-stackable0.0.0-dev
- scalaVersion=2.13.14
- # Adding swaggerVersion in gradle.properties to have a single version in place for swagger
- # New version of Swagger 2.2.14 requires minimum JDK 11.
-diff --git a/kafka-merge-pr.py b/kafka-merge-pr.py
-index a775a38435..4a7fbac34e 100755
---- a/kafka-merge-pr.py
-+++ b/kafka-merge-pr.py
-@@ -70,7 +70,7 @@ TEMP_BRANCH_PREFIX = "PR_TOOL"
-
- DEV_BRANCH_NAME = "trunk"
-
--DEFAULT_FIX_VERSION = os.environ.get("DEFAULT_FIX_VERSION", "3.9.0")
-+DEFAULT_FIX_VERSION = os.environ.get("DEFAULT_FIX_VERSION", "3.9.0-stackable0.0.0-dev")
-
- ORIGINAL_HEAD = ""
-
-diff --git a/streams/quickstart/java/pom.xml b/streams/quickstart/java/pom.xml
-index 78e1a70fa7..8698b4eb35 100644
---- a/streams/quickstart/java/pom.xml
-+++ b/streams/quickstart/java/pom.xml
-@@ -26,7 +26,7 @@
-
- org.apache.kafka
- streams-quickstart
-- 3.9.0
-+ 3.9.0-stackable0.0.0-dev
- ..
-
-
-diff --git a/streams/quickstart/java/src/main/resources/archetype-resources/pom.xml b/streams/quickstart/java/src/main/resources/archetype-resources/pom.xml
-index 2bc235eb16..90d566d1a0 100644
---- a/streams/quickstart/java/src/main/resources/archetype-resources/pom.xml
-+++ b/streams/quickstart/java/src/main/resources/archetype-resources/pom.xml
-@@ -29,7 +29,7 @@
-
-
- UTF-8
-- 3.9.0
-+ 3.9.0-stackable0.0.0-dev
- 1.7.36
-
-
-diff --git a/streams/quickstart/pom.xml b/streams/quickstart/pom.xml
-index b5101583ee..3c08985e2a 100644
---- a/streams/quickstart/pom.xml
-+++ b/streams/quickstart/pom.xml
-@@ -22,7 +22,7 @@
- org.apache.kafka
- streams-quickstart
- pom
-- 3.9.0
-+ 3.9.0-stackable0.0.0-dev
-
- Kafka Streams :: Quickstart
-
-diff --git a/tests/kafkatest/__init__.py b/tests/kafkatest/__init__.py
-index a190e05067..0aa8fa7095 100644
---- a/tests/kafkatest/__init__.py
-+++ b/tests/kafkatest/__init__.py
-@@ -22,4 +22,4 @@
- # Instead, in development branches, the version should have a suffix of the form ".devN"
- #
- # For example, when Kafka is at version 1.0.0-SNAPSHOT, this should be something like "1.0.0.dev0"
--__version__ = '3.9.0'
-+__version__ = '3.9.0-stackable0.0.0-dev'
-diff --git a/tests/kafkatest/version.py b/tests/kafkatest/version.py
-index 4825a46039..06fd3029f9 100644
---- a/tests/kafkatest/version.py
-+++ b/tests/kafkatest/version.py
-@@ -122,7 +122,7 @@ def get_version(node=None):
- return DEV_BRANCH
-
- DEV_BRANCH = KafkaVersion("dev")
--DEV_VERSION = KafkaVersion("3.9.0-SNAPSHOT")
-+DEV_VERSION = KafkaVersion("3.9.0-stackable0.0.0-dev")
-
- # This should match the LATEST_PRODUCTION version defined in MetadataVersion.java
- LATEST_STABLE_METADATA_VERSION = "3.9-IV0"
-@@ -276,5 +276,5 @@ V_3_8_0 = KafkaVersion("3.8.0")
- LATEST_3_8 = V_3_8_0
-
- # 3.9.x version
--V_3_9_0 = KafkaVersion("3.9.0")
-+V_3_9_0 = KafkaVersion("3.9.0-stackable0.0.0-dev")
- LATEST_3_9 = V_3_9_0
diff --git a/kafka/stackable/patches/3.9.0/patchable.toml b/kafka/stackable/patches/3.9.0/patchable.toml
deleted file mode 100644
index ebdd7dfb1..000000000
--- a/kafka/stackable/patches/3.9.0/patchable.toml
+++ /dev/null
@@ -1,2 +0,0 @@
-base = "84caaa6e9da06435411510a81fa321d4f99c351f"
-mirror = "https://github.com/stackabletech/kafka.git"