You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2025/10/30 07:35:19 UTC

(syncope) branch 4_0_X updated (bc90737cd9 -> 091050d20a)

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

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


    from bc90737cd9 [SYNCOPE-1922] raise error while searching by encrypted plain schema, removed suggestion of such schemas on search in console (#1219)
     new 5cc027999c Bump org.apache.maven.plugins:maven-war-plugin from 3.4.0 to 3.5.0
     new 0580f908e0 Bump org.opensearch.client:opensearch-java from 3.2.0 to 3.3.0
     new 09bf496a2d Bump org.openapitools:openapi-generator-maven-plugin
     new 091050d20a [SYNCOPE-1925] Review setWindowClosedReloadCallback

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../authprofiles/AuthProfileDirectoryPanel.java    |   5 +-
 .../clientapps/ClientAppDirectoryPanel.java        |   7 +-
 .../console/panels/AMSessionDirectoryPanel.java    |   2 +-
 .../panels/SAML2IdPEntityDirectoryPanel.java       |   6 +-
 .../console/panels/SRARouteDirectoryPanel.java     |   7 +-
 ...MergeLinkedAccountsReviewPanel_fr_CA.properties |   2 +-
 .../MergeLinkedAccountsReviewPanel_it.properties   |  10 +-
 .../MergeLinkedAccountsReviewPanel_ja.properties   |   2 +-
 ...MergeLinkedAccountsReviewPanel_pt_BR.properties |   2 +-
 .../MergeLinkedAccountsReviewPanel_ru.properties   |   2 +-
 .../apache/syncope/client/ui/commons/DateOps.java  |   4 +-
 .../notifications/MailTemplateDirectoryPanel.java  |   5 +-
 .../console/panels/CommandDirectoryPanel.java      |   6 +-
 .../client/console/panels/DirectoryPanel.java      |  35 ++++---
 .../console/panels/DomainDirectoryPanel.java       |   9 +-
 .../console/panels/DynRealmDirectoryPanel.java     |   5 +-
 .../client/console/panels/GroupDirectoryPanel.java |   6 +-
 .../panels/ImplementationDirectoryPanel.java       |   4 +
 .../panels/NetworkServiceDirectoryPanel.java       |   5 +-
 .../console/panels/SecurityQuestionsPanel.java     |   5 +-
 .../client/console/panels/UserDirectoryPanel.java  |   7 +-
 .../console/policies/PolicyDirectoryPanel.java     |   5 +-
 .../markup/html/bootstrap/dialog/BaseModal.java    |  11 +-
 .../wicket/markup/html/form/ActionLink.java        |   3 -
 .../markup/html/form/ActionLinksTogglePanel.java   |  12 ++-
 .../wicket/markup/html/form/ActionPanel.java       |  18 +---
 .../syncope/client/console/widgets/JobWidget.java  |   4 +-
 .../org/apache/syncope/core/logic/UserLogic.java   |   3 +-
 .../core/persistence/jpa/inner/AnySearchTest.java  | 113 +++++++++------------
 .../persistence/neo4j/inner/AnySearchTest.java     |  84 +++++++++++----
 .../panels/UserRequestFormDirectoryPanel.java      |   4 +
 .../panels/OIDCProvidersDirectoryPanel.java        |   2 +-
 .../console/panels/SAML2IdPsDirectoryPanel.java    |   7 +-
 .../apache/syncope/fit/console/BatchesITCase.java  |  46 ++++-----
 .../syncope/fit/console/LinkedAccountsITCase.java  |  33 +++---
 .../org/apache/syncope/fit/core/SearchITCase.java  |   2 +-
 pom.xml                                            |   6 +-
 37 files changed, 244 insertions(+), 245 deletions(-)


(syncope) 01/04: Bump org.apache.maven.plugins:maven-war-plugin from 3.4.0 to 3.5.0

Posted by il...@apache.org.
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 5cc027999c00e24cae5ded98fa1450d9f02ddbde
Author: dependabot[bot] <49...@users.noreply.github.com>
AuthorDate: Wed Oct 29 22:51:00 2025 +0000

    Bump org.apache.maven.plugins:maven-war-plugin from 3.4.0 to 3.5.0
    
    Bumps [org.apache.maven.plugins:maven-war-plugin](https://github.com/apache/maven-war-plugin) from 3.4.0 to 3.5.0.
    - [Release notes](https://github.com/apache/maven-war-plugin/releases)
    - [Commits](https://github.com/apache/maven-war-plugin/compare/maven-war-plugin-3.4.0...maven-war-plugin-3.5.0)
    
    ---
    updated-dependencies:
    - dependency-name: org.apache.maven.plugins:maven-war-plugin
      dependency-version: 3.5.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
    ...
    
    Signed-off-by: dependabot[bot] <su...@github.com>
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 6d259c4c4e..e52c40450b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1724,7 +1724,7 @@ under the License.
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-war-plugin</artifactId>
-          <version>3.4.0</version>
+          <version>3.5.0</version>
           <configuration>
             <webResources>
               <resource>


(syncope) 04/04: [SYNCOPE-1925] Review setWindowClosedReloadCallback

Posted by il...@apache.org.
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 091050d20a0b8a0ad04e5bcabdf8219fc677f530
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Thu Oct 30 08:35:11 2025 +0100

    [SYNCOPE-1925] Review setWindowClosedReloadCallback
---
 .../authprofiles/AuthProfileDirectoryPanel.java    |   5 +-
 .../clientapps/ClientAppDirectoryPanel.java        |   7 +-
 .../console/panels/AMSessionDirectoryPanel.java    |   2 +-
 .../panels/SAML2IdPEntityDirectoryPanel.java       |   6 +-
 .../console/panels/SRARouteDirectoryPanel.java     |   7 +-
 ...MergeLinkedAccountsReviewPanel_fr_CA.properties |   2 +-
 .../MergeLinkedAccountsReviewPanel_it.properties   |  10 +-
 .../MergeLinkedAccountsReviewPanel_ja.properties   |   2 +-
 ...MergeLinkedAccountsReviewPanel_pt_BR.properties |   2 +-
 .../MergeLinkedAccountsReviewPanel_ru.properties   |   2 +-
 .../apache/syncope/client/ui/commons/DateOps.java  |   4 +-
 .../notifications/MailTemplateDirectoryPanel.java  |   5 +-
 .../console/panels/CommandDirectoryPanel.java      |   6 +-
 .../client/console/panels/DirectoryPanel.java      |  35 ++++---
 .../console/panels/DomainDirectoryPanel.java       |   9 +-
 .../console/panels/DynRealmDirectoryPanel.java     |   5 +-
 .../client/console/panels/GroupDirectoryPanel.java |   6 +-
 .../panels/ImplementationDirectoryPanel.java       |   4 +
 .../panels/NetworkServiceDirectoryPanel.java       |   5 +-
 .../console/panels/SecurityQuestionsPanel.java     |   5 +-
 .../client/console/panels/UserDirectoryPanel.java  |   7 +-
 .../console/policies/PolicyDirectoryPanel.java     |   5 +-
 .../markup/html/bootstrap/dialog/BaseModal.java    |  11 +-
 .../wicket/markup/html/form/ActionLink.java        |   3 -
 .../markup/html/form/ActionLinksTogglePanel.java   |  12 ++-
 .../wicket/markup/html/form/ActionPanel.java       |  18 +---
 .../syncope/client/console/widgets/JobWidget.java  |   4 +-
 .../org/apache/syncope/core/logic/UserLogic.java   |   3 +-
 .../core/persistence/jpa/inner/AnySearchTest.java  | 113 +++++++++------------
 .../persistence/neo4j/inner/AnySearchTest.java     |  84 +++++++++++----
 .../panels/UserRequestFormDirectoryPanel.java      |   4 +
 .../panels/OIDCProvidersDirectoryPanel.java        |   2 +-
 .../console/panels/SAML2IdPsDirectoryPanel.java    |   7 +-
 .../apache/syncope/fit/console/BatchesITCase.java  |  46 ++++-----
 .../syncope/fit/console/LinkedAccountsITCase.java  |  33 +++---
 .../org/apache/syncope/fit/core/SearchITCase.java  |   2 +-
 36 files changed, 241 insertions(+), 242 deletions(-)

diff --git a/client/am/console/src/main/java/org/apache/syncope/client/console/authprofiles/AuthProfileDirectoryPanel.java b/client/am/console/src/main/java/org/apache/syncope/client/console/authprofiles/AuthProfileDirectoryPanel.java
index fa3dde612d..ed955350ac 100644
--- a/client/am/console/src/main/java/org/apache/syncope/client/console/authprofiles/AuthProfileDirectoryPanel.java
+++ b/client/am/console/src/main/java/org/apache/syncope/client/console/authprofiles/AuthProfileDirectoryPanel.java
@@ -80,10 +80,7 @@ public class AuthProfileDirectoryPanel
             }
         };
         authProfileModal.size(Modal.Size.Large);
-        authProfileModal.setWindowClosedCallback(target -> {
-            updateResultTable(target);
-            authProfileModal.show(false);
-        });
+        setWindowClosedReloadCallback(authProfileModal, true);
         addOuterObject(authProfileModal);
 
         disableCheckBoxes();
diff --git a/client/am/console/src/main/java/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel.java b/client/am/console/src/main/java/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel.java
index 8701492598..d546ea7884 100644
--- a/client/am/console/src/main/java/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel.java
+++ b/client/am/console/src/main/java/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel.java
@@ -97,10 +97,7 @@ public abstract class ClientAppDirectoryPanel<T extends ClientAppTO>
 
         modal.addSubmitButton();
         modal.size(Modal.Size.Large);
-        modal.setWindowClosedCallback(target -> {
-            updateResultTable(target);
-            modal.show(false);
-        });
+        setWindowClosedReloadCallback(modal, true);
         setFooterVisibility(true);
 
         propertiesModal = new BaseModal<>(Constants.OUTER) {
@@ -114,7 +111,7 @@ public abstract class ClientAppDirectoryPanel<T extends ClientAppTO>
             }
         };
         propertiesModal.size(Modal.Size.Large);
-        propertiesModal.setWindowClosedCallback(target -> propertiesModal.show(false));
+        setWindowClosedReloadCallback(propertiesModal);
         addOuterObject(propertiesModal);
 
         disableCheckBoxes();
diff --git a/client/am/console/src/main/java/org/apache/syncope/client/console/panels/AMSessionDirectoryPanel.java b/client/am/console/src/main/java/org/apache/syncope/client/console/panels/AMSessionDirectoryPanel.java
index 9db0f0b713..852f53bf9d 100644
--- a/client/am/console/src/main/java/org/apache/syncope/client/console/panels/AMSessionDirectoryPanel.java
+++ b/client/am/console/src/main/java/org/apache/syncope/client/console/panels/AMSessionDirectoryPanel.java
@@ -92,7 +92,7 @@ public class AMSessionDirectoryPanel
             }
         };
         viewModal.size(Modal.Size.Extra_large);
