This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch 4_0_X
in repository https://gitbox.apache.org/repos/asf/syncope.git

commit 15c77b8d6f7b2dbe36bcf1b23d37187d5390f4d2
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
AuthorDate: Wed Jul 9 22:27:44 2025 +0000

    Bump org.apache.commons:commons-lang3 from 3.17.0 to 3.18.0
    
    Bumps org.apache.commons:commons-lang3 from 3.17.0 to 3.18.0.
    
    ---
    updated-dependencies:
    - dependency-name: org.apache.commons:commons-lang3
      dependency-version: 3.18.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
    ...
    
    Signed-off-by: dependabot[bot] <[email protected]>
---
 .../java/org/apache/syncope/client/console/pages/WA.java |  7 ++++---
 .../org/apache/syncope/client/console/panels/OIDC.java   | 16 ++++++++--------
 .../client/console/rest/SRAStatisticsRestClient.java     |  2 +-
 .../client/console/panels/ConnObjectListViewPanel.java   |  7 ++++---
 .../console/wizards/any/LinkedAccountDetailsPanel.java   |  6 +++---
 .../client/ui/commons/SyncopeUIRequestCycleListener.java |  4 ++--
 .../markup/html/form/preview/BinaryCertPreviewer.java    |  6 +++---
 .../client/ui/commons/panels/SyncopeFormPanel.java       |  3 ++-
 .../syncope/client/console/SyncopeConsoleSession.java    |  3 ++-
 .../client/console/events/EventCategoryPanel.java        |  7 ++++---
 .../apache/syncope/client/console/panels/AnyPanel.java   |  3 ++-
 .../client/console/panels/CommandDirectoryPanel.java     |  5 +++--
 .../syncope/client/console/panels/SchemaTypePanel.java   |  5 +++--
 .../client/console/panels/SchemaTypeWizardBuilder.java   |  5 ++---
 .../client/console/panels/search/SearchClausePanel.java  |  3 ++-
 .../syncope/client/console/widgets/AnyByRealmWidget.java |  3 ++-
 .../client/console/wizards/DelegationWizardBuilder.java  |  3 ++-
 .../console/wizards/any/AbstractAttrsWizardStep.java     |  3 ++-
 .../apache/syncope/client/console/wizards/any/Roles.java |  3 ++-
 .../syncope/client/console/wizards/any/UserDetails.java  |  4 ++--
 .../client/console/panels/ImplementationModalPanel.html  |  2 +-
 .../console/wicket/markup/html/form/JsonEditorPanel.html |  2 +-
 .../console/wicket/markup/html/form/TextEditorPanel.html |  2 +-
 .../console/wicket/markup/html/form/XMLEditorPanel.html  |  2 +-
 .../client/console/SyncopeConsoleApplicationTest.java    |  9 ++++++---
 .../enduser/SyncopeEnduserRequestCycleListener.java      |  4 ++--
 .../syncope/client/enduser/SyncopeEnduserSession.java    |  3 ++-
 .../apache/syncope/client/enduser/panels/Sidebar.java    |  3 ++-
 .../syncope/client/enduser/panels/any/AbstractAttrs.java |  8 ++++----
 .../syncope/client/enduser/panels/any/PlainAttrs.java    |  3 ++-
 .../syncope/client/enduser/panels/any/UserDetails.java   |  4 ++--
 .../client/enduser/SyncopeEnduserApplicationTest.java    |  6 +++---
 .../syncope/client/lib/SyncopeAnonymousClient.java       |  3 ++-
 .../client/zookeeper/ZookeeperTestingServer.java         |  2 +-
 .../common/keymaster/client/self/SelfKeymasterOps.java   |  4 ++--
 .../org/apache/syncope/core/logic/SRARouteLogic.java     |  4 ++--
 .../org/apache/syncope/core/logic/wa/WAConfigLogic.java  |  6 +++---
 .../core/rest/cxf/service/ReconciliationServiceImpl.java |  3 ++-
 .../java/org/apache/syncope/core/logic/RealmLogic.java   |  3 ++-
 .../java/org/apache/syncope/core/logic/ReportLogic.java  |  4 ++--
 .../core/rest/cxf/service/AbstractAnyService.java        |  3 ++-
 .../syncope/core/rest/cxf/service/RealmServiceImpl.java  |  8 ++++----
 .../core/rest/cxf/service/SyncopeServiceImpl.java        |  4 ++--
 .../syncope/core/persistence/api/utils/FormatUtils.java  |  4 ++--
 .../syncope/core/persistence/api/utils/URIUtilsTest.java |  6 +++---
 .../common/validation/AttributableValidator.java         |  6 +++---
 .../core/persistence/jpa/content/XMLContentExporter.java |  3 ++-
 .../syncope/core/persistence/jpa/dao/JPARealmDAO.java    |  4 ++--
 .../core/persistence/jpa/dao/JPARealmSearchDAO.java      |  3 ++-
 .../syncope/core/persistence/jpa/dao/JPATaskDAO.java     |  4 ++--
 .../jpa/dao/repo/ExternalResourceRepoExtImpl.java        |  4 ++--
 .../core/persistence/neo4j/dao/Neo4jAnySearchDAO.java    |  5 +++--
 .../core/persistence/neo4j/dao/Neo4jRealmDAO.java        |  4 ++--
 .../neo4j/dao/repo/ExternalResourceRepoExtImpl.java      |  4 ++--
 .../core/provisioning/java/DefaultMappingManager.java    | 16 ++++++++--------
 .../provisioning/java/data/JEXLItemTransformerImpl.java  |  2 +-
 .../provisioning/java/data/SchemaDataBinderImpl.java     |  4 ++--
 .../core/provisioning/java/job/MacroJobDelegate.java     |  6 +++---
 .../propagation/AbstractPropagationTaskExecutor.java     |  2 +-
 .../provisioning/java/job/SyncopeTaskSchedulerTest.java  |  2 +-
 .../syncope/core/spring/policy/DefaultAccountRule.java   |  3 ++-
 .../syncope/core/spring/policy/DefaultPasswordRule.java  |  4 ++--
 .../security/UsernamePasswordAuthenticationProvider.java |  4 ++--
 .../syncope/core/spring/security/WebSecurityContext.java |  6 +++---
 .../core/starter/actuate/DomainsHealthIndicator.java     |  2 +-
 .../actuate/ExternalResourcesHealthIndicator.java        |  2 +-
 .../ext/openfga/client/OpenFGAHealthIndicator.java       |  2 +-
 .../apache/syncope/common/lib/saml2/SAML2Response.java   |  4 ++--
 .../syncope/core/logic/saml2/SAML2ClientCache.java       |  3 ++-
 .../core/rest/cxf/service/SAML2SP4UIServiceImpl.java     |  8 ++++----
 .../test/java/org/apache/syncope/fit/AbstractITCase.java | 10 +++++-----
 .../org/apache/syncope/fit/core/AbstractTaskITCase.java  | 10 +++++-----
 .../java/org/apache/syncope/fit/core/BatchITCase.java    |  4 ++--
 .../java/org/apache/syncope/fit/core/GroupITCase.java    |  4 ++--
 .../org/apache/syncope/fit/core/KeymasterITCase.java     |  4 ++--
 .../java/org/apache/syncope/fit/core/LiveSyncITCase.java |  2 +-
 .../java/org/apache/syncope/fit/core/PullTaskITCase.java |  5 +++--
 .../java/org/apache/syncope/fit/core/ReportITCase.java   |  6 +++---
 .../java/org/apache/syncope/fit/ui/SAML2SP4UIITCase.java |  3 ++-
 pom.xml                                                  |  2 +-
 .../main/java/org/apache/syncope/sra/RouteProvider.java  |  6 +++---
 .../sra/filters/LinkRewriteGatewayFilterFactory.java     | 10 +++++-----
 .../security/cas/CASAuthenticationRequestWebFilter.java  |  4 ++--
 .../syncope/sra/security/cas/CASServerLogoutHandler.java |  4 ++--
 .../org/apache/syncope/sra/ZookeeperTestingServer.java   | 10 +++++-----
 .../syncope/wa/starter/audit/WAAuditTrailManager.java    |  4 ++--
 .../syncope/wa/starter/ZookeeperTestingServer.java       |  4 ++--
 87 files changed, 214 insertions(+), 185 deletions(-)

diff --git 
a/client/am/console/src/main/java/org/apache/syncope/client/console/pages/WA.java
 
