diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js
index be4326930546415c4a0b49fd5d97c79e8eb119c0..68766ff3829299e58f9ad2c982c3765cf15e1019 100644
--- a/frontend-js/src/main/js/ServerConnector.js
+++ b/frontend-js/src/main/js/ServerConnector.js
@@ -892,6 +892,8 @@ ServerConnector.serialize = function (object) {
   if (object instanceof Annotation) {
     result.type = object.getType();
     result.resource = object.getResource();
+  } else if (object === undefined) {
+    result = undefined;
   } else {
     throw new Error("Unhandled object type: " + (typeof object));
   }
diff --git a/frontend-js/src/main/js/gui/admin/AddProjectDialog.js b/frontend-js/src/main/js/gui/admin/AddProjectDialog.js
index d9eb87fa1d9a5df2e2082ba39e432538396b986d..bb29ff5b380e4460fe3d50afd69e33d9b315ee25 100644
--- a/frontend-js/src/main/js/gui/admin/AddProjectDialog.js
+++ b/frontend-js/src/main/js/gui/admin/AddProjectDialog.js
@@ -738,7 +738,11 @@ AddProjectDialog.prototype.getDisease = function () {
 AddProjectDialog.prototype.getOrganism = function () {
   return $("[name='project-organism']", this.getElement()).val();
 };
-AddProjectDialog.prototype.getOrganism = function () {
+AddProjectDialog.prototype.setOrganism = function (organism) {
+  $("[name='project-organism']", this.getElement()).val(organism);
+};
+
+AddProjectDialog.prototype.getVersion = function () {
   return $("[name='project-version']", this.getElement()).val();
 };
 AddProjectDialog.prototype.getNotifyEmail = function () {
@@ -834,6 +838,7 @@ AddProjectDialog.prototype.onSaveClicked = function () {
       "cache": self.isCache(),
       "notify-email": self.getNotifyEmail(),
       "disease": self.getDisease(),
+      "version": self.getVersion(),
       "organism": self.getOrganism(),
       "sbgn": self.isSbgn(),
       "semantic-zoom": self.isSemanticZooming(),
diff --git a/frontend-js/src/main/js/map/window/ReactionInfoWindow.js b/frontend-js/src/main/js/map/window/ReactionInfoWindow.js
index cd95953aba95b1b4d21b82e8aee0725bb6942b17..d92d32e4fb6df942b00ba64dc595ce8b15a0b68c 100644
--- a/frontend-js/src/main/js/map/window/ReactionInfoWindow.js
+++ b/frontend-js/src/main/js/map/window/ReactionInfoWindow.js
@@ -69,7 +69,11 @@ ReactionInfoWindow.prototype.createContentDiv = function () {
       result.appendChild(Functions.createElement({type: "h4", content: "Kinetic law"}));
 
       if (kineticLaw.getMathMlPresentation() !== undefined) {
-        result.appendChild(Functions.createElement({type: "div", content: kineticLaw.getMathMlPresentation()}));
+        result.appendChild(Functions.createElement({
+          type: "div",
+          content: kineticLaw.getMathMlPresentation(),
+          xss: false
+        }));
       } else {
 
         result.appendChild(Functions.createElement({
@@ -93,7 +97,7 @@ ReactionInfoWindow.prototype.createContentDiv = function () {
       return Promise.all(promises);
     }).then(function (parameters) {
       result.appendChild(self.createSbmlParameterDiv(parameters));
-      result.appendChild(self.createKineticsElementsDiv(reaction.getElements()));
+      result.appendChild(self.createKineticsElementsDiv(reaction));
     }).then(function () {
       return Promise.resolve(result);
     });
@@ -141,15 +145,27 @@ ReactionInfoWindow.prototype.createSbmlParameterDiv = function (parameters) {
   return result;
 };
 
-ReactionInfoWindow.prototype.createKineticsElementsDiv = function (elements) {
+ReactionInfoWindow.prototype.createKineticsElementsDiv = function (reaction) {
   var result = Functions.createElement({type: "div"});
   result.appendChild(Functions.createElement({type: "h5", content: "Elements: "}));
   var guiUtils = new GuiUtils();
   var table = Functions.createElement({type: "div", style: "display: table;", className: "borderTable"});
-  table.appendChild(guiUtils.createTableRow(["Name", "elementId", "Constant", "Boundary condition", "Initial concentration", "Initial amount"]));
-  for (var i = 0; i < elements.length; i++) {
-    var element = elements[i];
-    table.appendChild(guiUtils.createTableRow([element.getName(), element.getElementId(), element.getConstant(), element.getBoundaryCondition(), element.getInitialConcentration(), element.getInitialAmount()]));
+  table.appendChild(guiUtils.createTableRow(["Name", "Role", "elementId", "Constant", "Boundary condition", "Initial concentration", "Initial amount"]));
+  var elements = reaction.getReactants();
+  var i, element;
+  for (i = 0; i < elements.length; i++) {
+    element = elements[i];
+    table.appendChild(guiUtils.createTableRow([element.getName(), "Reactant", element.getElementId(), element.getConstant(), element.getBoundaryCondition(), element.getInitialConcentration(), element.getInitialAmount()]));
+  }
+  elements = reaction.getProducts();
+  for (i = 0; i < elements.length; i++) {
+    element = elements[i];
+    table.appendChild(guiUtils.createTableRow([element.getName(), "Product", element.getElementId(), element.getConstant(), element.getBoundaryCondition(), element.getInitialConcentration(), element.getInitialAmount()]));
+  }
+  elements = reaction.getModifiers();
+  for (i = 0; i < elements.length; i++) {
+    element = elements[i];
+    table.appendChild(guiUtils.createTableRow([element.getName(), "Modifier", element.getElementId(), element.getConstant(), element.getBoundaryCondition(), element.getInitialConcentration(), element.getInitialAmount()]));
   }
   result.appendChild(table);
   return result;
diff --git a/frontend-js/src/test/js/ServerConnector-test.js b/frontend-js/src/test/js/ServerConnector-test.js
index 358de90d21be53977765f28462ec4aa263713476..22fc81ae7c319256c2f882850c25fa558320465d 100644
--- a/frontend-js/src/test/js/ServerConnector-test.js
+++ b/frontend-js/src/test/js/ServerConnector-test.js
@@ -59,6 +59,12 @@ describe('ServerConnector', function () {
         assert.equal(newVersion, result.getVersion());
       });
     });
+
+    it('empty data', function () {
+      var project = new Project({projectId: "empty"});
+
+      return ServerConnector.updateProject(project);
+    });
   });
   describe('removeProject', function () {
     it('default', function () {
diff --git a/frontend-js/src/test/js/gui/admin/AddProjectDialog-test.js b/frontend-js/src/test/js/gui/admin/AddProjectDialog-test.js
index f76d54a2d73f8d2c9ffd53312fc935a7d159137d..001ebcf429c7849127914323323b488b4f1d21e7 100644
--- a/frontend-js/src/test/js/gui/admin/AddProjectDialog-test.js
+++ b/frontend-js/src/test/js/gui/admin/AddProjectDialog-test.js
@@ -150,6 +150,8 @@ describe('AddProjectDialog', function () {
         assert.ok(options["disease"] !== undefined);
         assert.ok(options["organism"] !== undefined);
         assert.ok(options["sbgn"] !== undefined);
+        assert.ok(options["version"] !== undefined);
+
         assert.ok(options["semantic-zoom"] !== undefined);
       }).finally(function () {
         return dialog.destroy();
@@ -157,6 +159,16 @@ describe('AddProjectDialog', function () {
     });
   });
 
+  it('getOrganism', function () {
+    var dialog = new AddProjectDialog({
+      element: testDiv,
+      customMap: null
+    });
+    dialog.setOrganism("9606");
+    assert.equal("9606", dialog.getOrganism());
+    return dialog.destroy();
+  });
+
   describe('checkValidity', function () {
     it('invalid project name', function () {
       var dialog = new AddProjectDialog({
diff --git a/frontend-js/testFiles/apiCalls/projects/empty/PATCH_token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/projects/empty/PATCH_token=MOCK_TOKEN_ID&
new file mode 100644
index 0000000000000000000000000000000000000000..3eb029a6a4b48bea672fcad78a20ad6d4b058ef9
--- /dev/null
+++ b/frontend-js/testFiles/apiCalls/projects/empty/PATCH_token=MOCK_TOKEN_ID&
@@ -0,0 +1 @@
+{"version":"0","disease":null,"organism":null,"idObject":19187,"status":"Ok","progress":100.0,"name":"UNKNOWN DISEASE MAP","projectId":"empty","overviewImageViews":[],"topOverviewImage":null}
\ No newline at end of file
diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
index 8c0c2eda1812a616168fa520a712ec04569cab03..b037f9c1254f29fc1b9bd1634a392dd444070167 100644
--- a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
@@ -1023,7 +1023,7 @@ public class ProjectService implements IProjectService {
           if (taxonomyBackend.getNameForTaxonomy(organism) != null) {
             project.setOrganism(organism);
           } else {
-            logger.warn("No valid organism is provided for project:" + project.getName());
+            logger.warn(project.getProjectId()+"\tNo valid organism is provided for project. " + organism);
           }
 
           modelDao.update(originalModel);