diff --git a/alib/src/automaton/FSM/FSM.cpp b/alib/src/automaton/FSM/FSM.cpp
index 5d5804ecce35d8a5c013d1d0696632862b9e7f38..96b753a74c3315bdb0831283080860f3c1c68402 100644
--- a/alib/src/automaton/FSM/FSM.cpp
+++ b/alib/src/automaton/FSM/FSM.cpp
@@ -96,6 +96,34 @@ const set<TransitionFSM>& FSM::getTransitions() const {
 	return transitions;
 }
 
+const set<TransitionFSM>& FSM::getTransitionsFromState(const State& from) const {
+	if( states.find(from) == states.end())
+		throw AutomatonException("State \"" + from.getName() + "\" doesn't exist");
+
+	set<TransitionFSM> transitionsFromState;
+	for(auto const& transition : transitions){
+		if (transition.getFrom() == from){
+			transitionsFromState.insert(transition);
+		}
+	}
+
+	return transitions;
+}
+
+const set<TransitionFSM>& FSM::getTransitionsToState(const State& to) const {
+	if( states.find(to) == states.end())
+		throw AutomatonException("State \"" + to.getName() + "\" doesn't exist");
+
+	set<TransitionFSM> transitionsToState;
+	for(auto const& transition : transitions){
+		if (transition.getTo() == to){
+			transitionsToState.insert(transition);
+		}
+	}
+
+	return transitions;
+}
+
 void FSM::toXML(ostream& out) const {
 	AutomatonPrinter::toXML(*this, out);
 }
diff --git a/alib/src/automaton/FSM/FSM.h b/alib/src/automaton/FSM/FSM.h
index 9cbafba41637ebe358be9b1d62b4966ceefea941..3a1a91d8de1726752715285107bd0ba50010effa 100644
--- a/alib/src/automaton/FSM/FSM.h
+++ b/alib/src/automaton/FSM/FSM.h
@@ -67,6 +67,16 @@ public:
 	 */
 	const set<TransitionFSM>& getTransitions() const;
 
+	/**
+	 * @return automaton transitions from state
+	 */
+	const set<TransitionFSM>& getTransitionsFromState(const State& from) const;
+
+	/**
+	 * @return automaton transitions from state
+	 */
+	const set<TransitionFSM>& getTransitionsToState(const State& to) const;
+
 	/**
 	 * Determines whether FSM contains epsilon transitions.
 	 * @return true when automaton doesn't contain epsilon transitions, false otherwise