b/client/am/console/src/main/java/org/apache/syncope/client/console/pages/WA.java
index 4692d97c5a..58dda5ea16 100644
--- 
a/client/am/console/src/main/java/org/apache/syncope/client/console/pages/WA.java
+++ 
b/client/am/console/src/main/java/org/apache/syncope/client/console/pages/WA.java
@@ -29,6 +29,7 @@ import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.client.console.BookmarkablePageLinkBuilder;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.SyncopeWebApplication;
@@ -130,7 +131,7 @@ public class WA extends BasePage {
         body.add(content);
 
         if (!instances.isEmpty()) {
-            String actuatorEndpoint = StringUtils.appendIfMissing(
+            String actuatorEndpoint = Strings.CS.appendIfMissing(
                     instances.getFirst().getAddress(), "/") + "actuator/env";
             try {
                 Response response = WebClientBuilder.build(actuatorEndpoint,
@@ -146,7 +147,7 @@ public class WA extends BasePage {
                                 if (properties.has("cas.server.prefix")) {
                                     JsonNode prefix = 
properties.get("cas.server.prefix");
                                     if (prefix.has("value")) {
-                                        waPrefix = 
StringUtils.removeEnd(prefix.get("value").asText(), "/");
+                                        waPrefix = 
Strings.CS.removeEnd(prefix.get("value").asText(), "/");
                                     }
                                 }
                             }
@@ -158,7 +159,7 @@ public class WA extends BasePage {
             }
 
             if (StringUtils.isBlank(waPrefix)) {
-                waPrefix = 
StringUtils.removeEnd(instances.getFirst().getAddress(), "/");
+                waPrefix = 
Strings.CS.removeEnd(instances.getFirst().getAddress(), "/");
             }
         }
     }
diff --git 
a/client/am/console/src/main/java/org/apache/syncope/client/console/panels/OIDC.java
 
b/client/am/console/src/main/java/org/apache/syncope/client/console/panels/OIDC.java
index 416752079a..8a4f25cbc3 100644
--- 
a/client/am/console/src/main/java/org/apache/syncope/client/console/panels/OIDC.java
+++ 
b/client/am/console/src/main/java/org/apache/syncope/client/console/panels/OIDC.java
@@ -94,10 +94,10 @@ public class OIDC extends Panel {
                 String pretty;
                 try {
                     pretty = MAPPER.writerWithDefaultPrettyPrinter().
-                            
writeValueAsString(MAPPER.readTree(oidcjwksto.getValue().getJson()));
+                            
writeValueAsString(MAPPER.readTree(oidcjwksto.get().getJson()));
                 } catch (IOException e) {
                     LOG.error("Could not pretty-print", e);
-                    pretty = 
Optional.ofNullable(oidcjwksto.getValue()).map(OIDCJWKSTO::getJson).orElse(null);
+                    pretty = 
Optional.ofNullable(oidcjwksto.get()).map(OIDCJWKSTO::getJson).orElse(null);
                 }
 
                 viewModal.header(Model.of("JSON Web Key Sets"));
@@ -109,12 +109,12 @@ public class OIDC extends Panel {
             protected void onComponentTag(final ComponentTag tag) {
                 super.onComponentTag(tag);
 
-                if (oidcjwksto.getValue() == null) {
+                if (oidcjwksto.get() == null) {
                     tag.put("class", "btn btn-app disabled");
                 }
             }
         };
-        view.setEnabled(oidcjwksto.getValue() != null);
+        view.setEnabled(oidcjwksto.get() != null);
         container.add(view.setOutputMarkupId(true));
         MetaDataRoleAuthorizationStrategy.authorize(view, ENABLE, 
AMEntitlement.OIDC_JWKS_READ);
 
@@ -142,12 +142,12 @@ public class OIDC extends Panel {
             protected void onComponentTag(final ComponentTag tag) {
                 super.onComponentTag(tag);
 
-                if (oidcjwksto.getValue() != null) {
+                if (oidcjwksto.get() != null) {
                     tag.put("class", "btn btn-app disabled");
                 }
             }
         };
-        generate.setEnabled(oidcjwksto.getValue() == null);
+        generate.setEnabled(oidcjwksto.get() == null);
         container.add(generate.setOutputMarkupId(true));
         MetaDataRoleAuthorizationStrategy.authorize(generate, ENABLE, 
AMEntitlement.OIDC_JWKS_GENERATE);
 
@@ -176,12 +176,12 @@ public class OIDC extends Panel {
             protected void onComponentTag(final ComponentTag tag) {
                 super.onComponentTag(tag);
 
-                if (oidcjwksto.getValue() == null) {
+                if (oidcjwksto.get() == null) {
                     tag.put("class", "btn btn-app disabled");
                 }
             }
         };
-        delete.setEnabled(oidcjwksto.getValue() != null);
+        delete.setEnabled(oidcjwksto.get() != null);
         container.add(delete.setOutputMarkupId(true));
         MetaDataRoleAuthorizationStrategy.authorize(delete, ENABLE, 
AMEntitlement.OIDC_JWKS_DELETE);
 
diff --git 
a/client/am/console/src/main/java/org/apache/syncope/client/console/rest/SRAStatisticsRestClient.java
 
b/client/am/console/src/main/java/org/apache/syncope/client/console/rest/SRAStatisticsRestClient.java
index e313d0c022..3aeabe2681 100644
--- 
a/client/am/console/src/main/java/org/apache/syncope/client/console/rest/SRAStatisticsRestClient.java
+++ 
b/client/am/console/src/main/java/org/apache/syncope/client/console/rest/SRAStatisticsRestClient.java
@@ -50,7 +50,7 @@ public final class SRAStatisticsRestClient {
                     JAX_RS_PROVIDERS).accept(MediaType.APPLICATION_JSON_TYPE);
 
             if (!selected.isEmpty()) {
-                client.query("tag", selected.stream().map(s -> s.getKey() + 
":" + s.getValue()).toArray());
+                client.query("tag", selected.stream().map(s -> s.getLeft() + 
":" + s.getRight()).toArray());
             }
 
             Response response = client.get();
diff --git 
a/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectListViewPanel.java
 
b/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectListViewPanel.java
index 5b552797d6..b305b96819 100644
--- 
a/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectListViewPanel.java
+++ 
b/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectListViewPanel.java
@@ -26,6 +26,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.pages.BasePage;
@@ -167,7 +168,7 @@ public abstract class ConnObjectListViewPanel extends Panel 
{
 
             @Override
             protected Component getValueComponent(final String key, final 
ConnObject bean) {
-                if (StringUtils.equals(key, STATUS)) {
+                if (Strings.CS.equals(key, STATUS)) {
                     ReconStatus status;
                     try {
                         status = reconciliationRestClient.status(
@@ -231,7 +232,7 @@ public abstract class ConnObjectListViewPanel extends Panel 
{
                 withChecks(ListViewPanel.CheckAvailability.NONE).
                 setReuseItem(false);
 
-        if (!StringUtils.equals(anyType, SyncopeConstants.REALM_ANYTYPE)) {
+        if (!Strings.CS.equals(anyType, SyncopeConstants.REALM_ANYTYPE)) {
             builder.addAction(new ActionLink<>() {
 
                 private static final long serialVersionUID = 6377238742125L;
@@ -339,7 +340,7 @@ public abstract class ConnObjectListViewPanel extends Panel 
{
         clause.setProperty("");
 
         AnyTypeKind anyTypeKind =
-                StringUtils.equals(anyType, SyncopeConstants.REALM_ANYTYPE) || 
StringUtils.isEmpty(anyType)
+                Strings.CS.equals(anyType, SyncopeConstants.REALM_ANYTYPE) || 
StringUtils.isEmpty(anyType)
                 ? AnyTypeKind.ANY_OBJECT
                 : anyTypeRestClient.read(anyType).getKind();
 
diff --git 
a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountDetailsPanel.java
 
b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountDetailsPanel.java
index 9ed98ba837..b91ca7d243 100644
--- 
a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountDetailsPanel.java
+++ 
b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountDetailsPanel.java
@@ -173,16 +173,16 @@ public class LinkedAccountDetailsPanel extends WizardStep 
{
         ConnObjectTOQuery.Builder builder = new 
ConnObjectTOQuery.Builder().size(SEARCH_SIZE);
         if (StringUtils.isNotBlank(searchTerm)) {
             
builder.fiql(SyncopeClient.getConnObjectTOFiqlSearchConditionBuilder().
-                    is(resourceRemoteKey.getValue()).equalTo(searchTerm + 
"*").query()).build();
+                    is(resourceRemoteKey.get()).equalTo(searchTerm + 
"*").query()).build();
         }
         Pair<String, List<ConnObject>> items = 
resourceRestClient.searchConnObjects(
                 resource,
                 AnyTypeKind.USER.name(),
                 builder,
-                new SortParam<>(resourceRemoteKey.getValue(), true));
+                new SortParam<>(resourceRemoteKey.get(), true));
 
         connObjectKeyFieldValues = items.getRight().stream().
-                map(item -> item.getAttr(resourceRemoteKey.getValue()).
+                map(item -> item.getAttr(resourceRemoteKey.get()).
                 map(attr -> attr.getValues().getFirst()).orElse(null)).
                 filter(Objects::nonNull).
                 collect(Collectors.toList());
diff --git 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/SyncopeUIRequestCycleListener.java
 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/SyncopeUIRequestCycleListener.java
index 7e7065a6a1..8cdbb710c5 100644
--- 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/SyncopeUIRequestCycleListener.java
+++ 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/SyncopeUIRequestCycleListener.java
@@ -23,7 +23,7 @@ import jakarta.ws.rs.ForbiddenException;
 import jakarta.ws.rs.NotAuthorizedException;
 import jakarta.xml.ws.WebServiceException;
 import java.util.Optional;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.wicket.authorization.UnauthorizedInstantiationException;
@@ -74,7 +74,7 @@ public abstract class SyncopeUIRequestCycleListener 
implements IRequestCycleList
             errorPage = getErrorPage(errorParameters);
         } else if (instanceOf(e, NotAuthorizedException.class).isPresent()) {
             NotAuthorizedException nae = instanceOf(e, 
NotAuthorizedException.class).get();
-            if (StringUtils.containsIgnoreCase(nae.getMessage(), "expired")) {
+            if (Strings.CI.contains(nae.getMessage(), "expired")) {
                 errorParameters.add("errorMessage", 
BaseSession.Error.SESSION_EXPIRED.message());
             } else {
                 errorParameters.add("errorMessage", 
BaseSession.Error.AUTHORIZATION.message());
diff --git 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/preview/BinaryCertPreviewer.java
 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/preview/BinaryCertPreviewer.java
index 7ba5cb8a48..c1ff9e8332 100644
--- 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/preview/BinaryCertPreviewer.java
+++ 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/preview/BinaryCertPreviewer.java
@@ -21,6 +21,7 @@ package 
org.apache.syncope.client.ui.commons.markup.html.form.preview;
 import java.io.ByteArrayInputStream;
 import java.security.cert.CertificateFactory;
 import java.security.cert.X509Certificate;
+import java.util.Optional;
 import javax.naming.ldap.LdapName;
 import javax.naming.ldap.Rdn;
 import org.apache.commons.lang3.StringUtils;
@@ -57,9 +58,8 @@ public class BinaryCertPreviewer extends BinaryPreviewer {
 
             for (Rdn rdn : ldapName.getRdns()) {
                 if ("CN".equalsIgnoreCase(rdn.getType())) {
-                    commonNameBuilder.append(rdn.getValue() == null
-                            ? StringUtils.EMPTY
-                            : rdn.getValue().toString());
+                    
commonNameBuilder.append(Optional.ofNullable(rdn.getValue()).
+                            map(Object::toString).orElse(StringUtils.EMPTY));
                 }
             }
             
commonNameLabel.setDefaultModelObject(commonNameBuilder.toString());
diff --git 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/panels/SyncopeFormPanel.java
 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/panels/SyncopeFormPanel.java
index 386436fbd8..b31b39699e 100644
--- 
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/panels/SyncopeFormPanel.java
+++ 
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/panels/SyncopeFormPanel.java
@@ -26,6 +26,7 @@ import java.util.Optional;
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.commons.lang3.math.NumberUtils;
 import org.apache.commons.lang3.time.FastDateFormat;
 import org.apache.syncope.client.ui.commons.MapChoiceRenderer;
@@ -119,7 +120,7 @@ public class SyncopeFormPanel<F extends SyncopeForm> 
extends Panel {
                             }
                         };
 
-                        if 
(StringUtils.containsIgnoreCase(prop.getDatePattern(), "H")) {
+                        if (Strings.CI.contains(prop.getDatePattern(), "H")) {
                             field = new AjaxDateTimeFieldPanel("value", label, 
dateModel, formatter);
                         } else {
                             field = new AjaxDateFieldPanel("value", label, 
dateModel, formatter);
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleSession.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleSession.java
index 4e44b55192..d55c451f3c 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleSession.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleSession.java
@@ -37,6 +37,7 @@ import java.util.concurrent.Future;
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.apache.commons.lang3.time.FastDateFormat;
 import org.apache.commons.lang3.tuple.Pair;
@@ -150,7 +151,7 @@ public class SyncopeConsoleSession extends 
AuthenticatedWebSession implements Ba
                     ? 
sce.asComposite().getExceptions().stream().map(this::message).collect(Collectors.joining(";
 "))
                     : message(sce);
         } else if (root instanceof NotAuthorizedException || root instanceof 
ForbiddenException) {
-            Error error = StringUtils.containsIgnoreCase(message, "expired")
+            Error error = Strings.CI.contains(message, "expired")
                     ? Error.SESSION_EXPIRED
                     : Error.AUTHORIZATION;
             message = getApplication().getResourceSettings().getLocalizer().
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/events/EventCategoryPanel.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/events/EventCategoryPanel.java
index 580e7c477f..5dfb4782d0 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/events/EventCategoryPanel.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/events/EventCategoryPanel.java
@@ -24,6 +24,7 @@ import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import 
org.apache.syncope.client.console.events.SelectedEventsPanel.EventSelectionChanged;
 import 
org.apache.syncope.client.console.events.SelectedEventsPanel.InspectSelectedEvent;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
@@ -88,7 +89,7 @@ public abstract class EventCategoryPanel extends Panel {
             final String category) {
 
         return categories.stream().
-                filter(c -> type == c.getType() && 
StringUtils.equals(category, c.getCategory())).
+                filter(c -> type == c.getType() && Strings.CS.equals(category, 
c.getCategory())).
                 map(EventCategory::getSubcategory).
                 distinct().
                 sorted().
@@ -412,8 +413,8 @@ public abstract class EventCategoryPanel extends Panel {
 
             EventCategory ec = itor.next();
             if (ec.getType() == eventCategory.getType()
-                    && StringUtils.equals(ec.getCategory(), 
eventCategory.getCategory())
-                    && StringUtils.equals(ec.getSubcategory(), 
eventCategory.getSubcategory())) {
+                    && Strings.CS.equals(ec.getCategory(), 
eventCategory.getCategory())
+                    && Strings.CS.equals(ec.getSubcategory(), 
eventCategory.getSubcategory())) {
 
                 eventCategory.getOps().addAll(ec.getOps());
             }
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyPanel.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyPanel.java
index ec026d4c3c..e0868673ea 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyPanel.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyPanel.java
@@ -22,6 +22,7 @@ import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.client.console.commons.RealmsUtils;
 import org.apache.syncope.client.console.layout.AnyLayout;
 import org.apache.syncope.client.console.layout.AnyLayoutUtils;
@@ -216,7 +217,7 @@ public class AnyPanel extends Panel implements ModalPanel {
 
             String realm;
             String dynRealm;
-            if (StringUtils.startsWith(r.getFullPath(), 
SyncopeConstants.ROOT_REALM)) {
+            if (Strings.CS.startsWith(r.getFullPath(), 
SyncopeConstants.ROOT_REALM)) {
                 realm = RealmsUtils.getFullPath(r.getFullPath());
                 dynRealm = null;
             } else {
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/CommandDirectoryPanel.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/CommandDirectoryPanel.java
index db7a127515..e21795f5ba 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/CommandDirectoryPanel.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/CommandDirectoryPanel.java
@@ -25,6 +25,7 @@ import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.client.console.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.commons.KeywordSearchEvent;
@@ -147,10 +148,10 @@ public class CommandDirectoryPanel
 
             keyword = payload.getKeyword();
             if (StringUtils.isNotBlank(keyword)) {
-                if (!StringUtils.startsWith(keyword, "*")) {
+                if (!Strings.CS.startsWith(keyword, "*")) {
                     keyword = "*" + keyword;
                 }
-                if (!StringUtils.endsWith(keyword, "*")) {
+                if (!Strings.CS.endsWith(keyword, "*")) {
                     keyword += "*";
                 }
             }
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
index 08e9810f64..53666bd93c 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
@@ -25,6 +25,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
@@ -191,10 +192,10 @@ public class SchemaTypePanel extends 
TypesDirectoryPanel<SchemaTO, SchemaProvide
 
             keyword = payload.getKeyword();
             if (StringUtils.isNotBlank(keyword)) {
-                if (!StringUtils.startsWith(keyword, "*")) {
+                if (!Strings.CS.startsWith(keyword, "*")) {
                     keyword = "*" + keyword;
                 }
-                if (!StringUtils.endsWith(keyword, "*")) {
+                if (!Strings.CS.endsWith(keyword, "*")) {
                     keyword += "*";
                 }
             }
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypeWizardBuilder.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypeWizardBuilder.java
index 61bc48147b..715130dbab 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypeWizardBuilder.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypeWizardBuilder.java
@@ -80,9 +80,8 @@ public class SchemaTypeWizardBuilder extends 
BaseAjaxWizardBuilder<SchemaTO> {
         modelObject.getLabels().clear();
         modelObject.getLabels().putAll(translations.getObject().stream().
                 filter(Objects::nonNull).
-                filter(translation -> translation.getKey() != null).
-                filter(translation -> translation.getValue() != null).
-                collect(Collectors.toMap(MutablePair::getKey, 
MutablePair::getValue)));
+                filter(translation -> translation.getLeft() != null && 
translation.getRight() != null).
+                collect(Collectors.toMap(MutablePair::getLeft, 
MutablePair::getRight)));
 
         if (getOriginalItem() == null || 
StringUtils.isBlank(getOriginalItem().getKey())) {
             schemaRestClient.create(schemaType, modelObject);
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java
index fba724f091..60d50c6f94 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java
@@ -31,6 +31,7 @@ import java.util.function.Consumer;
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.commons.lang3.time.DateFormatUtils;
 import org.apache.commons.lang3.time.FastDateFormat;
 import org.apache.commons.lang3.tuple.Pair;
@@ -971,7 +972,7 @@ public class SearchClausePanel extends 
FieldPanel<SearchClause> {
                 };
 
                 if (plainSchema.getConversionPattern() == null
-                        || 
StringUtils.containsIgnoreCase(plainSchema.getConversionPattern(), "H")) {
+                        || 
Strings.CI.contains(plainSchema.getConversionPattern(), "H")) {
 
                     result = new AjaxDateTimeFieldPanel(
                             "value",
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/AnyByRealmWidget.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/AnyByRealmWidget.java
index cbc4b2592d..3f3e95d61a 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/AnyByRealmWidget.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/AnyByRealmWidget.java
@@ -26,6 +26,7 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.client.console.chartjs.Bar;
 import org.apache.syncope.client.console.chartjs.BarDataSet;
 import org.apache.syncope.client.console.chartjs.ChartJSPanel;
@@ -111,7 +112,7 @@ public class AnyByRealmWidget extends BaseWidget {
 
         for (int i = 0; i < realms.size() && i < MAX_REALMS; i++) {
             bar.getData().getLabels().add(
-                    
StringUtils.prependIfMissing(StringUtils.substringAfterLast(realms.get(i), 
"/"), "/"));
+                    
Strings.CS.prependIfMissing(StringUtils.substringAfterLast(realms.get(i), "/"), 
"/"));
 
             userValues.add(usersByRealm.get(realms.get(i)));
             groupValues.add(groupsByRealm.get(realms.get(i)));
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/DelegationWizardBuilder.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/DelegationWizardBuilder.java
index 675f2ecf42..aaef25eccb 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/DelegationWizardBuilder.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/DelegationWizardBuilder.java
@@ -23,6 +23,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.commons.lang3.time.DateFormatUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.rest.DelegationRestClient;
@@ -195,7 +196,7 @@ public class DelegationWizardBuilder extends 
BaseAjaxWizardBuilder<DelegationTO>
 
                             }
                             return allRoles.stream().
-                                    filter(role -> 
StringUtils.containsIgnoreCase(role, filter)).
+                                    filter(role -> Strings.CI.contains(role, 
filter)).
                                     collect(Collectors.toList());
                         }
                     }).
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AbstractAttrsWizardStep.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AbstractAttrsWizardStep.java
index 74c17e628a..5d44b37412 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AbstractAttrsWizardStep.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AbstractAttrsWizardStep.java
@@ -29,6 +29,7 @@ import java.util.stream.Collectors;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.ListUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.commons.lang3.time.DateFormatUtils;
 import org.apache.commons.lang3.time.FastDateFormat;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
@@ -218,7 +219,7 @@ public abstract class AbstractAttrsWizardStep<S extends 
SchemaTO> extends Wizard
                         ? 
DateFormatUtils.ISO_8601_EXTENDED_DATETIME_TIME_ZONE_FORMAT.getPattern()
                         : plainSchema.getConversionPattern();
 
-                if (StringUtils.containsIgnoreCase(datePattern, "H")) {
+                if (Strings.CI.contains(datePattern, "H")) {
                     panel = new AjaxDateTimeFieldPanel(
                             "panel",
                             
plainSchema.getLabel(SyncopeConsoleSession.get().getLocale()),
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Roles.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Roles.java
index 7bef510b9a..4ec12af8cf 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Roles.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Roles.java
@@ -22,6 +22,7 @@ import java.util.List;
 import java.util.stream.Collectors;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.client.console.SyncopeWebApplication;
 import org.apache.syncope.client.console.rest.RoleRestClient;
 import org.apache.syncope.client.ui.commons.Constants;
@@ -118,7 +119,7 @@ public class Roles extends WizardStep implements ICondition 
{
 
                         }
                         return allRoles.stream().
-                                filter(role -> 
StringUtils.containsIgnoreCase(role, filter)).
+                                filter(role -> Strings.CI.contains(role, 
filter)).
                                 collect(Collectors.toList());
                     }
                 }).
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserDetails.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserDetails.java
index aa5db4488b..ccb2003c32 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserDetails.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserDetails.java
@@ -19,7 +19,7 @@
 package org.apache.syncope.client.console.wizards.any;
 
 import java.util.List;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.ajax.markup.html.LabelInfo;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxCheckBoxPanel;
@@ -62,7 +62,7 @@ public class UserDetails extends Details<UserTO> {
                 Constants.USERNAME_FIELD_NAME, Constants.USERNAME_FIELD_NAME,
                 new PropertyModel<>(userTO, Constants.USERNAME_FIELD_NAME), 
false);
 
-        if (wrapper.getPreviousUserTO() != null && StringUtils.compare(
+        if (wrapper.getPreviousUserTO() != null && Strings.CS.compare(
                 wrapper.getPreviousUserTO().getUsername(), 
wrapper.getInnerObject().getUsername()) != 0) {
 
             username.showExternAction(new LabelInfo("externalAction", 
wrapper.getPreviousUserTO().getUsername()));
diff --git 
a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/panels/ImplementationModalPanel.html
 
b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/panels/ImplementationModalPanel.html
index c181f9fc0c..536885a99c 100644
--- 
a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/panels/ImplementationModalPanel.html
+++ 
b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/panels/ImplementationModalPanel.html
@@ -32,7 +32,7 @@ under the License.
     <script type="text/javascript" 
src="webjars/codemirror/${codemirror.version}/addon/edit/closebrackets.js"></script>
     <script type="text/javascript">
       function updateTextArea(editor) {
-        
document.getElementById("groovyClassForm").children["groovyClass"].value = 
editor.getValue();
+        
document.getElementById("groovyClassForm").children["groovyClass"].value = 
editor.get();
       }
     </script>
     <style>
diff --git 
a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/JsonEditorPanel.html
 
b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/JsonEditorPanel.html
index 718fd0ad83..715c5c98c5 100644
--- 
a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/JsonEditorPanel.html
+++ 
b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/JsonEditorPanel.html
@@ -29,7 +29,7 @@ under the License.
     <script type="text/javascript" 
src="webjars/codemirror/${codemirror.version}/addon/edit/closebrackets.js"></script>
     <script type="text/javascript">
       function updateTextArea(editor) {
-        
document.getElementById("jsonEditorInfoDefForm").children["jsonEditorInfo"].value
 = editor.getValue();
+        
document.getElementById("jsonEditorInfoDefForm").children["jsonEditorInfo"].value
 = editor.get();
       }
     </script>
     <style>
diff --git 
a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/TextEditorPanel.html
 
b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/TextEditorPanel.html
index 3a3af303cf..57cbe2ac58 100644
--- 
a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/TextEditorPanel.html
+++ 
b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/TextEditorPanel.html
@@ -26,7 +26,7 @@ under the License.
     <script type="text/javascript" 
src="webjars/codemirror/${codemirror.version}/addon/search/searchcursor.js"></script>
     <script type="text/javascript">
       function updateTextArea(editor) {
-        
document.getElementById("textEditorInfoDefForm").children["textEditorInfo"].value
 = editor.getValue();
+        
document.getElementById("textEditorInfoDefForm").children["textEditorInfo"].value
 = editor.get();
       }
     </script>
     <style>
diff --git 
a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/XMLEditorPanel.html
 
b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/XMLEditorPanel.html
index d0e8224216..1c5705df43 100644
--- 
a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/XMLEditorPanel.html
+++ 
b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/XMLEditorPanel.html
@@ -29,7 +29,7 @@ under the License.
     <script type="text/javascript" 
src="webjars/codemirror/${codemirror.version}/addon/edit/closebrackets.js"></script>
     <script type="text/javascript">
       function updateTextArea(editor) {
-        
document.getElementById("xmlEditorInfoDefForm").children["xmlEditorInfo"].value 
= editor.getValue();
+        
document.getElementById("xmlEditorInfoDefForm").children["xmlEditorInfo"].value 
= editor.get();
       }
     </script>
     <style>
diff --git 
a/client/idrepo/console/src/test/java/org/apache/syncope/client/console/SyncopeConsoleApplicationTest.java
 
b/client/idrepo/console/src/test/java/org/apache/syncope/client/console/SyncopeConsoleApplicationTest.java
index 709ad63c2b..b10076942f 100644
--- 
a/client/idrepo/console/src/test/java/org/apache/syncope/client/console/SyncopeConsoleApplicationTest.java
+++ 
b/client/idrepo/console/src/test/java/org/apache/syncope/client/console/SyncopeConsoleApplicationTest.java
@@ -29,7 +29,7 @@ import jakarta.ws.rs.core.Response;
 import java.io.IOException;
 import java.util.Map;
 import java.util.concurrent.ExecutionException;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.client.console.pages.Dashboard;
 import org.apache.syncope.client.console.pages.Login;
 import org.apache.syncope.common.lib.SyncopeClientCompositeException;
@@ -114,9 +114,12 @@ public class SyncopeConsoleApplicationTest extends 
AbstractTest {
         message = session.getFeedbackMessages().first();
         assertNotNull(message);
         assertTrue(message.isError());
-        assertTrue(StringUtils.contains((CharSequence) message.getMessage(),
+        assertTrue(Strings.CS.contains(
+                (CharSequence) message.getMessage(),
                 ClientExceptionType.InvalidExternalResource.name()));
-        assertTrue(StringUtils.contains((CharSequence) message.getMessage(), 
ClientExceptionType.InvalidUser.name()));
+        assertTrue(Strings.CS.contains(
+                (CharSequence) message.getMessage(),
+                ClientExceptionType.InvalidUser.name()));
         session.getFeedbackMessages().clear();
     }
 }
diff --git 
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserRequestCycleListener.java
 
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserRequestCycleListener.java
index dd299adeb2..9b5ff53794 100644
--- 
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserRequestCycleListener.java
+++ 
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserRequestCycleListener.java
@@ -22,7 +22,7 @@ import jakarta.ws.rs.BadRequestException;
 import jakarta.ws.rs.ForbiddenException;
 import jakarta.ws.rs.NotAuthorizedException;
 import jakarta.xml.ws.WebServiceException;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.client.enduser.pages.Login;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.wicket.authorization.UnauthorizedInstantiationException;
@@ -64,7 +64,7 @@ public class SyncopeEnduserRequestCycleListener implements 
IRequestCycleListener
             errorParameters.add("errorMessage", 
SyncopeEnduserSession.Error.AUTHORIZATION.fallback());
             errorPage = new Login(errorParameters);
         } else if (instanceOf(e, NotAuthorizedException.class) != null) {
-            if (StringUtils.containsIgnoreCase(instanceOf(e, 
NotAuthorizedException.class).getMessage(), "expired")) {
+            if (Strings.CI.contains(instanceOf(e, 
NotAuthorizedException.class).getMessage(), "expired")) {
                 errorParameters.add("errorMessage", 
SyncopeEnduserSession.Error.SESSION_EXPIRED.fallback());
             } else {
                 errorParameters.add("errorMessage", 
SyncopeEnduserSession.Error.AUTHORIZATION.fallback());
diff --git 
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java
 
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java
index 044b3473e6..842df5145e 100644
--- 
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java
+++ 
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java
@@ -36,6 +36,7 @@ import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.Future;
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.apache.commons.lang3.time.FastDateFormat;
 import org.apache.cxf.jaxrs.client.WebClient;
@@ -158,7 +159,7 @@ public class SyncopeEnduserSession extends 
AuthenticatedWebSession implements Ba
                     ? 
sce.asComposite().getExceptions().stream().map(this::message).collect(Collectors.joining(";
 "))
                     : message(sce);
         } else if (root instanceof NotAuthorizedException || root instanceof 
ForbiddenException) {
-            Error error = StringUtils.containsIgnoreCase(message, "expired")
+            Error error = Strings.CI.contains(message, "expired")
                     ? Error.SESSION_EXPIRED
                     : Error.AUTHORIZATION;
             message = getApplication().getResourceSettings().getLocalizer().
diff --git 
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/Sidebar.java
 
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/Sidebar.java
index d0dc14ec93..647ae087d9 100644
--- 
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/Sidebar.java
+++ 
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/Sidebar.java
@@ -21,6 +21,7 @@ package org.apache.syncope.client.enduser.panels;
 import java.util.List;
 import java.util.stream.StreamSupport;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.client.enduser.BookmarkablePageLinkBuilder;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.client.enduser.SyncopeWebApplication;
@@ -202,7 +203,7 @@ public class Sidebar extends Panel {
         List<Class<? extends BasePage>> extPageClasses = 
SyncopeWebApplication.get().getLookup().getExtPageClasses();
         ListView<Class<? extends BasePage>> extPages = new 
ListView<>("extPages", extPageClasses.stream().
                 filter(epc -> 
SyncopeWebApplication.get().getCustomFormLayout().getSidebarLayout().
-                
isExtensionEnabled(StringUtils.remove(epc.getAnnotation(ExtPage.class).label(), 
StringUtils.SPACE))).
+                
isExtensionEnabled(Strings.CS.remove(epc.getAnnotation(ExtPage.class).label(), 
StringUtils.SPACE))).
                 toList()) {
 
             private static final long serialVersionUID = 4949588177564901031L;
diff --git 
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/AbstractAttrs.java
 
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/AbstractAttrs.java
index b092ac3bd8..dde0d6f171 100644
--- 
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/AbstractAttrs.java
+++ 
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/AbstractAttrs.java
@@ -153,13 +153,13 @@ public abstract class AbstractAttrs<S extends SchemaTO> 
extends Panel {
     protected void setSchemas(final Pair<String, String> membership, final 
List<String> anyTypeClasses) {
         final Map<String, S> mscs;
 
-        if (membershipSchemas.containsKey(membership.getKey())) {
-            mscs = membershipSchemas.get(membership.getKey());
+        if (membershipSchemas.containsKey(membership.getLeft())) {
+            mscs = membershipSchemas.get(membership.getLeft());
         } else {
             mscs = new LinkedHashMap<>();
-            membershipSchemas.put(membership.getKey(), mscs);
+            membershipSchemas.put(membership.getLeft(), mscs);
         }
-        setSchemas(anyTypeClasses, membership.getValue(), mscs);
+        setSchemas(anyTypeClasses, membership.getRight(), mscs);
     }
 
     protected void setSchemas(final List<String> anyTypeClasses) {
diff --git 
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/PlainAttrs.java
 
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/PlainAttrs.java
index 6e60bee248..e84effb9f7 100644
--- 
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/PlainAttrs.java
+++ 
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/PlainAttrs.java
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.commons.lang3.time.DateFormatUtils;
 import org.apache.commons.lang3.time.FastDateFormat;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
@@ -198,7 +199,7 @@ public class PlainAttrs extends 
AbstractAttrs<PlainSchemaTO> {
                         ? 
DateFormatUtils.ISO_8601_EXTENDED_DATETIME_TIME_ZONE_FORMAT.getPattern()
                         : plainSchema.getConversionPattern();
 
-                if (StringUtils.containsIgnoreCase(datePattern, "H")) {
+                if (Strings.CI.contains(datePattern, "H")) {
                     panel = new AjaxDateTimeFieldPanel(
                             "panel",
                             
plainSchema.getLabel(SyncopeEnduserSession.get().getLocale()),
diff --git 
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/UserDetails.java
 
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/UserDetails.java
index 4e2a566db1..aa0bbabafc 100644
--- 
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/UserDetails.java
+++ 
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/UserDetails.java
@@ -21,7 +21,7 @@ package org.apache.syncope.client.enduser.panels.any;
 import 
de.agilecoders.wicket.extensions.markup.html.bootstrap.form.password.strength.PasswordStrengthBehavior;
 import java.util.List;
 import java.util.Optional;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.client.ui.commons.ajax.markup.html.LabelInfo;
 import 
org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
 import 
org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
@@ -54,7 +54,7 @@ public class UserDetails extends Details<UserTO> {
         // ------------------------
         username = new AjaxTextFieldPanel("username", "username", new 
PropertyModel<>(userTO, "username"), false);
 
-        if (wrapper.getPreviousUserTO() != null && StringUtils.
+        if (wrapper.getPreviousUserTO() != null && Strings.CS.
                 compare(wrapper.getPreviousUserTO().getUsername(), 
wrapper.getInnerObject().getUsername()) != 0) {
             username.showExternAction(new LabelInfo("externalAction", 
wrapper.getPreviousUserTO().getUsername()));
         }
diff --git 
a/client/idrepo/enduser/src/test/java/org/apache/syncope/client/enduser/SyncopeEnduserApplicationTest.java
 
b/client/idrepo/enduser/src/test/java/org/apache/syncope/client/enduser/SyncopeEnduserApplicationTest.java
index ae00d9e51d..ddab3b2d3d 100644
--- 
a/client/idrepo/enduser/src/test/java/org/apache/syncope/client/enduser/SyncopeEnduserApplicationTest.java
+++ 
b/client/idrepo/enduser/src/test/java/org/apache/syncope/client/enduser/SyncopeEnduserApplicationTest.java
@@ -29,7 +29,7 @@ import jakarta.ws.rs.core.Response;
 import java.io.IOException;
 import java.util.Map;
 import java.util.concurrent.ExecutionException;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.client.enduser.pages.Dashboard;
 import org.apache.syncope.client.enduser.pages.Login;
 import org.apache.syncope.common.lib.SyncopeClientCompositeException;
@@ -114,9 +114,9 @@ public class SyncopeEnduserApplicationTest extends 
AbstractTest {
         message = session.getFeedbackMessages().first();
         assertNotNull(message);
         assertTrue(message.isError());
-        assertTrue(StringUtils.contains((CharSequence) message.getMessage(),
+        assertTrue(Strings.CS.contains((CharSequence) message.getMessage(),
                 ClientExceptionType.InvalidExternalResource.name()));
-        assertTrue(StringUtils.contains((CharSequence) message.getMessage(), 
ClientExceptionType.InvalidUser.name()));
+        assertTrue(Strings.CS.contains((CharSequence) message.getMessage(), 
ClientExceptionType.InvalidUser.name()));
         session.getFeedbackMessages().clear();
     }
 }
diff --git 
a/client/idrepo/lib/src/main/java/org/apache/syncope/client/lib/SyncopeAnonymousClient.java
 
b/client/idrepo/lib/src/main/java/org/apache/syncope/client/lib/SyncopeAnonymousClient.java
index 72ad6d72cf..3b84c3c438 100644
--- 
a/client/idrepo/lib/src/main/java/org/apache/syncope/client/lib/SyncopeAnonymousClient.java
+++ 
b/client/idrepo/lib/src/main/java/org/apache/syncope/client/lib/SyncopeAnonymousClient.java
@@ -25,6 +25,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.Base64;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.cxf.configuration.jsse.TLSClientParameters;
 import org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean;
@@ -61,7 +62,7 @@ public class SyncopeAnonymousClient extends SyncopeClient {
 
     public JsonNode info() throws IOException {
         WebClient webClient = WebClientBuilder.build(
-                
StringUtils.removeEnd(restClientFactory.getAddress().replace("/rest", 
"/actuator/info"), "/")).
+                
Strings.CS.removeEnd(restClientFactory.getAddress().replace("/rest", 
"/actuator/info"), "/")).
                 accept(MediaType.APPLICATION_JSON_TYPE).
                 header(RESTHeaders.DOMAIN, getDomain()).
                 header(HttpHeaders.AUTHORIZATION, "Basic " + 
Base64.getEncoder().encodeToString(
diff --git 
a/common/keymaster/client-zookeeper/src/test/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperTestingServer.java
 
b/common/keymaster/client-zookeeper/src/test/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperTestingServer.java
index c9748120d7..6e77b14889 100644
--- 
a/common/keymaster/client-zookeeper/src/test/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperTestingServer.java
+++ 
b/common/keymaster/client-zookeeper/src/test/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperTestingServer.java
@@ -56,7 +56,7 @@ public final class ZookeeperTestingServer {
                     "org.apache.zookeeper.server.auth.DigestLoginModule",
                     AppConfigurationEntry.LoginModuleControlFlag.REQUIRED,
                     Map.of(
-                    "user_" + username.getValue(), password.getValue()
+                    "user_" + username.get(), password.get()
                     ))
                 };
 
diff --git 
a/common/keymaster/self/client-self/src/main/java/org/apache/syncope/common/keymaster/client/self/SelfKeymasterOps.java
 
b/common/keymaster/self/client-self/src/main/java/org/apache/syncope/common/keymaster/client/self/SelfKeymasterOps.java
index 8b98c77e90..0726ef29c6 100644
--- 
a/common/keymaster/self/client-self/src/main/java/org/apache/syncope/common/keymaster/client/self/SelfKeymasterOps.java
+++ 
b/common/keymaster/self/client-self/src/main/java/org/apache/syncope/common/keymaster/client/self/SelfKeymasterOps.java
@@ -23,7 +23,7 @@ import jakarta.ws.rs.core.MediaType;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.cxf.jaxrs.client.Client;
 import org.apache.cxf.jaxrs.client.ClientConfiguration;
 import org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean;
@@ -81,7 +81,7 @@ abstract class SelfKeymasterOps {
     protected CompletionStageRxInvoker rx(final String path) {
         synchronized (clientFactory) {
             String original = clientFactory.getAddress();
-            clientFactory.setAddress(StringUtils.removeEnd(original, "/") + 
StringUtils.prependIfMissing(path, "/"));
+            clientFactory.setAddress(Strings.CS.removeEnd(original, "/") + 
Strings.CS.prependIfMissing(path, "/"));
 
             try {
                 WebClient client = clientFactory.createWebClient().
diff --git 
a/core/am/logic/src/main/java/org/apache/syncope/core/logic/SRARouteLogic.java 
b/core/am/logic/src/main/java/org/apache/syncope/core/logic/SRARouteLogic.java
index 076d292119..419a11c88d 100644
--- 
a/core/am/logic/src/main/java/org/apache/syncope/core/logic/SRARouteLogic.java
+++ 
b/core/am/logic/src/main/java/org/apache/syncope/core/logic/SRARouteLogic.java
@@ -26,7 +26,7 @@ import java.net.http.HttpRequest;
 import java.net.http.HttpResponse;
 import java.util.List;
 import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.cxf.transport.http.auth.DefaultBasicAuthSupplier;
 import org.apache.syncope.common.keymaster.client.api.KeymasterException;
 import org.apache.syncope.common.keymaster.client.api.ServiceOps;
@@ -114,7 +114,7 @@ public class SRARouteLogic extends 
AbstractTransactionalLogic<SRARouteTO> {
         try {
             serviceOps.list(NetworkService.Type.SRA).forEach(sra -> 
client.sendAsync(
                     HttpRequest.newBuilder(URI.create(
-                            StringUtils.appendIfMissing(sra.getAddress(), "/") 
+ "actuator/gateway/refresh")).
+                            Strings.CS.appendIfMissing(sra.getAddress(), "/") 
+ "actuator/gateway/refresh")).
                             header(HttpHeaders.AUTHORIZATION, 
DefaultBasicAuthSupplier.getBasicAuthHeader(
                                     securityProperties.getAnonymousUser(), 
securityProperties.getAnonymousKey())).
                             POST(HttpRequest.BodyPublishers.noBody()).build(),
diff --git 
a/core/am/logic/src/main/java/org/apache/syncope/core/logic/wa/WAConfigLogic.java
 
b/core/am/logic/src/main/java/org/apache/syncope/core/logic/wa/WAConfigLogic.java
index afafcba944..66f663fde1 100644
--- 
a/core/am/logic/src/main/java/org/apache/syncope/core/logic/wa/WAConfigLogic.java
+++ 
b/core/am/logic/src/main/java/org/apache/syncope/core/logic/wa/WAConfigLogic.java
@@ -25,7 +25,7 @@ import java.net.http.HttpClient;
 import java.net.http.HttpRequest;
 import java.net.http.HttpResponse;
 import java.util.List;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.cxf.transport.http.auth.DefaultBasicAuthSupplier;
 import org.apache.syncope.common.keymaster.client.api.KeymasterException;
 import org.apache.syncope.common.keymaster.client.api.ServiceOps;
@@ -92,7 +92,7 @@ public class WAConfigLogic extends 
AbstractTransactionalLogic<EntityTO> {
     }
 
     protected void registeredServices(final HttpClient client, final String 
serviceAddress) {
-        String target = StringUtils.appendIfMissing(serviceAddress, "/") + 
"actuator/registeredServices";
+        String target = Strings.CS.appendIfMissing(serviceAddress, "/") + 
"actuator/registeredServices";
         client.sendAsync(
                 HttpRequest.newBuilder(URI.create(target)).
                         header(HttpHeaders.AUTHORIZATION, 
DefaultBasicAuthSupplier.getBasicAuthHeader(
@@ -104,7 +104,7 @@ public class WAConfigLogic extends 
AbstractTransactionalLogic<EntityTO> {
     }
 
     protected void refresh(final HttpClient client, final String 
serviceAddress) {
-        String target = StringUtils.appendIfMissing(serviceAddress, "/") + 
"actuator/refresh";
+        String target = Strings.CS.appendIfMissing(serviceAddress, "/") + 
"actuator/refresh";
         client.sendAsync(
                 HttpRequest.newBuilder(URI.create(target)).
                         header(HttpHeaders.AUTHORIZATION, 
DefaultBasicAuthSupplier.getBasicAuthHeader(
diff --git 
a/core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReconciliationServiceImpl.java
 
b/core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReconciliationServiceImpl.java
index 644b0e2481..43480eab2b 100644
--- 
a/core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReconciliationServiceImpl.java
+++ 
b/core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReconciliationServiceImpl.java
@@ -28,6 +28,7 @@ import java.util.List;
 import java.util.Optional;
 import java.util.Set;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.cxf.jaxrs.ext.search.SearchBean;
@@ -145,7 +146,7 @@ public class ReconciliationServiceImpl extends 
AbstractSearchService implements
 
     @Override
     public Response push(final AnyQuery query, final CSVPushSpec spec) {
-        String realm = StringUtils.prependIfMissing(query.getRealm(), 
SyncopeConstants.ROOT_REALM);
+        String realm = Strings.CS.prependIfMissing(query.getRealm(), 
SyncopeConstants.ROOT_REALM);
 
         SearchCond searchCond = StringUtils.isBlank(query.getFiql())
                 ? null
diff --git 
a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java 
b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java
index 1d38e6f625..9d90ba7978 100644
--- 
a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java
+++ 
b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java
@@ -26,6 +26,7 @@ import java.util.Map;
 import java.util.Set;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.SyncopeConstants;
@@ -172,7 +173,7 @@ public class RealmLogic extends 
AbstractTransactionalLogic<RealmTO> {
 
         
securityChecks(AuthContextUtils.getAuthorizations().get(IdRepoEntitlement.REALM_CREATE),
 parent.getFullPath());
 
-        String fullPath = StringUtils.appendIfMissing(parent.getFullPath(), 
"/") + realmTO.getName();
+        String fullPath = Strings.CS.appendIfMissing(parent.getFullPath(), 
"/") + realmTO.getName();
         if (realmSearchDAO.findByFullPath(fullPath).isPresent()) {
             throw new DuplicateException(fullPath);
         }
diff --git 
a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
 
b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
index db89032988..3ebe453dc0 100644
--- 
a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
+++ 
b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
@@ -28,7 +28,7 @@ import java.util.List;
 import java.util.Optional;
 import java.util.zip.ZipInputStream;
 import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.commons.lang3.tuple.Triple;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.ExecTO;
@@ -195,7 +195,7 @@ public class ReportLogic extends 
AbstractExecutableLogic<ReportTO> {
 
         return reportExec.getReport().getName()
                 + "."
-                + StringUtils.removeStart(reportExec.getReport().getFileExt(), 
".");
+                + Strings.CS.removeStart(reportExec.getReport().getFileExt(), 
".");
     }
 
     @PreAuthorize("hasRole('" + IdRepoEntitlement.REPORT_READ + "')")
diff --git 
a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java
 
b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java
index 2c29346672..5137b272e8 100644
--- 
a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java
+++ 
b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java
@@ -25,6 +25,7 @@ import java.util.List;
 import java.util.Optional;
 import java.util.Set;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.SyncopeClientException;
@@ -113,7 +114,7 @@ public abstract class AbstractAnyService<TO extends AnyTO, 
CR extends AnyCR, UR
 
     @Override
     public PagedResult<TO> search(final AnyQuery anyQuery) {
-        String realm = StringUtils.prependIfMissing(anyQuery.getRealm(), 
SyncopeConstants.ROOT_REALM);
+        String realm = Strings.CS.prependIfMissing(anyQuery.getRealm(), 
SyncopeConstants.ROOT_REALM);
         SearchCond searchCond = StringUtils.isBlank(anyQuery.getFiql())
                 ? null
                 : getSearchCond(anyQuery.getFiql(), realm);
diff --git 
a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RealmServiceImpl.java
 
b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RealmServiceImpl.java
index 1bf32e6086..866ca7bc24 100644
--- 
a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RealmServiceImpl.java
+++ 
b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RealmServiceImpl.java
@@ -21,7 +21,7 @@ package org.apache.syncope.core.rest.cxf.service;
 import jakarta.ws.rs.core.Response;
 import java.net.URI;
 import java.util.Optional;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
@@ -52,7 +52,7 @@ public class RealmServiceImpl extends AbstractService 
implements RealmService {
     @Override
     public Response create(final String parentPath, final RealmTO realmTO) {
         ProvisioningResult<RealmTO> created =
-                logic.create(StringUtils.prependIfMissing(parentPath, 
SyncopeConstants.ROOT_REALM), realmTO);
+                logic.create(Strings.CS.prependIfMissing(parentPath, 
SyncopeConstants.ROOT_REALM), realmTO);
         URI location = 
uriInfo.getAbsolutePathBuilder().path(created.getEntity().getName()).build();
         Response.ResponseBuilder builder = Response.created(location).
                 header(RESTHeaders.RESOURCE_KEY, 
created.getEntity().getFullPath());
@@ -62,7 +62,7 @@ public class RealmServiceImpl extends AbstractService 
implements RealmService {
 
     @Override
     public Response update(final RealmTO realmTO) {
-        
realmTO.setFullPath(StringUtils.prependIfMissing(realmTO.getFullPath(), 
SyncopeConstants.ROOT_REALM));
+        realmTO.setFullPath(Strings.CS.prependIfMissing(realmTO.getFullPath(), 
SyncopeConstants.ROOT_REALM));
         ProvisioningResult<RealmTO> updated = logic.update(realmTO);
         return modificationResponse(updated);
     }
@@ -70,7 +70,7 @@ public class RealmServiceImpl extends AbstractService 
implements RealmService {
     @Override
     public Response delete(final String fullPath) {
         ProvisioningResult<RealmTO> deleted =
-                logic.delete(StringUtils.prependIfMissing(fullPath, 
SyncopeConstants.ROOT_REALM));
+                logic.delete(Strings.CS.prependIfMissing(fullPath, 
SyncopeConstants.ROOT_REALM));
         return modificationResponse(deleted);
     }
 }
diff --git 
a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SyncopeServiceImpl.java
 
b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SyncopeServiceImpl.java
index 785c0a10fd..065261b22d 100644
--- 
a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SyncopeServiceImpl.java
+++ 
b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SyncopeServiceImpl.java
@@ -28,7 +28,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.time.OffsetDateTime;
 import java.util.List;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.cxf.Bus;
 import org.apache.cxf.transport.DestinationFactoryManager;
 import org.apache.cxf.transport.http.DestinationRegistry;
@@ -88,7 +88,7 @@ public class SyncopeServiceImpl extends AbstractService 
implements SyncopeServic
             final String realm, final String term, final int page, final int 
size) {
 
         Page<GroupTO> result = logic.searchAssignableGroups(
-                StringUtils.prependIfMissing(realm, 
SyncopeConstants.ROOT_REALM),
+                Strings.CS.prependIfMissing(realm, 
SyncopeConstants.ROOT_REALM),
                 term,
                 PageRequest.of(page < 1 ? 0 : page - 1, size < 1 ? 1 : size, 
Sort.by(Sort.Direction.ASC, "name")));
         return buildPagedResult(result);
diff --git 
a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/utils/FormatUtils.java
 
b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/utils/FormatUtils.java
index 6cf8aeb32b..3bd6cfa0d9 100644
--- 
a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/utils/FormatUtils.java
+++ 
b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/utils/FormatUtils.java
@@ -31,7 +31,7 @@ import java.time.temporal.ChronoUnit;
 import java.time.temporal.TemporalAccessor;
 import java.util.Arrays;
 import java.util.Locale;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.common.lib.SyncopeConstants;
 
 /**
@@ -123,7 +123,7 @@ public final class FormatUtils {
 
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern(conversionPattern);
         try {
-            if (StringUtils.containsIgnoreCase(conversionPattern, "Z")) {
+            if (Strings.CI.contains(conversionPattern, "Z")) {
                 return OffsetDateTime.parse(source, dtf);
             } else {
                 return LocalDateTime.parse(source, 
dtf).atZone(DEFAULT_OFFSET).toOffsetDateTime();
diff --git 
a/core/persistence-api/src/test/java/org/apache/syncope/core/persistence/api/utils/URIUtilsTest.java
 
b/core/persistence-api/src/test/java/org/apache/syncope/core/persistence/api/utils/URIUtilsTest.java
index ce39e18732..10b8559c5d 100644
--- 
a/core/persistence-api/src/test/java/org/apache/syncope/core/persistence/api/utils/URIUtilsTest.java
+++ 
b/core/persistence-api/src/test/java/org/apache/syncope/core/persistence/api/utils/URIUtilsTest.java
@@ -36,12 +36,12 @@ public class URIUtilsTest extends AbstractTest {
         Mutable<String> location = new MutableObject<>();
         location.setValue("www.tirasa.net");
         IllegalArgumentException exception =
-                assertThrows(IllegalArgumentException.class, () -> 
URIUtils.buildForConnId(location.getValue()));
+                assertThrows(IllegalArgumentException.class, () -> 
URIUtils.buildForConnId(location.get()));
         assertEquals(exception.getClass(), IllegalArgumentException.class);
 
         location.setValue("connid:test/location");
-        URI expectedURI = new URI(location.getValue().trim());
-        assertEquals(expectedURI, 
URIUtils.buildForConnId(location.getValue()));
+        URI expectedURI = new URI(location.get().trim());
+        assertEquals(expectedURI, URIUtils.buildForConnId(location.get()));
 
         assertDoesNotThrow(() -> 
URIUtils.buildForConnId("file:Z:\\syncope\\fit\\core-reference\\target/bundles/"));
         assertDoesNotThrow(() -> 
URIUtils.buildForConnId("file:/Z:\\syncope\\fit\\core-reference\\target/bundles/"));
diff --git 
a/core/persistence-common/src/main/java/org/apache/syncope/core/persistence/common/validation/AttributableValidator.java
 
b/core/persistence-common/src/main/java/org/apache/syncope/core/persistence/common/validation/AttributableValidator.java
index 92d20b6bfc..4da842e10c 100644
--- 
a/core/persistence-common/src/main/java/org/apache/syncope/core/persistence/common/validation/AttributableValidator.java
+++ 
b/core/persistence-common/src/main/java/org/apache/syncope/core/persistence/common/validation/AttributableValidator.java
@@ -116,8 +116,8 @@ public class AttributableValidator extends 
AbstractValidator<AttributableCheck,
         Mutable<Boolean> isValid = new MutableObject<>(true);
         entity.getPlainAttrs().forEach(attr -> 
schemaDAO.findById(attr.getSchema()).ifPresentOrElse(
                 schema -> {
-                    isValid.setValue(isValid.getValue() && isValid(attr, 
schema, context));
-                    attr.getValues().forEach(value -> 
isValid.setValue(isValid.getValue() && isValid(value, context)));
+                    isValid.setValue(isValid.get() && isValid(attr, schema, 
context));
+                    attr.getValues().forEach(value -> 
isValid.setValue(isValid.get() && isValid(value, context)));
                 }, () -> {
                     isValid.setValue(false);
                     context.buildConstraintViolationWithTemplate(
@@ -125,6 +125,6 @@ public class AttributableValidator extends 
AbstractValidator<AttributableCheck,
                             
addPropertyNode(attr.getSchema()).addConstraintViolation();
                 }));
 
-        return isValid.getValue();
+        return isValid.get();
     }
 }
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java
index f5303bfb0d..9e63758c99 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java
@@ -61,6 +61,7 @@ import javax.xml.transform.TransformerConfigurationException;
 import javax.xml.transform.sax.TransformerHandler;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.cxf.helpers.IOUtils;
 import org.apache.openjpa.lib.util.collections.BidiMap;
@@ -159,7 +160,7 @@ public class XMLContentExporter extends 
AbstractXMLContentExporter {
             return null;
         }).filter(Objects::nonNull).findFirst().orElse(columnName);
 
-        if (StringUtils.endsWithIgnoreCase(name, "_ID")) {
+        if (Strings.CI.endsWith(name, "_ID")) {
             String left = StringUtils.substringBefore(name, "_");
             String prefix = attrs.get().filter(attr -> 
left.equalsIgnoreCase(attr.getName())).findFirst().
                     map(Attribute::getName).orElse(left);
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmDAO.java
index 8350091cd3..968ab75eec 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmDAO.java
@@ -25,7 +25,7 @@ import jakarta.persistence.TypedQuery;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.core.persistence.api.dao.DuplicateException;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
@@ -231,7 +231,7 @@ public class JPARealmDAO implements RealmDAO {
         String fullPathBefore = realm.getFullPath();
         String fullPathAfter = realm.getParent() == null
                 ? SyncopeConstants.ROOT_REALM
-                : StringUtils.appendIfMissing(realm.getParent().getFullPath(), 
"/") + realm.getName();
+                : Strings.CS.appendIfMissing(realm.getParent().getFullPath(), 
"/") + realm.getName();
         if (!fullPathAfter.equals(fullPathBefore)) {
             ((JPARealm) realm).setFullPath(fullPathAfter);
         }
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmSearchDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmSearchDAO.java
index 1124660fc9..d3aef9eaa9 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmSearchDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmSearchDAO.java
@@ -28,6 +28,7 @@ import java.util.Optional;
 import java.util.Set;
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.core.persistence.api.dao.MalformedPathException;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
@@ -129,7 +130,7 @@ public class JPARealmSearchDAO implements RealmSearchDAO {
         List<Object> parameters = new ArrayList<>();
 
         StringBuilder queryString = buildDescendantsQuery(bases, keyword, 
parameters);
-        Query query = entityManager.createQuery(StringUtils.replaceOnce(
+        Query query = entityManager.createQuery(Strings.CS.replaceOnce(
                 queryString.toString(),
                 "SELECT e ",
                 "SELECT COUNT(e) "));
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskDAO.java
index 500b6ab1fd..b5d656666a 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskDAO.java
@@ -32,7 +32,7 @@ import java.util.List;
 import java.util.Optional;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.common.lib.to.PropagationTaskTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ExecStatus;
@@ -489,7 +489,7 @@ public class JPATaskDAO implements TaskDAO {
                 buildFindAllQuery(type, resource, notification, anyTypeKind, 
entityKey, false, parameters);
 
         String table = taskUtilsFactory.getInstance(type).getTaskStorage();
-        Query query = entityManager.createNativeQuery(StringUtils.replaceOnce(
+        Query query = entityManager.createNativeQuery(Strings.CS.replaceOnce(
                 queryString.toString(),
                 "SELECT " + table + ".*, null AS startDate, null AS endDate, 
null AS status",
                 "SELECT COUNT(" + table + ".id)"));
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/repo/ExternalResourceRepoExtImpl.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/repo/ExternalResourceRepoExtImpl.java
index 419f1311ec..c8553fed17 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/repo/ExternalResourceRepoExtImpl.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/repo/ExternalResourceRepoExtImpl.java
@@ -149,11 +149,11 @@ public class ExternalResourceRepoExtImpl implements 
ExternalResourceRepoExt {
             Mutable<Boolean> removed = new MutableObject<>(false);
 
             resource.getProvisions().forEach(provision -> removed.setValue(
-                    removed.getValue()
+                    removed.get()
                     || (provision.getMapping() != null
                     && provision.getMapping().getItems().removeIf(item -> 
schemaKey.equals(item.getIntAttrName())))));
 
-            if (removed.getValue()) {
+            if (removed.get()) {
                 entityManager.merge(resource);
             }
         });
diff --git 
a/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/dao/Neo4jAnySearchDAO.java
 
b/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/dao/Neo4jAnySearchDAO.java
index 0786553b2f..780e5193bf 100644
--- 
a/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/dao/Neo4jAnySearchDAO.java
+++ 
b/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/dao/Neo4jAnySearchDAO.java
@@ -30,6 +30,7 @@ import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.commons.lang3.tuple.Triple;
 import org.apache.commons.text.TextStringBuilder;
@@ -715,10 +716,10 @@ public class Neo4jAnySearchDAO extends 
AbstractAnySearchDAO {
             final QueryInfo rightInfo) {
 
         query.append("WHERE EXISTS { ").
-                
append(StringUtils.prependIfMissing(leftInfo.query().toString(), "MATCH (n) ")).
+                
append(Strings.CS.prependIfMissing(leftInfo.query().toString(), "MATCH (n) ")).
                 append(" } ").
                 append(op).append(" EXISTS { ").
-                
append(StringUtils.prependIfMissing(rightInfo.query().toString(), "MATCH (n) 
")).
+                
append(Strings.CS.prependIfMissing(rightInfo.query().toString(), "MATCH (n) ")).
                 append(" }");
     }
 
diff --git 
a/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/dao/Neo4jRealmDAO.java
 
b/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/dao/Neo4jRealmDAO.java
index 682fe2bd19..d09da50949 100644
--- 
a/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/dao/Neo4jRealmDAO.java
+++ 
b/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/dao/Neo4jRealmDAO.java
@@ -22,7 +22,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 import javax.cache.Cache;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
 import org.apache.syncope.core.persistence.api.dao.RealmSearchDAO;
@@ -229,7 +229,7 @@ public class Neo4jRealmDAO extends AbstractDAO implements 
RealmDAO {
         String fullPathBefore = realm.getFullPath();
         String fullPathAfter = realm.getParent() == null
                 ? SyncopeConstants.ROOT_REALM
-                : StringUtils.appendIfMissing(realm.getParent().getFullPath(), 
"/") + realm.getName();
+                : Strings.CS.appendIfMissing(realm.getParent().getFullPath(), 
"/") + realm.getName();
         if (!fullPathAfter.equals(fullPathBefore)) {
             ((Neo4jRealm) realm).setFullPath(fullPathAfter);
         }
diff --git 
a/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/dao/repo/ExternalResourceRepoExtImpl.java
 
b/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/dao/repo/ExternalResourceRepoExtImpl.java
index 2f1c125424..a0115498e8 100644
--- 
a/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/dao/repo/ExternalResourceRepoExtImpl.java
+++ 
b/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/dao/repo/ExternalResourceRepoExtImpl.java
@@ -274,11 +274,11 @@ public class ExternalResourceRepoExtImpl extends 
AbstractDAO implements External
             Mutable<Boolean> removed = new MutableObject<>(false);
 
             resource.getProvisions().forEach(provision -> removed.setValue(
-                    removed.getValue()
+                    removed.get()
                     || (provision.getMapping() != null
                     && provision.getMapping().getItems().removeIf(item -> 
schemaKey.equals(item.getIntAttrName())))));
 
-            if (removed.getValue()) {
+            if (removed.get()) {
                 ((Neo4jExternalResource) resource).list2json();
                 ExternalResource saved = neo4jTemplate.save(resource);
                 ((Neo4jExternalResource) saved).postSave();
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultMappingManager.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultMappingManager.java
index 6a47dd04af..ef2649382b 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultMappingManager.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultMappingManager.java
@@ -321,13 +321,13 @@ public class DefaultMappingManager implements 
MappingManager {
             Attribute connObjectKeyAttr = 
AttributeUtil.find(item.getExtAttrName(), attributes);
             if (connObjectKeyAttr != null) {
                 attributes.remove(connObjectKeyAttr);
-                attributes.add(AttributeBuilder.build(item.getExtAttrName(), 
connObjectKeyValue.getValue()));
+                attributes.add(AttributeBuilder.build(item.getExtAttrName(), 
connObjectKeyValue.get()));
             }
 
-            Name name = evaluateNAME(any, provision, 
connObjectKeyValue.getValue());
+            Name name = evaluateNAME(any, provision, connObjectKeyValue.get());
             attributes.add(name);
 
-            Optional.ofNullable(connObjectKeyValue.getValue()).
+            Optional.ofNullable(connObjectKeyValue.get()).
                     filter(cokv -> connObjectKeyAttr == null && 
!cokv.equals(name.getNameValue())).
                     ifPresent(cokv -> 
attributes.add(AttributeBuilder.build(item.getExtAttrName(), cokv)));
         });
@@ -339,7 +339,7 @@ public class DefaultMappingManager implements 
MappingManager {
                     ifPresent(attributes::remove);
         }
 
-        return Pair.of(connObjectKeyValue.getValue(), attributes);
+        return Pair.of(connObjectKeyValue.get(), attributes);
     }
 
     @Transactional(readOnly = true)
@@ -444,18 +444,18 @@ public class DefaultMappingManager implements 
MappingManager {
             Attribute connObjectKeyAttr = 
AttributeUtil.find(item.getExtAttrName(), attributes);
             if (connObjectKeyAttr != null) {
                 attributes.remove(connObjectKeyAttr);
-                attributes.add(AttributeBuilder.build(item.getExtAttrName(), 
connObjectKeyValue.getValue()));
+                attributes.add(AttributeBuilder.build(item.getExtAttrName(), 
connObjectKeyValue.get()));
             }
 
-            Name name = evaluateNAME(realm, resource.getOrgUnit(), 
connObjectKeyValue.getValue());
+            Name name = evaluateNAME(realm, resource.getOrgUnit(), 
connObjectKeyValue.get());
             attributes.add(name);
 
-            Optional.ofNullable(connObjectKeyValue.getValue()).
+            Optional.ofNullable(connObjectKeyValue.get()).
                     filter(cokv -> connObjectKeyAttr == null && 
!cokv.equals(name.getNameValue())).
                     ifPresent(cokv -> 
attributes.add(AttributeBuilder.build(item.getExtAttrName(), cokv)));
         });
 
-        return Pair.of(connObjectKeyValue.getValue(), attributes);
+        return Pair.of(connObjectKeyValue.get(), attributes);
     }
 
     protected Optional<String> decodePassword(final Account account) {
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/JEXLItemTransformerImpl.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/JEXLItemTransformerImpl.java
index 3e5ee71097..a28f73f245 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/JEXLItemTransformerImpl.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/JEXLItemTransformerImpl.java
@@ -160,7 +160,7 @@ public class JEXLItemTransformerImpl implements 
JEXLItemTransformer {
             values.forEach(value -> tType.setValue(beforePropagation(any, 
schemaType, value)));
         }
 
-        return Pair.of(tType.getValue(), values);
+        return Pair.of(tType.get(), values);
     }
 
     @Override
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SchemaDataBinderImpl.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SchemaDataBinderImpl.java
index 371d440bb7..b447d1dcda 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SchemaDataBinderImpl.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SchemaDataBinderImpl.java
@@ -152,7 +152,7 @@ public class SchemaDataBinderImpl implements 
SchemaDataBinder {
         }
 
         PlainSchema filled = plainSchemaDAO.save(saved);
-        Optional.ofNullable(atc.getValue()).ifPresent(anyTypeClassDAO::save);
+        Optional.ofNullable(atc.get()).ifPresent(anyTypeClassDAO::save);
         return filled;
     }
 
@@ -266,7 +266,7 @@ public class SchemaDataBinderImpl implements 
SchemaDataBinder {
         }
 
         DerSchema filled = derSchemaDAO.save(saved);
-        Optional.ofNullable(atc.getValue()).ifPresent(anyTypeClassDAO::save);
+        Optional.ofNullable(atc.get()).ifPresent(anyTypeClassDAO::save);
         return filled;
     }
 
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/MacroJobDelegate.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/MacroJobDelegate.java
index e0ece47ee7..e2ed048ce1 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/MacroJobDelegate.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/MacroJobDelegate.java
@@ -194,7 +194,7 @@ public class MacroJobDelegate extends 
AbstractSchedTaskJobDelegate<MacroTask> {
 
                     Mutable<Pair<String, Throwable>> error = new 
MutableObject<>();
 
-                    for (int i = 0; i < commands.size() && error.getValue() == 
null; i++) {
+                    for (int i = 0; i < commands.size() && error.get() == 
null; i++) {
                         Pair<Command<CommandArgs>, CommandArgs> command = 
commands.get(i);
 
                         try {
@@ -229,9 +229,9 @@ public class MacroJobDelegate extends 
AbstractSchedTaskJobDelegate<MacroTask> {
 
         try {
             Mutable<Pair<String, Throwable>> error = future.get();
-            if (error.getValue() != null) {
+            if (error.get() != null) {
                 throw new JobExecutionException("While running "
-                        + error.getValue().getLeft(), 
error.getValue().getRight());
+                        + error.get().getLeft(), error.get().getRight());
             }
         } catch (ExecutionException | InterruptedException e) {
             throw new JobExecutionException("While waiting for macro commands 
completion", e);
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
index b26a0af4a5..69a28f7737 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
@@ -593,7 +593,7 @@ public abstract class AbstractPropagationTaskExecutor 
implements PropagationTask
                 default:
             }
 
-            exec.setStatus(propagationAttempted.getValue()
+            exec.setStatus(propagationAttempted.get()
                     ? ExecStatus.SUCCESS.name()
                     : ExecStatus.NOT_ATTEMPTED.name());
 
diff --git 
a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/job/SyncopeTaskSchedulerTest.java
 
b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/job/SyncopeTaskSchedulerTest.java
index c2bcf3ae09..3151877646 100644
--- 
a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/job/SyncopeTaskSchedulerTest.java
+++ 
b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/job/SyncopeTaskSchedulerTest.java
@@ -75,6 +75,6 @@ public class SyncopeTaskSchedulerTest extends AbstractTest {
 
         assertTrue(scheduler.getNextTrigger(AuthContextUtils.getDomain(), 
job.getContext().getJobName()).isPresent());
 
-        await().atMost(10, TimeUnit.SECONDS).pollInterval(1, 
TimeUnit.SECONDS).until(() -> VALUE.getValue() == 1);
+        await().atMost(10, TimeUnit.SECONDS).pollInterval(1, 
TimeUnit.SECONDS).until(() -> VALUE.get() == 1);
     }
 }
diff --git 
a/core/spring/src/main/java/org/apache/syncope/core/spring/policy/DefaultAccountRule.java
 
b/core/spring/src/main/java/org/apache/syncope/core/spring/policy/DefaultAccountRule.java
index 0cb4b1e7b9..3b82187c72 100644
--- 
a/core/spring/src/main/java/org/apache/syncope/core/spring/policy/DefaultAccountRule.java
+++ 
b/core/spring/src/main/java/org/apache/syncope/core/spring/policy/DefaultAccountRule.java
@@ -25,6 +25,7 @@ import java.util.Set;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.common.lib.policy.AccountRuleConf;
 import org.apache.syncope.common.lib.policy.DefaultAccountRuleConf;
 import org.apache.syncope.core.persistence.api.entity.Entity;
@@ -64,7 +65,7 @@ public class DefaultAccountRule implements AccountRule {
 
         // check words not permitted
         wordsNotPermitted.stream().
-                filter(word -> StringUtils.containsIgnoreCase(username, word)).
+                filter(word -> Strings.CI.contains(username, word)).
                 forEach(item -> {
                     throw new AccountPolicyException("Used word(s) not 
permitted");
                 });
diff --git 
a/core/spring/src/main/java/org/apache/syncope/core/spring/policy/DefaultPasswordRule.java
 
b/core/spring/src/main/java/org/apache/syncope/core/spring/policy/DefaultPasswordRule.java
index 09888bb987..ad1b81b051 100644
--- 
a/core/spring/src/main/java/org/apache/syncope/core/spring/policy/DefaultPasswordRule.java
+++ 
b/core/spring/src/main/java/org/apache/syncope/core/spring/policy/DefaultPasswordRule.java
@@ -28,7 +28,7 @@ import java.util.Properties;
 import java.util.Set;
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.common.lib.policy.DefaultPasswordRuleConf;
 import org.apache.syncope.common.lib.policy.PasswordRuleConf;
 import org.apache.syncope.core.persistence.api.EncryptorManager;
@@ -158,7 +158,7 @@ public class DefaultPasswordRule implements PasswordRule {
 
         // check words not permitted
         wordsNotPermitted.stream().
-                filter(word -> StringUtils.containsIgnoreCase(clear, 
word)).findFirst().
+                filter(word -> Strings.CI.contains(clear, word)).findFirst().
                 ifPresent(word -> {
                     throw new PasswordPolicyException("Used word(s) not 
permitted");
                 });
diff --git 
a/core/spring/src/main/java/org/apache/syncope/core/spring/security/UsernamePasswordAuthenticationProvider.java
 
b/core/spring/src/main/java/org/apache/syncope/core/spring/security/UsernamePasswordAuthenticationProvider.java
index 99c8e1ea13..5562c95cca 100644
--- 
a/core/spring/src/main/java/org/apache/syncope/core/spring/security/UsernamePasswordAuthenticationProvider.java
+++ 
b/core/spring/src/main/java/org/apache/syncope/core/spring/security/UsernamePasswordAuthenticationProvider.java
@@ -131,12 +131,12 @@ public class UsernamePasswordAuthenticationProvider 
implements AuthenticationPro
             }
             delegationKey.setValue(authResult.getRight());
         }
-        if (username.getValue() == null) {
+        if (username.get() == null) {
             username.setValue(authentication.getPrincipal().toString());
         }
 
         return finalizeAuthentication(
-                authenticated, domainKey, username.getValue(), 
delegationKey.getValue(), authentication);
+                authenticated, domainKey, username.get(), delegationKey.get(), 
authentication);
     }
 
     protected Authentication finalizeAuthentication(
diff --git 
a/core/spring/src/main/java/org/apache/syncope/core/spring/security/WebSecurityContext.java
 
b/core/spring/src/main/java/org/apache/syncope/core/spring/security/WebSecurityContext.java
index 0b582e9f50..d876a67cab 100644
--- 
a/core/spring/src/main/java/org/apache/syncope/core/spring/security/WebSecurityContext.java
+++ 
b/core/spring/src/main/java/org/apache/syncope/core/spring/security/WebSecurityContext.java
@@ -51,7 +51,7 @@ import 
org.springframework.security.web.access.intercept.AuthorizationFilter;
 import 
org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
 import org.springframework.security.web.firewall.DefaultHttpFirewall;
 import org.springframework.security.web.firewall.HttpFirewall;
-import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
+import 
org.springframework.security.web.servlet.util.matcher.PathPatternRequestMatcher;
 
 @EnableWebSecurity
 @EnableMethodSecurity(prePostEnabled = true)
@@ -106,9 +106,9 @@ public class WebSecurityContext {
         http.addFilterBefore(mustChangePasswordFilter, 
AuthorizationFilter.class);
 
         http.authorizeHttpRequests(customizer -> customizer.
-                
requestMatchers(AntPathRequestMatcher.antMatcher("/actuator/**")).
+                
requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/actuator/**")).
                 hasAuthority(IdRepoEntitlement.ANONYMOUS).
-                
requestMatchers(AntPathRequestMatcher.antMatcher("/**")).permitAll());
+                
requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/**")).permitAll());
         http.securityContext(AbstractHttpConfigurer::disable);
         http.sessionManagement(AbstractHttpConfigurer::disable);
         http.headers(AbstractHttpConfigurer::disable);
diff --git 
a/core/starter/src/main/java/org/apache/syncope/core/starter/actuate/DomainsHealthIndicator.java
 
b/core/starter/src/main/java/org/apache/syncope/core/starter/actuate/DomainsHealthIndicator.java
index 9742c96250..393e9d5898 100644
--- 
a/core/starter/src/main/java/org/apache/syncope/core/starter/actuate/DomainsHealthIndicator.java
+++ 
b/core/starter/src/main/java/org/apache/syncope/core/starter/actuate/DomainsHealthIndicator.java
@@ -49,7 +49,7 @@ public class DomainsHealthIndicator implements 
HealthIndicator {
             }
         });
 
-        builder.status(anyDown.getValue() ? Status.DOWN : Status.UP);
+        builder.status(anyDown.get() ? Status.DOWN : Status.UP);
 
         return builder.build();
     }
diff --git 
a/core/starter/src/main/java/org/apache/syncope/core/starter/actuate/ExternalResourcesHealthIndicator.java
 
b/core/starter/src/main/java/org/apache/syncope/core/starter/actuate/ExternalResourcesHealthIndicator.java
index 91b8eea099..f283369d60 100644
--- 
a/core/starter/src/main/java/org/apache/syncope/core/starter/actuate/ExternalResourcesHealthIndicator.java
+++ 
b/core/starter/src/main/java/org/apache/syncope/core/starter/actuate/ExternalResourcesHealthIndicator.java
@@ -89,7 +89,7 @@ public class ExternalResourcesHealthIndicator implements 
HealthIndicator {
             });
         }));
 
-        builder.status(anyDown.getValue() ? Status.DOWN : Status.UP);
+        builder.status(anyDown.get() ? Status.DOWN : Status.UP);
 
         return builder.build();
     }
diff --git 
a/ext/openfga/client-openfga/src/main/java/org/apache/syncope/ext/openfga/client/OpenFGAHealthIndicator.java
 
b/ext/openfga/client-openfga/src/main/java/org/apache/syncope/ext/openfga/client/OpenFGAHealthIndicator.java
index 2f2374897d..3968022bf7 100644
--- 
a/ext/openfga/client-openfga/src/main/java/org/apache/syncope/ext/openfga/client/OpenFGAHealthIndicator.java
+++ 
b/ext/openfga/client-openfga/src/main/java/org/apache/syncope/ext/openfga/client/OpenFGAHealthIndicator.java
@@ -66,7 +66,7 @@ public class OpenFGAHealthIndicator implements 
HealthIndicator {
             }
         });
 
-        builder.status(anyDown.getValue() ? Status.DOWN : Status.UP);
+        builder.status(anyDown.get() ? Status.DOWN : Status.UP);
 
         return builder.build();
     }
diff --git 
a/ext/saml2sp4ui/common-lib/src/main/java/org/apache/syncope/common/lib/saml2/SAML2Response.java
 
b/ext/saml2sp4ui/common-lib/src/main/java/org/apache/syncope/common/lib/saml2/SAML2Response.java
index cd516ebafc..e99c103aee 100644
--- 
a/ext/saml2sp4ui/common-lib/src/main/java/org/apache/syncope/common/lib/saml2/SAML2Response.java
+++ 
b/ext/saml2sp4ui/common-lib/src/main/java/org/apache/syncope/common/lib/saml2/SAML2Response.java
@@ -18,7 +18,7 @@
  */
 package org.apache.syncope.common.lib.saml2;
 
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 
 public class SAML2Response extends SAML2Message {
 
@@ -37,7 +37,7 @@ public class SAML2Response extends SAML2Message {
     }
 
     public void setSpEntityID(final String spEntityID) {
-        this.spEntityID = StringUtils.appendIfMissing(spEntityID, "/");
+        this.spEntityID = Strings.CS.appendIfMissing(spEntityID, "/");
     }
 
     public String getUrlContext() {
diff --git 
a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2ClientCache.java
 
b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2ClientCache.java
index 13dab30390..dc3289da0b 100644
--- 
a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2ClientCache.java
+++ 
b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2ClientCache.java
@@ -28,6 +28,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.cxf.helpers.IOUtils;
 import org.apache.syncope.common.lib.to.Item;
 import org.apache.syncope.common.lib.to.SAML2SP4UIIdPTO;
@@ -63,7 +64,7 @@ public class SAML2ClientCache {
 
     public static Optional<String> getSPMetadataPath(final String spEntityID) {
         String entityIDPath = StringUtils.replaceChars(
-                StringUtils.removeStart(StringUtils.removeStart(spEntityID, 
"https://";), "http://";), ":/", "__");
+                Strings.CS.removeStart(Strings.CS.removeStart(spEntityID, 
"https://";), "http://";), ":/", "__");
         return Optional.ofNullable(METADATA_PATH).map(path -> 
path.resolve(entityIDPath).toAbsolutePath().toString());
     }
 
diff --git 
a/ext/saml2sp4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2SP4UIServiceImpl.java
 
b/ext/saml2sp4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2SP4UIServiceImpl.java
index 69f39b0b00..3f0bad3818 100644
--- 
a/ext/saml2sp4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2SP4UIServiceImpl.java
+++ 
b/ext/saml2sp4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2SP4UIServiceImpl.java
@@ -23,7 +23,7 @@ import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.Response;
 import jakarta.ws.rs.core.StreamingOutput;
 import java.util.Optional;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.common.lib.saml2.SAML2LoginResponse;
 import org.apache.syncope.common.lib.saml2.SAML2Request;
 import org.apache.syncope.common.lib.saml2.SAML2Response;
@@ -40,7 +40,7 @@ public class SAML2SP4UIServiceImpl extends AbstractService 
implements SAML2SP4UI
 
     @Override
     public Response getMetadata(final String spEntityID, final String 
urlContext) {
-        StreamingOutput sout = (os) -> 
logic.getMetadata(StringUtils.appendIfMissing(spEntityID, "/"), urlContext, os);
+        StreamingOutput sout = (os) -> 
logic.getMetadata(Strings.CS.appendIfMissing(spEntityID, "/"), urlContext, os);
 
         return Response.ok(sout).
                 type(MediaType.APPLICATION_XML).
@@ -52,7 +52,7 @@ public class SAML2SP4UIServiceImpl extends AbstractService 
implements SAML2SP4UI
             final String spEntityID, final String urlContext, final String 
idpEntityID, final boolean reauth) {
 
         return logic.createLoginRequest(
-                StringUtils.appendIfMissing(spEntityID, "/"),
+                Strings.CS.appendIfMissing(spEntityID, "/"),
                 urlContext,
                 idpEntityID,
                 reauth);
@@ -67,7 +67,7 @@ public class SAML2SP4UIServiceImpl extends AbstractService 
implements SAML2SP4UI
     public SAML2Request createLogoutRequest(final String spEntityID, final 
String urlContext) {
         return logic.createLogoutRequest(
                 getAccessToken(),
-                StringUtils.appendIfMissing(spEntityID, "/"),
+                Strings.CS.appendIfMissing(spEntityID, "/"),
                 urlContext);
     }
 
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/AbstractITCase.java 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/AbstractITCase.java
index b1412cf586..266af6a557 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/AbstractITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/AbstractITCase.java
@@ -922,13 +922,13 @@ public abstract class AbstractITCase {
         await().atMost(maxWaitSeconds, TimeUnit.SECONDS).pollInterval(1, 
TimeUnit.SECONDS).until(() -> {
             try {
                 object.setValue(jdbcTemplate.queryForObject(sql, requiredType, 
args));
-                return object.getValue() != null;
+                return object.get() != null;
             } catch (Exception e) {
                 return false;
             }
         });
 
-        return object.getValue();
+        return object.get();
     }
 
     protected static <T> List<T> queryForList(
@@ -942,13 +942,13 @@ public abstract class AbstractITCase {
         await().atMost(maxWaitSeconds, TimeUnit.SECONDS).pollInterval(1, 
TimeUnit.SECONDS).until(() -> {
             try {
                 object.setValue(jdbcTemplate.queryForList(sql, requiredType, 
args));
-                return object.getValue() != null;
+                return object.get() != null;
             } catch (Exception e) {
                 return false;
             }
         });
 
-        return object.getValue();
+        return object.get();
     }
 
     protected static OIDCRPClientAppTO buildOIDCRP() {
@@ -1135,7 +1135,7 @@ public abstract class AbstractITCase {
         await().atMost(maxWaitSeconds, TimeUnit.SECONDS).pollInterval(1, 
TimeUnit.SECONDS).until(() -> {
             try {
                 read.setValue(pop3(sender, subject, mailAddress));
-                return read.getValue();
+                return read.get();
             } catch (Exception e) {
                 return false;
             }
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AbstractTaskITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AbstractTaskITCase.java
index 18d28bc857..bd6b83e179 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AbstractTaskITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AbstractTaskITCase.java
@@ -83,7 +83,7 @@ public abstract class AbstractTaskITCase extends 
AbstractITCase {
             final boolean dryRun) {
 
         Mutable<TaskTO> taskTO = new MutableObject<>(taskService.read(type, 
taskKey, true));
-        int preSyncSize = taskTO.getValue().getExecutions().size();
+        int preSyncSize = taskTO.get().getExecutions().size();
         ExecTO execution = taskService.execute(new 
ExecSpecs.Builder().key(taskKey).dryRun(dryRun).build());
         Optional.ofNullable(initialStatus).ifPresent(status -> 
assertEquals(status, execution.getStatus()));
         assertNotNull(execution.getExecutor());
@@ -91,13 +91,13 @@ public abstract class AbstractTaskITCase extends 
AbstractITCase {
         await().atMost(maxWaitSeconds, TimeUnit.SECONDS).pollInterval(1, 
TimeUnit.SECONDS).until(() -> {
             try {
                 taskTO.setValue(taskService.read(type, taskKey, true));
-                return preSyncSize < taskTO.getValue().getExecutions().size();
+                return preSyncSize < taskTO.get().getExecutions().size();
             } catch (Exception e) {
                 return false;
             }
         });
 
-        return 
taskTO.getValue().getExecutions().stream().max(Comparator.comparing(ExecTO::getStart)).orElseThrow();
+        return 
taskTO.get().getExecutions().stream().max(Comparator.comparing(ExecTO::getStart)).orElseThrow();
     }
 
     public static ExecTO execSchedTask(
@@ -166,9 +166,9 @@ public abstract class AbstractTaskITCase extends 
AbstractITCase {
             } catch (Exception e) {
                 // ignore
             }
-            return notificationTask.getValue() != null;
+            return notificationTask.get() != null;
         });
 
-        return notificationTask.getValue();
+        return notificationTask.get();
     }
 }
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/BatchITCase.java 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/BatchITCase.java
index b7527c48c1..c8e492f75b 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/BatchITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/BatchITCase.java
@@ -234,12 +234,12 @@ public class BatchITCase extends AbstractITCase {
         await().atMost(MAX_WAIT_SECONDS, TimeUnit.SECONDS).pollInterval(1, 
TimeUnit.SECONDS).until(() -> {
             try {
                 holder.setValue(client.get());
-                return holder.getValue().getStatus() != 
Response.Status.ACCEPTED.getStatusCode();
+                return holder.get().getStatus() != 
Response.Status.ACCEPTED.getStatusCode();
             } catch (Exception e) {
                 return false;
             }
         });
-        response = holder.getValue();
+        response = holder.get();
         assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
         assertTrue(response.getMediaType().toString().
                 
startsWith(RESTHeaders.multipartMixedWith(boundary.substring(2))));
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/GroupITCase.java 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/GroupITCase.java
index 1f3de64977..585c5d61c9 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/GroupITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/GroupITCase.java
@@ -955,12 +955,12 @@ public class GroupITCase extends AbstractITCase {
             await().atMost(MAX_WAIT_SECONDS, TimeUnit.SECONDS).pollInterval(1, 
TimeUnit.SECONDS).until(() -> {
                 try {
                     execs.setValue(TASK_SERVICE.read(TaskType.SCHEDULED, 
exec.getRefKey(), true).getExecutions());
-                    return !execs.getValue().isEmpty();
+                    return !execs.get().isEmpty();
                 } catch (Exception e) {
                     return false;
                 }
             });
-            assertEquals(TaskJob.Status.SUCCESS.name(), 
execs.getValue().getFirst().getStatus());
+            assertEquals(TaskJob.Status.SUCCESS.name(), 
execs.get().getFirst().getStatus());
 
             // 6. verify that the user above is now fond on LDAP
             ConnObject userOnLdap =
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/KeymasterITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/KeymasterITCase.java
index b51459e2c3..d2f523e33d 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/KeymasterITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/KeymasterITCase.java
@@ -159,12 +159,12 @@ public class KeymasterITCase extends AbstractITCase {
         await().atMost(maxWaitSeconds, TimeUnit.SECONDS).pollInterval(1, 
TimeUnit.SECONDS).until(() -> {
             try {
                 holder.setValue(serviceOps.list(type));
-                return !check.apply(holder.getValue());
+                return !check.apply(holder.get());
             } catch (Exception e) {
                 return false;
             }
         });
-        return holder.getValue();
+        return holder.get();
     }
 
     @Test
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/LiveSyncITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/LiveSyncITCase.java
index 7c4b766dfa..cb7e1f752f 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/LiveSyncITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/LiveSyncITCase.java
@@ -161,7 +161,7 @@ public class LiveSyncITCase extends AbstractITCase {
                 }
             });
         }
-        return found.getValue();
+        return found.get();
     }
 
     @Test
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java
index d42afeb4eb..abca7b0960 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java
@@ -52,6 +52,7 @@ import java.util.concurrent.TimeUnit;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.SerializationUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.commons.lang3.mutable.MutableObject;
 import org.apache.commons.lang3.tuple.Triple;
@@ -500,7 +501,7 @@ public class PullTaskITCase extends AbstractTaskITCase {
                 return false;
             }
         });
-        assertEquals(1, numMembers.getValue());
+        assertEquals(1, numMembers.get());
 
         // SYNCOPE-1343, verify that the title attribute has been reset
         matchingUsers = USER_SERVICE.search(
@@ -1544,7 +1545,7 @@ public class PullTaskITCase extends AbstractTaskITCase {
                     REMEDIATION_SERVICE.list(new 
RemediationQuery.Builder().page(1).size(10).build());
             assertTrue(remediations.getResult().stream().filter(r -> 
r.getAnyURPayload() != null).anyMatch(
                     r -> 
pullFromLDAP4issue1656Key.equals(r.getAnyURPayload().getKey())));
-            assertTrue(remediations.getResult().stream().anyMatch(r -> 
StringUtils.contains(r.getError(),
+            assertTrue(remediations.getResult().stream().anyMatch(r -> 
Strings.CS.contains(r.getError(),
                     "\"pullFromLDAP_issue1656@\" is not a valid email 
address")));
         } finally {
             // remove test entities
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ReportITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ReportITCase.java
index 3c841e798d..999e3285d2 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ReportITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ReportITCase.java
@@ -55,20 +55,20 @@ public class ReportITCase extends AbstractITCase {
 
     protected static String execReport(final String reportKey) {
         Mutable<ReportTO> reportTO = new 
MutableObject<>(REPORT_SERVICE.read(reportKey));
-        int preExecSize = reportTO.getValue().getExecutions().size();
+        int preExecSize = reportTO.get().getExecutions().size();
         ExecTO execution = REPORT_SERVICE.execute(new 
ExecSpecs.Builder().key(reportKey).build());
         assertNotNull(execution.getExecutor());
 
         await().atMost(MAX_WAIT_SECONDS, TimeUnit.SECONDS).pollInterval(1, 
TimeUnit.SECONDS).until(() -> {
             try {
                 reportTO.setValue(REPORT_SERVICE.read(reportKey));
-                return preExecSize < 
reportTO.getValue().getExecutions().size();
+                return preExecSize < reportTO.get().getExecutions().size();
             } catch (Exception e) {
                 return false;
             }
         });
 
-        ExecTO exec = reportTO.getValue().getExecutions().stream().
+        ExecTO exec = reportTO.get().getExecutions().stream().
                 max(Comparator.comparing(ExecTO::getStart)).orElseThrow();
         assertEquals(ReportJob.Status.SUCCESS.name(), exec.getStatus());
         return exec.getKey();
diff --git 
a/fit/wa-reference/src/test/java/org/apache/syncope/fit/ui/SAML2SP4UIITCase.java
 
b/fit/wa-reference/src/test/java/org/apache/syncope/fit/ui/SAML2SP4UIITCase.java
index 07f7b01358..7462cf9485 100644
--- 
a/fit/wa-reference/src/test/java/org/apache/syncope/fit/ui/SAML2SP4UIITCase.java
+++ 
b/fit/wa-reference/src/test/java/org/apache/syncope/fit/ui/SAML2SP4UIITCase.java
@@ -30,6 +30,7 @@ import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.commons.lang3.tuple.Triple;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.http.Consts;
@@ -288,7 +289,7 @@ public class SAML2SP4UIITCase extends AbstractUIITCase {
         }
 
         // 3. verify that user is now authenticated
-        get = new HttpGet(baseURL + StringUtils.removeStart(location, "../"));
+        get = new HttpGet(baseURL + Strings.CS.removeStart(location, "../"));
         try (CloseableHttpResponse response = httpclient.execute(get, 
context)) {
             assertEquals(HttpStatus.SC_OK, 
response.getStatusLine().getStatusCode());
             
assertTrue(EntityUtils.toString(response.getEntity()).contains(username));
diff --git a/pom.xml b/pom.xml
index ddb9a9fa26..20451f90b1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -437,7 +437,7 @@ under the License.
 
     <debezium.version>3.0</debezium.version>
 
-    <commons-lang3.version>3.17.0</commons-lang3.version>
+    <commons-lang3.version>3.18.0</commons-lang3.version>
     <commons-jexl.version>3.5.0</commons-jexl.version>
     <commons-text.version>1.13.1</commons-text.version>
 
diff --git a/sra/src/main/java/org/apache/syncope/sra/RouteProvider.java 
b/sra/src/main/java/org/apache/syncope/sra/RouteProvider.java
index 1a48dc1fd4..553ffaf94d 100644
--- a/sra/src/main/java/org/apache/syncope/sra/RouteProvider.java
+++ b/sra/src/main/java/org/apache/syncope/sra/RouteProvider.java
@@ -282,7 +282,7 @@ public class RouteProvider {
                     retries.setValue(0);
                 }
                 filter = ctx.getBean(RetryGatewayFilterFactory.class).
-                        apply(c -> c.setRetries(retries.getValue()));
+                        apply(c -> c.setRetries(retries.get()));
                 break;
 
             case SAVE_SESSION:
@@ -328,7 +328,7 @@ public class RouteProvider {
                     parts.setValue(0);
                 }
                 filter = ctx.getBean(StripPrefixGatewayFilterFactory.class).
-                        apply(c -> c.setParts(parts.getValue()));
+                        apply(c -> c.setParts(parts.get()));
                 break;
 
             case REQUEST_HEADER_TO_REQUEST_URI:
@@ -486,7 +486,7 @@ public class RouteProvider {
                 }
                 predicate = ctx.getBean(WeightRoutePredicateFactory.class).
                         applyAsync(c -> c.setGroup(weigthArgs[0].trim()).
-                        setWeight(weight.getValue()));
+                        setWeight(weight.get()));
                 break;
 
             case CUSTOM:
diff --git 
a/sra/src/main/java/org/apache/syncope/sra/filters/LinkRewriteGatewayFilterFactory.java
 
b/sra/src/main/java/org/apache/syncope/sra/filters/LinkRewriteGatewayFilterFactory.java
index 8120b0b784..4222115135 100644
--- 
a/sra/src/main/java/org/apache/syncope/sra/filters/LinkRewriteGatewayFilterFactory.java
+++ 
b/sra/src/main/java/org/apache/syncope/sra/filters/LinkRewriteGatewayFilterFactory.java
@@ -23,7 +23,7 @@ import java.io.InputStream;
 import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import org.apache.commons.lang3.BooleanUtils;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import org.springframework.http.server.reactive.ServerHttpResponseDecorator;
@@ -34,7 +34,7 @@ public class LinkRewriteGatewayFilterFactory extends 
ModifyResponseGatewayFilter
     @Override
     protected boolean skipCond(final ServerHttpResponseDecorator decorator) {
         return decorator.getHeaders().getContentType() == null
-                || 
!StringUtils.containsIgnoreCase(decorator.getHeaders().getContentType().toString(),
 "html");
+                || 
!Strings.CI.contains(decorator.getHeaders().getContentType().toString(), 
"html");
     }
 
     private Charset getCharset(final ServerHttpResponseDecorator decorator) {
@@ -63,9 +63,9 @@ public class LinkRewriteGatewayFilterFactory extends 
ModifyResponseGatewayFilter
 
         String[] keyValue = config.getData().split(",");
 
-        String oldBase = StringUtils.appendIfMissing(keyValue[0], "/");
-        String newBase = StringUtils.appendIfMissing(keyValue[1], "/");
-        String newBaseAsPrefix = StringUtils.removeEnd(keyValue[1], "/");
+        String oldBase = Strings.CS.appendIfMissing(keyValue[0], "/");
+        String newBase = Strings.CS.appendIfMissing(keyValue[1], "/");
+        String newBaseAsPrefix = Strings.CS.removeEnd(keyValue[1], "/");
 
         boolean rewriterRootAttrs = true;
         if (keyValue.length == 3) {
diff --git 
a/sra/src/main/java/org/apache/syncope/sra/security/cas/CASAuthenticationRequestWebFilter.java
 
b/sra/src/main/java/org/apache/syncope/sra/security/cas/CASAuthenticationRequestWebFilter.java
index f7b8256e05..998d1c3337 100644
--- 
a/sra/src/main/java/org/apache/syncope/sra/security/cas/CASAuthenticationRequestWebFilter.java
+++ 
b/sra/src/main/java/org/apache/syncope/sra/security/cas/CASAuthenticationRequestWebFilter.java
@@ -19,7 +19,7 @@
 package org.apache.syncope.sra.security.cas;
 
 import java.net.URI;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.sra.security.PublicRouteMatcher;
 import 
org.apache.syncope.sra.security.web.server.DoNothingIfCommittedServerRedirectStrategy;
 import org.apache.syncope.sra.session.SessionUtils;
@@ -60,7 +60,7 @@ public class CASAuthenticationRequestWebFilter implements 
WebFilter {
                 CASUtils.ticketAvailable(protocol),
                 SessionUtils.authInSession());
         this.protocol = protocol;
-        casServerLoginUrl = StringUtils.appendIfMissing(casServerUrlPrefix, 
"/") + "login";
+        casServerLoginUrl = Strings.CS.appendIfMissing(casServerUrlPrefix, 
"/") + "login";
     }
 
     public void setAuthenticationRedirectStrategy(final ServerRedirectStrategy 
authenticationRedirectStrategy) {
diff --git 
a/sra/src/main/java/org/apache/syncope/sra/security/cas/CASServerLogoutHandler.java
 
b/sra/src/main/java/org/apache/syncope/sra/security/cas/CASServerLogoutHandler.java
index 3c62df027e..4f4718454c 100644
--- 
a/sra/src/main/java/org/apache/syncope/sra/security/cas/CASServerLogoutHandler.java
+++ 
b/sra/src/main/java/org/apache/syncope/sra/security/cas/CASServerLogoutHandler.java
@@ -19,7 +19,7 @@
 package org.apache.syncope.sra.security.cas;
 
 import java.net.URI;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.sra.SessionConfig;
 import 
org.apache.syncope.sra.security.web.server.DoNothingIfCommittedServerRedirectStrategy;
 import org.springframework.cache.CacheManager;
@@ -42,7 +42,7 @@ public class CASServerLogoutHandler implements 
ServerLogoutHandler {
 
     public CASServerLogoutHandler(final CacheManager cacheManager, final 
String casServerUrlPrefix) {
         this.cacheManager = cacheManager;
-        this.casServerLogoutUrl = 
StringUtils.appendIfMissing(casServerUrlPrefix, "/") + "logout";
+        this.casServerLogoutUrl = 
Strings.CS.appendIfMissing(casServerUrlPrefix, "/") + "logout";
     }
 
     @Override
diff --git 
a/sra/src/test/java/org/apache/syncope/sra/ZookeeperTestingServer.java 
b/sra/src/test/java/org/apache/syncope/sra/ZookeeperTestingServer.java
index 0549ebc3ce..958453d3cc 100644
--- a/sra/src/test/java/org/apache/syncope/sra/ZookeeperTestingServer.java
+++ b/sra/src/test/java/org/apache/syncope/sra/ZookeeperTestingServer.java
@@ -27,14 +27,14 @@ import java.util.Properties;
 import javax.security.auth.login.AppConfigurationEntry;
 import javax.security.auth.login.Configuration;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.commons.lang3.mutable.MutableObject;
 import org.apache.curator.test.InstanceSpec;
 import org.apache.curator.test.TestingServer;
 import org.apache.zookeeper.server.auth.DigestLoginModule;
 import org.apache.zookeeper.server.auth.SASLAuthenticationProvider;
 import org.springframework.context.ApplicationContextInitializer;
 import org.springframework.context.ConfigurableApplicationContext;
-import wiremock.org.apache.commons.lang3.mutable.Mutable;
-import wiremock.org.apache.commons.lang3.mutable.MutableObject;
 
 public class ZookeeperTestingServer implements 
ApplicationContextInitializer<ConfigurableApplicationContext> {
 
@@ -54,14 +54,14 @@ public class ZookeeperTestingServer implements 
ApplicationContextInitializer<Con
             throw new IllegalStateException("Could not load /test.properties", 
e);
         }
 
-        if (AbstractTest.available(port.getValue())) {
+        if (AbstractTest.available(port.get())) {
             Configuration.setConfiguration(new Configuration() {
 
                 private final AppConfigurationEntry[] entries = {
                     new AppConfigurationEntry(
                     DigestLoginModule.class.getName(),
                     AppConfigurationEntry.LoginModuleControlFlag.REQUIRED,
-                    Map.of("user_" + username.getValue(), password.getValue()))
+                    Map.of("user_" + username.get(), password.get()))
                 };
 
                 @Override
@@ -72,7 +72,7 @@ public class ZookeeperTestingServer implements 
ApplicationContextInitializer<Con
 
             Map<String, Object> customProperties = new HashMap<>();
             customProperties.put("authProvider.1", 
SASLAuthenticationProvider.class.getName());
-            InstanceSpec spec = new InstanceSpec(null, port.getValue(), -1, 
-1, true, 1, -1, -1, customProperties);
+            InstanceSpec spec = new InstanceSpec(null, port.get(), -1, -1, 
true, 1, -1, -1, customProperties);
 
             try {
                 new TestingServer(spec, true);
diff --git 
a/wa/starter/src/main/java/org/apache/syncope/wa/starter/audit/WAAuditTrailManager.java
 
b/wa/starter/src/main/java/org/apache/syncope/wa/starter/audit/WAAuditTrailManager.java
index b6196c28dc..dc92465ea5 100644
--- 
a/wa/starter/src/main/java/org/apache/syncope/wa/starter/audit/WAAuditTrailManager.java
+++ 
b/wa/starter/src/main/java/org/apache/syncope/wa/starter/audit/WAAuditTrailManager.java
@@ -21,7 +21,7 @@ package org.apache.syncope.wa.starter.audit;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import java.time.OffsetDateTime;
 import java.util.Map;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.syncope.common.lib.to.AuditEventTO;
 import org.apache.syncope.common.lib.types.OpEvent;
 import org.apache.syncope.common.rest.api.service.AuditService;
@@ -56,7 +56,7 @@ public class WAAuditTrailManager extends 
AbstractAuditTrailManager {
             auditEvent.setWho(audit.getPrincipal());
             
auditEvent.setWhen(audit.getWhenActionWasPerformed().atOffset(OffsetDateTime.now().getOffset()));
             auditEvent.setOutput(output);
-            OpEvent.Outcome result = 
StringUtils.containsIgnoreCase(audit.getActionPerformed(), "fail")
+            OpEvent.Outcome result = 
Strings.CI.contains(audit.getActionPerformed(), "fail")
                     ? OpEvent.Outcome.FAILURE
                     : OpEvent.Outcome.SUCCESS;
 
diff --git 
a/wa/starter/src/test/java/org/apache/syncope/wa/starter/ZookeeperTestingServer.java
 
b/wa/starter/src/test/java/org/apache/syncope/wa/starter/ZookeeperTestingServer.java
index 03e5aae202..b6e5c996fc 100644
--- 
a/wa/starter/src/test/java/org/apache/syncope/wa/starter/ZookeeperTestingServer.java
+++ 
b/wa/starter/src/test/java/org/apache/syncope/wa/starter/ZookeeperTestingServer.java
@@ -60,7 +60,7 @@ public class ZookeeperTestingServer implements 
ApplicationContextInitializer<Con
                 new AppConfigurationEntry(
                 DigestLoginModule.class.getName(),
                 AppConfigurationEntry.LoginModuleControlFlag.REQUIRED,
-                Map.of("user_" + username.getValue(), password.getValue()))
+                Map.of("user_" + username.get(), password.get()))
             };
 
             @Override
@@ -71,7 +71,7 @@ public class ZookeeperTestingServer implements 
ApplicationContextInitializer<Con
 
         Map<String, Object> customProperties = new HashMap<>();
         customProperties.put("authProvider.1", 
SASLAuthenticationProvider.class.getName());
-        InstanceSpec spec = new InstanceSpec(null, port.getValue(), -1, -1, 
true, 1, -1, -1, customProperties);
+        InstanceSpec spec = new InstanceSpec(null, port.get(), -1, -1, true, 
1, -1, -1, customProperties);
 
         try {
             new TestingServer(spec, true);

Reply via email to