diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionParser.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionParser.java
index be0d6950ae83dc07f3b48d1a24af59b1f0d8824a..2675a9451b07b81bbef9fd28c8cf2e95bd864500 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionParser.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionParser.java
@@ -439,10 +439,18 @@ public class SbmlReactionParser extends SbmlBioEntityParser {
     }
     for (SpeciesReference reactant : sbmlReaction.getListOfReactants()) {
       Species element = minervaModel.getElementByElementId(reactant.getSpecies());
+      if (element == null) {
+        throw new InvalidInputDataExecption(
+            eu.getElementTag(reaction) + "Species with id " + reactant.getSpecies() + " cannot be found");
+      }
       reaction.addReactant(new Reactant(element));
     }
     for (SpeciesReference product : sbmlReaction.getListOfProducts()) {
       Species element = minervaModel.getElementByElementId(product.getSpecies());
+      if (element == null) {
+        throw new InvalidInputDataExecption(
+            eu.getElementTag(reaction) + "Species with id " + product.getSpecies() + " cannot be found");
+      }
       reaction.addProduct(new Product(element));
     }
 
diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesParser.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesParser.java
index 53e3112ee5f94ec1a78214cc60c8fd5fa1223799..fc85d01719fe24672c6cf84bf32d91ac7957d6f9 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesParser.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesParser.java
@@ -26,6 +26,9 @@ import lcsb.mapviewer.model.map.species.Unknown;
 public class SbmlSpeciesParser extends SbmlElementParser<org.sbml.jsbml.Species> {
   Logger logger = Logger.getLogger(SbmlSpeciesParser.class);
 
+  private static String ARTIFITIAL_SINK_ID = "sbml_artifitial_sink";
+  private static String ARTIFITIAL_SOURCE_ID = "sbml_artifitial_source";
+
   public SbmlSpeciesParser(Layout layout, lcsb.mapviewer.model.map.model.Model minervaModel) {
     super(layout, minervaModel);
   }
@@ -70,7 +73,10 @@ public class SbmlSpeciesParser extends SbmlElementParser<org.sbml.jsbml.Species>
         compartmentId = ((org.sbml.jsbml.Species) sbmlLayout.getSpeciesGlyph(element.getElementId())
             .getSpeciesInstance()).getCompartment();
       } else {
-        compartmentId = sbmlModel.getSpecies(element.getElementId()).getCompartment();
+        if (!element.getElementId().equals(ARTIFITIAL_SINK_ID)
+            && !element.getElementId().equals(ARTIFITIAL_SOURCE_ID)) {
+          compartmentId = sbmlModel.getSpecies(element.getElementId()).getCompartment();
+        }
       }
       assignCompartment(element, compartmentId);
     }
@@ -123,10 +129,9 @@ public class SbmlSpeciesParser extends SbmlElementParser<org.sbml.jsbml.Species>
   }
 
   public Species getArtifitialInput() {
-    String artifitialId = "sbml_artifitial_source";
-    Species result = minervaModel.getElementByElementId(artifitialId);
+    Species result = minervaModel.getElementByElementId(ARTIFITIAL_SOURCE_ID);
     if (result == null) {
-      result = new Unknown(artifitialId);
+      result = new Unknown(ARTIFITIAL_SOURCE_ID);
       result.setName("Artifitial source");
       minervaModel.addElement(result);
     }
@@ -134,10 +139,9 @@ public class SbmlSpeciesParser extends SbmlElementParser<org.sbml.jsbml.Species>
   }
 
   public Species getArtifitialOutput() {
-    String artifitialId = "sbml_artifitial_sink";
-    Species result = minervaModel.getElementByElementId(artifitialId);
+    Species result = minervaModel.getElementByElementId(ARTIFITIAL_SINK_ID);
     if (result == null) {
-      result = new Degraded(artifitialId);
+      result = new Degraded(ARTIFITIAL_SINK_ID);
       result.setName("Artifitial sink");
       minervaModel.addElement(result);
     }
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/Product.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/Product.java
index 30a69c2fc08177226a44eacd77921c7bd48d015a..110dcddb571cc96fa8c0f39a3e80e9b68e8aac9f 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/reaction/Product.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/Product.java
@@ -3,6 +3,7 @@ package lcsb.mapviewer.model.map.reaction;
 import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
+import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Species;
@@ -39,7 +40,10 @@ public class Product extends ReactionNode {
 	 *          element that represent this product
 	 */
 	public Product(Element element) {
-		super(element);
+      super(element);
+	  if (element==null) {
+	    throw new InvalidArgumentException("Element cannot be null");
+	  }
 	}
 
 	/**
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/Reactant.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/Reactant.java
index a8d1910a6403505165828b154f8bfbcfbf901f5c..aadfb454e292c9fcffaccd18a4aa2877821d3e48 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/reaction/Reactant.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/Reactant.java
@@ -3,6 +3,7 @@ package lcsb.mapviewer.model.map.reaction;
 import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
+import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Species;
@@ -40,6 +41,9 @@ public class Reactant extends ReactionNode {
 	 */
 	public Reactant(Element element) {
 		super(element);
+	      if (element==null) {
+	        throw new InvalidArgumentException("Element cannot be null");
+	      }
 	}
 
 	/**