private static void logNameChange(final User persistedUser,
                                      final String currentDisplayName,
                                      final String currentFullName,
                                      final String displayName,
                                      final String fullName) {
        final StringBuilder sb = new StringBuilder()
                .append("Updating IDP user info for user with name/subject: ")
                .append(persistedUser.getSubjectId());

        if (!Objects.equals(currentDisplayName, displayName)) {
            sb.append(", displayName: '")
                    .append(currentDisplayName)
                    .append("' => '")
                    .append(displayName)
                    .append("'");
        }

        if (!Objects.equals(currentFullName, fullName)) {
            sb.append(", fullName: '")
                    .append(currentFullName)
                    .append("' => '")
                    .append(fullName)
                    .append("'");
        }

        LOGGER.warn(sb.toString());
    }
External IDP users are identified by their subject which is a not very helpful UUID.
Therefore, we cache the preferred_username and full_name in the stroom user whenever the user
logs in, or hits the api. We have no way to request this information from the IDP prior to
them logging in though.
Each time we map their identity we check the cached info is up-to-date and if so update it.
stroom-security/stroom-security-impl/src/main/java/stroom/security/impl/StroomUserIdentityFactory.java