-        viewModal.setWindowClosedCallback(target -> viewModal.show(false));
+        setWindowClosedReloadCallback(viewModal);
         addOuterObject(viewModal);
 
         initResultTable();
diff --git a/client/am/console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPEntityDirectoryPanel.java b/client/am/console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPEntityDirectoryPanel.java
index 735d7cc99b..279fa58bb0 100644
--- a/client/am/console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPEntityDirectoryPanel.java
+++ b/client/am/console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPEntityDirectoryPanel.java
@@ -111,11 +111,7 @@ public class SAML2IdPEntityDirectoryPanel extends DirectoryPanel<
 
         modal.size(Modal.Size.Large);
         modal.addSubmitButton();
-
-        modal.setWindowClosedCallback(target -> {
-            updateResultTable(target);
-            modal.show(false);
-        });
+        setWindowClosedReloadCallback(modal, true);
 
         addNewItemPanelBuilder(new SAML2IdPEntityWizardBuilder(new SAML2IdPEntityTO(), restClient, pageRef), false);
 
diff --git a/client/am/console/src/main/java/org/apache/syncope/client/console/panels/SRARouteDirectoryPanel.java b/client/am/console/src/main/java/org/apache/syncope/client/console/panels/SRARouteDirectoryPanel.java
index a116ccf53f..280026d2e8 100644
--- a/client/am/console/src/main/java/org/apache/syncope/client/console/panels/SRARouteDirectoryPanel.java
+++ b/client/am/console/src/main/java/org/apache/syncope/client/console/panels/SRARouteDirectoryPanel.java
@@ -61,13 +61,10 @@ public class SRARouteDirectoryPanel
 
         modal.size(Modal.Size.Large);
         modal.addSubmitButton();
-
-        modal.setWindowClosedCallback(target -> {
-            updateResultTable(target);
-            modal.show(false);
-        });
+        setWindowClosedReloadCallback(modal, true);
 
         addNewItemPanelBuilder(new SRARouteWizardBuilder(new SRARouteTO(), restClient, pageRef), true);
+
         initResultTable();
     }
 
diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_fr_CA.properties b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_fr_CA.properties
index c2d89faeaf..3fd6639997 100644
--- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_fr_CA.properties
+++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_fr_CA.properties
@@ -15,7 +15,7 @@
 # specific language governing permissions and limitations
 # under the License.
 mergeLinkedAccounts.reviewAccounts.title=Preview finalized linked accounts
-connObjectKeyValue=Connector
+connObjectKeyValue=Connector Key
 resource=Resource
 key=Key
 username=Username
diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_it.properties b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_it.properties
index c2d89faeaf..bd2fcc6be8 100644
--- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_it.properties
+++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_it.properties
@@ -14,9 +14,9 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-mergeLinkedAccounts.reviewAccounts.title=Preview finalized linked accounts
-connObjectKeyValue=Connector
-resource=Resource
-key=Key
+mergeLinkedAccounts.reviewAccounts.title=Anteprima linked account
+connObjectKeyValue=Chiave esterna
+resource=Risorsa
+key=Chiave interna
 username=Username
-suspended=Suspended
+suspended=Sospeso
diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_ja.properties b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_ja.properties
index c2d89faeaf..3fd6639997 100644
--- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_ja.properties
+++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_ja.properties
@@ -15,7 +15,7 @@
 # specific language governing permissions and limitations
 # under the License.
 mergeLinkedAccounts.reviewAccounts.title=Preview finalized linked accounts
-connObjectKeyValue=Connector
+connObjectKeyValue=Connector Key
 resource=Resource
 key=Key
 username=Username
diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_pt_BR.properties b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_pt_BR.properties
index c2d89faeaf..3fd6639997 100644
--- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_pt_BR.properties
+++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_pt_BR.properties
@@ -15,7 +15,7 @@
 # specific language governing permissions and limitations
 # under the License.
 mergeLinkedAccounts.reviewAccounts.title=Preview finalized linked accounts
-connObjectKeyValue=Connector
+connObjectKeyValue=Connector Key
 resource=Resource
 key=Key
 username=Username
diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_ru.properties b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_ru.properties
index c2d89faeaf..3fd6639997 100644
--- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_ru.properties
+++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsReviewPanel_ru.properties
@@ -15,7 +15,7 @@
 # specific language governing permissions and limitations
 # under the License.
 mergeLinkedAccounts.reviewAccounts.title=Preview finalized linked accounts
-connObjectKeyValue=Connector
+connObjectKeyValue=Connector Key
 resource=Resource
 key=Key
 username=Username
