def fetch_alert_data(
        self, alert_parameter, is_checkpoint_not_exist, checkpoint_table_object: ExportsTableStore, last_time=None
    ):
        """Fetch_alert_data is used to push all the data into table.

        Args:
            alert_parameter (json): will contain the json data to use in parameters.
            is_checkpoint_not_exist (bool): it is a flag that contains the value if checkpoint exists or not.
            last_time (String): it will contain checkpoint time stamp.
        """
        __method_name = inspect.currentframe().f_code.co_name
        try:
            aql_with_severity = "in:alerts"
            if consts.SEVERITY in consts.SEVERITIES:
                severity_index = consts.SEVERITIES.index(consts.SEVERITY)
                included_severities = ",".join(consts.SEVERITIES[severity_index:])
                aql_with_severity = f"in:alerts severity:{included_severities}"
            else:
                raise ValueError()
            if is_checkpoint_not_exist:
                aql_data = aql_with_severity
            else:
                aql_data = """{} after:{}""".format(aql_with_severity, last_time)
            alert_parameter["aql"] = aql_data
            alert_parameter["length"] = 1000
            while self.data_alert_from is not None:
                if int(time.time()) >= self.start_time + consts.FUNCTION_APP_TIMEOUT_SECONDS:
                    raise ArmisTimeOutException()
                alert_parameter.update({"from": self.data_alert_from})
                offset_to_post = self.data_alert_from
                logging.info(consts.LOG_FORMAT.format(__method_name, "Fetching alerts data with parameters = {}.".format(alert_parameter)))
                (
                    data,
                    alert_time,
                    count_per_frame_data,
                ) = self.get_alert_data(alert_parameter)
                self.process_alerts_data(data, offset_to_post, checkpoint_table_object)
                logging.info(
                    consts.LOG_FORMAT.format(
                        __method_name,
                        "Collected {} alert data from alerts api.".format(count_per_frame_data),
                    )
                )
            alert_time = datetime.datetime.strptime(alert_time, "%Y-%m-%dT%H:%M:%S")
            alert_time += datetime.timedelta(seconds=1)
            alert_time = alert_time.strftime("%Y-%m-%dT%H:%M:%S")
            logging.info(consts.LOG_FORMAT.format(__method_name, "Saving offset '0' in checkpoint"))
            logging.info(
                consts.LOG_FORMAT.format(__method_name, "Adding last timestamp in checkpoint: {}".format(alert_time))
            )
            checkpoint_table_object.merge(
                "armisalertactivity", "alertactivitycheckpoint", {"time": alert_time, "offset": 0}
            )
        except ArmisException:
            raise ArmisException()

        except ArmisDataNotFoundException:
            raise ArmisDataNotFoundException()

        except ArmisTimeOutException:
            raise ArmisTimeOutException()

        except ValueError:
            logging.error(
                consts.LOG_FORMAT.format(
                    __method_name, "Value Error occurred, Severity value is not from the list 'Low', 'Medium', 'High', 'Critical'."
                )
            )
            raise ArmisException()

        except Exception as err:
            logging.error(consts.LOG_FORMAT.format(__method_name, "Error occurred : {}.".format(err)))
            raise ArmisException()
Fetch_alert_data is used to push all the data into table.

        Args:
            alert_parameter (json): will contain the json data to use in parameters.
            is_checkpoint_not_exist (bool): it is a flag that contains the value if checkpoint exists or not.
            last_time (String): it will contain checkpoint time stamp.
        
Solutions/Armis/Data Connectors/ArmisAlertsActivities/ArmisAlertActivitySentinelConnector/__init__.py