def _fetch_device_data(
        self,
        checkpoint_table_object: ExportsTableStore,
        table_name,
        last_seen_not_available,
        last_time=None,
    ):
        """Fetch_device_data is used to push all the data into table.

        Args:
            checkpoint_table_object (object): Azure Storage table object.
            table_name (String): table name to store the data in microsoft sentinel.
            last_seen_not_available (bool): it is a flag that contains the value if last seen exists or not.
            last_time (String): it will contain latest time stamp.
        """
        try:
            if last_seen_not_available:
                aql_data = "in:devices"
            else:
                aql_data = "in:devices after:{}".format(last_time)
            logging.info("Armis Device Connector: aql query: " + aql_data)
            self.keyvault_obj = KeyVaultSecretManager()
            self.access_token_key = "armis-access-token"
            properties_list = self.keyvault_obj.get_properties_list_of_secrets()
            if self.access_token_key in properties_list:
                self.access_token = self.keyvault_obj.get_keyvault_secret(self.access_token_key)
                self._header.update({"Authorization": self.access_token})
            else:
                self._get_access_token_device("/access_token/")

            azuresentinel = AzureSentinel()
            parameter_device = {
                "aql": aql_data,
                "orderBy": "lastSeen",
                "length": 1000,
            }
            while self._data_device_from is not None:
                if int(time.time()) >= self.start_time + FUNCTION_APP_TIMEOUT_SECONDS:
                    raise ArmisTimeOutException()
                parameter_device.update({"from": self._data_device_from})
                (
                    data,
                    last_seen_time,
                    total_data_length,
                    count_per_frame_data,
                ) = self._get_device_data("/search/", parameter_device)
                logging.info(
                    "Armis Device Connector: Total length of data is %s ",
                    total_data_length,
                )
                azuresentinel.post_data(customer_id, json.dumps(data), table_name)
                logging.info(
                    "Armis Device Connector: Collected %s device data and ingested into sentinel.",
                    count_per_frame_data,
                )

                if self._data_device_from is not None:
                    checkpoint_table_object.merge(
                        "armisdevice",
                        "devicecheckpoint",
                        {"offset": self._data_device_from},
                    )
                    logging.info(
                        "Armis Device Connector: Offset updated in Checkpoint table as: "
                        + str(self._data_device_from)
                    )

            logging.info(
                "Armis Device Connector: Data collection and ingestion is completed till last_seen: {}".format(
                    last_seen_time
                )
            )
            last_seen_time = datetime.datetime.strptime(
                last_seen_time, "%Y-%m-%dT%H:%M:%S"
            )
            last_seen_time = last_seen_time.strftime("%Y-%m-%dT%H:%M:%S")
            checkpoint_table_object.merge(
                "armisdevice",
                "devicecheckpoint",
                {"last_seen": last_seen_time, "offset": 0},
            )
            logging.info(
                "Armis Device Connector: Set last_seen '{}' and offset '0' in Checkpoint table".format(
                    last_seen_time
                )
            )

        except ArmisException as err:
            logging.error(err)
            raise ArmisException(
                "Armis Device Connector: Error while processing the data."
            )
        except ArmisTimeOutException:
            raise ArmisTimeOutException()
        except ArmisDataNotFoundException:
            raise ArmisDataNotFoundException()
Fetch_device_data is used to push all the data into table.

        Args:
            checkpoint_table_object (object): Azure Storage table object.
            table_name (String): table name to store the data in microsoft sentinel.
            last_seen_not_available (bool): it is a flag that contains the value if last seen exists or not.
            last_time (String): it will contain latest time stamp.
        
Solutions/Armis/Data Connectors/ArmisDevice/ArmisDeviceSentinelConnector/__init__.py