diff --git a/.gitignore b/.gitignore
index 3f54611f..240b7dc0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,4 +7,5 @@
.classpath
pom.xml.versionsBackup
*/dist/*
-/Bundle/target/
\ No newline at end of file
+/Bundle/target/
+/Plugins-MQ/target/
diff --git a/Plugins-MQ/docs/PluginMQHowTo.md b/Plugins-MQ/docs/PluginMQHowTo.md
new file mode 100644
index 00000000..f7470f18
--- /dev/null
+++ b/Plugins-MQ/docs/PluginMQHowTo.md
@@ -0,0 +1,38 @@
+# OpenAS2 MQ Plugin
+
+## Overview
+This plugin allows OpenAS2 to interconnect with a Message Queue for message exchange
+and message tracking events
+## Installation
+The plugin is enabled by adding the included Jars in the lib folder of your OpenAS2
+installation and appending the module configuration section in the config.xml file
+## Mode of Operation
+The Module operates by creating 2 Outbound Topic publishing destinations and one
+input consuming queue:
+
+ - Messages published into the input consuming queue will get wrapped into an AS2 message
+and sent out to the corresponding partner based on the Partnership configuration file
+
+ - AS2 Messages received including MDNs will be published in the Messages Output
+publishing Topic
+
+ - Any tracking events from the messages generated from either the AS2 Messages sent/received
+will be posted as Event messages in the Event Output Publishing Topic
+
+### Adapters
+The module includes 2 adapters to connect with MQ Brokers:
+ - A generic JMS implementation of the MQ Broker connection
+ - A RabbitMQ implementation using the Java Native RabbitMQ client library
+
+To use either, the corresponding Jar for the Driver library used on the adapter
+must be also added to the server's Lib folder.
+
+Authentication parameters and other details needed by the driver should be added
+as attributes on the module declaration on config.xml
+
+#### JMS Adapter
+The JMS adapter uses the following parameters:
+ - jms_factory_jndi : The JNDI path of the Connection Factory used for JMS Connection
+#### RMQ Adapter
+ - uri: AMQP Connection string to RabbitMQ, including Username/password, Host and Port
+ - virtualhost: Virtual host to attach
diff --git a/Plugins-MQ/pom.xml b/Plugins-MQ/pom.xml
new file mode 100644
index 00000000..e6b2cc6d
--- /dev/null
+++ b/Plugins-MQ/pom.xml
@@ -0,0 +1,102 @@
+
+
+ 4.0.0
+
+ net.sf.openas2
+ OpenAS2
+ 2.10.0
+
+ openas2-plugins-mq
+ jar
+
+ OpenAS2 Plugins MQ
+
+ MQ Plugin for OpenAS2
+
+
+
+ ${project.parent.artifactId}-plugin-mq-${project.version}.zip
+ UTF-8
+ ${project.basedir}/lib
+ PluginMQHowTo.md
+ ${project.basedir}/docs/${help.filename}
+ ${project.basedir}/dist
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+
+
+ default-cli
+
+ run
+
+ package
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+
+
+
+
+ javax.jms
+ javax.jms-api
+ 2.0.1
+ jar
+
+
+ com.rabbitmq
+ amqp-client
+ 5.6.0
+ jar
+
+
+ commons-io
+ commons-io
+ 2.6
+ jar
+
+
+ commons-logging
+ commons-logging
+ 1.2
+ jar
+
+
+ net.sf.openas2
+ openas2-server
+ ${project.version}
+
+
+
+
\ No newline at end of file
diff --git a/Plugins-MQ/src/config/config_example.xml b/Plugins-MQ/src/config/config_example.xml
new file mode 100644
index 00000000..a2fc94e6
--- /dev/null
+++ b/Plugins-MQ/src/config/config_example.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Plugins-MQ/src/main/java/com/greicodex/openas2/plugins/mq/ConsumerCallback.java b/Plugins-MQ/src/main/java/com/greicodex/openas2/plugins/mq/ConsumerCallback.java
new file mode 100644
index 00000000..e84a8b3f
--- /dev/null
+++ b/Plugins-MQ/src/main/java/com/greicodex/openas2/plugins/mq/ConsumerCallback.java
@@ -0,0 +1,12 @@
+package com.greicodex.openas2.plugins.mq;
+
+import java.io.InputStream;
+import java.util.Map;
+
+/**
+ *
+ * @author javier
+ */
+public interface ConsumerCallback {
+ public void onMessage(Map params,InputStream inputData);
+}
diff --git a/Plugins-MQ/src/main/java/com/greicodex/openas2/plugins/mq/MQConnector.java b/Plugins-MQ/src/main/java/com/greicodex/openas2/plugins/mq/MQConnector.java
new file mode 100644
index 00000000..7435373a
--- /dev/null
+++ b/Plugins-MQ/src/main/java/com/greicodex/openas2/plugins/mq/MQConnector.java
@@ -0,0 +1,232 @@
+package com.greicodex.openas2.plugins.mq;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.mail.MessagingException;
+import org.openas2.OpenAS2Exception;
+import org.openas2.Session;
+import org.openas2.message.AS2Message;
+import org.openas2.message.Message;
+import org.openas2.processor.BaseActiveModule;
+import org.openas2.processor.msgtracking.TrackingModule;
+import org.openas2.processor.resender.ResenderModule;
+import org.openas2.processor.storage.StorageModule;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.openas2.ComponentNotFoundException;
+import org.openas2.message.MessageMDN;
+import org.openas2.partner.Partnership;
+import org.openas2.processor.sender.SenderModule;
+
+/**
+ *
+ * @author javier
+ */
+public class MQConnector extends BaseActiveModule implements ResenderModule, TrackingModule, StorageModule, ConsumerCallback {
+
+ public static final String PARAM_MQ_ADAPTER = "adapter";
+ public static final String PARAM_MQ_MSG_PRODUCER_TOPIC = "msg_topic";
+ public static final String PARAM_MQ_MSG_CONSUMER_QUEUE = "msg_queue";
+ public static final String PARAM_MQ_EVT_PRODUCER_TOPIC = "evt_topic";
+
+ protected String mqAdapterFactoryClass;
+ protected int resendRetries;
+ protected String messageReceivedTopic;
+ protected String messageSendQueue;
+ protected String eventTopic;
+
+ MessageBrokerAdapter broker;
+ MessageBuilderModule builder;
+
+ private Log logger = LogFactory.getLog(MQConnector.class.getSimpleName());
+
+ protected AS2Message createMessage() {
+ return new AS2Message();
+ }
+
+ @Override
+ public void handle(String action, Message msg, Map