diff --git a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/DateOps.java b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/DateOps.java
index 4e0d591cb2..1f23abe89e 100644
--- a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/DateOps.java
+++ b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/DateOps.java
@@ -47,11 +47,11 @@ public final class DateOps {
         }
 
         public String format(final OffsetDateTime date) {
-            return Optional.ofNullable(date).map(v -> fdf.format(convert(date))).orElse(StringUtils.EMPTY);
+            return Optional.ofNullable(date).map(v -> fdf.format(convert(v))).orElse(StringUtils.EMPTY);
         }
 
         public String format(final ZonedDateTime date) {
-            return Optional.ofNullable(date).map(v -> fdf.format(convert(date))).orElse(StringUtils.EMPTY);
+            return Optional.ofNullable(date).map(v -> fdf.format(convert(v))).orElse(StringUtils.EMPTY);
         }
 
         public String format(final LocalDateTime date) {
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateDirectoryPanel.java
index 51d897be10..b6398da899 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateDirectoryPanel.java
@@ -73,10 +73,7 @@ public class MailTemplateDirectoryPanel
 
         modal.size(Modal.Size.Small);
         modal.addSubmitButton();
-        modal.setWindowClosedCallback(target -> {
-            updateResultTable(target);
-            modal.show(false);
-        });
+        setWindowClosedReloadCallback(modal, true);
         setFooterVisibility(true);
 
         addOuterObject(utilityModal);
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 e21795f5ba..c6683bba7f 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
@@ -66,11 +66,7 @@ public class CommandDirectoryPanel
         disableCheckBoxes();
 
         modal.size(Modal.Size.Large);
-
-        modal.setWindowClosedCallback(target -> {
-            updateResultTable(target);
-            modal.show(false);
-        });
+        setWindowClosedReloadCallback(modal, true);
 
         addNewItemPanelBuilder(new CommandWizardBuilder(new CommandTO(), restClient, pageRef), false);
 
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java
index 1ed239555c..f5fa77fbf0 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java
@@ -35,7 +35,6 @@ import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
 import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
-import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
 import org.apache.syncope.client.ui.commons.rest.RestClient;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.wicket.PageReference;
@@ -178,16 +177,13 @@ public abstract class DirectoryPanel<
 
         rows = PreferenceManager.getPaginatorRows(paginatorRowsKey());
 
-        modal.setWindowClosedCallback(target -> {
-            if (actionTogglePanel.isVisibleInHierarchy() && modal.getContent() instanceof WizardModalPanel) {
-                actionTogglePanel.updateHeader(target, WizardModalPanel.class.cast(modal.getContent()).getItem());
-            }
-            modal.show(false);
-        });
+        setWindowClosedReloadCallback(modal);
 
-        setWindowClosedReloadCallback(altDefaultModal);
         altDefaultModal.size(Modal.Size.Default);
+        setWindowClosedReloadCallback(altDefaultModal);
 
+        displayAttributeModal.size(Modal.Size.Default);
+        displayAttributeModal.addSubmitButton();
         displayAttributeModal.setWindowClosedCallback(target -> {
             EventDataWrapper data = new EventDataWrapper();
             data.setTarget(target);
@@ -195,11 +191,27 @@ public abstract class DirectoryPanel<
 
             send(DirectoryPanel.this, Broadcast.EXACT, data);
 
-            displayAttributeModal.size(Modal.Size.Default);
             modal.show(false);
         });
-        displayAttributeModal.size(Modal.Size.Default);
-        displayAttributeModal.addSubmitButton();
+    }
+
+    @Override
+    protected void setWindowClosedReloadCallback(final BaseModal<?> baseModal) {
+        setWindowClosedReloadCallback(baseModal, false);
+    }
+
+    protected void setWindowClosedReloadCallback(final BaseModal<?> baseModal, final boolean updateResultTable) {
+        baseModal.setWindowClosedCallback(target -> {
+            if (actionTogglePanel.isVisibleInHierarchy()) {
+                actionTogglePanel.toggle(target, false);
+            }
+
+            if (updateResultTable) {
+                updateResultTable(target);
+            }
+
+            baseModal.show(false);
+        });
     }
 
     protected abstract DP dataProvider();
