diff --git a/.bumpversion.cfg b/.bumpversion.cfg
index a0c10f8e63abfd3df157ed44d700aa9cceea78b6..1c6836a274bbebd34431846d566a5fc2c66ee298 100644
--- a/.bumpversion.cfg
+++ b/.bumpversion.cfg
@@ -1,5 +1,5 @@
 [bumpversion]
-current_version = 2.8.1
+current_version = 2.8.4
 commit = True
 tag = True
 tag_name = {new_version}
diff --git a/hbp.yml b/hbp.yml
index 02066a86c0d140fed69d9ea6531cec471db509b7..5151973f18ab9302f37721a915118fb66869ebd5 100644
--- a/hbp.yml
+++ b/hbp.yml
@@ -58,9 +58,9 @@ testing:
     command: ./test.sh
 
 release_management:
-  current_version: 2.8.1
-  current_code_release: https://github.com/HBPMedical/portal-backend/archive/2.8.1.zip
-  current_binary_release: https://pypi.python.org/pypi/portal-backend/2.8.1
+  current_version: 2.8.4
+  current_code_release: https://github.com/HBPMedical/portal-backend/archive/2.8.4.zip
+  current_binary_release: https://pypi.python.org/pypi/portal-backend/2.8.4
   release_script: 'publish.sh'
 
 continuous_integration:
@@ -75,10 +75,10 @@ continuous_integration:
 distribution:
   docker_hub:
     name: hbpmip/portal-backend
-    current_tag: 2.8.1
+    current_tag: 2.8.4
     url: https://hub.docker.com/r/hbpmip/portal-backend/
     badge: https://img.shields.io/badge/docker-hbpmip%2Fportal--backend-008bb8.svg
-    command: docker pull hbpmip/portal-backend:2.8.1
+    command: docker pull hbpmip/portal-backend:2.8.4
 
 planning:
   github:
diff --git a/pom.xml b/pom.xml
index 965b0c07a7ef5332bd378e9268413dbc7f4d9027..76a85838526cc5c1aaa9bae903ff6b8acb192250 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
 
     <groupId>eu.hbp.mip</groupId>
     <artifactId>portal-backend</artifactId>
-    <version>2.8.1</version><!-- BUMP_VERSION -->
+    <version>2.8.4</version><!-- BUMP_VERSION -->
     <packaging>jar</packaging>
 
     <name>portal-backend</name>
@@ -47,7 +47,7 @@
         <spring-data-jpa.version>1.10.11.RELEASE</spring-data-jpa.version>
         <spring-boot-starter-actuator.version>1.4.7.RELEASE</spring-boot-starter-actuator.version>
         <aspectjweaver.version>1.8.9</aspectjweaver.version>
-        <woken-messages.version>2.7.5</woken-messages.version>
+        <woken-messages.version>2.8.1</woken-messages.version>
         <javax-inject.version>1</javax-inject.version>
         <akka.version>2.5.12</akka.version>
         <spring-context.version>4.3.4.RELEASE</spring-context.version>
@@ -249,6 +249,12 @@
             <version>${scala.release.version}</version>
             <scope>compile</scope>
         </dependency>
+
+        <dependency>
+            <groupId>com.bugsnag</groupId>
+            <version>[3.0,4.0)</version>
+            <artifactId>bugsnag</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/src/main/java/eu/hbp/mip/configuration/AkkaConfiguration.java b/src/main/java/eu/hbp/mip/configuration/AkkaConfiguration.java
index 4f4ae846fc8b0e89d3a87c334f03a32948026846..59375f7ab4916753bf108ead11e9a37d9ebd59cd 100644
--- a/src/main/java/eu/hbp/mip/configuration/AkkaConfiguration.java
+++ b/src/main/java/eu/hbp/mip/configuration/AkkaConfiguration.java
@@ -4,9 +4,11 @@ import akka.actor.ActorRef;
 import akka.actor.ActorSystem;
 import akka.actor.ExtendedActorSystem;
 import akka.cluster.Cluster;
+import akka.cluster.Member;
 import akka.cluster.pubsub.DistributedPubSub;
 import com.typesafe.config.Config;
 import com.typesafe.config.ConfigFactory;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -15,6 +17,7 @@ import org.springframework.context.annotation.*;
 
 import java.util.List;
 import java.util.concurrent.Semaphore;
+import java.util.concurrent.TimeUnit;
 
 import static eu.hbp.mip.akka.SpringExtension.SPRING_EXTENSION_PROVIDER;
 
