diff --git a/backoffice/src/main/java/uy/edu/fing/tse/jsf/RequestBean.java b/backoffice/src/main/java/uy/edu/fing/tse/jsf/RequestBean.java
index 8e0d1185d6746b3faa06c6c2b6d336eceb4c243e..b358919357c2067776dfd9ecfb8b4243aa9339fc 100644
--- a/backoffice/src/main/java/uy/edu/fing/tse/jsf/RequestBean.java
+++ b/backoffice/src/main/java/uy/edu/fing/tse/jsf/RequestBean.java
@@ -19,7 +19,7 @@ public class RequestBean {
     private BusinessLocal negocio;
 
     @EJB
-    private uy.edu.fing.tse.practico.business.jms.JMSProducer jms;
+    private uy.edu.fing.tse.practico.business.mq.JMSProducer jms;
 
     @ManagedProperty(value = "#{Session}")
     private SessionBean session;
diff --git a/backoffice/src/main/java/uy/edu/fing/tse/jsp/MyServlet.java b/backoffice/src/main/java/uy/edu/fing/tse/jsp/MyServlet.java
index 44d8889fff34de2a89f8addd156d13e573768706..b117d3bf3e5dc98b86fdde7397d258fc0eba455f 100644
--- a/backoffice/src/main/java/uy/edu/fing/tse/jsp/MyServlet.java
+++ b/backoffice/src/main/java/uy/edu/fing/tse/jsp/MyServlet.java
@@ -20,7 +20,7 @@ public class MyServlet extends HttpServlet {
     private BusinessLocal negocio;
 
     @EJB
-    private uy.edu.fing.tse.practico.business.jms.JMSProducer jms;
+    private uy.edu.fing.tse.practico.business.mq.JMSProducer jms;
 
     @Override
     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
diff --git a/central-dto/src/main/java/uy/edu/fing/tse/dto/Category.java b/central-dto/src/main/java/uy/edu/fing/tse/dto/Category.java
index 194727bb30ffd70a063579262d90b65907783406..5930e47cabde12fc83786e05d39010d2e238da7a 100644
--- a/central-dto/src/main/java/uy/edu/fing/tse/dto/Category.java
+++ b/central-dto/src/main/java/uy/edu/fing/tse/dto/Category.java
@@ -1,6 +1,10 @@
 package uy.edu.fing.tse.dto;
 
-public final class Category {
+import java.io.Serializable;
+
+public final class Category implements Serializable {
+
+    private static final long serialVersionUID = -317249293474531216L;
 
     private Long id;
     private String name;
diff --git a/central-dto/src/main/java/uy/edu/fing/tse/dto/CheckChecker.java b/central-dto/src/main/java/uy/edu/fing/tse/dto/CheckChecker.java
index 59d7463588798eb41e75d2f93e0c5137129f7d9f..b9ff4dcc7ea0e225078b81ebc4da26e740ca1fc0 100644
--- a/central-dto/src/main/java/uy/edu/fing/tse/dto/CheckChecker.java
+++ b/central-dto/src/main/java/uy/edu/fing/tse/dto/CheckChecker.java
@@ -1,6 +1,10 @@
 package uy.edu.fing.tse.dto;
 
-public final class CheckChecker {
+import java.io.Serializable;
+
+public final class CheckChecker implements Serializable {
+
+    private static final long serialVersionUID = 4798508172561834440L;
 
     private Long id;
     private UserBO checker;
diff --git a/central-dto/src/main/java/uy/edu/fing/tse/dto/CheckMechanism.java b/central-dto/src/main/java/uy/edu/fing/tse/dto/CheckMechanism.java
index 64c5a3683fff3d2da68bcce0352d0d253114a2d5..4f494037b370c6108215b97f8f02be5ff5b8ba37 100644
--- a/central-dto/src/main/java/uy/edu/fing/tse/dto/CheckMechanism.java
+++ b/central-dto/src/main/java/uy/edu/fing/tse/dto/CheckMechanism.java
@@ -1,8 +1,11 @@
 package uy.edu.fing.tse.dto;
 
+import java.io.Serializable;
 import java.util.Date;
 
-public final class CheckMechanism {
+public final class CheckMechanism implements Serializable {
+
+    private static final long serialVersionUID = -5354719133598426738L;
 
     private Long id;
     private Peripherical peripheral;
diff --git a/central-dto/src/main/java/uy/edu/fing/tse/dto/Fact.java b/central-dto/src/main/java/uy/edu/fing/tse/dto/Fact.java
index 691ec0e2360ff2f834fc029bcd4fd9d8507bc5a7..1fdf5af1bd578fa29f1baca6e68517c7696f0995 100644
--- a/central-dto/src/main/java/uy/edu/fing/tse/dto/Fact.java
+++ b/central-dto/src/main/java/uy/edu/fing/tse/dto/Fact.java
@@ -1,9 +1,12 @@
 package uy.edu.fing.tse.dto;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 
-public final class Fact {
+public final class Fact implements Serializable {
+
+    private static final long serialVersionUID = -6218807350324946355L;
 
     private Long id;
     private String title;
diff --git a/central-dto/src/main/java/uy/edu/fing/tse/dto/Mechanism.java b/central-dto/src/main/java/uy/edu/fing/tse/dto/Mechanism.java
index 65d5835b4dbddde744df78599aa15dbbde252373..af2924f932af3bb9356eefcc443b5872557c765f 100644
--- a/central-dto/src/main/java/uy/edu/fing/tse/dto/Mechanism.java
+++ b/central-dto/src/main/java/uy/edu/fing/tse/dto/Mechanism.java
@@ -1,6 +1,10 @@
 package uy.edu.fing.tse.dto;
 
-public class Mechanism {
+import java.io.Serializable;
+
+public class Mechanism implements Serializable {
+
+    private static final long serialVersionUID = 2443873705205432766L;
 
     private Long id;
     private String name;
diff --git a/central-dto/src/main/java/uy/edu/fing/tse/dto/MechanismInternal.java b/central-dto/src/main/java/uy/edu/fing/tse/dto/MechanismInternal.java
index 7f2b03854dc5162261418a59ccb4bc8871825fe4..e685e541bf7071fa40e979c1c8831b65fd7e1b7d 100644
--- a/central-dto/src/main/java/uy/edu/fing/tse/dto/MechanismInternal.java
+++ b/central-dto/src/main/java/uy/edu/fing/tse/dto/MechanismInternal.java
@@ -3,4 +3,5 @@ package uy.edu.fing.tse.dto;
 
 public final class MechanismInternal extends Mechanism {
 
+    private static final long serialVersionUID = -8256891910168590447L;
 }
diff --git a/central-dto/src/main/java/uy/edu/fing/tse/dto/Peripherical.java b/central-dto/src/main/java/uy/edu/fing/tse/dto/Peripherical.java
index 91003e0fdca08ca86ee3f93e7003d79af05548ff..f74e7a3c6b46bfc475289f0b428dd27757899ff0 100644
--- a/central-dto/src/main/java/uy/edu/fing/tse/dto/Peripherical.java
+++ b/central-dto/src/main/java/uy/edu/fing/tse/dto/Peripherical.java
@@ -6,6 +6,8 @@ import java.util.List;
 
 public final class Peripherical extends Mechanism {
 
+    private static final long serialVersionUID = 3767463748206760371L;
+
     private List<Category> categories = new ArrayList<>();
     private String endpoint;
 
diff --git a/central-dto/src/main/java/uy/edu/fing/tse/dto/Role.java b/central-dto/src/main/java/uy/edu/fing/tse/dto/Role.java
index 698980b05cde8e240059693fa7fa382602ef546f..ff9c9a75cda83ab9c546c88be5db705077e07502 100644
--- a/central-dto/src/main/java/uy/edu/fing/tse/dto/Role.java
+++ b/central-dto/src/main/java/uy/edu/fing/tse/dto/Role.java
@@ -1,6 +1,10 @@
 package uy.edu.fing.tse.dto;
 
-public class Role {
+import java.io.Serializable;
+
+public class Role implements Serializable {
+
+    private static final long serialVersionUID = -1446670708639059343L;
 
     private Long id;
     private String name;
diff --git a/central-dto/src/main/java/uy/edu/fing/tse/dto/Score.java b/central-dto/src/main/java/uy/edu/fing/tse/dto/Score.java
index 770b8ac5ddbf7daecfbb0721bd629b93f9cb170d..5014f9429ade8be43424ebe6378130ad19e91bcc 100644
--- a/central-dto/src/main/java/uy/edu/fing/tse/dto/Score.java
+++ b/central-dto/src/main/java/uy/edu/fing/tse/dto/Score.java
@@ -1,9 +1,13 @@
 package uy.edu.fing.tse.dto;
 
+import java.io.Serializable;
+
 /**
  * Esta es la que puede ser vergonzosa, verdad a media, verdad, falsa
  */
-public final class Score {
+public final class Score implements Serializable {
+
+    private static final long serialVersionUID = -5278506826296305357L;
 
     private Long id;
     private String value;
diff --git a/central-dto/src/main/java/uy/edu/fing/tse/dto/State.java b/central-dto/src/main/java/uy/edu/fing/tse/dto/State.java
index 483308de80ce772902fdaeaf7423f86bee79b086..97571a1bfa1621b2919ca4423a088a2eccb3ccee 100644
--- a/central-dto/src/main/java/uy/edu/fing/tse/dto/State.java
+++ b/central-dto/src/main/java/uy/edu/fing/tse/dto/State.java
@@ -1,9 +1,13 @@
 package uy.edu.fing.tse.dto;
 
+import java.io.Serializable;
+
 /**
  * Son los estados para los hechos, Nuevo, aComprobar, enProceso, Verificado, Publicado, Cancelado
  */
-public final class State {
+public final class State implements Serializable {
+
+    private static final long serialVersionUID = 8369408999916591568L;
 
     private Long id;
     private String value;
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 9d7ed14a00de6886c3a7a0ce4220b3803032579e..91b69784a26688c81068cb1b2f1326ac56167c30 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
@@ -1,8 +1,11 @@
 package uy.edu.fing.tse.dto;
 
+import java.io.Serializable;
 import java.util.Date;
 
-public final class StateHistory {
+public final class StateHistory implements Serializable {
+
+    private static final long serialVersionUID = 1032183705367730249L;
 
     private Long id;
     private State state;
diff --git a/central-dto/src/main/java/uy/edu/fing/tse/dto/User.java b/central-dto/src/main/java/uy/edu/fing/tse/dto/User.java
index 7d1445c0b16cc794aeb4c74d5e7f7fd6e415e457..6078a453a4827fba1e42e83c4cb392dff27736fb 100644
--- a/central-dto/src/main/java/uy/edu/fing/tse/dto/User.java
+++ b/central-dto/src/main/java/uy/edu/fing/tse/dto/User.java
@@ -1,6 +1,10 @@
 package uy.edu.fing.tse.dto;
 
-public abstract class User {
+import java.io.Serializable;
+
+public abstract class User implements Serializable {
+
+    private static final long serialVersionUID = -5501550545779779794L;
 
     private Long id;
     private String mail;
diff --git a/central-dto/src/main/java/uy/edu/fing/tse/dto/UserBO.java b/central-dto/src/main/java/uy/edu/fing/tse/dto/UserBO.java
index f378d472eccec97cd91b091514f1f25bd0d7ddcb..8058ca42aa8cf45f1cb9f15a13003bc6549b1c36 100644
--- a/central-dto/src/main/java/uy/edu/fing/tse/dto/UserBO.java
+++ b/central-dto/src/main/java/uy/edu/fing/tse/dto/UserBO.java
@@ -3,6 +3,8 @@ package uy.edu.fing.tse.dto;
 
 public final class UserBO extends User {
 
+    private static final long serialVersionUID = -460563178765136315L;
+
     private String salt;
     private String password;
     private Role role;
diff --git a/central-dto/src/main/java/uy/edu/fing/tse/dto/UserFO.java b/central-dto/src/main/java/uy/edu/fing/tse/dto/UserFO.java
index 933fc5e07575125189919b73871b3bcbaf846011..6f822184e86d4f437dba48c72a32941bf0fc6270 100644
--- a/central-dto/src/main/java/uy/edu/fing/tse/dto/UserFO.java
+++ b/central-dto/src/main/java/uy/edu/fing/tse/dto/UserFO.java
@@ -2,4 +2,5 @@ package uy.edu.fing.tse.dto;
 
 
 public final class UserFO extends User {
+    private static final long serialVersionUID = -7399690108581919726L;
 }
diff --git a/central-ejb/pom.xml b/central-ejb/pom.xml
index 9063b50dd547ad82ad75e591d3ef7eade83954ae..91f5fc68016634ed1549499b1e9bf6b65e53ed23 100644
--- a/central-ejb/pom.xml
+++ b/central-ejb/pom.xml
@@ -83,6 +83,17 @@
             <type>pom</type>
         </dependency>
 
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+            <version>2.9.9</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.rabbitmq</groupId>
+            <artifactId>amqp-client</artifactId>
+        </dependency>
+
     </dependencies>
 
     <build>
diff --git a/central-ejb/src/main/java/.keep b/central-ejb/src/main/java/.keep
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/Business.java b/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/Business.java
index 8481131195d564c9ca631dc7f32103b937ab624f..3a650f5f18a79de35aba6d3b1961cff80c19ce14 100644
--- a/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/Business.java
+++ b/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/Business.java
@@ -1,28 +1,13 @@
 package uy.edu.fing.tse.practico.business;
 
-import uy.edu.fing.tse.dto.NoticiaDTO;
-import uy.edu.fing.tse.dto.PublicacionDTO;
 
-import java.util.List;
+import uy.edu.fing.tse.dto.CheckMechanism;
+import uy.edu.fing.tse.dto.Peripherical;
 
-/**
- * La Capa de Negocio deberá proveer funcionalidades para Agregar una Publicación a
- * una Noticia, Obtener Noticias, Obtener Publicaciones y Obtener las Publicaciones de
- * una Noticia.
- */
 public interface Business {
 
-    void add(NoticiaDTO noticia);
+    void altaPeriferico(Peripherical p);
 
-    void add(PublicacionDTO publicacion, NoticiaDTO noticia);
-
-    NoticiaDTO findNoticia(long idNoticia);
-
-    List<NoticiaDTO> getNoticias();
-
-    List<PublicacionDTO> getPublicaciones();
-
-    List<PublicacionDTO> getPublicaciones(final long idNoticia);
-
-    NoticiaDTO addPublicacionANoticia(final PublicacionDTO pub, final long idNoticia);
+    void altaVerificacionMecanismo(CheckMechanism cm);
 }
+
diff --git a/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/BusinessBean.java b/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/BusinessBean.java
index fde79c48f597acd31ad99023d51466216c2bc5ab..b3d2c3f43535aec7e695ccae168d4935b81d98d0 100644
--- a/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/BusinessBean.java
+++ b/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/BusinessBean.java
@@ -1,19 +1,13 @@
 package uy.edu.fing.tse.practico.business;
 
 
-import uy.edu.fing.tse.dto.NoticiaDTO;
-import uy.edu.fing.tse.dto.PublicacionDTO;
+import uy.edu.fing.tse.dto.CheckMechanism;
+import uy.edu.fing.tse.dto.Peripherical;
 import uy.edu.fing.tse.practico.db.DataAccessBean;
 
 import javax.annotation.PostConstruct;
 import javax.ejb.*;
-import java.util.List;
 
-/**
- * Se debe controlar que una noticia no tenga más de diez publicaciones. Esta
- * capa deberá implementarse con Stateless Session Beans que provean interfaces
- * remotas y locales
- */
 @Stateless
 @Local({BusinessLocal.class})
 @Remote({BusinessRemote.class})
@@ -29,45 +23,12 @@ public class BusinessBean implements BusinessLocal, BusinessRemote {
     }
 
     @Override
-    public void add(NoticiaDTO noticia) {
-        dataAccess.alta(noticia);
-    }
-
-    @Override
-    public void add(PublicacionDTO publicacion, NoticiaDTO noticia) {
-        noticia.getPublicaciones().add(publicacion);
-        dataAccess.alta(noticia);
-    }
+    public void altaPeriferico(Peripherical p) {
 
-    @Override
-    public NoticiaDTO findNoticia(final long idNoticia) {
-        return dataAccess.find(idNoticia);
-    }
-
-    @Override
-    public List<NoticiaDTO> getNoticias() {
-        return dataAccess.getNoticias();
     }
 
     @Override
-    public List<PublicacionDTO> getPublicaciones() {
-        return dataAccess.getPublicaciones();
-    }
-
-    @Override
-    public List<PublicacionDTO> getPublicaciones(final long idNoticia) {
-        return dataAccess.find(idNoticia).getPublicaciones();
-    }
-
-    @Override
-    public NoticiaDTO addPublicacionANoticia(final PublicacionDTO pub, final long idNoticia) {
-        NoticiaDTO noticiaDTO = dataAccess.find(idNoticia);
-
-        if (noticiaDTO.getPublicaciones().size() >= 10) {
-            throw new RuntimeException("La noticia tiene demasiadas publicaciones ya.");
-        }
+    public void altaVerificacionMecanismo(CheckMechanism cm) {
 
-        noticiaDTO = dataAccess.addPublicacionToNoticia(pub, idNoticia);
-        return noticiaDTO;
     }
 }
diff --git a/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/common/Propiedades.java b/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/common/Propiedades.java
new file mode 100644
index 0000000000000000000000000000000000000000..a0b19d5f5d7ad9225a636679e660543c4ab18f63
--- /dev/null
+++ b/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/common/Propiedades.java
@@ -0,0 +1,79 @@
+package uy.edu.fing.tse.practico.business.common;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.nio.file.Path;
+import java.util.Map;
+import java.util.Properties;
+
+public enum Propiedades {
+
+    URI("uy.edu.fing.tse.business.rabbit.uri", ""),
+    HOST("uy.edu.fing.tse.business.rabbit.host", ""),
+    PORT("uy.edu.fing.tse.business.rabbit.port", "5672"),
+    VHOST("uy.edu.fing.tse.business.rabbit.vhost", ""),
+    USERNAME("uy.edu.fing.tse.business.rabbit.username", ""),
+    PASSWORD("uy.edu.fing.tse.business.rabbit.password", "");
+
+    private final String key;
+    private final String defaultValue;
+
+    Propiedades(String key, String defaultValue) {
+        this.key = key;
+        this.defaultValue = defaultValue;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public String getDefaultValue() {
+        return defaultValue;
+    }
+
+    public String getValue() {
+        return System.getProperty(key);
+    }
+
+    public Integer getIntValue() {
+        return Integer.valueOf(System.getProperty(key));
+    }
+
+    public Boolean getBoolValue() {
+        return Boolean.valueOf(System.getProperty(key));
+    }
+
+    static {
+        //Agrego valores por defecto
+        for (Propiedades value : Propiedades.values()) {
+            System.setProperty(value.key, value.defaultValue);
+        }
+        //Cargo los valores del archivo
+        try {
+            final URL resource = Propiedades.class.getClassLoader().getResource("central.properties");
+            final Path of = Path.of(resource.toURI());
+
+            load(of.toFile());
+        } catch (URISyntaxException e) {
+            throw new RuntimeException("Error leyendo el archivo de propiedades", e);
+        }
+
+    }
+
+    public static void load(final File propFile) {
+        try (FileInputStream is = new FileInputStream(propFile)) {
+            Properties p = new Properties();
+            p.load(is);
+
+            for (Map.Entry<Object, Object> entry : p.entrySet()) {
+                System.setProperty(entry.getKey().toString(), entry.getValue().toString());
+            }
+
+        } catch (IOException ex) {
+            throw new RuntimeException("Error leyendo el archivo de propiedades", ex);
+        }
+    }
+}
diff --git a/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/jms/AltaNoticiaMDB.java b/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/jms/AltaNoticiaMDB.java
deleted file mode 100644
index b16d696cb29c7dd476151d23630914e72cce497e..0000000000000000000000000000000000000000
--- a/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/jms/AltaNoticiaMDB.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package uy.edu.fing.tse.practico.business.jms;
-
-import uy.edu.fing.tse.dto.NoticiaDTO;
-import uy.edu.fing.tse.practico.business.BusinessBean;
-
-import javax.ejb.ActivationConfigProperty;
-import javax.ejb.EJB;
-import javax.ejb.MessageDriven;
-import javax.jms.JMSException;
-import javax.jms.Message;
-import javax.jms.MessageListener;
-
-//FIXME comentarlo para el despliegue en OpenShift
-@MessageDriven(name = "AltaNoticia", activationConfig = {
-        @ActivationConfigProperty(propertyName = "destination", propertyValue = "java:/jms/queue/queue_alta_noticia"),
-        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
-        @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
-        @ActivationConfigProperty(propertyName = "maxSession", propertyValue = "50")
-})
-public class AltaNoticiaMDB implements MessageListener {
-
-    @EJB
-    private BusinessBean negocio;
-
-    @Override
-    public void onMessage(Message message) {
-        try {
-            final String body = message.getBody(String.class);
-            final String[] split = body.trim().split("\\|");
-
-            final NoticiaDTO noticia = new NoticiaDTO(null, split[0], split[1]);
-            negocio.add(noticia);
-
-        } catch (JMSException e) {
-            e.printStackTrace();
-        }
-    }
-}
diff --git a/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/jms/JMSProducer.java b/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/jms/JMSProducer.java
deleted file mode 100644
index b364f6df82121ee97953bd4487ab855550627846..0000000000000000000000000000000000000000
--- a/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/jms/JMSProducer.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package uy.edu.fing.tse.practico.business.jms;
-
-import uy.edu.fing.tse.dto.NoticiaDTO;
-
-import javax.annotation.Resource;
-import javax.ejb.Stateless;
-import javax.jms.*;
-
-@Stateless
-public class JMSProducer {
-
-    @Resource(lookup = "java:/ConnectionFactory")
-    private ConnectionFactory connectionFactory;
-
-    @Resource(lookup = "java:/jms/queue/queue_alta_noticia")
-    private Queue sendQueue;
-
-    public void altaNoticia(final NoticiaDTO noticia) {
-        try {
-            sendMsj(noticia.getTitulo() + "|" + noticia.getDescripcion());
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    private void sendMsj(final String messageStr) {
-        // Create the JMS connection, session, producer, and consumer
-        try (Connection connection = connectionFactory.createConnection()) {
-            final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-            final MessageProducer producer = session.createProducer(sendQueue);
-
-            connection.start();
-
-            final Message message = session.createTextMessage(messageStr);
-            producer.send(message);
-        } catch (JMSException _e) {
-            //ignore
-        }
-    }
-}
diff --git a/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/mq/MessageConsumer.java b/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/mq/MessageConsumer.java
new file mode 100644
index 0000000000000000000000000000000000000000..fc6a8fe05fb431574ee880c3e781bf69b9cca1b8
--- /dev/null
+++ b/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/mq/MessageConsumer.java
@@ -0,0 +1,78 @@
+package uy.edu.fing.tse.practico.business.mq;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.rabbitmq.client.AMQP;
+import com.rabbitmq.client.Channel;
+import com.rabbitmq.client.DefaultConsumer;
+import com.rabbitmq.client.Envelope;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import uy.edu.fing.tse.dto.CheckMechanism;
+import uy.edu.fing.tse.dto.Peripherical;
+import uy.edu.fing.tse.practico.business.BusinessBean;
+
+import javax.annotation.PostConstruct;
+import javax.ejb.EJB;
+import javax.ejb.Singleton;
+import javax.ejb.Startup;
+import java.io.IOException;
+import java.util.concurrent.TimeoutException;
+
+@Singleton
+@Startup
+public class MessageConsumer {
+
+    private static final Logger LOG = LoggerFactory.getLogger(MessageConsumer.class);
+
+    private Channel channel;
+
+    @EJB
+    private BusinessBean negocio;
+
+    @PostConstruct
+    public void init() {
+        try {
+            channel = RabbitConfig.channel();
+            subscripcion(Queue.SUBCRIBTION, channel);
+            verificacion(Queue.VERIFICATION, channel);
+        } catch (IOException | TimeoutException e) {
+            LOG.error("Error: ", e);
+            throw new RuntimeException("Error al construir la coneccion con MQ", e);
+        }
+    }
+
+    private void subscripcion(final Queue queue, final Channel channel) throws IOException {
+        LOG.info("Subscribing: " + queue.name);
+        channel.basicConsume(queue.name, false, queue.name + "Tag", new DefaultConsumer(channel) {
+            @Override
+            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
+                String routingKey = envelope.getRoutingKey();
+                String contentType = properties.getContentType();
+                long deliveryTag = envelope.getDeliveryTag();
+
+                final Peripherical peripherical = new ObjectMapper().readValue(body, Peripherical.class);
+                negocio.altaPeriferico(peripherical);
+
+                channel.basicAck(deliveryTag, false);
+            }
+        });
+    }
+
+    private void verificacion(final Queue queue, final Channel channel) throws IOException {
+        LOG.info("Subscribing: " + queue.name);
+        channel.basicConsume(queue.name, false, queue.name + "Tag", new DefaultConsumer(channel) {
+            @Override
+            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
+                String routingKey = envelope.getRoutingKey();
+                String contentType = properties.getContentType();
+                long deliveryTag = envelope.getDeliveryTag();
+
+
+                final CheckMechanism cm = new ObjectMapper().readValue(body, CheckMechanism.class);
+                negocio.altaVerificacionMecanismo(cm);
+
+                channel.basicAck(deliveryTag, false);
+            }
+        });
+    }
+}
diff --git a/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/mq/MessageProducer.java b/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/mq/MessageProducer.java
new file mode 100644
index 0000000000000000000000000000000000000000..cc264e1dddb0d67a82b527f731ccea6371b4c6ab
--- /dev/null
+++ b/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/mq/MessageProducer.java
@@ -0,0 +1,38 @@
+package uy.edu.fing.tse.practico.business.mq;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.rabbitmq.client.Channel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.annotation.PostConstruct;
+import javax.ejb.Stateless;
+import java.io.IOException;
+import java.util.concurrent.TimeoutException;
+
+@Stateless
+public class MessageProducer {
+
+    private static final Logger LOG = LoggerFactory.getLogger(MessageProducer.class);
+
+    private Channel channel;
+
+    @PostConstruct
+    public void init() {
+        try {
+            channel = RabbitConfig.channel();
+        } catch (IOException | TimeoutException e) {
+            LOG.error("Error: ", e);
+            throw new RuntimeException("Error al construir la coneccion con MQ", e);
+        }
+    }
+
+    public void send(final Object message, final Queue queue) throws IOException {
+        final String body = new ObjectMapper().writeValueAsString(message);
+        send(body, queue);
+    }
+
+    public void send(final String message, final Queue queue) throws IOException {
+        channel.basicPublish("", queue.name, null, message.getBytes());
+    }
+}
diff --git a/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/mq/Queue.java b/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/mq/Queue.java
new file mode 100644
index 0000000000000000000000000000000000000000..f5f1daea43e905d88ff05745dab0f2aac45e122d
--- /dev/null
+++ b/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/mq/Queue.java
@@ -0,0 +1,21 @@
+package uy.edu.fing.tse.practico.business.mq;
+
+public enum Queue {
+    REQUEST("request"),
+    VERIFICATION("verification"),
+    SUBCRIBTION("subcription"),
+    DEFAULT("default"),
+    COLA("cola");
+
+    String name;
+    boolean durable;
+    boolean exclusive;
+    boolean autoDelete;
+
+    Queue(String name) {
+        this.name = name;
+        durable = false;
+        exclusive = false;
+        autoDelete = false;
+    }
+}
diff --git a/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/mq/RabbitConfig.java b/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/mq/RabbitConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..f7bc956ffe06035356418d20dd3f8c7bc24edf67
--- /dev/null
+++ b/central-ejb/src/main/java/uy/edu/fing/tse/practico/business/mq/RabbitConfig.java
@@ -0,0 +1,42 @@
+package uy.edu.fing.tse.practico.business.mq;
+
+import com.rabbitmq.client.Channel;
+import com.rabbitmq.client.Connection;
+import com.rabbitmq.client.ConnectionFactory;
+import uy.edu.fing.tse.practico.business.common.Propiedades;
+
+import java.io.IOException;
+import java.util.concurrent.TimeoutException;
+
+final class RabbitConfig {
+    //https://barnacle.rmq.cloudamqp.com/#/queues
+    private static Channel channel = null;
+
+    private RabbitConfig() {
+    }
+
+    static Channel channel() throws IOException, TimeoutException {
+        if (channel == null) {
+            channel = connection().createChannel();
+            for (Queue queue : Queue.values()) {
+                channel.queueDeclare(queue.name, queue.durable, queue.exclusive, queue.autoDelete, null);
+            }
+        }
+        return channel;
+    }
+
+    private static Connection connection() throws IOException, TimeoutException {
+        return connectionFactory().newConnection();
+    }
+
+    private static ConnectionFactory connectionFactory() {
+        ConnectionFactory factory = new ConnectionFactory();
+        factory.setHost(Propiedades.HOST.getValue());
+        factory.setPort(Propiedades.PORT.getIntValue());
+        factory.setPassword(Propiedades.PASSWORD.getValue());
+        factory.setUsername(Propiedades.USERNAME.getValue());
+        factory.setVirtualHost(Propiedades.VHOST.getValue());
+        return factory;
+    }
+
+}
diff --git a/central-ejb/src/main/resources/central.properties b/central-ejb/src/main/resources/central.properties
new file mode 100644
index 0000000000000000000000000000000000000000..33f1c55a66bc58cb265f5d90341d44f3ef282497
--- /dev/null
+++ b/central-ejb/src/main/resources/central.properties
@@ -0,0 +1,6 @@
+uy.edu.fing.tse.business.rabbit.uri=amqp://hjxhckpo:kGFmsQ9HodjSzRVT016ttW-z7d2tn_IF@barnacle.rmq.cloudamqp.com/hjxhckpo
+uy.edu.fing.tse.business.rabbit.host=barnacle.rmq.cloudamqp.com
+uy.edu.fing.tse.business.rabbit.port=5672
+uy.edu.fing.tse.business.rabbit.vhost=hjxhckpo
+uy.edu.fing.tse.business.rabbit.username=hjxhckpo
+uy.edu.fing.tse.business.rabbit.password=kGFmsQ9HodjSzRVT016ttW-z7d2tn_IF
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index f605bf05e6e86fb7281c0bb0a195385e2ad16f0e..d907081fafca8843e7b5a2d564029f86023ed9f1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,7 +15,7 @@
         <module>central-db</module>
         <module>central-ejb</module>
         <module>central-ear</module>
-        <module>backoffice</module>
+        <!--        <module>backoffice</module>-->
     </modules>
 
     <properties>
@@ -25,12 +25,13 @@
         <version.wildfly>15.0.0.Final</version.wildfly>
 
         <!-- other plugin versions -->
-        <version.compiler.plugin>3.1</version.compiler.plugin>
+        <version.compiler.plugin>3.8.1</version.compiler.plugin>
         <version.ear.plugin>3.0.1</version.ear.plugin>
         <version.ejb.plugin>3.0.1</version.ejb.plugin>
-        <version.surefire.plugin>2.22.1</version.surefire.plugin>
+        <version.surefire.plugin>2.22.2</version.surefire.plugin>
         <version.war.plugin>3.2.2</version.war.plugin>
 
+        <org.mapstruct.version>1.3.0.Final</org.mapstruct.version>
     </properties>
 
     <dependencyManagement>
@@ -202,10 +203,16 @@
                 <version>1.2</version>
             </dependency>
 
+            <dependency>
+                <groupId>com.rabbitmq</groupId>
+                <artifactId>amqp-client</artifactId>
+                <version>5.7.0</version>
+            </dependency>
+
             <dependency>
                 <groupId>org.mapstruct</groupId>
                 <artifactId>mapstruct</artifactId>
-                <version>1.3.0.Final</version>
+                <version>${org.mapstruct.version}</version>
             </dependency>
         </dependencies>
     </dependencyManagement>
@@ -289,7 +296,10 @@
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-surefire-plugin</artifactId>
                     <version>${version.surefire.plugin}</version>
+
                     <configuration>
+                        <skip>false</skip>
+                        <skipTests>false</skipTests>
                         <argLine>
                             --illegal-access=permit
                         </argLine>