diff --git a/backoffice/src/main/webapp/jsf/gestionhechos.xhtml b/backoffice/src/main/webapp/jsf/gestionhechos.xhtml
index e5cf8eeb0665603bde14193688b22ce358ec3b32..552b319f858b14f32e5286a51207fbd4c388e295 100644
--- a/backoffice/src/main/webapp/jsf/gestionhechos.xhtml
+++ b/backoffice/src/main/webapp/jsf/gestionhechos.xhtml
@@ -55,7 +55,7 @@
                 <h:outputText value="#{hecho.title}" />
             </p:column>
             <p:column filterBy="#{gestionHechos.filterDesc}" headerText="Descripción" filterMatchMode="contains">
-                <h:outputText value="#{hecho.actualState.value}" />
+                <h:outputText value="#{hecho.description}"/>
             </p:column>
             <p:column filterBy="#{gestionHechos.filterEstado}" headerText="Estados" filterMatchMode="exact">
                 <f:facet name="filter">
@@ -65,7 +65,7 @@
                                        itemValue="#{e.value}"/>
                     </p:selectOneMenu>
                 </f:facet>
-
+                <h:outputText value="#{hecho.actualState.value}"/>
             </p:column>
         </p:dataTable>
     </h:form>
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 7fd371ec8820a857c2d4b1ac3d1485cee03482ff..733558353c224306c85eb3cb36a0230821700971 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
@@ -1,8 +1,5 @@
 package uy.edu.fing.tse.central.db.dao.fact;
 
-import uy.edu.fing.tse.central.db.entity.Calificacion;
-import uy.edu.fing.tse.central.db.entity.Categoria;
-import uy.edu.fing.tse.central.db.entity.Estado;
 import uy.edu.fing.tse.central.db.entity.Hecho;
 import uy.edu.fing.tse.central.db.mapper.MyMapper;
 import uy.edu.fing.tse.dto.Fact;
