diff --git a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java
index dc67e1c1e79d0e9daf619f54c26770b298f0cc05..f31008209ebfd8703dbf793f5fcecf3347b2c514 100644
--- a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java
+++ b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java
@@ -100,25 +100,55 @@ public class ArticlesApi {
 
         User user = mipApplication.getUser();
 
+        String originalTitle = article.getTitle();
+
         article.setCreatedAt(new Date());
         if (article.getStatus().equals("published")) {
             article.setPublishedAt(new Date());
         }
-
-        Slugify slg = null;
-        try {
-            slg = new Slugify();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        String slug = slg.slugify(article.getTitle());
-
-        article.setSlug(slug);
         article.setCreatedBy(user);
 
         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
         try{
             session.beginTransaction();
+
+            Long count;
+            int i = 0;
+            do {
+                Slugify slg = null;
+                try {
+                    slg = new Slugify();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+                String slug = slg.slugify(article.getTitle());
+                article.setSlug(slug);
+
+                count = (Long) session
+                        .createQuery("select count(*) from Article where slug= :slug")
+                        .setString("slug", slug)
+                        .uniqueResult();
+                if(count > 0)
+                {
+                    String title = article.getTitle();
+                    if(i > 0)
+                    {
+                        title = title.substring(0, title.length()-4);
+                    }
+                    i++;
+                    article.setTitle(title + " (" + i + ")");
+                }
+            } while(count > 0);
+
+            count = (Long) session
+                    .createQuery("select count(*) from Article where title= :title")
+                    .setString("title", originalTitle)
+                    .uniqueResult();
+            if(count < 1)
+            {
+                article.setTitle(originalTitle);
+            }
+
             session.save(article);
             session.getTransaction().commit();
         } catch (Exception e)
@@ -144,9 +174,10 @@ public class ArticlesApi {
         Article article = null;
         try{
             session.beginTransaction();
-            Query query = session.createQuery("FROM Article WHERE slug= :slug");
-            query.setString("slug", slug);
-            article = (Article) query.uniqueResult();
+            article = (Article) session
+                    .createQuery("FROM Article WHERE slug= :slug")
+                    .setString("slug", slug)
+                    .uniqueResult();
             session.getTransaction().commit();
         } catch (Exception e)
         {
@@ -171,6 +202,31 @@ public class ArticlesApi {
         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
         try{
             session.beginTransaction();
+
+            String oldTitle = (String) session
+                    .createQuery("select title from Article where slug= :slug")
+                    .setString("slug", slug)
+                    .uniqueResult();
+
+            if(!oldTitle.equals(article.getTitle())) {
+                Long count;
+                int i = 0;
+                do {
+                    String title = article.getTitle();
+                    count = (Long) session
+                            .createQuery("select count(*) from Article where title= :title")
+                            .setString("title", title)
+                            .uniqueResult();
+                    if (count > 0 && !oldTitle.equals(title)) {
+                        if (i > 0) {
+                            title = title.substring(0, title.length() - 4);
+                        }
+                        i++;
+                        article.setTitle(title + " (" + i + ")");
+                    }
+                } while (count > 0 && !oldTitle.equals(article.getTitle()));
+            }
+
             session.update(article);
             session.getTransaction().commit();
         } catch (Exception e)
diff --git a/src/main/java/org/hbp/mip/controllers/DatasetsApi.java b/src/main/java/org/hbp/mip/controllers/DatasetsApi.java
index 35671ac1330f3df1e3437a45fc031a4a0b1c5943..c71623e7da4111e1212691e8b12ef6631dfccba5 100644
--- a/src/main/java/org/hbp/mip/controllers/DatasetsApi.java
+++ b/src/main/java/org/hbp/mip/controllers/DatasetsApi.java
@@ -8,7 +8,6 @@ package org.hbp.mip.controllers;
 import io.swagger.annotations.*;
 import org.hbp.mip.model.Dataset;
 import org.hbp.mip.utils.HibernateUtil;
-import org.hibernate.Query;
 import org.hibernate.Session;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -34,9 +33,10 @@ public class DatasetsApi {
         Dataset dataset = null;
         try{
             session.beginTransaction();
-            Query query = session.createQuery("from Dataset where code= :code");
-            query.setString("code", code);
-            dataset = (Dataset) query.uniqueResult();
+            dataset = (Dataset) session
+                    .createQuery("from Dataset where code= :code")
+                    .setString("code", code)
+                    .uniqueResult();
             session.getTransaction().commit();
         } catch (Exception e)
         {
diff --git a/src/main/java/org/hbp/mip/controllers/GroupsApi.java b/src/main/java/org/hbp/mip/controllers/GroupsApi.java
index cbe99321bde4f6f13df99abadd099d77f17c9f4c..49e6853bf92d911e43a33066fceda1b8192ccac5 100644
--- a/src/main/java/org/hbp/mip/controllers/GroupsApi.java
+++ b/src/main/java/org/hbp/mip/controllers/GroupsApi.java
@@ -34,9 +34,10 @@ public class GroupsApi {
         Group group = null;
         try{
             session.beginTransaction();
-            org.hibernate.Query query = session.createQuery("FROM Group WHERE code= :code");
-            query.setString("code", rootCode);
-            group = (Group) query.uniqueResult();
+            group = (Group) session
+                    .createQuery("FROM Group WHERE code= :code")
+                    .setString("code", rootCode)
+                    .uniqueResult();
             session.getTransaction().commit();
         } catch (Exception e)
         {
diff --git a/src/main/java/org/hbp/mip/controllers/ModelsApi.java b/src/main/java/org/hbp/mip/controllers/ModelsApi.java
index ba4ae5e8fa3fe75c59eaa9c86965571ded3a4666..c86d20d75972ba9d88ddf5aa3f10c5cb869179e0 100644
--- a/src/main/java/org/hbp/mip/controllers/ModelsApi.java
+++ b/src/main/java/org/hbp/mip/controllers/ModelsApi.java
@@ -103,15 +103,8 @@ public class ModelsApi {
 
         User user = mipApplication.getUser();
 
-        Slugify slg = null;
-        try {
-            slg = new Slugify();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        String slug = slg.slugify(model.getConfig().getTitle().get("text"));
+        String originalTitle = model.getTitle();
 
-        model.setSlug(slug);
         model.setTitle(model.getConfig().getTitle().get("text"));
         model.setValid(true);
         model.setCreatedBy(user);
@@ -121,6 +114,45 @@ public class ModelsApi {
 
         try {
             session.beginTransaction();
+            Long count;
+            int i = 0;
+
+            do {
+                Slugify slg = null;
+                try {
+                    slg = new Slugify();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+                String slug = slg.slugify(model.getTitle());
+                model.setSlug(slug);
+
+                count = (Long) session
+                        .createQuery("select count(*) from Model where slug= :slug")
+                        .setString("slug", slug)
+                        .uniqueResult();
+                if(count > 0)
+                {
+                    String title = model.getTitle();
+                    if(i > 0)
+                    {
+                        title = title.substring(0, title.length()-4);
+                    }
+                    i++;
+                    model.setTitle(title + " (" + i + ")");
+                }
+
+            } while (count > 0);
+
+            count = (Long) session
+                    .createQuery("select count(*) from Article where title= :title")
+                    .setString("title", originalTitle)
+                    .uniqueResult();
+            if(count < 1)
+            {
+                model.setTitle(originalTitle);
+            }
+
             session.save(model);
             session.getTransaction().commit();
         } catch (Exception e)
@@ -148,8 +180,10 @@ public class ModelsApi {
 
         try {
             session.beginTransaction();
-            query = session.createQuery("FROM Model WHERE slug= :slug").setString("slug", slug);
-            model = (Model) query.uniqueResult();
+            model = (Model) session
+                    .createQuery("FROM Model WHERE slug= :slug")
+                    .setString("slug", slug)
+                    .uniqueResult();
             session.getTransaction().commit();
 
         } catch (Exception e)
@@ -167,8 +201,10 @@ public class ModelsApi {
 
             try {
                 session.beginTransaction();
-                query = session.createQuery("FROM Query WHERE id= :id").setLong("id", model.getQuery().getId());
-                q = (org.hbp.mip.model.Query) query.uniqueResult();
+                q = (org.hbp.mip.model.Query) session
+                        .createQuery("FROM Query WHERE id= :id")
+                        .setLong("id", model.getQuery().getId())
+                        .uniqueResult();
                 session.getTransaction().commit();
             } catch (Exception e)
             {
@@ -240,6 +276,31 @@ public class ModelsApi {
         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
         try{
             session.beginTransaction();
+
+            String oldTitle = (String) session
+                    .createQuery("select title from Article where slug= :slug")
+                    .setString("slug", slug)
+                    .uniqueResult();
+
+            if(!oldTitle.equals(model.getTitle())) {
+                Long count;
+                int i = 0;
+                do {
+                    String title = model.getTitle();
+                    count = (Long) session
+                            .createQuery("select count(*) from Article where title= :title")
+                            .setString("title", title)
+                            .uniqueResult();
+                    if (count > 0 && !oldTitle.equals(title)) {
+                        if (i > 0) {
+                            title = title.substring(0, title.length() - 4);
+                        }
+                        i++;
+                        model.setTitle(title + " (" + i + ")");
+                    }
+                } while (count > 0 && !oldTitle.equals(model.getTitle()));
+            }
+
             session.update(model);
             session.getTransaction().commit();
         } catch (Exception e)
diff --git a/src/main/java/org/hbp/mip/controllers/UsersApi.java b/src/main/java/org/hbp/mip/controllers/UsersApi.java
index 465b833a02957780037a72797c4c8ed25259d64f..4b3982f578f2b4baab98ff8491ea532365641777 100644
--- a/src/main/java/org/hbp/mip/controllers/UsersApi.java
+++ b/src/main/java/org/hbp/mip/controllers/UsersApi.java
@@ -33,9 +33,10 @@ public class UsersApi {
         User user = null;
         try{
             session.beginTransaction();
-            org.hibernate.Query query = session.createQuery("from User where username= :username");
-            query.setString("username", username);
-            user = (User) query.uniqueResult();
+            user = (User) session
+                    .createQuery("from User where username= :username")
+                    .setString("username", username)
+                    .uniqueResult();
             session.getTransaction().commit();
         } catch (Exception e)
         {
diff --git a/src/main/java/org/hbp/mip/controllers/VariablesApi.java b/src/main/java/org/hbp/mip/controllers/VariablesApi.java
index a98bbc38412d5785cfcaa900f2409b1423a6b2e2..9c7e99dd88586c714a90a5eccf0696bd10528cfd 100644
--- a/src/main/java/org/hbp/mip/controllers/VariablesApi.java
+++ b/src/main/java/org/hbp/mip/controllers/VariablesApi.java
@@ -39,7 +39,9 @@ public class VariablesApi {
         List variables = new LinkedList<>();
         try{
             session.beginTransaction();
-            variables = session.createQuery("from Variable").list();
+            variables = session
+                    .createQuery("from Variable")
+                    .list();
             session.getTransaction().commit();
         } catch (Exception e)
         {
@@ -64,9 +66,10 @@ public class VariablesApi {
         Variable variable = null;
         try{
             session.beginTransaction();
-            org.hibernate.Query query = session.createQuery("from Variable where code= :code");
-            query.setString("code", code);
-            variable = (Variable) query.uniqueResult();
+            variable = (Variable) session
+                    .createQuery("from Variable where code= :code")
+                    .setString("code", code)
+                    .uniqueResult();
             session.getTransaction().commit();
         } catch (Exception e)
         {
@@ -93,7 +96,10 @@ public class VariablesApi {
         List values = new LinkedList<>();
         try{
             session.beginTransaction();
-            values = session.createQuery("select values from Variable where code= :code").setString("code", code).list();
+            values = session
+                    .createQuery("select values from Variable where code= :code")
+                    .setString("code", code)
+                    .list();
             session.getTransaction().commit();
         } catch (Exception e)
         {