@@ -73,11 +76,18 @@ class AkkaConfiguration {
                     semaphore.release();
                 });
 
-        try {
-            semaphore.acquire();
-            Thread.sleep(5000);
-        } catch (InterruptedException e) {
-            LOGGER.warn("Cannot wait for Akka cluster start", e);
+        for (Member member: cluster.state().getMembers()) {
+            LOGGER.info("Member " + StringUtils.join(member.getRoles(), ",") + " at " + member.address().toString() + " is in the cluster");
+        }
+
+        if (cluster.state().members().size() < 2) {
+            LOGGER.info("Waiting for Woken cluster connection...");
+            try {
+                semaphore.tryAcquire(5, TimeUnit.MINUTES);
+                Thread.sleep(5000);
+            } catch (InterruptedException e) {
+                LOGGER.warn("Cannot wait for Akka cluster start", e);
+            }
         }
 
         Runtime.getRuntime().addShutdownHook(new Thread(() -> {
diff --git a/src/main/java/eu/hbp/mip/configuration/BugsnagConfig.java b/src/main/java/eu/hbp/mip/configuration/BugsnagConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..c399706049a7cb4b1a7129c2174c13bc4f8721c0
--- /dev/null
+++ b/src/main/java/eu/hbp/mip/configuration/BugsnagConfig.java
@@ -0,0 +1,13 @@
+package eu.hbp.mip.configuration;
+
+import com.bugsnag.Bugsnag;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class BugsnagConfig {
+    @Bean
+    public Bugsnag bugsnag() {
+        return new Bugsnag("dff301aa15eb795a6d8b22b600586f77");
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java
index 9000271a9dfa9f0624ea3e26cc310c84a34279c0..c3d1de874308576c07f27304e167f56a85bc6605 100644
--- a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java
@@ -135,7 +135,9 @@ public class ModelsApi {
 
         configRepository.save(model.getConfig());
         queryRepository.save(model.getQuery());
-        datasetRepository.save(model.getDataset());
+        if (model.getDataset() != null) {
+            datasetRepository.save(model.getDataset());
+        }
         modelRepository.save(model);
 
         LOGGER.info("Model saved (also saved model.config and model.query)");
diff --git a/src/main/java/eu/hbp/mip/model/Experiment.java b/src/main/java/eu/hbp/mip/model/Experiment.java
index c3a306017259dcdf71443909de06e7ba195cc3ea..00a3d11f5f408e249ef05805963f6978db6f5fd5 100644
--- a/src/main/java/eu/hbp/mip/model/Experiment.java
+++ b/src/main/java/eu/hbp/mip/model/Experiment.java
@@ -103,7 +103,7 @@ public class Experiment {
         Type algoList = new TypeToken<LinkedList<eu.hbp.mip.model.Algorithm>>(){}.getType();
         List<eu.hbp.mip.model.Algorithm> algos = new Gson().fromJson(this.algorithms, algoList);
         for (eu.hbp.mip.model.Algorithm a: algos) {
-            algorithms.add(new AlgorithmSpec(a.getCode(), TypesConvert.algoParamsToScala(a.getParameters())));
+            algorithms.add(new AlgorithmSpec(a.getCode(), TypesConvert.algoParamsToScala(a.getParameters()), Option.empty()));
         }
 
         List<ValidationSpec> validations = new LinkedList<>();
diff --git a/src/main/java/eu/hbp/mip/model/MiningQuery.java b/src/main/java/eu/hbp/mip/model/MiningQuery.java
index 51cb91c3a7dc033c247be43617e0ed168ed1d39b..908ef52193221feec68520c88662d9e3ac7b5b56 100644
--- a/src/main/java/eu/hbp/mip/model/MiningQuery.java
+++ b/src/main/java/eu/hbp/mip/model/MiningQuery.java
@@ -90,7 +90,7 @@ public class MiningQuery {
     public ch.chuv.lren.woken.messages.query.MiningQuery prepareQuery(String user) {
 
         ch.chuv.lren.woken.messages.query.AlgorithmSpec scalaAlgorithm = new ch.chuv.lren.woken.messages.query.AlgorithmSpec(
-                algorithm.getCode(), TypesConvert.algoParamsToScala(algorithm.getParameters()));
+                algorithm.getCode(), TypesConvert.algoParamsToScala(algorithm.getParameters()), Option.empty());
 
         scala.collection.immutable.List<FeatureIdentifier> variablesSeq =
                 TypesConvert.variablesToIdentifiers(getVariables());