@Override
    protected Event doExecuteInternal(final RequestContext requestContext) throws Throwable {
        val username = getPasswordResetUsername(requestContext);
        if (StringUtils.isBlank(username)) {
            LOGGER.error("Password reset token could not be verified to determine username");
            return error();
        }

        if (doesPasswordResetRequireMultifactorAuthentication(requestContext)) {
            val resolvedPrincipal = resolvedPrincipal(username);
            val provider = selectMultifactorAuthenticationProvider(requestContext, resolvedPrincipal);
            if (!doesMultifactorAuthenticationProviderExistInContext(requestContext, provider)) {
                val deviceManager = provider.getDeviceManager();
                if (deviceManager != null && !deviceManager.hasRegisteredDevices(resolvedPrincipal)) {
                    LOGGER.warn("No registered devices for multifactor authentication could be found for [{}] via [{}]", resolvedPrincipal.getId(), provider.getId());
                    return error();
                }
                return routeToMultifactorAuthenticationProvider(requestContext, resolvedPrincipal, provider);
            }
        }
        val credential = new UsernamePasswordCredential();
        credential.setUsername(username);
        WebUtils.putCredential(requestContext, credential);
        return success();
    }
This is {@link InitPasswordResetAction}, serves a as placeholder for extensions.

@author Misagh Moayyed
@since 5.0.0
support/cas-server-support-pm-webflow/src/main/java/org/apereo/cas/pm/web/flow/actions/InitPasswordResetAction.java