diff --git a/src/main/java/org/hbp/mip/MIPApplication.java b/src/main/java/org/hbp/mip/MIPApplication.java
index fc4264fc7e24293f44d738853a2931cf4b8f7595..963ce02c43ae05d95ff89e87ef7bd2b639ef0f16 100644
--- a/src/main/java/org/hbp/mip/MIPApplication.java
+++ b/src/main/java/org/hbp/mip/MIPApplication.java
@@ -75,6 +75,24 @@ public class MIPApplication extends WebSecurityConfigurerAdapter {
         return principal;
     }
 
+    private User principalToUser(Principal principal) {
+        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+        session.beginTransaction();
+        org.hibernate.Query query = session.createQuery("from User where username= :username");
+        query.setString("username", principal.getName());
+        User user = (User) query.uniqueResult();
+        session.getTransaction().commit();
+        if(user == null)
+        {
+            session = HibernateUtil.getSessionFactory().getCurrentSession();
+            session.beginTransaction();
+            user = new User(principal);
+            session.save(user);
+            session.getTransaction().commit();
+        }
+        return user;
+    }
+
     @RequestMapping(value = "/articles", method = RequestMethod.GET)
     @ResponseBody
     public List<Article> getArticles() {
@@ -133,13 +151,15 @@ public class MIPApplication extends WebSecurityConfigurerAdapter {
 
     @RequestMapping(value = "/articles", method = RequestMethod.POST)
     @ResponseBody
-    public Article postArticle(@RequestBody Article article) {
+    public Article postArticle(@RequestBody Article article, Principal principal) {
+        User user = principalToUser(principal);
         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
         session.beginTransaction();
         article.setCreatedAt(new Date());
         article.setPublishedAt(new Date());
         article.setSlug(article.getTitle().toLowerCase());
         article.setStatus("published");
+        article.setCreatedBy(user);
         session.save(article);
         session.getTransaction().commit();
         return article;
diff --git a/src/main/java/org/hbp/mip/model/Article.java b/src/main/java/org/hbp/mip/model/Article.java
index afc86a5b6e9a5d6ba3f64c63ef676ae87fda041b..d3a3173b85f73e13b6cfacafdb144767497cf119 100644
--- a/src/main/java/org/hbp/mip/model/Article.java
+++ b/src/main/java/org/hbp/mip/model/Article.java
@@ -10,6 +10,7 @@ import java.util.LinkedList;
 import java.util.List;
 
 @Entity
+@Table(name = "article_mip")
 public class Article {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
diff --git a/src/main/java/org/hbp/mip/model/Chart.java b/src/main/java/org/hbp/mip/model/Chart.java
index 382f9ac913a8b35500635bbb6b8b6193eedf976a..c5ec9db5cdb5a2515e765d92f1280a2cba16818f 100644
--- a/src/main/java/org/hbp/mip/model/Chart.java
+++ b/src/main/java/org/hbp/mip/model/Chart.java
@@ -9,6 +9,7 @@ import java.util.LinkedList;
 import java.util.List;
 
 @Entity
+@Table(name = "chart_mip")
 public class Chart {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
diff --git a/src/main/java/org/hbp/mip/model/ChartConfigSet.java b/src/main/java/org/hbp/mip/model/ChartConfigSet.java
index 040f240c6fb4a14033c15f6c4271127b41328592..89e19dfc36cb01abee0f97488d2fa84f9800809f 100644
--- a/src/main/java/org/hbp/mip/model/ChartConfigSet.java
+++ b/src/main/java/org/hbp/mip/model/ChartConfigSet.java
@@ -4,12 +4,10 @@
 
 package org.hbp.mip.model;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
+import javax.persistence.*;
 
 @Entity
+@Table(name = "chart_config_set_mip")
 public class ChartConfigSet {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
diff --git a/src/main/java/org/hbp/mip/model/Dataset.java b/src/main/java/org/hbp/mip/model/Dataset.java
index 38f042443a1ca3a8309ac814c129ee959b37aef7..7a1942ad3b4a9162981b22b4156bf5f321352210 100644
--- a/src/main/java/org/hbp/mip/model/Dataset.java
+++ b/src/main/java/org/hbp/mip/model/Dataset.java
@@ -9,6 +9,7 @@ import java.util.Date;
 import java.util.List;
 
 @Entity
+@Table(name = "dataset_mip")
 public class Dataset {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
diff --git a/src/main/java/org/hbp/mip/model/Filter.java b/src/main/java/org/hbp/mip/model/Filter.java
index 3c24be73fd83a07976aed39679219d753346cbbf..ca62dffb4a3ec2ef9330002f9e2b142227373910 100644
--- a/src/main/java/org/hbp/mip/model/Filter.java
+++ b/src/main/java/org/hbp/mip/model/Filter.java
@@ -7,6 +7,7 @@ package org.hbp.mip.model;
 import javax.persistence.*;
 
 @Entity
+@Table(name = "filter_mip")
 public class Filter {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
diff --git a/src/main/java/org/hbp/mip/model/Group.java b/src/main/java/org/hbp/mip/model/Group.java
index 4f9d54b29eb6d5685042e04ef41f6aef0e72793f..cc93b4f534768ced00f93c8252608ffd4b68616f 100644
--- a/src/main/java/org/hbp/mip/model/Group.java
+++ b/src/main/java/org/hbp/mip/model/Group.java
@@ -9,6 +9,7 @@ import java.util.LinkedList;
 import java.util.List;
 
 @Entity
+@Table(name = "group_mip")
 public class Group {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
diff --git a/src/main/java/org/hbp/mip/model/Model.java b/src/main/java/org/hbp/mip/model/Model.java
index dbd119ebdb95ee6f0366f30ae97283ec13ad7336..36600b41901107ed3e0530ba4e6823feba1b2f96 100644
--- a/src/main/java/org/hbp/mip/model/Model.java
+++ b/src/main/java/org/hbp/mip/model/Model.java
@@ -8,6 +8,7 @@ import javax.persistence.*;
 import java.util.Date;
 
 @Entity
+@Table(name = "model_mip")
 public class Model {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
diff --git a/src/main/java/org/hbp/mip/model/Query.java b/src/main/java/org/hbp/mip/model/Query.java
index 6d81619b9745527ac98c1e9abfac1419537d361e..2ece36a7594507f4c43634bf5f2c69a80e349d67 100644
--- a/src/main/java/org/hbp/mip/model/Query.java
+++ b/src/main/java/org/hbp/mip/model/Query.java
@@ -9,6 +9,7 @@ import java.util.LinkedList;
 import java.util.List;
 
 @Entity
+@Table(name = "query_mip")
 public class Query {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
diff --git a/src/main/java/org/hbp/mip/model/Tag.java b/src/main/java/org/hbp/mip/model/Tag.java
index 48ad3e7079181bb90a21343ec60886ef0aa8c21b..bfe8f74b88e41b6266b63a3e555a64e5a00174a1 100644
--- a/src/main/java/org/hbp/mip/model/Tag.java
+++ b/src/main/java/org/hbp/mip/model/Tag.java
@@ -4,12 +4,10 @@
 
 package org.hbp.mip.model;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
+import javax.persistence.*;
 
 @Entity
+@Table(name = "tag_mip")
 public class Tag {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
diff --git a/src/main/java/org/hbp/mip/model/User.java b/src/main/java/org/hbp/mip/model/User.java
index 67b0d38261e2de4dfd64ae3d3e38109eb88c76e8..5e3290a73ada547b40e8c577d7ca39110092857d 100644
--- a/src/main/java/org/hbp/mip/model/User.java
+++ b/src/main/java/org/hbp/mip/model/User.java
@@ -5,10 +5,12 @@
 package org.hbp.mip.model;
 
 import javax.persistence.*;
+import java.security.Principal;
 import java.util.LinkedList;
 import java.util.List;
 
 @Entity
+@Table(name = "user_mip")
 public class User {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -22,7 +24,7 @@ public class User {
     private String phone;
     private String birthday;
     private String gender;
-    @ElementCollection
+    @ElementCollection(fetch = FetchType.EAGER)
     private List<String> languages;
     private String city;
     private String country;
@@ -31,12 +33,18 @@ public class User {
     private boolean isActive;
     private String apikey;
     private String team;
-    @ElementCollection
+    @ElementCollection(fetch = FetchType.EAGER)
     private List<String> roles;
 
     public User() {
     }
 
+    public User(Principal principal)
+    {
+        this.username = principal.getName();
+        this.fullname = this.username;
+    }
+
     public Long getId() {
         return id;
     }
diff --git a/src/main/java/org/hbp/mip/model/Value.java b/src/main/java/org/hbp/mip/model/Value.java
index f5afddc685fba8177d6085414a8b9d82b98a5fd3..845dd3d9d21bf99316da1496524fc5a2eafb0de0 100644
--- a/src/main/java/org/hbp/mip/model/Value.java
+++ b/src/main/java/org/hbp/mip/model/Value.java
@@ -4,12 +4,10 @@
 
 package org.hbp.mip.model;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
+import javax.persistence.*;
 
 @Entity
+@Table(name = "value_mip")
 public class Value {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
diff --git a/src/main/java/org/hbp/mip/model/Variable.java b/src/main/java/org/hbp/mip/model/Variable.java
index 9439aabee953e5bba31489a9eb8c42884aaf431c..a19fe9d57a71e6e87f94c918ec6fbbbcece54860 100644
--- a/src/main/java/org/hbp/mip/model/Variable.java
+++ b/src/main/java/org/hbp/mip/model/Variable.java
@@ -9,6 +9,7 @@ import java.util.LinkedList;
 import java.util.List;
 
 @Entity
+@Table(name = "variable_mip")
 public class Variable {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)