diff --git a/extensions/slack/runtime/pom.xml b/extensions/slack/runtime/pom.xml
index 6b4e8e4..04d2412 100644
--- a/extensions/slack/runtime/pom.xml
+++ b/extensions/slack/runtime/pom.xml
@@ -55,6 +55,11 @@
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-slack</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.graalvm.nativeimage</groupId>
+            <artifactId>svm</artifactId>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/extensions/slack/runtime/src/main/java/org/apache/camel/quarkus/component/slack/graal/SlackSubstitutions.java b/extensions/slack/runtime/src/main/java/org/apache/camel/quarkus/component/slack/graal/SlackSubstitutions.java
new file mode 100644
index 0000000..1038f9a
--- /dev/null
+++ b/extensions/slack/runtime/src/main/java/org/apache/camel/quarkus/component/slack/graal/SlackSubstitutions.java
@@ -0,0 +1,196 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.component.slack.graal;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import com.oracle.svm.core.annotate.Alias;
+import com.oracle.svm.core.annotate.RecomputeFieldValue;
+import com.oracle.svm.core.annotate.Substitute;
+import com.oracle.svm.core.annotate.TargetClass;
+import com.oracle.svm.core.annotate.TargetElement;
+import com.slack.api.SlackConfig;
+import com.slack.api.audit.AuditConfig;
+import com.slack.api.methods.MethodsConfig;
+import com.slack.api.rate_limits.metrics.MetricsDatastore;
+import com.slack.api.scim.SCIMConfig;
+import com.slack.api.util.http.listener.DetailedLoggingListener;
+import com.slack.api.util.http.listener.HttpResponseListener;
+import com.slack.api.util.http.listener.ResponsePrettyPrintingListener;
+
+import static com.oracle.svm.core.annotate.RecomputeFieldValue.Kind.Reset;
+
+/**
+ * Avoids original impl of eagerly initialized static fields which leads to a
+ * started thread via com.slack.api.rate_limits.metrics.impl.BaseMemoryMetricsDatastore.MaintenanceJob
+ */
+final class SlackSubstitutions {
+}
+
+@TargetClass(SlackConfig.class)
+final class SlackConfigSubstitutions {
+
+    @Alias
+    @RecomputeFieldValue(kind = Reset)
+    private AuditConfig auditConfig = new AuditConfig() {
+        void throwException() {
+            throw new UnsupportedOperationException("This config is immutable");
+        }
+
+        @Override
+        public void setStatsEnabled(boolean statsEnabled) {
+            throwException();
+        }
+
+        @Override
+        public void setExecutorName(String executorName) {
+            throwException();
+        }
+
+        @Override
+        public void setMaxIdleMills(int maxIdleMills) {
+            throwException();
+        }
+
+        @Override
+        public void setDefaultThreadPoolSize(int defaultThreadPoolSize) {
+            throwException();
+        }
+
+        @Override
+        public void setMetricsDatastore(MetricsDatastore metricsDatastore) {
+            throwException();
+        }
+
+        @Override
+        public void setCustomThreadPoolSizes(Map<String, Integer> customThreadPoolSizes) {
+            throwException();
+        }
+    };
+
+    @Alias
+    @RecomputeFieldValue(kind = Reset)
+    private MethodsConfig methodsConfig = new MethodsConfig() {
+        void throwException() {
+            throw new UnsupportedOperationException("This config is immutable");
+        }
+
+        @Override
+        public void setStatsEnabled(boolean statsEnabled) {
+            throwException();
+        }
+
+        @Override
+        public void setExecutorName(String executorName) {
+            throwException();
+        }
+
+        @Override
+        public void setMaxIdleMills(int maxIdleMills) {
+            throwException();
+        }
+
+        @Override
+        public void setDefaultThreadPoolSize(int defaultThreadPoolSize) {
+            throwException();
+        }
+
+        @Override
+        public void setMetricsDatastore(MetricsDatastore metricsDatastore) {
+            throwException();
+        }
+
+        @Override
+        public void setCustomThreadPoolSizes(Map<String, Integer> customThreadPoolSizes) {
+            throwException();
+        }
+    };
+
+    @Alias
+    @RecomputeFieldValue(kind = Reset)
+    private SCIMConfig sCIMConfig = new SCIMConfig() {
+        void throwException() {
+            throw new UnsupportedOperationException("This config is immutable");
+        }
+
+        @Override
+        public void setStatsEnabled(boolean statsEnabled) {
+            throwException();
+        }
+
+        @Override
+        public void setExecutorName(String executorName) {
+            throwException();
+        }
+
+        @Override
+        public void setMaxIdleMills(int maxIdleMills) {
+            throwException();
+        }
+
+        @Override
+        public void setDefaultThreadPoolSize(int defaultThreadPoolSize) {
+            throwException();
+        }
+
+        @Override
+        public void setMetricsDatastore(MetricsDatastore metricsDatastore) {
+            throwException();
+        }
+
+        @Override
+        public void setCustomThreadPoolSizes(Map<String, Integer> customThreadPoolSizes) {
+            throwException();
+        }
+    };
+
+    @Alias
+    private List<HttpResponseListener> httpClientResponseHandlers = new ArrayList();
+
+    @Substitute
+    @TargetElement(name = "SlackConfig")
+    public SlackConfigSubstitutions() {
+        httpClientResponseHandlers.add(new DetailedLoggingListener());
+        httpClientResponseHandlers.add(new ResponsePrettyPrintingListener());
+    }
+}
+
+@TargetClass(AuditConfig.class)
+final class AuditConfigSubstitutions {
+
+    @Alias
+    @RecomputeFieldValue(kind = Reset)
+    public static AuditConfig DEFAULT_SINGLETON = null;
+}
+
+@TargetClass(MethodsConfig.class)
+final class MethodsConfigSubstitutions {
+
+    @Alias
+    @RecomputeFieldValue(kind = Reset)
+    public static MethodsConfig DEFAULT_SINGLETON = null;
+}
+
+@TargetClass(SCIMConfig.class)
+final class SCIMConfigSubstitutions {
+
+    @Alias
+    @RecomputeFieldValue(kind = Reset)
+    public static SCIMConfig DEFAULT_SINGLETON = null;
+}
diff --git a/integration-tests/slack/pom.xml b/integration-tests/slack/pom.xml
index 1e4682c..a9457a4 100644
--- a/integration-tests/slack/pom.xml
+++ b/integration-tests/slack/pom.xml
@@ -30,13 +30,10 @@
     <description>Integration tests for Camel Quarkus Slack extension</description>
 
     <dependencies>
+        <!-- Mongo dependency exists as a test for https://github.com/apache/camel-quarkus/issues/2489 -->
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-netty-http</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-rest</artifactId>
+            <artifactId>camel-quarkus-mongodb</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
@@ -66,20 +63,7 @@
         <!-- The following dependencies guarantee that this module is built after them. You can update them by running `mvn process-resources -Pformat -N` from the source tree root directory -->
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-netty-http-deployment</artifactId>
-            <version>${project.version}</version>
-            <type>pom</type>
-            <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-rest-deployment</artifactId>
+            <artifactId>camel-quarkus-mongodb-deployment</artifactId>
             <version>${project.version}</version>
             <type>pom</type>
             <scope>test</scope>
diff --git a/integration-tests/slack/src/main/resources/application.properties b/integration-tests/slack/src/main/resources/application.properties
new file mode 100644
index 0000000..88f15d1
--- /dev/null
+++ b/integration-tests/slack/src/main/resources/application.properties
@@ -0,0 +1,18 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License.  You may obtain a copy of the License at
+##
+##      http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+quarkus.log.category."org.mongodb".level = OFF
