diff --git a/build.gradle b/build.gradle
index db6f192b40..38860c6d22 100644
--- a/build.gradle
+++ b/build.gradle
@@ -453,7 +453,7 @@ allprojects {
                     substitute module('commons-logging:commons-logging') with module("org.slf4j:jcl-over-slf4j:$slf4j_version")
 
                     // Remove any transitive dependency on Logback (e.g. Liquibase 3.6 introduces this dependency)
-                    substitute module('ch.qos.logback:logback-classic') with module("org.apache.logging.log4j:log4j-slf4j-impl:$log4j_version")
+                    substitute module('ch.qos.logback:logback-classic') with module("org.apache.logging.log4j:log4j-slf4j2-impl:$log4j_version")
 
                     // Netty-All is an uber-jar which contains every Netty module.
                     // Exclude it to force us to use the individual Netty modules instead.
diff --git a/constants.properties b/constants.properties
index d3c4f57087..6dc1358215 100644
--- a/constants.properties
+++ b/constants.properties
@@ -45,7 +45,7 @@ commonsTextVersion=1.10.0
 # We must configure it manually to use the latest capsule version.
 capsuleVersion=1.0.4_r3
 asmVersion=9.5
-artemisVersion=2.29.0
+artemisVersion=2.32.0
 # TODO Upgrade Jackson only when corda is using kotlin 1.3.10
 jacksonVersion=2.13.5
 jacksonKotlinVersion=2.9.7
@@ -53,8 +53,8 @@ jettyVersion=9.4.53.v20231009
 jerseyVersion=2.25
 servletVersion=4.0.1
 assertjVersion=3.12.2
-slf4JVersion=1.7.30
-log4JVersion=2.23.0
+slf4JVersion=2.0.12
+log4JVersion=2.23.1
 okhttpVersion=4.11.0
 nettyVersion=4.1.77.Final
 fileuploadVersion=1.4
diff --git a/experimental/blobwriter/build.gradle b/experimental/blobwriter/build.gradle
index ca13935423..a94c466085 100644
--- a/experimental/blobwriter/build.gradle
+++ b/experimental/blobwriter/build.gradle
@@ -10,7 +10,7 @@ dependencies {
     implementation project(':serialization')
 
     implementation "org.slf4j:jul-to-slf4j:$slf4j_version"
-    implementation "org.apache.logging.log4j:log4j-slf4j-impl:$log4j_version"
+    implementation "org.apache.logging.log4j:log4j-slf4j2-impl:$log4j_version"
 }
 
 configurations.implementation.canBeResolved = true
diff --git a/experimental/netparams/build.gradle b/experimental/netparams/build.gradle
index 20a2836371..f16ea07cb6 100644
--- a/experimental/netparams/build.gradle
+++ b/experimental/netparams/build.gradle
@@ -9,7 +9,7 @@ dependencies {
     implementation project(':tools:cliutils')
 
     implementation "org.slf4j:jul-to-slf4j:$slf4j_version"
-    implementation "org.apache.logging.log4j:log4j-slf4j-impl:$log4j_version"
+    implementation "org.apache.logging.log4j:log4j-slf4j2-impl:$log4j_version"
     implementation "com.jcabi:jcabi-manifests:$jcabi_manifests_version"
     implementation "com.typesafe:config:$typesafe_config_version"
     implementation "info.picocli:picocli:$picocli_version"
diff --git a/experimental/nodeinfo/build.gradle b/experimental/nodeinfo/build.gradle
index 387c5b9ad0..75e5439775 100644
--- a/experimental/nodeinfo/build.gradle
+++ b/experimental/nodeinfo/build.gradle
@@ -9,7 +9,7 @@ dependencies {
     implementation project(':tools:cliutils')
 
     implementation "org.slf4j:jul-to-slf4j:$slf4j_version"
-    implementation "org.apache.logging.log4j:log4j-slf4j-impl:$log4j_version"
+    implementation "org.apache.logging.log4j:log4j-slf4j2-impl:$log4j_version"
     implementation "com.jcabi:jcabi-manifests:$jcabi_manifests_version"
     implementation "info.picocli:picocli:$picocli_version"
 }
diff --git a/node-api/build.gradle b/node-api/build.gradle
index 9c9c44c878..9a88cbac1b 100644
--- a/node-api/build.gradle
+++ b/node-api/build.gradle
@@ -58,6 +58,7 @@ dependencies {
     implementation "javax.persistence:javax.persistence-api:2.2"
     implementation "org.hibernate:hibernate-core:$hibernate_version"
     implementation "co.paralleluniverse:quasar-osgi-annotations:$quasar_version"
+    implementation "com.google.guava:guava:$guava_version"
 
     runtimeOnly 'com.mattbertolini:liquibase-slf4j:2.0.0'
 
diff --git a/node/build.gradle b/node/build.gradle
index f6ddc1b088..d5b193ee9b 100644
--- a/node/build.gradle
+++ b/node/build.gradle
@@ -112,7 +112,7 @@ dependencies {
     implementation project(':confidential-identities')
     implementation "io.opentelemetry:opentelemetry-api:${open_telemetry_version}"
     // Log4J: logging framework (with SLF4J bindings)
-    implementation "org.apache.logging.log4j:log4j-slf4j-impl:${log4j_version}"
+    implementation "org.apache.logging.log4j:log4j-slf4j2-impl:${log4j_version}"
     implementation "org.apache.logging.log4j:log4j-web:${log4j_version}"
     implementation "org.slf4j:jul-to-slf4j:$slf4j_version"
     implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
diff --git a/node/src/main/kotlin/net/corda/node/utilities/AppendOnlyPersistentMap.kt b/node/src/main/kotlin/net/corda/node/utilities/AppendOnlyPersistentMap.kt
index 8b9898e5a5..25938e6fb1 100644
--- a/node/src/main/kotlin/net/corda/node/utilities/AppendOnlyPersistentMap.kt
+++ b/node/src/main/kotlin/net/corda/node/utilities/AppendOnlyPersistentMap.kt
@@ -1,7 +1,6 @@
 package net.corda.node.utilities
 
 import com.github.benmanes.caffeine.cache.LoadingCache
-import net.corda.core.crypto.SecureHash
 import net.corda.core.internal.NamedCacheFactory
 import net.corda.core.utilities.contextLogger
 import net.corda.nodeapi.internal.persistence.DatabaseTransaction
@@ -248,7 +247,7 @@ abstract class AppendOnlyPersistentMapBase<K : Any, V, E, out EK>(
         cache.invalidateAll()
     }
 
-    fun clear(id: SecureHash) = cache.invalidate(id)
+    fun clear(id: K) = cache.invalidate(id)
 
     // Helpers to know if transaction(s) are currently writing the given key.
     private fun weAreWriting(key: K): Boolean = pendingKeys[key]?.transactions?.contains(contextTransaction) ?: false
diff --git a/samples/attachment-demo/build.gradle b/samples/attachment-demo/build.gradle
index e3106311e9..f476cce723 100644
--- a/samples/attachment-demo/build.gradle
+++ b/samples/attachment-demo/build.gradle
@@ -54,7 +54,7 @@ dependencies {
     testImplementation(project(':node-driver')) {
         // We already have a SLF4J implementation on our runtime classpath,
         // and we don't need another one.
-        exclude group: 'org.apache.logging.log4j', module: 'log4j-slf4j-impl'
+        exclude group: 'org.apache.logging.log4j', module: 'log4j-slf4j2-impl'
     }
     
     testImplementation "org.junit.jupiter:junit-jupiter-api:${junit_jupiter_version}"
diff --git a/samples/irs-demo/web/build.gradle b/samples/irs-demo/web/build.gradle
index 78de567a52..89d2fa8f6e 100644
--- a/samples/irs-demo/web/build.gradle
+++ b/samples/irs-demo/web/build.gradle
@@ -12,7 +12,7 @@ group = "${parent.group}.irs-demo"
 
 dependencyManagement {
     dependencies {
-        dependency "org.apache.logging.log4j:log4j-slf4j-impl:$log4j_version"
+        dependency "org.apache.logging.log4j:log4j-slf4j2-impl:$log4j_version"
         dependency "org.apache.logging.log4j:log4j-core:$log4j_version"
         dependency "org.apache.logging.log4j:log4j-api:$log4j_version"
     }
diff --git a/samples/trader-demo/build.gradle b/samples/trader-demo/build.gradle
index 9671e605f2..30554f4184 100644
--- a/samples/trader-demo/build.gradle
+++ b/samples/trader-demo/build.gradle
@@ -56,7 +56,7 @@ dependencies {
     testImplementation(project(':node-driver')) {
         // We already have a SLF4J implementation on our runtime classpath,
         // and we don't need another one.
-        exclude group: 'org.apache.logging.log4j', module: 'log4j-slf4j-impl'
+        exclude group: 'org.apache.logging.log4j', module: 'log4j-slf4j2-impl'
     }
 
     testImplementation "io.reactivex:rxjava:$rxjava_version"
diff --git a/testing/test-db/build.gradle b/testing/test-db/build.gradle
index 98d33ca8c1..4b026fed4f 100644
--- a/testing/test-db/build.gradle
+++ b/testing/test-db/build.gradle
@@ -9,7 +9,7 @@ dependencies {
 
     testImplementation "org.assertj:assertj-core:$assertj_version"
     testImplementation "org.slf4j:slf4j-api:$slf4j_version"
-    testRuntimeOnly "org.apache.logging.log4j:log4j-slf4j-impl:$log4j_version"
+    testRuntimeOnly "org.apache.logging.log4j:log4j-slf4j2-impl:$log4j_version"
 }
 
 jar {
diff --git a/testing/testserver/build.gradle b/testing/testserver/build.gradle
index dad5d1832c..f8957799a1 100644
--- a/testing/testserver/build.gradle
+++ b/testing/testserver/build.gradle
@@ -37,7 +37,7 @@ dependencies {
     implementation "commons-fileupload:commons-fileupload:$fileupload_version"
 
     // Log4J: logging framework (with SLF4J bindings)
-    implementation "org.apache.logging.log4j:log4j-slf4j-impl:$log4j_version"
+    implementation "org.apache.logging.log4j:log4j-slf4j2-impl:$log4j_version"
     implementation "org.apache.logging.log4j:log4j-core:$log4j_version"
 
     // JOpt: for command line flags.
diff --git a/tools/blobinspector/build.gradle b/tools/blobinspector/build.gradle
index a28cf20f6d..07a9eaea4c 100644
--- a/tools/blobinspector/build.gradle
+++ b/tools/blobinspector/build.gradle
@@ -9,7 +9,7 @@ dependencies {
     implementation project(":common-logging")
 
     implementation "org.slf4j:jul-to-slf4j:$slf4j_version"
-    implementation "org.apache.logging.log4j:log4j-slf4j-impl:$log4j_version"
+    implementation "org.apache.logging.log4j:log4j-slf4j2-impl:$log4j_version"
     implementation "com.jcabi:jcabi-manifests:$jcabi_manifests_version"
     implementation "com.fasterxml.jackson.core:jackson-databind:$jackson_version"
     implementation "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:$jackson_version"
diff --git a/tools/bootstrapper/build.gradle b/tools/bootstrapper/build.gradle
index 14249ed4b2..ba25915546 100644
--- a/tools/bootstrapper/build.gradle
+++ b/tools/bootstrapper/build.gradle
@@ -11,12 +11,12 @@ dependencies {
     implementation project(':common-configuration-parsing')
     implementation project(':common-validation')
 
-    implementation "org.apache.logging.log4j:log4j-slf4j-impl:$log4j_version"
+    implementation "org.apache.logging.log4j:log4j-slf4j2-impl:$log4j_version"
     implementation "com.typesafe:config:$typesafe_config_version"
     implementation "info.picocli:picocli:$picocli_version"
 
     testImplementation(project(':test-utils')) {
-        exclude group: 'org.apache.logging.log4j', module: 'log4j-slf4j-impl'
+        exclude group: 'org.apache.logging.log4j', module: 'log4j-slf4j2-impl'
     }
 
     testImplementation(project(':core-test-utils'))
diff --git a/tools/demobench/build.gradle b/tools/demobench/build.gradle
index c898246854..446993f7c2 100644
--- a/tools/demobench/build.gradle
+++ b/tools/demobench/build.gradle
@@ -72,7 +72,7 @@ dependencies {
 
     implementation "org.slf4j:log4j-over-slf4j:$slf4j_version"
     implementation "org.slf4j:jul-to-slf4j:$slf4j_version"
-    implementation "org.apache.logging.log4j:log4j-slf4j-impl:$log4j_version"
+    implementation "org.apache.logging.log4j:log4j-slf4j2-impl:$log4j_version"
     implementation "org.apache.logging.log4j:log4j-core:$log4j_version"
     implementation "com.typesafe:config:$typesafe_config_version"
 
diff --git a/tools/error-tool/build.gradle b/tools/error-tool/build.gradle
index 517c07602b..7d886bcafa 100644
--- a/tools/error-tool/build.gradle
+++ b/tools/error-tool/build.gradle
@@ -5,7 +5,7 @@ dependencies {
     implementation project(":common-logging")
     implementation project(":tools:cliutils")
     implementation "info.picocli:picocli:$picocli_version"
-    implementation "org.apache.logging.log4j:log4j-slf4j-impl:$log4j_version"
+    implementation "org.apache.logging.log4j:log4j-slf4j2-impl:$log4j_version"
 
     testImplementation "junit:junit:$junit_version"
     testImplementation "org.assertj:assertj-core:$assertj_version"
diff --git a/tools/explorer/build.gradle b/tools/explorer/build.gradle
index f0bbc84f06..835325c1e3 100644
--- a/tools/explorer/build.gradle
+++ b/tools/explorer/build.gradle
@@ -39,7 +39,7 @@ dependencies {
     implementation project(':common-logging')
 
     // Log4J: logging framework (with SLF4J bindings)
-    implementation "org.apache.logging.log4j:log4j-slf4j-impl:$log4j_version"
+    implementation "org.apache.logging.log4j:log4j-slf4j2-impl:$log4j_version"
 
     // Capsule is a library for building independently executable fat JARs.
     // We only need this dependency to implementation our Caplet against.
diff --git a/verifier/build.gradle b/verifier/build.gradle
index b34f2de21f..74e9451c66 100644
--- a/verifier/build.gradle
+++ b/verifier/build.gradle
@@ -14,5 +14,5 @@ dependencies {
     implementation "com.github.ben-manes.caffeine:caffeine:$caffeine_version"
     implementation "org.slf4j:jul-to-slf4j:$slf4j_version"
 
-    runtimeOnly "org.apache.logging.log4j:log4j-slf4j-impl:$log4j_version"
+    runtimeOnly "org.apache.logging.log4j:log4j-slf4j2-impl:$log4j_version"
 }