diff --git a/backoffice/src/main/java/uy/edu/fing/tse/jsf/GestionhechosBean.java b/backoffice/src/main/java/uy/edu/fing/tse/jsf/GestionHechosBean.java
similarity index 87%
rename from backoffice/src/main/java/uy/edu/fing/tse/jsf/GestionhechosBean.java
rename to backoffice/src/main/java/uy/edu/fing/tse/jsf/GestionHechosBean.java
index a1cdc8ef963d770f49f315270b77bbb6f04081c5..6e9ac5320b874756df6dd225bcd0d8b0021fb3b7 100644
--- a/backoffice/src/main/java/uy/edu/fing/tse/jsf/GestionhechosBean.java
+++ b/backoffice/src/main/java/uy/edu/fing/tse/jsf/GestionHechosBean.java
@@ -13,7 +13,7 @@ import java.util.List;
 
 @RequestScoped
 @Named("gestionHechos")
-public class GestionhechosBean implements Serializable {
+public class GestionHechosBean implements Serializable {
 
     private static final long serialVersionUID = 9142442208455999158L;
 
@@ -27,6 +27,7 @@ public class GestionhechosBean implements Serializable {
     }
 
     private List<State> estados;
+
     private List<Fact> filteredFacts;
 
     private String filterTitulo = "";
@@ -34,12 +35,12 @@ public class GestionhechosBean implements Serializable {
     private String filterEstado = "";
 
 
-    public List<Fact> getFilteredNFact() {
+    public List<Fact> getFilteredFacts() {
         return filteredFacts;
     }
 
-    public void setFilteredNoticias(List<Fact> filteredNoticias) {
-        this.filteredFacts = filteredNoticias;
+    public void setFilteredFacts(List<Fact> filteredFacts) {
+        this.filteredFacts = filteredFacts;
     }
 
     public List<State> getEstados() {
diff --git a/backoffice/src/main/webapp/jsf/gestionhechos.xhtml b/backoffice/src/main/webapp/jsf/gestionhechos.xhtml
index 552b319f858b14f32e5286a51207fbd4c388e295..2eff1a822edc4202497db4ac82f3f149606f233b 100644
--- a/backoffice/src/main/webapp/jsf/gestionhechos.xhtml
+++ b/backoffice/src/main/webapp/jsf/gestionhechos.xhtml
@@ -42,8 +42,8 @@
             <h:outputText value=  "#{userLoginView.user.mail}" />
         </p:outputPanel>
 
-        <p:dataTable var="hecho" id="dataHecho" value="#{gestionHechos.filteredNFact}" widgetVar="NoticiasTable"
-                     emptyMessage="Hecho no encontrada" filteredValue="#{gestionHechos.filteredNFact}">
+        <p:dataTable var="hecho" id="dataHecho" value="#{gestionHechos.filteredFacts}" widgetVar="NoticiasTable"
+                     emptyMessage="Hecho no encontrada" filteredValue="#{gestionHechos.filteredFacts}">
             <f:facet name="header">
                 <p:outputPanel>
                     <h:outputText value="Buscar en todos los campos:" />
diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/fact/FactDAOBean.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/fact/FactDAOBean.java
index 733558353c224306c85eb3cb36a0230821700971..0f10a3bfa1c79212a1d48d70858ac2ae083f17b2 100644
--- a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/fact/FactDAOBean.java
+++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/fact/FactDAOBean.java
@@ -28,24 +28,8 @@ public class FactDAOBean implements FactDaoLocal {
     @Override
     public Fact create(Fact elem) {
         final var hecho = MyMapper.INSTANCE.convert(elem);
-//
-//        if (elem.getScore() != null) {
-//            final var query = em.createNamedQuery("Calificacion.findByValue", Calificacion.class);
-//            query.setParameter("val", elem.getScore().getValue());
-//            final var s = query.getSingleResult();
-//            hecho.setScore(s);
-//        }
-//
-//        if (elem.getCategory() != null) {
-//            final var query = em.createNamedQuery("Categoria.findByName", Categoria.class);
-//            query.setParameter("name", elem.getCategory().getName());
-//            final var c = query.getSingleResult();
-//            hecho.setCategory(c);
-//        }
-
         em.persist(hecho);
         em.flush();
-
         return MyMapper.INSTANCE.convert(hecho);
     }
 
diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/statehistory/StateHistoryDAOBean.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/statehistory/StateHistoryDAOBean.java
new file mode 100644
index 0000000000000000000000000000000000000000..7a7011058463cb9a0e02078f55101822bc22ae1a
--- /dev/null
+++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/statehistory/StateHistoryDAOBean.java
@@ -0,0 +1,53 @@
+package uy.edu.fing.tse.central.db.dao.statehistory;
+
+import uy.edu.fing.tse.central.db.entity.TransicionEstado;
+import uy.edu.fing.tse.central.db.mapper.MyMapper;
+import uy.edu.fing.tse.dto.StateHistory;
+
+import javax.annotation.PostConstruct;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Stateless
+public class StateHistoryDAOBean implements StateHistoryDaoLocal {
+
+    @PersistenceContext(unitName = "central")
+    private EntityManager em;
+
+    @PostConstruct
+    void init() {
+        //Despues del constructor hace esto
+    }
+
+    @Override
+    public StateHistory create(StateHistory elem) {
+        final var r = MyMapper.INSTANCE.convert(elem);
+        em.persist(r);
+        em.flush();
+        return MyMapper.INSTANCE.convert(r);
+    }
+
+    @Override
+    public StateHistory find(String key) {
+        final var query = em.createNamedQuery("TransicionEstado.findByState", TransicionEstado.class);
+        query.setParameter("val", key);
+        final var r = query.getSingleResult();
+        return MyMapper.INSTANCE.convert(r);
+    }
+
+    @Override
+    public StateHistory find(Long id) {
+        final var e = em.find(TransicionEstado.class, id);
+        return MyMapper.INSTANCE.convert(e);
+    }
+
+    @Override
+    public List<StateHistory> findAll() {
+        final var query = em.createNamedQuery("TransicionEstado.findAll", TransicionEstado.class);
+        final List<TransicionEstado> r = query.getResultList();
+        return r.stream().map(MyMapper.INSTANCE::convert).collect(Collectors.toList());
+    }
+}
diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/statehistory/StateHistoryDaoLocal.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/statehistory/StateHistoryDaoLocal.java
new file mode 100644
index 0000000000000000000000000000000000000000..1dcc26e41354b8d5b6227b5026b15c71787f2962
--- /dev/null
+++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/statehistory/StateHistoryDaoLocal.java
@@ -0,0 +1,11 @@
+package uy.edu.fing.tse.central.db.dao.statehistory;
+
+import uy.edu.fing.tse.central.db.dao.GenericDao;
+import uy.edu.fing.tse.dto.StateHistory;
+
+import javax.ejb.Local;
+
+@Local
+public interface StateHistoryDaoLocal extends GenericDao<StateHistory> {
+
+}
diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/Hecho.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/Hecho.java
index c2acb8870ecc5b1db1727416f8e598c49d23557b..13ef31d6223dc9dd176bb12ecae7972dafbb926f 100644
--- a/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/Hecho.java
+++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/Hecho.java
@@ -87,6 +87,11 @@ public final class Hecho {
 
     public void setHistory(List<TransicionEstado> history) {
         this.history = history;
+        if (history != null) {
+            for (TransicionEstado te : history) {
+                te.setFact(this);
+            }
+        }
     }
 
     public void addHistory(TransicionEstado history) {
diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/TransicionEstado.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/TransicionEstado.java
index cb972ddffe343c5122b4fd8174b810ee28a7ca04..766bd11cd33580a4b5f9b0b8ccbc408bb7cc55f0 100644
--- a/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/TransicionEstado.java
+++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/TransicionEstado.java
@@ -4,6 +4,10 @@ import javax.persistence.*;
 import java.util.Date;
 
 @Entity
+@NamedQueries({
+        @NamedQuery(name = "TransicionEstado.findAll", query = "select r from TransicionEstado r"),
+        @NamedQuery(name = "TransicionEstado.findByState", query = "select r from TransicionEstado r inner join r.state as s where s.value = :val")
+})
 public class TransicionEstado {
 
     @Id
@@ -51,7 +55,6 @@ public class TransicionEstado {
     }
 
     public void setFact(Hecho fact) {
-        fact.addHistory(this);
         this.fact = fact;
     }
 
diff --git a/central-dto/src/main/java/uy/edu/fing/tse/dto/StateHistory.java b/central-dto/src/main/java/uy/edu/fing/tse/dto/StateHistory.java
index a168a3235f81032d1ac2e4ee6307fb6713b58086..b5d2080af93bdb537686bb439d728fd836f2fb55 100644
--- a/central-dto/src/main/java/uy/edu/fing/tse/dto/StateHistory.java
+++ b/central-dto/src/main/java/uy/edu/fing/tse/dto/StateHistory.java
@@ -10,7 +10,7 @@ public final class StateHistory implements Serializable {
     private Long id;
     private State state;
     private User user;
-    private Date date;
+    private Date date = new Date();
 
     public Long getId() {
         return id;
diff --git a/central-ejb/src/main/java/uy/edu/fing/tse/central/business/Business.java b/central-ejb/src/main/java/uy/edu/fing/tse/central/business/Business.java
index 6e2060bda3a30d987cbc1dbe5df7a25e94320fea..4963b8badcd8f3d9dc889c94b7a7a447110402ee 100644
--- a/central-ejb/src/main/java/uy/edu/fing/tse/central/business/Business.java
+++ b/central-ejb/src/main/java/uy/edu/fing/tse/central/business/Business.java
@@ -14,15 +14,15 @@ public interface Business extends Serializable {
 
     List<Fact> listarHechos();
 
-    void altaHecho(Fact fact);
+    Fact altaHecho(Fact fact);
 
-    void altaRol(Role role);
+    Role altaRol(Role role);
 
-    void altaEstado(State state);
+    State altaEstado(State state);
 
     List<Role> listarRoles();
 
-    void altaCalificacion(Score e);
+    Score altaCalificacion(Score e);
 
     List<State> listarEstados();
 }
diff --git a/central-ejb/src/main/java/uy/edu/fing/tse/central/business/BusinessBean.java b/central-ejb/src/main/java/uy/edu/fing/tse/central/business/BusinessBean.java
index 5eb29641b917e0b96ab78c7acd01ce9200c700b2..0213171adea94157993f2ab5e851bde5e769b94c 100644
--- a/central-ejb/src/main/java/uy/edu/fing/tse/central/business/BusinessBean.java
+++ b/central-ejb/src/main/java/uy/edu/fing/tse/central/business/BusinessBean.java
@@ -8,6 +8,7 @@ import uy.edu.fing.tse.central.db.dao.fact.FactDaoLocal;
 import uy.edu.fing.tse.central.db.dao.role.RoleDaoLocal;
 import uy.edu.fing.tse.central.db.dao.score.ScoreDaoLocal;
 import uy.edu.fing.tse.central.db.dao.state.StateDaoLocal;
+import uy.edu.fing.tse.central.db.dao.statehistory.StateHistoryDaoLocal;
 import uy.edu.fing.tse.central.db.dao.user.UserDaoLocal;
 import uy.edu.fing.tse.dto.*;
 
@@ -33,6 +34,8 @@ public class BusinessBean implements BusinessLocal, BusinessRemote {
     private ScoreDaoLocal calificaciones;
     @EJB
     private CategoryDaoLocal categorias;
+    @EJB
+    private StateHistoryDaoLocal transiciones;
 
 
     @Override
@@ -46,14 +49,7 @@ public class BusinessBean implements BusinessLocal, BusinessRemote {
     }
 
     @Override
-    public List<Fact> listarHechos() {
-        return hechos.findAll();
-    }
-
-    @Override
-    public void altaHecho(Fact fact) {
-        final var history = fact.getHistory();
-        fact.setHistory(null);
+    public Fact altaHecho(Fact fact) {
 
         final var state = estados.find(fact.getActualState().getValue());
         fact.setActualState(state);
@@ -68,30 +64,42 @@ public class BusinessBean implements BusinessLocal, BusinessRemote {
             fact.setScore(score);
         }
 
-        final var fact1 = hechos.create(fact);
-        LOG.info("");
-        //hechos.find(fact.getTitle());
+
+        for (StateHistory sh : fact.getHistory()) {
+            final var u = usuarios.find(sh.getUser().getMail());
+            sh.setUser(u);
+
+            final var s = estados.find(sh.getState().getValue());
+            sh.setState(s);
+        }
+
+        return hechos.create(fact);
     }
 
 
     @Override
-    public void altaEstado(State state) {
-        estados.create(state);
+    public State altaEstado(State state) {
+        return estados.create(state);
     }
 
     @Override
-    public void altaRol(Role role) {
-        roles.create(role);
+    public Role altaRol(Role role) {
+        return roles.create(role);
     }
 
     @Override
-    public List<Role> listarRoles() {
-        return roles.findAll();
+    public Score altaCalificacion(Score e) {
+        return calificaciones.create(e);
     }
 
     @Override
-    public void altaCalificacion(Score e) {
-        calificaciones.create(e);
+    public List<Fact> listarHechos() {
+        return hechos.findAll();
+    }
+
+    @Override
+    public List<Role> listarRoles() {
+        return roles.findAll();
     }
 
     @Override
diff --git a/central-ejb/src/main/java/uy/edu/fing/tse/central/business/startup/Config.java b/central-ejb/src/main/java/uy/edu/fing/tse/central/business/startup/Config.java
index f5a98960e7acae8449147c050944117a4e8703a0..58e0c4bed5bfb6b337146c028ff027c08508d713 100644
--- a/central-ejb/src/main/java/uy/edu/fing/tse/central/business/startup/Config.java
+++ b/central-ejb/src/main/java/uy/edu/fing/tse/central/business/startup/Config.java
@@ -170,9 +170,8 @@ public class Config {
             sh.setState(actualState);
             sh.setDate(new Date());
             UserBO u = new UserBO();
-            u.setPassword("admin");
+            u.setMail("admin");
             sh.setUser(u);
-            //sh.setFact(fact);
             fact.addHistory(sh);
             negocio.altaHecho(fact);
         }