diff --git a/dmnverifierfrontend/src/main/java/de/unikoblenz/fgbks/dmn/frontend/DmnBean.java b/dmnverifierfrontend/src/main/java/de/unikoblenz/fgbks/dmn/frontend/DmnBean.java
new file mode 100644
index 0000000000000000000000000000000000000000..beb00ab80414535311938b4d899c494cb430e5cb
--- /dev/null
+++ b/dmnverifierfrontend/src/main/java/de/unikoblenz/fgbks/dmn/frontend/DmnBean.java
@@ -0,0 +1,18 @@
+package de.unikoblenz.fgbks.dmn.frontend;
+
+import java.io.Serializable;
+import javax.enterprise.context.SessionScoped;
+
+@SessionScoped
+public class DmnBean implements Serializable {
+
+  protected String dmnXml;
+
+  public String getDmnXml() {
+    return dmnXml;
+  }
+
+  public void setDmnXml(String dmnXml) {
+    this.dmnXml = dmnXml;
+  }
+}
diff --git a/dmnverifierfrontend/src/main/java/de/unikoblenz/fgbks/dmn/frontend/DmnSessionApi.java b/dmnverifierfrontend/src/main/java/de/unikoblenz/fgbks/dmn/frontend/DmnSessionApi.java
new file mode 100644
index 0000000000000000000000000000000000000000..3b316f5840929a1e0912035ec73ea0f1a3cccdbe
--- /dev/null
+++ b/dmnverifierfrontend/src/main/java/de/unikoblenz/fgbks/dmn/frontend/DmnSessionApi.java
@@ -0,0 +1,34 @@
+package de.unikoblenz.fgbks.dmn.frontend;
+
+import javax.inject.Inject;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+@Path("/dmn")
+public class DmnSessionApi {
+
+  @Inject
+  DmnBean dmnBean;
+
+  @GET
+  @Path("/getdmn")
+  @Produces(MediaType.TEXT_XML)
+  public Response getSessionDmn() {
+    if (dmnBean.getDmnXml() == null) {
+      return Response.noContent().build();
+    }
+    return Response.ok(dmnBean.getDmnXml()).build();
+  }
+
+  @POST
+  @Path("/setdmn")
+  @Consumes(MediaType.TEXT_XML)
+  public void setSessionDmn(String dmnXml) {
+    dmnBean.setDmnXml(dmnXml);
+  }
+}
diff --git a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnUpDownload.js b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnUpDownload.js
index 9bc2b55dc70b618de5bb3f1cc907d4ca0e7bc987..83295f03bbe4f855d2a6bf69d44f4caaad0ef8bb 100644
--- a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnUpDownload.js
+++ b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnUpDownload.js
@@ -1,7 +1,9 @@
-document.addEventListener("DOMContentLoaded", function () {
+$(document).ready(function () {
   $('#dmn-file-upload').on('change', loadDmnFromFile);
   $('#dmn-file-empty').on('click', loadEmptyFile);
-  $('#dmn-file-download').on('click', exportDiagram);
+  $('#dmn-file-download').on('click', download);
+  // try to load dmn from session
+  loadSessionDmn();
 });
 
 function loadDmnFromFile(evt) {
@@ -26,13 +28,53 @@ function loadEmptyFile() {
   });
 }
 
-function download(filename, dmnXml) {
-  let el = document.createElement('a');
-  el.setAttribute('href',
-      'data:text/xml;charset=utf-8,' + encodeURIComponent(dmnXml));
-  el.setAttribute('download', filename);
-  el.style.display = 'none';
-  document.body.appendChild(el);
-  el.click();
-  document.body.removeChild(el);
+function download() {
+  let dmnXml = exportDiagram();
+  console.log("xxx:" + dmnXml);
+  if (dmnXml !== undefined) {
+    let el = document.createElement('a');
+    el.setAttribute('href',
+        'data:text/xml;charset=utf-8,' + dmnXml);
+    el.setAttribute('download', "dmnTable.dmn");
+    el.style.display = 'none';
+    document.body.appendChild(el);
+    el.click();
+    document.body.removeChild(el);
+  }
+}
+
+let oSerializer = new XMLSerializer();
+
+function loadSessionDmn() {
+  $.ajax({
+    timeout: 1000,
+    url: "/dmn/getdmn",
+    type: 'GET',
+    contentType: 'text/xml',
+    error: function (err) {
+      // nothing
+      console.log(">-->--> loading session dmn failed. <--<--<");
+      // loading empty dmn
+      loadEmptyFile();
+    },
+    success: function (data) {
+      let sXML = oSerializer.serializeToString(data);
+      openDiagram(sXML);
+    }
+  });
+}
+
+function saveSessionDmn() {
+  let dmnXml = exportDiagram();
+  $.ajax({
+    timeout: 1000,
+    url: "/dmn/setdmn",
+    type: 'POST',
+    contentType: 'text/xml',
+    data: dmnXml,
+    error: function (err) {
+      // nothing
+      console.log(">-->--> saving session dmn failed. <--<--<");
+    }
+  });
 }
diff --git a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifier.js b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifier.js
index 691014e0f6a8e9c4a9a9f9122749cf278207a607..bc7c9ac8b764276d3e0cb56f4ed4f954393869fd 100644
--- a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifier.js
+++ b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifier.js
@@ -47,7 +47,6 @@ function loadAvailableTypes() {
     timeout: 1000,
     url: dmnApi + 'verification/types',
     type: 'GET',
-    contentType: 'text/xml',
     error: function (err) {
       inactiveBackend = true;
       handleStatus();
@@ -117,6 +116,7 @@ function cleanDmnVerifierRoot() {
 
 function checkVerifications() {
   cleanDmnVerifierRoot();
+  saveSessionDmn();
   getVerifications();
 }
 
diff --git a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnViewer.js b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnViewer.js
index 19788d5eac86c567f6aae408845e991dcfe6265b..d5037a8278b07c318130e83f43bc87d5fc9c9def 100644
--- a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnViewer.js
+++ b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnViewer.js
@@ -28,6 +28,8 @@ let dmnModeler = new DmnJS({
 });
 
 dmnModeler.on('views.changed', function (event) {
+  // save dmn in Session
+  saveSessionDmn();
   var {views, activeView} = event;
   // clear tabs
   $tabs.empty();
@@ -48,14 +50,16 @@ dmnModeler.on('views.changed', function (event) {
  * Save diagram contents and print them to the console.
  */
 function exportDiagram() {
-  dmnModeler.saveXML({format: true}, function (err, xml) {
+  let retXml = undefined;
+  dmnModeler.saveXML({format: false}, function (err, xml) {
     if (err) {
-      return console.log('could not save DMN 1.1 diagram');
+      console.log('could not export DMN 1.1 diagram');
     } else {
-      console.log('saving dmn..');
+      console.log('exporting DMN 1.1 diagram..');
+      retXml = xml;
     }
-    download("dmnTable.dmn", xml);
   });
+  return retXml;
 }
 
 /**