@Override
    protected Event doExecuteInternal(final RequestContext requestContext) throws Throwable {
        val deviceId = requestContext.getRequestParameters().getRequired("id");
        val source = requestContext.getRequestParameters().getRequired("source");
        val principal = WebUtils.getAuthentication(requestContext).getPrincipal();
        val applicationContext = requestContext.getActiveFlow().getApplicationContext();
        val providers = MultifactorAuthenticationUtils.getAvailableMultifactorAuthenticationProviders(applicationContext)
            .values()
            .stream()
            .filter(BeanSupplier::isNotProxy)
            .map(MultifactorAuthenticationProvider::getDeviceManager)
            .filter(BeanSupplier::isNotProxy)
            .filter(manager -> manager.getSource().contains(source))
            .toList();
        providers.forEach(provider -> provider.removeRegisteredDevice(principal, deviceId));
        return success();
    }
This is {@link AccountProfileDeleteMultifactorAuthenticationDeviceAction}.

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