public function requestState($stateValue, $runValidation=true)
	{
		//validate state and that it doesn't have it already
		$this->stateExists($stateValue, true);
		if ($this->isInState($stateValue)) {
			$reqStateCfg = $this->getStateConfig($stateValue);
			$msg = Yii::t('app', 'The model is already in the requested state {state}', ['state'=>$reqStateCfg['label']]);
			throw new InvalidCallException($msg);
		}

		//try advancing
		$transaction = Yii::$app->db->beginTransaction();
		while (!$this->isInState($stateValue)) {
			if ($this->advanceOneState(true)) {
				if (!$this->saveStateAttribute($runValidation)) {
					$transaction->rollBack();
					return false;
				}
			} else {
				break;
			}
		}

		$transaction->commit();
		return $this->isEqualOrHigherThanState($stateValue);
	}