def METHOD_NAME(self, action, options=None):
    """
    This method executes the defined action in the given event.
    :param action:
    :param options: Contains the flask parameters g, request, response
        and the handler_def configuration
    :type options: dict
    :return:
    """
    g = options.get("g")
    request = options.get("request")
    handler_def = options.get("handler_def")
    handler_options = handler_def.get("options", {})
    if action == ACTION_TYPE.FORWARD:
        server_def = handler_options.get("privacyIDEA")
        pi_server = get_privacyideaserver(server_def)
        # the new url is the configured server url and the original path
        url = pi_server.config.url + request.path
        # We use the original method
        method = request.method
        tls = pi_server.config.tls
        # We also transfer the original payload
        data = request.all_data
        if is_true(handler_options.get("forward_client_ip", False)):
            data["client"] = g.client_ip
        if handler_options.get("realm"):
            data["realm"] = handler_options.get("realm")
        if handler_options.get("resolver"):
            data["resolver"] = handler_options.get("resolver")
        log.info("Sending {0} request to {1!r}".format(method, url))
        requestor = None
        params = None
        headers = {}
        # We need to pass an authorization header if we forward administrative requests
        if is_true(handler_options.get("forward_authorization_token", False)):
            auth_token = request.headers.get('PI-Authorization')
            if not auth_token:
                auth_token = request.headers.get('Authorization')
            headers["PI-Authorization"] = auth_token
        if method.upper() == "GET":
            params = data
            data = None
            requestor = requests.get
        elif method.upper() == "POST":
            requestor = requests.post
        elif method.upper() == "DELETE":
            requestor = requests.delete
        if requestor:
            r = requestor(url, params=params, data=data,
                          headers=headers, verify=tls)
            # convert requests Response to werkzeug Response
            response_dict = json.loads(r.text)
            if "detail" in response_dict:
                detail = response_dict.setdefault("detail", {})
                # In case of exceptions we may not have a detail
                detail["origin"] = url
            # We will modify the response!
            # We can not use flask.jsonify(response_dict) here, since we
            # would work outside of application context!
            options["response"] = current_app.response_class(json.dumps(response_dict),
                                                             mimetype="application/json")
            options["response"].status_code = r.status_code
        else:
            log.warning("Unsupported method: {0!r}".format(method))
    return True