@Override
    protected Event doExecuteInternal(final RequestContext requestContext) {
        val attributes = requestContext.getCurrentEvent().getAttributes();

        val registeredService = (RegisteredService) attributes.get(RegisteredService.class.getName());
        val service = (Service) attributes.get(Service.class.getName());
        WebUtils.putRegisteredService(requestContext, registeredService);

        val mfaProvider = (ChainingMultifactorAuthenticationProvider)
            attributes.get(MultifactorAuthenticationProvider.class.getName());

        val authn = WebUtils.getAuthentication(requestContext);
        val request = WebUtils.getHttpServletRequestFromExternalWebflowContext(requestContext);

        val mfaProviders = mfaProvider.getMultifactorAuthenticationProviders()
            .stream()
            .filter(provider -> provider.isAvailable(registeredService)
                && provider.getBypassEvaluator().shouldMultifactorAuthenticationProviderExecute(authn, registeredService, provider, request, service))
            .sorted(Comparator.comparing(MultifactorAuthenticationProvider::getOrder))
            .map(MultifactorAuthenticationProvider::getId)
            .collect(Collectors.toList());

        MultifactorAuthenticationWebflowUtils.putSelectableMultifactorAuthenticationProviders(requestContext, mfaProviders);
        return null;
    }
This is {@link PrepareMultifactorProviderSelectionAction}.

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