def get_from_date_to_date_page_token(self, checkpoint_obj):
        """Get the from date, to date, and page token from the checkpoint data.

        If data is not available in checkpoint file, then get the start date from user input.
        If user input is not available or invalid then set from date's default value.

        Returns:
            Tuple[str, str, str]: A tuple containing the from date, to date, and page token.
        """
        __method_name = inspect.currentframe().f_code.co_name
        try:
            checkpoint_data = self.get_checkpoint_data(checkpoint_obj)
            from_date = None
            page_token = ""
            to_date = None

            if not checkpoint_data:
                start_date = self.get_start_date_of_data_fetching()
                applogger.info(
                    self.log_format.format(
                        consts.LOGS_STARTS_WITH,
                        __method_name,
                        self.azure_function_name,
                        "Checkpoint data is not available, Start fetching data from = {}".format(
                            start_date
                        ),
                    )
                )
                from_date = start_date
                to_date = datetime.datetime.now(datetime.timezone.utc).strftime(
                    consts.DATE_TIME_FORMAT
                )
            else:
                from_date = checkpoint_data.get("from_date")
                page_token = checkpoint_data.get("page_token")
                to_date = checkpoint_data.get("to_date")

                if (not page_token and from_date) or (not to_date):
                    to_date = datetime.datetime.now(datetime.timezone.utc).strftime(
                        consts.DATE_TIME_FORMAT
                    )
                if not from_date:
                    applogger.error(
                        self.log_format.format(
                            consts.LOGS_STARTS_WITH,
                            __method_name,
                            self.azure_function_name,
                            "From date is not available in checkpoint, User has manually changed checkpoint",
                        )
                    )
                    raise MimecastException()
            return from_date, to_date, page_token
        except MimecastException:
            raise MimecastException()
        except ValueError as err:
            applogger.error(
                self.log_format.format(
                    consts.LOGS_STARTS_WITH,
                    __method_name,
                    self.azure_function_name,
                    consts.VALUE_ERROR_MSG.format(err),
                )
            )
            raise MimecastException()
        except Exception as err:
            applogger.error(
                self.log_format.format(
                    consts.LOGS_STARTS_WITH,
                    __method_name,
                    self.azure_function_name,
                    consts.UNEXPECTED_ERROR_MSG.format(err),
                )
            )
            raise MimecastException()
Get the from date, to date, and page token from the checkpoint data.

        If data is not available in checkpoint file, then get the start date from user input.
        If user input is not available or invalid then set from date's default value.

        Returns:
            Tuple[str, str, str]: A tuple containing the from date, to date, and page token.
        
Solutions/Mimecast/Data Connectors/MimecastTTP/SharedCode/utils.py