@@ -31,26 +28,20 @@ public class FactDAOBean implements FactDaoLocal {
     @Override
     public Fact create(Fact elem) {
         final var hecho = MyMapper.INSTANCE.convert(elem);
-        {
-            final var query = em.createNamedQuery("Estado.findByValue", Estado.class);
-            query.setParameter("val", elem.getActualState().getValue());
-            final var e = query.getSingleResult();
-            hecho.setActualState(e);
-        }
-
-        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);
-        }
+//
+//        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();
diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/mechanism/MechanismDAOBean.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/mechanism/MechanismDAOBean.java
new file mode 100644
index 0000000000000000000000000000000000000000..4460a98eb25601943e23431f527256ae95979997
--- /dev/null
+++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/mechanism/MechanismDAOBean.java
@@ -0,0 +1,53 @@
+package uy.edu.fing.tse.central.db.dao.mechanism;
+
+import uy.edu.fing.tse.central.db.entity.Mecanismo;
+import uy.edu.fing.tse.central.db.mapper.MyMapper;
+import uy.edu.fing.tse.dto.Mechanism;
+
+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 MechanismDAOBean implements MechanismDaoLocal {
+
+    @PersistenceContext(unitName = "central")
+    private EntityManager em;
+
+    @PostConstruct
+    void init() {
+        //Despues del constructor hace esto
+    }
+
+    @Override
+    public Mechanism create(Mechanism elem) {
+        final var r = MyMapper.INSTANCE.convert(elem);
+        em.persist(r);
+        em.flush();
+        return MyMapper.INSTANCE.convert(r);
+    }
+
+    @Override
+    public Mechanism find(String key) {
+        final var query = em.createNamedQuery("Calificacion.findByName", Mecanismo.class);
+        query.setParameter("name", key);
+        final var r = query.getSingleResult();
+        return MyMapper.INSTANCE.convert(r);
+    }
+
+    @Override
+    public Mechanism find(Long id) {
+        final var r = em.find(Mecanismo.class, id);
+        return MyMapper.INSTANCE.convert(r);
+    }
+
+    @Override
+    public List<Mechanism> findAll() {
+        final var query = em.createNamedQuery("Calificacion.findAll", Mecanismo.class);
+        final List<Mecanismo> 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/mechanism/MechanismDaoLocal.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/mechanism/MechanismDaoLocal.java
new file mode 100644
index 0000000000000000000000000000000000000000..eb214292aef5af5d50ed9f2a0c26aae3d26743d2
--- /dev/null
+++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/mechanism/MechanismDaoLocal.java
@@ -0,0 +1,11 @@
+package uy.edu.fing.tse.central.db.dao.mechanism;
+
+import uy.edu.fing.tse.central.db.dao.GenericDao;
+import uy.edu.fing.tse.dto.Mechanism;
+
+import javax.ejb.Local;
+
+@Local
+public interface MechanismDaoLocal extends GenericDao<Mechanism> {
+
+}
diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/user/UserDAOBean.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/user/UserDAOBean.java
index 8a1325ee343f722d4b8b5070792eccadcd6d5b0b..30c0215dadedaf5153983128fb8f68732852d9a5 100644
--- a/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/user/UserDAOBean.java
+++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/dao/user/UserDAOBean.java
@@ -1,11 +1,8 @@
 package uy.edu.fing.tse.central.db.dao.user;
 
-import uy.edu.fing.tse.central.db.entity.Rol;
 import uy.edu.fing.tse.central.db.entity.Usuario;
 import uy.edu.fing.tse.central.db.mapper.MyMapper;
 import uy.edu.fing.tse.dto.User;
-import uy.edu.fing.tse.dto.UserBO;
-import uy.edu.fing.tse.dto.UserFO;
 
 import javax.annotation.PostConstruct;
 import javax.ejb.Stateless;
@@ -25,33 +22,14 @@ public class UserDAOBean implements UserDaoLocal {
         //Despues del constructor hace esto
     }
 
-
     @Override
     public User create(User user) {
-        if (user instanceof UserBO) return _register((UserBO) user);
-        else return _register((UserFO) user);
-    }
-
-    private UserFO _register(UserFO user) {
         final var newUser = MyMapper.INSTANCE.convert(user);
         em.persist(newUser);
         em.flush();
         return MyMapper.INSTANCE.convert(newUser);
     }
 
-    private UserBO _register(UserBO user) {
-        final var newUser = MyMapper.INSTANCE.convert(user);
-
-        final var query = em.createNamedQuery("Rol.findByName", Rol.class);
-        query.setParameter("name", user.getRole().getName());
-        final var r = query.getSingleResult();
-        newUser.setRole(r);
-
-        em.persist(newUser);
-        em.flush();
-        return MyMapper.INSTANCE.convert(newUser);
-    }
-
     @Override
     public User find(String mail) {
         final var query = em.createNamedQuery("Usuario.findByMail", Usuario.class);
diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/Mecanismo.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/Mecanismo.java
index 0a53e026a2100abf3f92b32ca2687db25be18a88..186d0dd7552bef5bd8787c00856313820ad8b805 100644
--- a/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/Mecanismo.java
+++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/entity/Mecanismo.java
@@ -4,6 +4,10 @@ import javax.persistence.*;
 
 @Entity
 @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
+@NamedQueries({
+        @NamedQuery(name = "Mecanismo.findByName", query = "SELECT m FROM Mecanismo m WHERE m.name = :name"),
+        @NamedQuery(name = "Mecanismo.findAll", query = "SELECT m FROM Mecanismo m")
+})
 public class Mecanismo {
 
     @Id
diff --git a/central-db/src/main/java/uy/edu/fing/tse/central/db/mapper/MyMapper.java b/central-db/src/main/java/uy/edu/fing/tse/central/db/mapper/MyMapper.java
index b164d083c9a5ff6206cd4a74959c050bf2b11c37..4a0ac9b202c0c5d41748964b6fce5ad7d94aeceb 100644
--- a/central-db/src/main/java/uy/edu/fing/tse/central/db/mapper/MyMapper.java
+++ b/central-db/src/main/java/uy/edu/fing/tse/central/db/mapper/MyMapper.java
@@ -32,6 +32,34 @@ public interface MyMapper {
         }
     }
 
+    default Mecanismo convert(Mechanism u) {
+        if (u == null) {
+            return null;
+        } else if (u instanceof Peripherical) {
+            return convert((Peripherical) u);
+        } else {
+            return convert((MechanismInternal) u);
+        }
+    }
+
+    default Mechanism convert(Mecanismo u) {
+        if (u == null) {
+            return null;
+        } else if (u instanceof Periferico) {
+            return convert((Periferico) u);
+        } else {
+            return convert((MecanismoInterno) u);
+        }
+    }
+
+    Peripherical convert(Periferico f);
+
+    Periferico convert(Peripherical f);
+
+    MechanismInternal convert(MecanismoInterno f);
+
+    MecanismoInterno convert(MechanismInternal f);
+
     Hecho convert(Fact f);
 
     Fact convert(Hecho f);
diff --git a/central-db/src/test/java/uy/edu/fing/tse/central/db/mapper/MyMapperTest.java b/central-db/src/test/java/uy/edu/fing/tse/central/db/mapper/MyMapperTest.java
index a38e2e09864ae86b8277476103362241bd21288c..095fe9428c7e495439c06173aa9f156a6020e0eb 100644
--- a/central-db/src/test/java/uy/edu/fing/tse/central/db/mapper/MyMapperTest.java
+++ b/central-db/src/test/java/uy/edu/fing/tse/central/db/mapper/MyMapperTest.java
@@ -2,6 +2,7 @@ package uy.edu.fing.tse.central.db.mapper;
 
 import org.junit.Assert;
 import org.junit.Test;
+import uy.edu.fing.tse.central.db.entity.Periferico;
 import uy.edu.fing.tse.dto.*;
 
 public class MyMapperTest {
@@ -59,4 +60,15 @@ public class MyMapperTest {
                 "#######################################################\n");
 
     }
+
+    @Test
+    public void convert2() {
+        final var periferico = new Periferico();
+        periferico.setName("hola");
+
+        final var convert = MyMapper.INSTANCE.convert(periferico);
+        Assert.assertNotNull(convert);
+        final var convert2 = MyMapper.INSTANCE.convert(convert);
+        Assert.assertNotNull(convert2);
+    }
 }
\ No newline at end of file
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 178b5709b5ad93859f9fde64b0ba26eff16d3eea..5eb29641b917e0b96ab78c7acd01ce9200c700b2 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
@@ -3,6 +3,7 @@ package uy.edu.fing.tse.central.business;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import uy.edu.fing.tse.central.db.dao.category.CategoryDaoLocal;
 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;
@@ -29,7 +30,9 @@ public class BusinessBean implements BusinessLocal, BusinessRemote {
     @EJB
     private RoleDaoLocal roles;
     @EJB
-    private ScoreDaoLocal calificacion;
+    private ScoreDaoLocal calificaciones;
+    @EJB
+    private CategoryDaoLocal categorias;
 
 
     @Override
@@ -51,6 +54,20 @@ public class BusinessBean implements BusinessLocal, BusinessRemote {
     public void altaHecho(Fact fact) {
         final var history = fact.getHistory();
         fact.setHistory(null);
+
+        final var state = estados.find(fact.getActualState().getValue());
+        fact.setActualState(state);
+
+        if (fact.getCategory() != null) {
+            final var cat = categorias.find(fact.getCategory().getName());
+            fact.setCategory(cat);
+        }
+
+        if (fact.getScore() != null) {
+            final var score = calificaciones.find(fact.getScore().getValue());
+            fact.setScore(score);
+        }
+
         final var fact1 = hechos.create(fact);
         LOG.info("");
         //hechos.find(fact.getTitle());
@@ -74,7 +91,7 @@ public class BusinessBean implements BusinessLocal, BusinessRemote {
 
     @Override
     public void altaCalificacion(Score e) {
-        calificacion.create(e);
+        calificaciones.create(e);
     }
 
     @Override
diff --git a/central-ejb/src/main/java/uy/edu/fing/tse/central/business/security/SecurityBean.java b/central-ejb/src/main/java/uy/edu/fing/tse/central/business/security/SecurityBean.java
index febfcb09ec837f31de46657b195bab97f1bb5df9..9130c9b904ebcb7385fed036e1b16b919135e377 100644
--- a/central-ejb/src/main/java/uy/edu/fing/tse/central/business/security/SecurityBean.java
+++ b/central-ejb/src/main/java/uy/edu/fing/tse/central/business/security/SecurityBean.java
@@ -4,6 +4,7 @@ package uy.edu.fing.tse.central.business.security;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import uy.edu.fing.tse.central.business.common.Secure;
+import uy.edu.fing.tse.central.db.dao.role.RoleDaoLocal;
 import uy.edu.fing.tse.central.db.dao.user.UserDaoLocal;
 import uy.edu.fing.tse.dto.User;
 import uy.edu.fing.tse.dto.UserBO;
@@ -19,7 +20,9 @@ public class SecurityBean implements SecurityLocal, SecurityRemote {
     private static final Logger LOG = LoggerFactory.getLogger(Security.class);
 
     @EJB
-    private UserDaoLocal dao;
+    private UserDaoLocal users;
+    @EJB
+    private RoleDaoLocal roles;
 
     @PostConstruct
     void init() {
@@ -32,14 +35,16 @@ public class SecurityBean implements SecurityLocal, SecurityRemote {
         p.setSalt(salt);
         final var newPassword = Secure.encriptPBKDF(p.getPassword(), salt);
         p.setPassword(newPassword);
-        dao.create(p);
-        return dao.find(p.getMail());
+
+        final var role = roles.find(p.getRole().getName());
+        p.setRole(role);
+        return users.create(p);
     }
 
     @Override
     public String login(UserBO p) {
         //Valido la password
-        final var user = (UserBO) dao.find(p.getMail());
+        final var user = (UserBO) users.find(p.getMail());
         final var salt = user.getSalt();
         final var thisPassword = Secure.encriptPBKDF(p.getPassword(), salt);