def update_current_state(self, value: str,
                             force: bool = False) -> datetime:
        """Update the current state.

        Args:
            value (str): New value for sdp state
            force (bool): If true, ignore allowed transitions

        Returns:
            datetime, update timestamp

        Raises:
            ValueError: If the specified current state is not allowed.

        """
        value = value.lower()
        if not force:
            current_state = self.current_state
            # IF the current state is unknown, it can be set to any of the
            # allowed states, otherwise only allow certain transitions.
            if current_state == 'unknown':
                allowed_transitions = self._allowed_states
            else:
                allowed_transitions = self._allowed_transitions[current_state]
                allowed_transitions.append(current_state)

            LOG.debug('Updating current state of %s to %s', self._id, value)

            if value not in allowed_transitions:
                raise ValueError("Invalid current state update: '{}'. '{}' "
                                 "can be transitioned to states: {}"
                                 .format(value, current_state,
                                         allowed_transitions))

        return self._update_state('current', value)