@@ -344,7 +356,6 @@ public abstract class DirectoryPanel<
     @Override
     public void onEvent(final IEvent<?> event) {
         if (event.getPayload() instanceof final EventDataWrapper data) {
-
             if (data.getRows() < 1) {
                 updateResultTable(data.isCreate());
             } else {
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DomainDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DomainDirectoryPanel.java
index 6565ca4b1a..24fc357842 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DomainDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DomainDirectoryPanel.java
@@ -70,15 +70,16 @@ public class DomainDirectoryPanel extends DirectoryPanel<Domain, Domain, DomainP
         modal.size(Modal.Size.Large);
 
         modal.setWindowClosedCallback(target -> {
+            if (actionTogglePanel.isVisibleInHierarchy()) {
+                actionTogglePanel.toggle(target, false);
+            }
+
             updateResultTable(target);
             modal.show(false);
         });
 
         addOuterObject(utilityModal);
-        utilityModal.setWindowClosedCallback(target -> {
-            updateResultTable(target);
-            modal.show(false);
-        });
+        setWindowClosedReloadCallback(utilityModal, true);
         utilityModal.size(Modal.Size.Small);
         utilityModal.addSubmitButton();
 
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmDirectoryPanel.java
index d720bc331c..3968b02bf0 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmDirectoryPanel.java
@@ -65,10 +65,7 @@ public class DynRealmDirectoryPanel extends
 
         modal.size(Modal.Size.Large);
         modal.addSubmitButton();
-        modal.setWindowClosedCallback(target -> {
-            updateResultTable(target);
-            modal.show(false);
-        });
+        setWindowClosedReloadCallback(modal, true);
         setFooterVisibility(true);
 
         AjaxLink<Void> newDynRealmlLink = new AjaxLink<>("add") {
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java
index f081fec8e8..79afc603d7 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java
@@ -111,12 +111,12 @@ public class GroupDirectoryPanel extends AnyDirectoryPanel<GroupTO, GroupRestCli
         super(id, builder, wizardInModal);
 
         typeExtensionsModal.size(Modal.Size.Large);
-        addOuterObject(typeExtensionsModal);
-        setWindowClosedReloadCallback(typeExtensionsModal);
         typeExtensionsModal.addSubmitButton();
+        setWindowClosedReloadCallback(typeExtensionsModal);
+        addOuterObject(typeExtensionsModal);
 
-        addOuterObject(membersModal);
         membersModal.size(Modal.Size.Large);
+        addOuterObject(membersModal);
 
         membersTogglePanel = new MembersTogglePanel(page.getPageReference()) {
 
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationDirectoryPanel.java
index e73ae45928..7fac40727c 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationDirectoryPanel.java
@@ -74,6 +74,10 @@ public class ImplementationDirectoryPanel extends DirectoryPanel<
         modal.size(Modal.Size.Large);
         modal.addSubmitButton();
         modal.setWindowClosedCallback(target -> {
+            if (actionTogglePanel.isVisibleInHierarchy()) {
+                actionTogglePanel.toggle(target, false);
+            }
+
             implementation.setEngine(null);
             updateResultTable(target);
             modal.show(false);
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/NetworkServiceDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/NetworkServiceDirectoryPanel.java
index e16594d352..2e2051bb89 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/NetworkServiceDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/NetworkServiceDirectoryPanel.java
@@ -68,10 +68,7 @@ public class NetworkServiceDirectoryPanel extends DirectoryPanel<
 
         modal.size(Modal.Size.Large);
         modal.addSubmitButton();
-        modal.setWindowClosedCallback(target -> {
-            updateResultTable(target);
-            modal.show(false);
-        });
+        setWindowClosedReloadCallback(modal, true);
         setFooterVisibility(true);
 
         initResultTable();
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
index 3dc5e210bc..94c7aeba8f 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
@@ -72,10 +72,7 @@ public class SecurityQuestionsPanel extends DirectoryPanel<
 
         modal.addSubmitButton();
         modal.size(Modal.Size.Large);
-        modal.setWindowClosedCallback(target -> {
-            modal.show(false);
-            target.add(container);
-        });
+        setWindowClosedReloadCallback(modal, true);
         setFooterVisibility(true);
 
         this.addNewItemPanelBuilder(
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/UserDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/UserDirectoryPanel.java
index 25fdfc1303..6393f31fcf 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/UserDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/UserDirectoryPanel.java
@@ -74,10 +74,7 @@ public class UserDirectoryPanel extends AnyDirectoryPanel<UserTO, UserRestClient
     protected UserDirectoryPanel(final String id, final Builder builder, final boolean wizardInModal) {
         super(id, builder, wizardInModal);
 
-        altDefaultModal.setWindowClosedCallback(target -> {
-            updateResultTable(target);
-            modal.show(false);
-        });
+        setWindowClosedReloadCallback(altDefaultModal, true);
     }
 
     @Override
@@ -224,7 +221,7 @@ public class UserDirectoryPanel extends AnyDirectoryPanel<UserTO, UserRestClient
             SyncopeWebApplication.get().getAnyDirectoryPanelAdditionalActionLinksProvider().get(
                     model,
                     realm,
-                    altDefaultModal,
+                    modal,
                     getString("any.edit", new Model<>(new UserWrapper(model.getObject()))),
                     this,
                     pageRef).forEach(panel::add);
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyDirectoryPanel.java
index e2ca9f4c09..4924685f17 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyDirectoryPanel.java
@@ -110,10 +110,7 @@ public abstract class PolicyDirectoryPanel<T extends PolicyTO>
 
         modal.addSubmitButton();
         modal.size(Modal.Size.Large);
-        modal.setWindowClosedCallback(target -> {
-            updateResultTable(target);
-            modal.show(false);
-        });
+        setWindowClosedReloadCallback(modal, true);
         setFooterVisibility(true);
 
         disableCheckBoxes();
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
index e2248a7f53..46f156ddb2 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
@@ -24,6 +24,7 @@ import de.agilecoders.wicket.extensions.markup.html.bootstrap.behavior.Draggable
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 import org.apache.syncope.client.console.panels.AbstractModalPanel;
 import org.apache.syncope.client.console.wicket.ajax.form.IndicatorModalCloseBehavior;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.buttons.DefaultModalCloseButton;
@@ -143,8 +144,8 @@ public class BaseModal<T extends Serializable> extends Modal<T> {
     }
 
     public BaseModal<T> setContent(final ModalPanel component) {
-        if (component instanceof Panel) {
-            return setInternalContent(Panel.class.cast(component));
+        if (component instanceof Panel panel) {
+            return setInternalContent(panel);
         }
         throw new IllegalArgumentException("Panel instance is required");
     }
@@ -185,9 +186,7 @@ public class BaseModal<T extends Serializable> extends Modal<T> {
 
     @Override
     protected void onClose(final IPartialPageRequestHandler target) {
-        if (windowClosedCallback != null) {
-            windowClosedCallback.onClose((AjaxRequestTarget) target);
-        }
+        Optional.ofNullable(windowClosedCallback).ifPresent(callback -> callback.onClose((AjaxRequestTarget) target));
     }
 
     public AjaxSubmitLink addSubmitButton() {
@@ -360,7 +359,7 @@ public class BaseModal<T extends Serializable> extends Modal<T> {
                 + (showImmediately() ? ".show()" : "")
                 + ";";
     }
-    
+
     /**
      * adds close handler to initializer script, if use of close handler has been defined.
      *
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java
index a04d0a9b27..faaaf2f3d4 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java
@@ -129,9 +129,6 @@ public abstract class ActionLink<T extends Serializable> implements Serializable
 
     public abstract void onClick(AjaxRequestTarget target, T modelObject);
 
-    public void postClick() {
-    }
-
     public boolean feedbackPanelAutomaticReload() {
         return reloadFeedbackPanel;
     }
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
index 7f42f86846..983c6f039d 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
@@ -33,6 +33,7 @@ import org.apache.syncope.client.ui.commons.status.StatusBean;
 import org.apache.syncope.client.ui.commons.wizards.any.EntityWrapper;
 import org.apache.syncope.client.ui.commons.wizards.any.UserWrapper;
 import org.apache.syncope.common.keymaster.client.api.model.Domain;
+import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
 import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.command.CommandTO;
 import org.apache.syncope.common.lib.policy.PolicyTO;
@@ -71,7 +72,7 @@ public class ActionLinksTogglePanel<T extends Serializable> extends TogglePanel<
         container.add(getEmptyFragment());
     }
 
-    public void updateHeader(final AjaxRequestTarget target, final Serializable modelObject) {
+    protected void updateHeader(final AjaxRequestTarget target, final Serializable modelObject) {
         final String header;
         if (modelObject instanceof final UserTO userTO) {
             header = userTO.getUsername();
@@ -104,19 +105,20 @@ public class ActionLinksTogglePanel<T extends Serializable> extends TogglePanel<
         } else if (modelObject instanceof final CommandWrapper commandWrapper) {
             header = commandWrapper.getCommand().getKey();
         } else if (modelObject instanceof final JobTO jobTO) {
-            header = jobTO.getRefKey() == null
-                    ? jobTO.getRefDesc() : jobTO.getRefKey();
+            header = jobTO.getRefKey() == null ? jobTO.getRefDesc() : jobTO.getRefKey();
         } else if (modelObject instanceof final ToggleableTarget toggleableTarget) {
             header = toggleableTarget.getAnyType();
         } else if (modelObject instanceof final Domain domain) {
             header = domain.getKey();
         } else if (modelObject instanceof final CommandTO commandTO) {
             header = commandTO.getKey();
+        } else if (modelObject instanceof final NetworkService networkService) {
+            header = networkService.getAddress();
         } else if (modelObject instanceof final NamedEntityTO entity) {
             header = entity.getName();
         } else if (modelObject instanceof final EntityTO entityTO) {
             header = entityTO.getKey();
-        } else if (modelObject instanceof final EntityWrapper entityWrapper) {
+        } else if (modelObject instanceof final EntityWrapper<?> entityWrapper) {
             EntityTO inner = entityWrapper.getInnerObject();
             header = inner instanceof final NamedEntityTO namedEntityTO ? namedEntityTO.getName() : inner.getKey();
         } else {
@@ -133,7 +135,7 @@ public class ActionLinksTogglePanel<T extends Serializable> extends TogglePanel<
 
         updateHeader(target, modelObject);
 
-        modal.setWindowClosedCallback(t -> modal.show(false));
+        setWindowClosedReloadCallback(modal);
 
         Fragment frag = new Fragment("actions", "actionsFragment", this);
         frag.setOutputMarkupId(true);
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java
index 20bd29068a..8b7e01ed8a 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java
@@ -169,24 +169,16 @@ public final class ActionPanel<T extends Serializable> extends Panel {
 
         Optional.ofNullable(action.getIcon()).ifPresent(i -> actionIcon.add(new AttributeModifier("class", i)));
 
-        this.disableIndicator = !action.hasIndicator();
+        disableIndicator = !action.hasIndicator();
         // ---------------------------
     }
 
     protected void beforeOnClick(final AjaxRequestTarget target) {
-        switch (this.action.getType()) {
-            case DELETE:
-            case CREATE:
-            case MEMBERS:
-            case MAPPING:
-            case SET_LATEST_SYNC_TOKEN:
-            case REMOVE_SYNC_TOKEN:
-            case EDIT_APPROVAL:
-            case CLAIM:
+        switch (action.getType()) {
+            case DELETE, CREATE, MEMBERS, MAPPING, SET_LATEST_SYNC_TOKEN, REMOVE_SYNC_TOKEN, EDIT_APPROVAL, CLAIM ->
                 send(this, Broadcast.BUBBLE, new ActionLinksTogglePanel.ActionLinkToggleCloseEventPayload(target));
-                break;
-            default:
-                break;
+            default -> {
+            }
         }
     }
 }
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java
index 59f219287b..f5556a5556 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java
@@ -273,11 +273,11 @@ public class JobWidget extends BaseWidget {
 
     @Override
     public void onEvent(final IEvent<?> event) {
-        if (event.getPayload() instanceof JobActionPanel.JobActionPayload) {
+        if (event.getPayload() instanceof JobActionPanel.JobActionPayload payload) {
             available.clear();
             available.addAll(getUpdatedAvailable());
             availableJobsPanel.modelChanged();
-            JobActionPanel.JobActionPayload.class.cast(event.getPayload()).getTarget().add(availableJobsPanel);
+            payload.getTarget().add(availableJobsPanel);
         }
     }
 
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
index ffcbaa991d..f419e91a2a 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
@@ -591,8 +591,7 @@ public class UserLogic extends AbstractAnyLogic<UserTO, UserCR, UserUR> {
                 build();
 
         if (changepwd) {
-            req.setPassword(new PasswordPatch.Builder().
-                    value(password).onSyncope(false).resources(resources).build());
+            req.setPassword(new PasswordPatch.Builder().value(password).onSyncope(false).resources(resources).build());
         }
 
         return update(req, nullPriorityAsync);
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnySearchTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnySearchTest.java
index 1a1f45812c..a7e2b750d5 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnySearchTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnySearchTest.java
@@ -58,6 +58,7 @@ import org.apache.syncope.core.persistence.api.dao.search.ResourceCond;
 import org.apache.syncope.core.persistence.api.dao.search.RoleCond;
 import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
+import org.apache.syncope.core.persistence.api.entity.AnyUtils;
 import org.apache.syncope.core.persistence.api.entity.PlainAttr;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.persistence.api.entity.anyobject.AMembership;
@@ -960,50 +961,44 @@ public class AnySearchTest extends AbstractTest {
     }
 
     @Test
-    public void issueSYNCOPE1906() {
-        User bellini = userDAO.findByUsername("bellini").orElseThrow();
-
+    void issueSYNCOPE1906() {
         PlainSchema ctypeSchema = plainSchemaDAO.findById("ctype").orElseThrow();
-        assertNotNull(ctypeSchema);
-
-        userDAO.save(addPlainAttr(bellini, ctypeSchema, "aa1"));
-
-        User puccini = userDAO.findByUsername("puccini").orElseThrow();
-        assertNotNull(bellini);
 
-        userDAO.save(addPlainAttr(puccini, ctypeSchema, "aa2"));
+        AnyUtils anyUtils = anyUtilsFactory.getInstance(AnyTypeKind.USER);
 
-        User verdi = userDAO.findByUsername("verdi").orElseThrow();
-        assertNotNull(verdi);
+        anyUtils.addAttr(validator, userDAO.findKey("bellini").orElseThrow(), ctypeSchema, "aa1");
+        assertEquals("aa1", userDAO.findByUsername("bellini").orElseThrow().
+                getPlainAttr("ctype").orElseThrow().getValues().getFirst().getValueAsString());
 
-        userDAO.save(addPlainAttr(verdi, ctypeSchema, "aa3"));
+        anyUtils.addAttr(validator, userDAO.findKey("puccini").orElseThrow(), ctypeSchema, "aa2");
+        assertEquals("aa2", userDAO.findByUsername("puccini").orElseThrow().
+                getPlainAttr("ctype").orElseThrow().getValues().getFirst().getValueAsString());
 
-        User vivaldi = userDAO.findByUsername("vivaldi").orElseThrow();
-        assertNotNull(vivaldi);
+        anyUtils.addAttr(validator, userDAO.findKey("verdi").orElseThrow(), ctypeSchema, "aa3");
+        assertEquals("aa3", userDAO.findByUsername("verdi").orElseThrow().
+                getPlainAttr("ctype").orElseThrow().getValues().getFirst().getValueAsString());
 
-        userDAO.save(addPlainAttr(vivaldi, ctypeSchema, "aa4"));
+        anyUtils.removeAttr(userDAO.findKey("vivaldi").orElseThrow(), ctypeSchema);
+        anyUtils.addAttr(validator, userDAO.findKey("vivaldi").orElseThrow(), ctypeSchema, "aa4");
+        assertEquals("aa4", userDAO.findByUsername("vivaldi").orElseThrow().
+                getPlainAttr("ctype").orElseThrow().getValues().getFirst().getValueAsString());
 
-        User rossini = userDAO.findByUsername("rossini").orElseThrow();
-        assertNotNull(rossini);
-
-        userDAO.save(addPlainAttr(rossini, ctypeSchema, "aa5"));
+        anyUtils.removeAttr(userDAO.findKey("rossini").orElseThrow(), ctypeSchema);
+        anyUtils.addAttr(validator, userDAO.findKey("rossini").orElseThrow(), ctypeSchema, "aa5");
+        assertEquals("aa5", userDAO.findByUsername("rossini").orElseThrow().
+                getPlainAttr("ctype").orElseThrow().getValues().getFirst().getValueAsString());
 
         entityManager.flush();
 
-        AnyCond idCond = new AnyCond(AttrCond.Type.ISNOTNULL);
-        idCond.setSchema("id");
-
-        List<User> users =
-                searchDAO.search(SearchCond.of(idCond), List.of(new Sort.Order(Sort.Direction.DESC, "ctype")),
-                        AnyTypeKind.USER);
+        AnyCond keyCond = new AnyCond(AttrCond.Type.ISNOTNULL);
+        keyCond.setSchema("key");
 
-        assertEquals("bellini", users.get(4).getUsername());
-        assertEquals("puccini", users.get(3).getUsername());
-        assertEquals("verdi", users.get(2).getUsername());
-        assertEquals("vivaldi", users.get(1).getUsername());
-        assertEquals("rossini", users.get(0).getUsername());
+        List<User> users = searchDAO.search(
+                SearchCond.of(keyCond), List.of(new Sort.Order(Sort.Direction.DESC, "ctype")), AnyTypeKind.USER);
+        assertEquals(
+                List.of("rossini", "vivaldi", "verdi", "puccini", "bellini"),
+                users.stream().map(User::getUsername).toList());
 
-        // order by ctype even not searching by it
         AttrCond surnameCond = new AttrCond(AttrCond.Type.ILIKE);
         surnameCond.setSchema("surname");
         surnameCond.setExpression("%ini");
@@ -1011,50 +1006,34 @@ public class AnySearchTest extends AbstractTest {
         AttrCond coolCond = new AttrCond(AttrCond.Type.ISNULL);
         coolCond.setSchema("cool");
 
-        users = searchDAO.search(SearchCond.and(SearchCond.of(surnameCond), SearchCond.of(coolCond)),
+        // order by ctype even not searching by it
+        users = searchDAO.search(
+                SearchCond.and(SearchCond.of(surnameCond), SearchCond.of(coolCond)),
                 List.of(new Sort.Order(Sort.Direction.DESC, "ctype")), AnyTypeKind.USER);
-
-        assertFalse(users.isEmpty());
         assertEquals(2, users.size());
-        
-        // order by unique attribute
-        users = searchDAO.search(SearchCond.of(idCond), List.of(new Sort.Order(Sort.Direction.DESC, "fullname")),
-                AnyTypeKind.USER);
 
-        assertEquals("vivaldi", users.get(4).getUsername());
-        assertEquals("puccini", users.get(3).getUsername());
-        assertEquals("rossini", users.get(2).getUsername());
-        assertEquals("verdi", users.get(1).getUsername());
-        assertEquals("bellini", users.get(0).getUsername());
+        // order by unique attribute
+        users = searchDAO.search(
+                SearchCond.of(keyCond), List.of(new Sort.Order(Sort.Direction.DESC, "fullname")), AnyTypeKind.USER);
+        assertEquals(
+                List.of("bellini", "verdi", "rossini", "puccini", "vivaldi"),
+                users.stream().map(User::getUsername).toList());
     }
 
     @Test
-    public void issueSYNCOPE1922() {
-        User bellini = userDAO.findByUsername("bellini").orElseThrow();
-
-        PlainSchema obscureSchema = plainSchemaDAO.findById("obscure").orElseThrow();
-
-        userDAO.save(addPlainAttr(bellini, obscureSchema, "myobscurevalue"));
+    void issueSYNCOPE1922() {
+        anyUtilsFactory.getInstance(AnyTypeKind.USER).addAttr(
+                validator,
+                userDAO.findKey("bellini").orElseThrow(),
+                plainSchemaDAO.findById("obscure").orElseThrow(),
+                "myobscurevalue");
 
         entityManager.flush();
 
-        AttrCond obscureCond = new AttrCond(AttrCond.Type.EQ);
-        obscureCond.setSchema("obscure");
-        obscureCond.setExpression("myobscurevalue");
-
-        assertThrows(IllegalArgumentException.class,
-                () -> searchDAO.search(SearchCond.of(obscureCond), AnyTypeKind.USER));
-    }
-
-    private User addPlainAttr(final User user, final PlainSchema plainSchema, final String value) {
-        user.getPlainAttr(plainSchema.getKey())
-                .ifPresentOrElse(ctype -> ctype.getValues().get(0).setStringValue(value), () -> {
-                    PlainAttr attr = new PlainAttr();
-                    attr.setPlainSchema(plainSchema);
-                    attr.add(validator, value);
+        AttrCond cond = new AttrCond(AttrCond.Type.EQ);
+        cond.setSchema("obscure");
+        cond.setExpression("myobscurevalue");
 
-                    user.add(attr);
-                });
-        return user;
+        assertThrows(IllegalArgumentException.class, () -> searchDAO.search(SearchCond.of(cond), AnyTypeKind.USER));
     }
 }
diff --git a/core/persistence-neo4j/src/test/java/org/apache/syncope/core/persistence/neo4j/inner/AnySearchTest.java b/core/persistence-neo4j/src/test/java/org/apache/syncope/core/persistence/neo4j/inner/AnySearchTest.java
index 5f8060b022..d83ea87dcf 100644
--- a/core/persistence-neo4j/src/test/java/org/apache/syncope/core/persistence/neo4j/inner/AnySearchTest.java
+++ b/core/persistence-neo4j/src/test/java/org/apache/syncope/core/persistence/neo4j/inner/AnySearchTest.java
@@ -58,6 +58,7 @@ import org.apache.syncope.core.persistence.api.dao.search.ResourceCond;
 import org.apache.syncope.core.persistence.api.dao.search.RoleCond;
 import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
+import org.apache.syncope.core.persistence.api.entity.AnyUtils;
 import org.apache.syncope.core.persistence.api.entity.PlainAttr;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.persistence.api.entity.anyobject.AMembership;
@@ -986,30 +987,75 @@ public class AnySearchTest extends AbstractTest {
     }
 
     @Test
-    public void issueSYNCOPE1922() {
-        User bellini = userDAO.findByUsername("bellini").orElseThrow();
+    void issueSYNCOPE1906() {
+        PlainSchema ctypeSchema = plainSchemaDAO.findById("ctype").orElseThrow();
 
-        PlainSchema obscureSchema = plainSchemaDAO.findById("obscure").orElseThrow();
+        AnyUtils anyUtils = anyUtilsFactory.getInstance(AnyTypeKind.USER);
 
-        userDAO.save(addPlainAttr(bellini, obscureSchema, "myobscurevalue"));
+        anyUtils.addAttr(validator, userDAO.findKey("bellini").orElseThrow(), ctypeSchema, "aa1");
+        assertEquals("aa1", userDAO.findByUsername("bellini").orElseThrow().
+                getPlainAttr("ctype").orElseThrow().getValues().getFirst().getValueAsString());
 
-        AttrCond obscureCond = new AttrCond(AttrCond.Type.EQ);
-        obscureCond.setSchema("obscure");
-        obscureCond.setExpression("myobscurevalue");
+        anyUtils.addAttr(validator, userDAO.findKey("puccini").orElseThrow(), ctypeSchema, "aa2");
+        assertEquals("aa2", userDAO.findByUsername("puccini").orElseThrow().
+                getPlainAttr("ctype").orElseThrow().getValues().getFirst().getValueAsString());
 
-        assertThrows(IllegalArgumentException.class,
-                () -> searchDAO.search(SearchCond.of(obscureCond), AnyTypeKind.USER));
-    }
+        anyUtils.addAttr(validator, userDAO.findKey("verdi").orElseThrow(), ctypeSchema, "aa3");
+        assertEquals("aa3", userDAO.findByUsername("verdi").orElseThrow().
+                getPlainAttr("ctype").orElseThrow().getValues().getFirst().getValueAsString());
+
+        anyUtils.removeAttr(userDAO.findKey("vivaldi").orElseThrow(), ctypeSchema);
+        anyUtils.addAttr(validator, userDAO.findKey("vivaldi").orElseThrow(), ctypeSchema, "aa4");
+        assertEquals("aa4", userDAO.findByUsername("vivaldi").orElseThrow().
+                getPlainAttr("ctype").orElseThrow().getValues().getFirst().getValueAsString());
+
+        anyUtils.removeAttr(userDAO.findKey("rossini").orElseThrow(), ctypeSchema);
+        anyUtils.addAttr(validator, userDAO.findKey("rossini").orElseThrow(), ctypeSchema, "aa5");
+        assertEquals("aa5", userDAO.findByUsername("rossini").orElseThrow().
+                getPlainAttr("ctype").orElseThrow().getValues().getFirst().getValueAsString());
+
+        AnyCond keyCond = new AnyCond(AttrCond.Type.ISNOTNULL);
+        keyCond.setSchema("key");
+
+        List<User> users = searchDAO.search(
+                SearchCond.of(keyCond), List.of(new Sort.Order(Sort.Direction.DESC, "ctype")), AnyTypeKind.USER);
+        assertEquals(
+                List.of("rossini", "vivaldi", "verdi", "puccini", "bellini"),
+                users.stream().map(User::getUsername).toList());
+
+        AttrCond surnameCond = new AttrCond(AttrCond.Type.ILIKE);
+        surnameCond.setSchema("surname");
+        surnameCond.setExpression("%ini");
 
-    protected User addPlainAttr(final User user, final PlainSchema plainSchema, final String value) {
-        user.getPlainAttr(plainSchema.getKey())
-                .ifPresentOrElse(ctype -> ctype.getValues().get(0).setStringValue(value), () -> {
-                    PlainAttr attr = new PlainAttr();
-                    attr.setPlainSchema(plainSchema);
-                    attr.add(validator, value);
+        AttrCond coolCond = new AttrCond(AttrCond.Type.ISNULL);
+        coolCond.setSchema("cool");
 
-                    user.add(attr);
-                });
-        return user;
+        // order by ctype even not searching by it
+        users = searchDAO.search(
+                SearchCond.and(SearchCond.of(surnameCond), SearchCond.of(coolCond)),
+                List.of(new Sort.Order(Sort.Direction.DESC, "ctype")), AnyTypeKind.USER);
+        assertEquals(2, users.size());
+
+        // order by unique attribute
+        users = searchDAO.search(
+                SearchCond.of(keyCond), List.of(new Sort.Order(Sort.Direction.DESC, "fullname")), AnyTypeKind.USER);
+        assertEquals(
+                List.of("bellini", "verdi", "rossini", "puccini", "vivaldi"),
+                users.stream().map(User::getUsername).toList());
+    }
+
+    @Test
+    void issueSYNCOPE1922() {
+        anyUtilsFactory.getInstance(AnyTypeKind.USER).addAttr(
+                validator,
+                userDAO.findKey("bellini").orElseThrow(),
+                plainSchemaDAO.findById("obscure").orElseThrow(),
+                "myobscurevalue");
+
+        AttrCond cond = new AttrCond(AttrCond.Type.EQ);
+        cond.setSchema("obscure");
+        cond.setExpression("myobscurevalue");
+
+        assertThrows(IllegalArgumentException.class, () -> searchDAO.search(SearchCond.of(cond), AnyTypeKind.USER));
     }
 }
diff --git a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDirectoryPanel.java b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDirectoryPanel.java
index 001493347f..ddce479d77 100644
--- a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDirectoryPanel.java
+++ b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDirectoryPanel.java
@@ -113,6 +113,10 @@ public class UserRequestFormDirectoryPanel
                 components.refreshLatestAlerts(target);
             }
 
+            if (actionTogglePanel.isVisibleInHierarchy()) {
+                actionTogglePanel.toggle(target, false);
+            }
+
             manageFormModal.show(false);
         });
 
diff --git a/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/OIDCProvidersDirectoryPanel.java b/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/OIDCProvidersDirectoryPanel.java
index 4e735fe356..c7d9e92723 100644
--- a/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/OIDCProvidersDirectoryPanel.java
+++ b/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/OIDCProvidersDirectoryPanel.java
@@ -117,7 +117,7 @@ public class OIDCProvidersDirectoryPanel extends DirectoryPanel<
                 setFooterVisible(false);
             }
         };
-        templateModal.setWindowClosedCallback(target -> templateModal.show(false));
+        setWindowClosedReloadCallback(templateModal);
         templateModal.size(Modal.Size.Large);
         addOuterObject(templateModal);
 
diff --git a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java
index fceb950a64..d7f0557a9e 100644
--- a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java
+++ b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java
@@ -107,10 +107,7 @@ public class SAML2IdPsDirectoryPanel extends DirectoryPanel<
 
         modal.addSubmitButton();
         modal.size(Modal.Size.Large);
-        modal.setWindowClosedCallback(target -> {
-            updateResultTable(target);
-            modal.show(false);
-        });
+        setWindowClosedReloadCallback(modal, true);
 
         addOuterObject(metadataModal);
         setWindowClosedReloadCallback(metadataModal);
@@ -126,7 +123,7 @@ public class SAML2IdPsDirectoryPanel extends DirectoryPanel<
                 setFooterVisible(false);
             }
         };
-        templateModal.setWindowClosedCallback(target -> templateModal.show(false));
+        setWindowClosedReloadCallback(templateModal);
         templateModal.size(Modal.Size.Large);
         addOuterObject(templateModal);
 
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/BatchesITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/BatchesITCase.java
index 05d5f43420..20ac76a4b6 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/BatchesITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/BatchesITCase.java
@@ -83,31 +83,31 @@ public class BatchesITCase extends AbstractConsoleITCase {
                 + ":outer:container:content:togglePanelContainer:container:actions:actions:actionRepeater:4:"
                 + "action:action");
 
-        TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:"
+        TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:"
                 + "firstLevelContainer:first:container:content:searchContainer:resultTable:tablePanel:groupForm:"
                 + "checkgroup:dataTable", WebMarkupContainer.class);
 
         component = findComponentByProp("resource",
-                TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:"
+                TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:"
                 + "firstLevelContainer:first:container:content:searchContainer:resultTable:tablePanel:groupForm:"
                 + "checkgroup:dataTable", "resource-csv");
         assertNotNull(component);
 
         FormTester formTester = TESTER.newFormTester(
-                TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:firstLevelContainer:"
+                TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:firstLevelContainer:"
                 + "first:container:content:searchContainer:resultTable:tablePanel:groupForm");
         assertNotNull(formTester);
 
         formTester.select("checkgroup", 0);
 
-        TESTER.executeAjaxEvent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:"
+        TESTER.executeAjaxEvent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:"
                 + "firstLevelContainer:first:container:content:searchContainer:resultTable:tablePanel:batchLink",
                 Constants.ON_CLICK);
 
-        TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:"
+        TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:"
                 + "secondLevelContainer:second:container", WebMarkupContainer.class);
 
-        assertNotNull(findComponentByProp("resource", TAB_PANEL + "outerObjectsRepeater:2:outer:"
+        assertNotNull(findComponentByProp("resource", TAB_PANEL + "outerObjectsRepeater:0:outer:"
                 + "form:content:status:secondLevelContainer:second:container", "resource-csv"));
     }
 
@@ -137,12 +137,12 @@ public class BatchesITCase extends AbstractConsoleITCase {
                 + ":outer:container:content:togglePanelContainer:container:actions:actions:actionRepeater:3:"
                 + "action:action");
 
-        TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:"
+        TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:"
                 + "firstLevelContainer:first:container:content:searchContainer:resultTable:tablePanel:groupForm:"
                 + "checkgroup:dataTable", WebMarkupContainer.class);
 
         component = findComponentByProp("resource",
-                TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:firstLevelContainer:first:container:"
+                TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:firstLevelContainer:first:container:"
                 + "content:searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", resource);
 
         component = TESTER.getComponentFromLastRenderedPage(component.getPageRelativePath()
@@ -151,37 +151,37 @@ public class BatchesITCase extends AbstractConsoleITCase {
         assertEquals(resource, StatusBean.class.cast(component.getDefaultModelObject()).getResource());
 
         FormTester formTester = TESTER.newFormTester(
-                TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:firstLevelContainer:"
+                TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:firstLevelContainer:"
                 + "first:container:content:searchContainer:resultTable:tablePanel:groupForm");
         assertNotNull(formTester);
 
         formTester.select("checkgroup", index);
 
-        TESTER.executeAjaxEvent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:"
+        TESTER.executeAjaxEvent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:"
                 + "firstLevelContainer:first:container:content:searchContainer:resultTable:tablePanel:batchLink",
                 Constants.ON_CLICK);
 
-        TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:"
+        TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:"
                 + "secondLevelContainer:second:container", WebMarkupContainer.class);
 
         // suspend link
         TESTER.executeAjaxEvent(TAB_PANEL
-                + "outerObjectsRepeater:2:outer:form:content:status:secondLevelContainer:"
+                + "outerObjectsRepeater:0:outer:form:content:status:secondLevelContainer:"
                 + "second:container:actions:actionRepeater:0:action:action",
                 Constants.ON_CLICK);
 
         assertSuccessMessage();
         TESTER.cleanupFeedbackMessages();
 
-        TESTER.assertLabel(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:"
+        TESTER.assertLabel(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:"
                 + "secondLevelContainer:second:container:selectedObjects:body:rows:1:cells:4:cell", "SUCCESS");
 
         TESTER.executeAjaxEvent(TAB_PANEL
-                + "outerObjectsRepeater:2:outer:form:content:status:secondLevelContainer:back",
+                + "outerObjectsRepeater:0:outer:form:content:status:secondLevelContainer:back",
                 Constants.ON_CLICK);
 
         component = findComponentByProp("resource",
-                TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:firstLevelContainer:first:container:"
+                TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:firstLevelContainer:first:container:"
                 + "content:searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", resource);
 
         component = TESTER.getComponentFromLastRenderedPage(component.getPageRelativePath()
@@ -204,42 +204,42 @@ public class BatchesITCase extends AbstractConsoleITCase {
                 + ":outer:container:content:togglePanelContainer:container:actions:actions:actionRepeater:3:"
                 + "action:action");
 
-        TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:"
+        TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:"
                 + "firstLevelContainer:first:container:content:searchContainer:resultTable:tablePanel:groupForm:"
                 + "checkgroup:dataTable", WebMarkupContainer.class);
 
         formTester = TESTER.newFormTester(
-                TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:firstLevelContainer:"
+                TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:firstLevelContainer:"
                 + "first:container:content:searchContainer:resultTable:tablePanel:groupForm");
         assertNotNull(formTester);
 
         formTester.select("checkgroup", index);
 
-        TESTER.executeAjaxEvent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:"
+        TESTER.executeAjaxEvent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:"
                 + "firstLevelContainer:first:container:content:searchContainer:resultTable:tablePanel:batchLink",
                 Constants.ON_CLICK);
 
-        TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:"
+        TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:"
                 + "secondLevelContainer:second:container", WebMarkupContainer.class);
 
         // suspend link
         TESTER.executeAjaxEvent(TAB_PANEL
-                + "outerObjectsRepeater:2:outer:form:content:status:secondLevelContainer:"
+                + "outerObjectsRepeater:0:outer:form:content:status:secondLevelContainer:"
                 + "second:container:actions:actionRepeater:1:action:action",
                 Constants.ON_CLICK);
 
         assertSuccessMessage();
         TESTER.cleanupFeedbackMessages();
 
-        TESTER.assertLabel(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:"
+        TESTER.assertLabel(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:"
                 + "secondLevelContainer:second:container:selectedObjects:body:rows:1:cells:4:cell", "SUCCESS");
 
         TESTER.executeAjaxEvent(TAB_PANEL
-                + "outerObjectsRepeater:2:outer:form:content:status:secondLevelContainer:back",
+                + "outerObjectsRepeater:0:outer:form:content:status:secondLevelContainer:back",
                 Constants.ON_CLICK);
 
         component = findComponentByProp("resource",
-                TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:firstLevelContainer:first:container:"
+                TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:status:firstLevelContainer:first:container:"
                 + "content:searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", resource);
 
         component = TESTER.getComponentFromLastRenderedPage(component.getPageRelativePath()
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/LinkedAccountsITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/LinkedAccountsITCase.java
index becfc268c6..8a0fc795fa 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/LinkedAccountsITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/LinkedAccountsITCase.java
@@ -124,12 +124,14 @@ public class LinkedAccountsITCase extends AbstractConsoleITCase {
         TESTER.clickLink(TAB_PANEL + "outerObjectsRepeater:1:outer:container:content:togglePanelContainer:container:"
                 + "actions:actions:actionRepeater:6:action:action");
         // Search for user
-        TESTER.executeAjaxEvent(USER_SEARCH_FORM + "content:panelPlus:add", Constants.ON_CLICK);
-        FormTester formTester = TESTER.newFormTester(USER_SEARCH_FORM);
+        TESTER.executeAjaxEvent(USER_SEARCH_FORM.replace(":2:", ":0:") + "content:panelPlus:add", Constants.ON_CLICK);
+        FormTester formTester = TESTER.newFormTester(USER_SEARCH_FORM.replace(":2:", ":0:"));
 
-        DropDownChoice<?> type = (DropDownChoice<?>) TESTER.getComponentFromLastRenderedPage(USER_SEARCH_FORM
+        DropDownChoice<?> type = (DropDownChoice<?>) TESTER.getComponentFromLastRenderedPage(
+                USER_SEARCH_FORM.replace(":2:", ":0:")
                 + "content:view:0:panel:container:type:dropDownChoiceField");
-        TESTER.executeAjaxEvent(USER_SEARCH_FORM + "content:view:0:panel:container:type:dropDownChoiceField",
+        TESTER.executeAjaxEvent(USER_SEARCH_FORM.replace(":2:", ":0:")
+                + "content:view:0:panel:container:type:dropDownChoiceField",
                 Constants.ON_CHANGE);
         type.setModelValue(new String[] { "ATTRIBUTE" });
         type.setDefaultModelObject(SearchClause.Type.ATTRIBUTE);
@@ -149,32 +151,33 @@ public class LinkedAccountsITCase extends AbstractConsoleITCase {
         TESTER.assertNoErrorMessage();
 
         // Locate result in data table
-        Component comp = findComponentByProp("username", TAB_PANEL + SEARCH_PANEL + RESULT_DATA_TABLE, USER.
-                getUsername());
+        Component comp = findComponentByProp("username", TAB_PANEL + SEARCH_PANEL.replace(":2:", ":0:")
+                + RESULT_DATA_TABLE, USER.getUsername());
         TESTER.executeAjaxEvent(comp.getPageRelativePath(), Constants.ON_CLICK);
 
         // Select user
-        TESTER.clickLink(TAB_PANEL + SEARCH_PANEL + SELECT_USER_ACTION);
+        TESTER.clickLink(TAB_PANEL + SEARCH_PANEL.replace(":2:", ":0:") + SELECT_USER_ACTION);
 
         // move onto the next panel
-        TESTER.getComponentFromLastRenderedPage(TAB_PANEL + FORM + "view").setEnabled(false);
-        formTester = TESTER.newFormTester(TAB_PANEL + FORM);
+        TESTER.getComponentFromLastRenderedPage(TAB_PANEL + FORM.replace(":2:", ":0:") + "view").setEnabled(false);
+        formTester = TESTER.newFormTester(TAB_PANEL + FORM.replace(":2:", ":0:"));
         formTester.submit("buttons:next");
 
         // Select a resource
-        comp = findComponentByProp("key", TAB_PANEL + FORM + RESOURCES_DATA_TABLE + "body:rows", "resource-ldap");
+        comp = findComponentByProp("key", TAB_PANEL + FORM.replace(":2:", ":0:") + RESOURCES_DATA_TABLE + "body:rows",
+                "resource-ldap");
         assertNotNull(comp);
         TESTER.executeAjaxEvent(comp.getPageRelativePath(), Constants.ON_CLICK);
-        TESTER.clickLink(TAB_PANEL + FORM + SELECT_RESOURCE_ACTION);
+        TESTER.clickLink(TAB_PANEL + FORM.replace(":2:", ":0:") + SELECT_RESOURCE_ACTION);
 
         // move onto the next panel
-        TESTER.getComponentFromLastRenderedPage(TAB_PANEL + FORM + "view").setEnabled(false);
-        formTester = TESTER.newFormTester(TAB_PANEL + FORM);
+        TESTER.getComponentFromLastRenderedPage(TAB_PANEL + FORM.replace(":2:", ":0:") + "view").setEnabled(false);
+        formTester = TESTER.newFormTester(TAB_PANEL + FORM.replace(":2:", ":0:"));
         formTester.submit("buttons:next");
 
         // Finish merge
-        TESTER.getComponentFromLastRenderedPage(TAB_PANEL + FORM + "view").setEnabled(false);
-        formTester = TESTER.newFormTester(TAB_PANEL + FORM);
+        TESTER.getComponentFromLastRenderedPage(TAB_PANEL + FORM.replace(":2:", ":0:") + "view").setEnabled(false);
+        formTester = TESTER.newFormTester(TAB_PANEL + FORM.replace(":2:", ":0:"));
         formTester.submit("buttons:finish");
 
         UserService userService = SyncopeConsoleSession.get().getService(UserService.class);
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SearchITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SearchITCase.java
index 7b4a0891bd..ac40b32bbd 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SearchITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SearchITCase.java
@@ -1165,7 +1165,7 @@ public class SearchITCase extends AbstractITCase {
     }
 
     @Test
-    public void issueSYNCOPE1922() {
+    void issueSYNCOPE1922() {
         // 1. set encrypted value
         updateUser(new UserUR.Builder(USER_SERVICE.read("bellini").getKey()).plainAttr(
                 attrAddReplacePatch("obscure", "myobscurevalue")).build());


(syncope) 02/04: Bump org.opensearch.client:opensearch-java from 3.2.0 to 3.3.0

Posted by il...@apache.org.
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 0580f908e04b4a77d5ff2f16b943072b048b06f7
Author: dependabot[bot] <49...@users.noreply.github.com>
AuthorDate: Wed Oct 29 22:42:05 2025 +0000

    Bump org.opensearch.client:opensearch-java from 3.2.0 to 3.3.0
    
    Bumps [org.opensearch.client:opensearch-java](https://github.com/opensearch-project/opensearch-java) from 3.2.0 to 3.3.0.
    - [Release notes](https://github.com/opensearch-project/opensearch-java/releases)
    - [Changelog](https://github.com/opensearch-project/opensearch-java/blob/main/CHANGELOG.md)
    - [Commits](https://github.com/opensearch-project/opensearch-java/compare/v3.2.0...3.3.0)
    
    ---
    updated-dependencies:
    - dependency-name: org.opensearch.client:opensearch-java
      dependency-version: 3.3.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
    ...
    
    Signed-off-by: dependabot[bot] <su...@github.com>
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index e52c40450b..728d0655fb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -431,7 +431,7 @@ under the License.
 
     <elasticsearch.version>9.2.0</elasticsearch.version>
     <opensearch.version>3.3.1</opensearch.version>
-    <opensearch-java.version>3.2.0</opensearch-java.version>
+    <opensearch-java.version>3.3.0</opensearch-java.version>
 
     <openfga.version>v1</openfga.version>
 


(syncope) 03/04: Bump org.openapitools:openapi-generator-maven-plugin

Posted by il...@apache.org.
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 09bf496a2d98f09fae82b87fc7497a5b8fc7cae3
Author: dependabot[bot] <49...@users.noreply.github.com>
AuthorDate: Wed Oct 29 22:06:21 2025 +0000

    Bump org.openapitools:openapi-generator-maven-plugin
    
    Bumps org.openapitools:openapi-generator-maven-plugin from 7.16.0 to 7.17.0.
    
    ---
    updated-dependencies:
    - dependency-name: org.openapitools:openapi-generator-maven-plugin
      dependency-version: 7.17.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
    ...
    
    Signed-off-by: dependabot[bot] <su...@github.com>
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 728d0655fb..5002ec9587 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1712,7 +1712,7 @@ under the License.
         <plugin>
           <groupId>org.openapitools</groupId>
           <artifactId>openapi-generator-maven-plugin</artifactId>
-          <version>7.16.0</version>
+          <version>7.17.0</version>
         </plugin>
 
         <plugin>