@Override
    protected Event doExecuteInternal(final RequestContext requestContext) {
        val applicationContext = requestContext.getActiveFlow().getApplicationContext();
        val conditions = BeanFactoryUtils.beansOfTypeIncludingAncestors(applicationContext, MultifactorProviderSelectionCriteria.class)
            .values()
            .stream()
            .filter(BeanSupplier::isNotProxy)
            .sorted(AnnotationAwareOrderComparator.INSTANCE)
            .toList();
        val eventId = conditions.isEmpty() || conditions.stream().allMatch(criteria -> criteria.shouldProceedWithMultifactorProviderSelection(requestContext))
            ? CasWebflowConstants.TRANSITION_ID_PROCEED
            : CasWebflowConstants.TRANSITION_ID_SELECT;
        val attributes = requestContext.getCurrentEvent().getAttributes();
        return eventFactory.event(this, eventId, attributes);
    }
This is {@link MultifactorProviderSelectionAction}.

@author Misagh Moayyed
@since 7.0.0
core/cas-server-core-webflow-mfa-api/src/main/java/org/apereo/cas/web/flow/actions/composite/MultifactorProviderSelectionAction.java