diff --git a/.sling-module.json b/.sling-module.json
new file mode 100644
index 0000000..0e603c0
--- /dev/null
+++ b/.sling-module.json
@@ -0,0 +1,8 @@
+{
+  "jenkins": {
+    "jdks": [
+      14,
+      11
+    ]
+  }
+}
diff --git a/pom.xml b/pom.xml
index eb7338e..c6e17a7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,7 +37,7 @@
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-    <sling.java.version>8</sling.java.version>
+    <sling.java.version>11</sling.java.version>
     <org.ops4j.pax.exam.version>4.13.3</org.ops4j.pax.exam.version>
   </properties>
 
@@ -175,13 +175,6 @@
       <artifactId>org.osgi.service.metatype.annotations</artifactId>
       <scope>provided</scope>
     </dependency>
-    <!-- Apache Commons -->
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-lang3</artifactId>
-      <version>3.9</version>
-      <scope>provided</scope>
-    </dependency>
     <!-- Apache Felix -->
     <dependency>
       <groupId>org.apache.felix</groupId>
diff --git a/src/main/java/org/apache/sling/commons/crypto/jasypt/internal/JasyptStandardPBEStringCryptoService.java b/src/main/java/org/apache/sling/commons/crypto/jasypt/internal/JasyptStandardPBEStringCryptoService.java
index bd0830d..16fd383 100644
--- a/src/main/java/org/apache/sling/commons/crypto/jasypt/internal/JasyptStandardPBEStringCryptoService.java
+++ b/src/main/java/org/apache/sling/commons/crypto/jasypt/internal/JasyptStandardPBEStringCryptoService.java
@@ -23,7 +23,6 @@
 import java.util.Objects;
 import java.util.Set;
 
-import org.apache.commons.lang3.StringUtils;
 import org.apache.sling.commons.crypto.CryptoService;
 import org.apache.sling.commons.crypto.PasswordProvider;
 import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
@@ -111,8 +110,9 @@
         // optional
         encryptor.setKeyObtentionIterations(configuration.keyObtentionIterations());
         encryptor.setStringOutputType(configuration.stringOutputType());
-        if (StringUtils.isNotBlank(configuration.securityProviderName())) {
-            encryptor.setProviderName(configuration.securityProviderName());
+        final String securityProviderName = configuration.securityProviderName();
+        if (Objects.nonNull(securityProviderName) && !securityProviderName.isBlank()) {
+            encryptor.setProviderName(securityProviderName);
         }
         final Provider provider = this.securityProvider;
         if (Objects.nonNull(provider)) {
diff --git a/src/test/java/org/apache/sling/commons/crypto/it/tests/CryptoTestSupport.java b/src/test/java/org/apache/sling/commons/crypto/it/tests/CryptoTestSupport.java
index 510c629..940d149 100644
--- a/src/test/java/org/apache/sling/commons/crypto/it/tests/CryptoTestSupport.java
+++ b/src/test/java/org/apache/sling/commons/crypto/it/tests/CryptoTestSupport.java
@@ -36,7 +36,6 @@
             super.baseConfiguration(),
             // Sling Commons Crypto
             testBundle("bundle.filename"),
-            mavenBundle().groupId("org.apache.commons").artifactId("commons-lang3").versionAsInProject(),
             scr(),
             // testing
             junitBundles(),
