diff --git a/openam-core/src/main/java/com/sun/identity/authentication/service/LoginState.java b/openam-core/src/main/java/com/sun/identity/authentication/service/LoginState.java index 45edbb03df..80329e2398 100644 --- a/openam-core/src/main/java/com/sun/identity/authentication/service/LoginState.java +++ b/openam-core/src/main/java/com/sun/identity/authentication/service/LoginState.java @@ -57,6 +57,7 @@ import java.util.ServiceLoader; import java.util.Set; import java.util.StringTokenizer; +import java.util.TreeSet; import javax.security.auth.Subject; import javax.security.auth.callback.Callback; @@ -4986,7 +4987,10 @@ private Set getPostLoginInstances(Set postLo Set postLoginInstanceSet = new LinkedHashSet<>(); if ((postLoginClassSet != null) && (!postLoginClassSet.isEmpty())) { StringBuilder sb = new StringBuilder(); - for (String postLoginClassName : postLoginClassSet) { + for (String postLoginClassName : new TreeSet<>(postLoginClassSet)) { + if(postLoginClassName.contains("|")) { //a symbol before '|' symbol defines post process module order in settings + postLoginClassName = postLoginClassName.split("\\|")[1]; + } if (sb.length() > 0) { sb.append("|"); }