diff --git a/src/main/java/org/hbp/mip/MIPApplication.java b/src/main/java/org/hbp/mip/MIPApplication.java
index 60917bce92952e21ef00365c4b1d7404de9be309..59516ca1705aa9d8b49c178f35e9c6d3ef002d56 100644
--- a/src/main/java/org/hbp/mip/MIPApplication.java
+++ b/src/main/java/org/hbp/mip/MIPApplication.java
@@ -97,12 +97,12 @@ public class MIPApplication extends WebSecurityConfigurerAdapter {
 
     @Autowired
     HttpSessionCsrfTokenRepository httpSessionCsrfTokenRepository;
-    
+
     @Autowired
     OAuth2ClientAuthenticationProcessingFilter hbpFilter;
 
 
-public static void main(String[] args) {
+    public static void main(String[] args) {
         SpringApplication.run(MIPApplication.class, args);
     }
 
@@ -112,7 +112,7 @@ public static void main(String[] args) {
         return userAuthentication.getDetails().toString();
     }
 
-     /**
+    /**
      * returns the user for the current session.
      *
      * the "synchronized" keyword is there to avoid a bug that the transaction is supposed to protect me from.
@@ -123,20 +123,20 @@ public static void main(String[] args) {
      * - check you have no 500 error in the network logs.
      * @return
      */
-     public synchronized User getUser() {
-         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
-         User user = new User(getUserInfos());
-         try {
-             session.beginTransaction();
-             session.merge(user);
-             session.getTransaction().commit();
-         } catch (Exception e)
-         {
-             if(session.getTransaction() != null)
-             {
-                 session.getTransaction().rollback();
-             }
-         }
+    public synchronized User getUser() {
+        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+        User user = new User(getUserInfos());
+        try {
+            session.beginTransaction();
+            session.merge(user);
+            session.getTransaction().commit();
+        } catch (Exception e)
+        {
+            if(session.getTransaction() != null)
+            {
+                session.getTransaction().rollback();
+            }
+        }
 
         return user;
     }
@@ -187,18 +187,26 @@ public static void main(String[] args) {
                                          @ApiParam(value = "Has the user agreed on the NDA") @RequestParam(value = "agreeNDA", required = true) Boolean agreeNDA) {
         ObjectMapper mapper = new ObjectMapper();
         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
-        session.beginTransaction();
-        User user = (User) session
-            .createQuery("from User where username= :username")
-            .setString("username", principal.getName())
-            .uniqueResult();
-        if (user != null) {
-            user.setAgreeNDA(agreeNDA);
-            session.update(user);
+        try {
+            session.beginTransaction();
+            User user = (User) session
+                    .createQuery("from User where username= :username")
+                    .setString("username", principal.getName())
+                    .uniqueResult();
+            if (user != null) {
+                user.setAgreeNDA(agreeNDA);
+                session.update(user);
+            }
+            session.getTransaction().commit();
+        } catch (Exception e)
+        {
+            if(session.getTransaction() != null)
+            {
+                session.getTransaction().rollback();
+            }
         }
-        session.getTransaction().commit();
 
-        return new ResponseEntity<Void>(HttpStatus.OK);
+        return new ResponseEntity<>(HttpStatus.OK);
     }
 
     @Override
diff --git a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java
index 244853f7e6786b76821c88bf64b67e337a63dc90..fa754bf084b520bea235c55c05b855531c467b97 100644
--- a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java
+++ b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java
@@ -28,10 +28,10 @@ import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
 @Api(value = "/articles", description = "the articles API")
 public class ArticlesApi {
 
-	@Autowired
-	MIPApplication mipApplication;
+    @Autowired
+    MIPApplication mipApplication;
 
-	@ApiOperation(value = "Get articles", response = Article.class, responseContainer = "List")
+    @ApiOperation(value = "Get articles", response = Article.class, responseContainer = "List")
     @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") })
     @RequestMapping(method = RequestMethod.GET)
     public ResponseEntity<List> getArticles(
@@ -61,25 +61,28 @@ public class ArticlesApi {
 
         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
         List articles = new LinkedList<>();
+        try {
             session.beginTransaction();
             Query query = session.createQuery(queryString);
-            if(status != null)
-            {
+            if (status != null) {
                 query.setString("status", status);
             }
-            if(own != null && own)
-            {
+            if (own != null && own) {
                 query.setString("username", user.getUsername());
-            }
-            else
-            {
-                if(team != null && team)
-                {
+            } else {
+                if (team != null && team) {
                     query.setString("team", user.getTeam());
                 }
             }
             articles = query.list();
             session.getTransaction().commit();
+        } catch (Exception e)
+        {
+            if(session.getTransaction() != null)
+            {
+                session.getTransaction().rollback();
+            }
+        }
 
 
         return ResponseEntity.ok(articles);
diff --git a/src/main/java/org/hbp/mip/controllers/ModelsApi.java b/src/main/java/org/hbp/mip/controllers/ModelsApi.java
index e9b482cb02138ea9094989082f0466b9785c25b4..f930e7a556b1a70eb7c05c83fe9990217fb50bd7 100644
--- a/src/main/java/org/hbp/mip/controllers/ModelsApi.java
+++ b/src/main/java/org/hbp/mip/controllers/ModelsApi.java
@@ -29,10 +29,10 @@ import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
 @javax.annotation.Generated(value = "class io.swagger.codegen.languages.SpringMVCServerCodegen", date = "2016-01-07T07:38:20.227Z")
 public class ModelsApi {
 
-	@Autowired
-	MIPApplication mipApplication;
+    @Autowired
+    MIPApplication mipApplication;
 
-	private static final String DATA_FILE = "data/values.csv";
+    private static final String DATA_FILE = "data/values.csv";
 
     @ApiOperation(value = "Get models", response = Model.class, responseContainer = "List")
     @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") })
@@ -109,9 +109,17 @@ public class ModelsApi {
 
         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
 
+        try {
             session.beginTransaction();
             session.save(model);
             session.getTransaction().commit();
+        } catch (Exception e)
+        {
+            if(session.getTransaction() != null)
+            {
+                session.getTransaction().rollback();
+            }
+        }
 
 
         return new ResponseEntity<Model>(HttpStatus.OK).ok(model);
@@ -128,62 +136,80 @@ public class ModelsApi {
         Model model = null;
         Query query;
 
+        try {
             session.beginTransaction();
             query = session.createQuery("FROM Model WHERE slug= :slug").setString("slug", slug);
             model = (Model) query.uniqueResult();
             session.getTransaction().commit();
 
+        } catch (Exception e)
+        {
+            if(session.getTransaction() != null)
+            {
+                session.getTransaction().rollback();
+            }
+        }
+
 
         if(model != null) {
             session = HibernateUtil.getSessionFactory().getCurrentSession();
+            org.hbp.mip.model.Query q = null;
 
+            try {
                 session.beginTransaction();
                 query = session.createQuery("FROM Query WHERE id= :id").setLong("id", model.getQuery().getId());
-                org.hbp.mip.model.Query q = (org.hbp.mip.model.Query) query.uniqueResult();
+                q = (org.hbp.mip.model.Query) query.uniqueResult();
                 session.getTransaction().commit();
-
-                List<Variable> vars = new LinkedList<>();
-                for (Variable var : q.getVariables()) {
-                    Variable v = new Variable();
-                    v.setCode(var.getCode());
-                    vars.add(v);
+            } catch (Exception e)
+            {
+                if(session.getTransaction() != null)
+                {
+                    session.getTransaction().rollback();
                 }
+            }
 
-                List<Variable> covs = new LinkedList<>();
-                for (Variable cov : q.getCovariables()) {
-                    Variable v = new Variable();
-                    v.setCode(cov.getCode());
-                    covs.add(v);
-                }
+            List<Variable> vars = new LinkedList<>();
+            for (Variable var : q.getVariables()) {
+                Variable v = new Variable();
+                v.setCode(var.getCode());
+                vars.add(v);
+            }
 
-                List<Variable> grps = new LinkedList<>();
-                for (Variable grp : q.getGrouping()) {
-                    Variable v = new Variable();
-                    v.setCode(grp.getCode());
-                    grps.add(v);
-                }
+            List<Variable> covs = new LinkedList<>();
+            for (Variable cov : q.getCovariables()) {
+                Variable v = new Variable();
+                v.setCode(cov.getCode());
+                covs.add(v);
+            }
 
-                List<Filter> fltrs = new LinkedList<>();
-                for (Filter fltr : q.getFilters()) {
-                    Filter f = new Filter();
-                    f.setId(fltr.getId());
-                    f.setOperator(fltr.getOperator());
-                    f.setValues(fltr.getValues());
-                    f.setVariable(fltr.getVariable());
-                    fltrs.add(f);
-                }
+            List<Variable> grps = new LinkedList<>();
+            for (Variable grp : q.getGrouping()) {
+                Variable v = new Variable();
+                v.setCode(grp.getCode());
+                grps.add(v);
+            }
+
+            List<Filter> fltrs = new LinkedList<>();
+            for (Filter fltr : q.getFilters()) {
+                Filter f = new Filter();
+                f.setId(fltr.getId());
+                f.setOperator(fltr.getOperator());
+                f.setValues(fltr.getValues());
+                f.setVariable(fltr.getVariable());
+                fltrs.add(f);
+            }
 
-                org.hbp.mip.model.Query myQuery = new org.hbp.mip.model.Query();
-                myQuery.setId(q.getId());
-                myQuery.setVariables(vars);
-                myQuery.setCovariables(covs);
-                myQuery.setGrouping(grps);
-                myQuery.setFilters(fltrs);
+            org.hbp.mip.model.Query myQuery = new org.hbp.mip.model.Query();
+            myQuery.setId(q.getId());
+            myQuery.setVariables(vars);
+            myQuery.setCovariables(covs);
+            myQuery.setGrouping(grps);
+            myQuery.setFilters(fltrs);
 
-                model.setQuery(myQuery);
+            model.setQuery(myQuery);
 
-                Dataset ds = CSVUtil.parseValues(DATA_FILE, model.getQuery());
-                model.setDataset(ds);
+            Dataset ds = CSVUtil.parseValues(DATA_FILE, model.getQuery());
+            model.setDataset(ds);
 
         }