diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/NetConnectionDelegate.as b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/NetConnectionDelegate.as
index 49bbb1188fad7c45f2e137f1e9e696e46b1d1544..593cb33736868efd8556d3fa09c15b4817c90366 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/NetConnectionDelegate.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/NetConnectionDelegate.as
@@ -238,7 +238,11 @@ package org.bigbluebutton.main.model.users
 							} 
 						},
 						message
-					); //_netConnection.call      
+					); //_netConnection.call    
+					
+					_validateTokenTimer = new Timer(10000, 1);
+					_validateTokenTimer.addEventListener(TimerEvent.TIMER, validataTokenTimerHandler);
+					_validateTokenTimer.start();
 				}
 				
         private function validateToken2x():void {
@@ -274,14 +278,13 @@ package org.bigbluebutton.main.model.users
         }
 
         public function sendMessage2x(onSuccess:Function, onFailure:Function, json:Object):void {
-					//if (useRTMP) {
+					if (useRTMP) {
 						sendMessageToRed5(onSuccess, onFailure, json);
-					//} else {
+					} else {
 						if (connected2Vertx) {
 							sendToVertx(json);
-						}
-						
-					//}		
+						}	
+					}		
         }
 								
 				private function sendMessageToRed5(onSuccess:Function, onFailure:Function, json:Object):void {
@@ -443,19 +446,19 @@ package org.bigbluebutton.main.model.users
             }
         }
 				
-				private var useRTMP:Boolean = true;
+				private var useRTMP:Boolean = false;
 				
 				public function connect():void {
-					//if (useRTMP) {
+					if (useRTMP) {
 						connectRTMP();
-					//} else {
+					} else {
 						connectToVertx(LiveMeeting.inst().me.authToken);
-					//}
+					}
 				}
 
 				private function connectMessage():void {
 					var message:Object = {
-						header: {name: "ConnectMessage", 
+						header: {name: "HandshakeMessage", 
 							meetingId: UsersUtil.getInternalMeetingID(), 
 							userId: UsersUtil.getMyUserID()},
 						body: {token: LiveMeeting.inst().me.authToken}
@@ -472,12 +475,20 @@ package org.bigbluebutton.main.model.users
 				
 				public function onMessageFromDS(msg: Object): void {
 					trace("*** From DS: " + JSON.stringify(msg));
+					var header: Object = msg.header as Object;
+					
+					var name:String = header.name as String;
+					if (name == "HandshakeReplyMessage") {
+						validateTokenVertx();
+					} else {
+						onMessageFromServer2x(header.name as String, JSON.stringify(msg));
+					}
 				}
 				
 				private var connected2Vertx:Boolean = false;
 				
 				public function connectedToVertx(): void {
-					//trace("*** From DS: connectedToVertx");
+					trace("*** From DS: connectedToVertx");
 					connected2Vertx = true;
 					connectMessage();
 				}
diff --git a/labs/vertx-akka/src/main/java/org/bigbluebutton/vertx/SockJSHandlerVerticle.java b/labs/vertx-akka/src/main/java/org/bigbluebutton/vertx/SockJSHandlerVerticle.java
index 532f74fdf57710af12f7e540f08002cbb599c62e..7f07c43851a8d128a4abefc70f870ec910d7834a 100755
--- a/labs/vertx-akka/src/main/java/org/bigbluebutton/vertx/SockJSHandlerVerticle.java
+++ b/labs/vertx-akka/src/main/java/org/bigbluebutton/vertx/SockJSHandlerVerticle.java
@@ -78,9 +78,9 @@ public class SockJSHandlerVerticle extends AbstractVerticle {
       } else if (be.type() == BridgeEventType.PUBLISH) {
         System.out.println("Socket PUBLISH for: " + be.socket().webSession().id() + " \n   " + be.getRawMessage());
       } else if (be.type() == BridgeEventType.RECEIVE) {
-        System.out.println("Socket RECEIVE for: " + be.socket().webSession().id() + " \n   " + be.getRawMessage());
+        System.out.println("Msg to Client: " + be.socket().webSession().id() + " \n   " + be.getRawMessage());
       } else if (be.type() == BridgeEventType.SEND) {
-        System.out.println("Socket SEND for: " + be.socket().webSession().id() + " \n   " + be.getRawMessage());
+        //System.out.println("Msg from Client: " + be.socket().webSession().id() + " \n   " + be.getRawMessage());
         //String body = be.getRawMessage().getJsonObject("body").encode();
         gw.onMessageReceived(be.socket().webSession().id(), be.getRawMessage().getJsonObject("body"));
       } else if (be.type() == BridgeEventType.REGISTER) {
diff --git a/labs/vertx-akka/src/main/resources/application.conf b/labs/vertx-akka/src/main/resources/application.conf
index 1d1430f5e1300f67217777ddab4fad2a76936b04..6c82633f26b55ca08d2263f3cd87e23b48c335c2 100755
--- a/labs/vertx-akka/src/main/resources/application.conf
+++ b/labs/vertx-akka/src/main/resources/application.conf
@@ -8,7 +8,7 @@ akka {
     }
   }
   loggers = ["akka.event.slf4j.Slf4jLogger"]
-  loglevel = "INFO"
+  loglevel = "DEBUG"
   
   rediscala-publish-worker-dispatcher {
       mailbox-type = "akka.dispatch.SingleConsumerOnlyUnboundedMailbox"
diff --git a/labs/vertx-akka/src/main/resources/logback.xml b/labs/vertx-akka/src/main/resources/logback.xml
index 267781bba2dd60859c0902fe61e8312243c0acbb..438248f977dab203d02951657824d79892050fe6 100755
--- a/labs/vertx-akka/src/main/resources/logback.xml
+++ b/labs/vertx-akka/src/main/resources/logback.xml
@@ -7,9 +7,9 @@
 </appender>
 
   <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <File>logs/bbb-apps-akka.log</File>
+    <File>logs/bbb-vertx-akka.log</File>
     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <FileNamePattern>logs/bbb-apps-akka.%d{yyyy-MM-dd}.log</FileNamePattern>
+      <FileNamePattern>logs/bbb-vertx-akka.%d{yyyy-MM-dd}.log</FileNamePattern>
       <!-- keep 30 days worth of history -->
       <MaxHistory>5</MaxHistory>
     </rollingPolicy>
diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/Boot.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/Boot.scala
index 4142027d16470e4c455ddc1e48a2e1578627f9b3..a4c887bd71cb793b55885fc6960d91709a2314bf 100755
--- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/Boot.scala
+++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/Boot.scala
@@ -1,6 +1,7 @@
 package org.bigbluebutton
 
 import akka.actor.ActorSystem
+import akka.event.Logging
 import org.bigbluebutton.vertx.HelloWorld
 import io.vertx.core.Vertx
 import org.bigbluebutton.client.{ ClientGWApplication, MsgToClientGW }
@@ -11,6 +12,9 @@ import org.bigbluebutton.vertx.VertxToAkkaBus
 object Boot extends App with SystemConfiguration {
 
   implicit val system = ActorSystem("vertx-akka-system")
+  val log = Logging(system, getClass)
+
+  log.debug("*********** vertx-akka-system ***********************")
 
   val vertx = Vertx.vertx()
 
@@ -23,6 +27,7 @@ object Boot extends App with SystemConfiguration {
   val vertxToAkkaBus = new VertxToAkkaBus(vertx, akkaGW)
   val connEventBus = new InternalMessageBus
   val connectionManager = new ConnectionManager(system, vertx, connEventBus)
+  val clientManager = new ClientManager(system, connEventBus)
 
   val msgToClientGW = new MsgToClientGW
   val clientGW = new ClientGWApplication(system, msgToClientGW, connEventBus)
diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/ClientManager.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/ClientManager.scala
index b046fcb94ee57e3d3f930a5481e56584335c4da0..2b6fc79a01fe78a251a947543dfdd91a37c25284 100755
--- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/ClientManager.scala
+++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/ClientManager.scala
@@ -1,16 +1,13 @@
 package org.bigbluebutton
 
 import akka.actor.{ Actor, ActorLogging, ActorSystem, Props }
-import org.bigbluebutton.client.bus.InternalMessageBus
+import org.bigbluebutton.client.bus.{ ConnectionCreated, ConnectionDestroyed, InternalMessageBus }
 import org.bigbluebutton.client.Client
 
 class ClientManager(system: ActorSystem, connEventBus: InternalMessageBus) {
   val actorRef = system.actorOf(ClientManagerActor.props(connEventBus), "clientMgrActor")
 }
 
-case class ConnectionCreated(id: String)
-case class ConnectionDestroyed(id: String)
-
 object ClientManagerActor {
   val CLIENT_MANAGER_CHANNEL = "client-manager-channel"
 
@@ -22,11 +19,15 @@ case class ClientManagerActor(connEventBus: InternalMessageBus) extends Actor wi
 
   def receive = {
     case m: ConnectionCreated =>
-      val client = Client(m.id, connEventBus)
+      val client = Client(m.connInfo.connId, connEventBus)
       clients += client.clientId -> client
+      client.actorRef forward (m)
     case m: ConnectionDestroyed =>
-      val client = clients.get(m.id)
-      client foreach (u => clients -= m.id)
+      val client = clients.get(m.connInfo.connId)
+      client foreach { u =>
+        clients -= m.connInfo.connId
+        u.actorRef forward (m)
+      }
 
     case _ => log.debug("***** Connection cannot handle msg ")
   }
diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/Connection.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/Connection.scala
index ab35853ffb722ee385dc2096f93743c08d7d4646..4ea8ba0458a0bf6873c355157373f361f5e8e7a1 100755
--- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/Connection.scala
+++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/Connection.scala
@@ -14,7 +14,7 @@ object Connection {
 class Connection(val connId: String, vertx: Vertx, connEventBus: InternalMessageBus)(implicit val context: ActorContext) {
   val actorRef = context.actorOf(ConnectionActor.props(connId, vertx, connEventBus), "connActor" + "-" + connId)
 
-  val consumer: MessageConsumer[JsonObject] = vertx.eventBus().consumer("FOO-" + connId)
+  val consumer: MessageConsumer[JsonObject] = vertx.eventBus().consumer("from-socket-" + connId)
   consumer.handler(new MyConnHandler(actorRef))
 }
 
@@ -33,8 +33,7 @@ class ConnectionActor(connId: String, vertx: Vertx, connEventBus: InternalMessag
   def receive = {
     case m: SocketDestroyed =>
       connInfo foreach { conn =>
-        val m2 = ConnDestroyedMsg(conn)
-        connEventBus.publish(MsgFromConnBusMsg("clientManager", m2))
+        connEventBus.publish(MsgFromConnBusMsg(ClientManagerActor.CLIENT_MANAGER_CHANNEL, ConnectionDestroyed(conn)))
       }
 
       context stop self
@@ -46,19 +45,27 @@ class ConnectionActor(connId: String, vertx: Vertx, connEventBus: InternalMessag
         for {
           conn <- getConnInfo(m.msg)
         } yield {
+          println("**************************** HANDSHAKE DONE *****************************")
           handshakeDone = true
           connInfo = Some(conn)
+          connEventBus.publish(MsgFromConnBusMsg(ClientManagerActor.CLIENT_MANAGER_CHANNEL, ConnectionCreated(conn)))
+
+          val response = buildHandshakeReply(conn.meetingId, conn.userId, conn.token)
+          vertx.eventBus().publish("chat.to.client", response)
         }
       } else {
-        clientAddress foreach { address =>
-          println("My Handler " + m.msg)
-          vertx.eventBus().publish("chat.to.client", m.msg)
+        //println("************ FORWARDING TO CLIENT ACTOR *****************************")
+        connInfo foreach { conn =>
+          //println("************ FORWARDING TO CLIENT ACTOR " + "clientActor-" + conn.connId + " *****************************")
+          connEventBus.publish(MsgFromConnBusMsg("clientActor-" + conn.connId, MsgFromConnMsg(conn, m.msg.encode())))
         }
-
       }
 
-    //      val connInfo = ConnInfo2(connId)
-    //			connEventBus.publish() MsgFromConnMsg
+    case m: MsgToConnMsg =>
+      //println("MsgToConnMsg " + m.json)
+      val jsonObject = new JsonObject(m.json)
+      vertx.eventBus().publish("chat.to.client", jsonObject)
+
     case _ => log.debug("***** Connection cannot handle msg ")
   }
 
@@ -80,20 +87,36 @@ class ConnectionActor(connId: String, vertx: Vertx, connEventBus: InternalMessag
     conn
   }
 
+  private def buildHandshakeReply(meetingId: String, userId: String, token: String): JsonObject = {
+    val header: JsonObject = new JsonObject()
+    header.put("name", "HandshakeReplyMessage")
+    header.put("userId", userId)
+    header.put("meetingId", meetingId)
+
+    val body = new JsonObject()
+    body.put("token", token)
+
+    val reply = new JsonObject()
+    reply.put("header", header)
+    reply.put("body", body)
+
+    reply
+  }
+
   override def preStart(): Unit = {
     super.preStart()
-    connEventBus.subscribe(self, "conn-" + connId)
+    connEventBus.subscribe(self, "connActor-" + connId)
   }
 
   override def postStop(): Unit = {
     super.postStop()
-    connEventBus.unsubscribe(self, "conn-" + connId)
+    connEventBus.unsubscribe(self, "connActor-" + connId)
   }
 }
 
 class MyConnHandler(actorRef: ActorRef) extends Handler[Message[JsonObject]] {
   def handle(message: Message[JsonObject]) = {
-    println("My Handler " + message.body())
+    //println("My Handler " + message.body())
     actorRef ! (MsgFoo(message.body()))
   }
 }
diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/ConnectionManager.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/ConnectionManager.scala
index 9a6d4df6a253c545209fd7c36a9fca5419ec8570..f63542add0530e110fc8601535f73b69a6615622 100755
--- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/ConnectionManager.scala
+++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/ConnectionManager.scala
@@ -21,7 +21,7 @@ class ConnectionManager(system: ActorSystem, vertx: Vertx, connEventBus: Interna
   }
 
   def onMessageReceived(id: String, msg: JsonObject): Unit = {
-    vertx.eventBus().publish("FOO-" + id, msg)
+    vertx.eventBus().publish("from-socket-" + id, msg)
   }
 }
 
diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/ClientActor.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/ClientActor.scala
index 04fd5a85ab271dad3f5f98049324e4eaebc27f8f..61d43d5d1f4d543fa21745a9e253d541431e3d7a 100755
--- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/ClientActor.scala
+++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/ClientActor.scala
@@ -1,7 +1,7 @@
 package org.bigbluebutton.client
 
 import akka.actor.{ Actor, ActorContext, ActorLogging, Props }
-import org.bigbluebutton.client.bus.InternalMessageBus
+import org.bigbluebutton.client.bus._
 import org.bigbluebutton.client.meeting.Connections
 
 object Client {
@@ -16,14 +16,36 @@ object ClientActor {
   def props(clientId: String, connEventBus: InternalMessageBus): Props = Props(classOf[ClientActor], clientId, connEventBus)
 }
 
-class ClientActor(clientId: String, connEventBus: InternalMessageBus) extends Actor with ActorLogging {
-
-  connEventBus.subscribe(self, "client-" + clientId)
+class ClientActor(clientId: String, connEventBus: InternalMessageBus)
+    extends Actor with ActorLogging with SystemConfiguration {
 
   private val conns = new Connections
   private var authorized = false
 
   def receive = {
-    case _ => log.debug("***** UserActor cannot handle msg ")
+    case m: ConnectionCreated =>
+      connEventBus.publish(MsgFromConnBusMsg(fromClientChannel, ClientConnectedMsg(m.connInfo)))
+    case m: ConnectionDestroyed =>
+      connEventBus.publish(MsgFromConnBusMsg(fromClientChannel, ClientDisconnectedMsg(m.connInfo)))
+      context stop self
+    case m: MsgFromConnMsg =>
+      connEventBus.publish(MsgFromConnBusMsg(fromClientChannel, MsgFromClientMsg(m.connInfo, m.json)))
+    case m: DirectMsgToClient =>
+      connEventBus.publish(MsgFromConnBusMsg("connActor-" + clientId, MsgToConnMsg(m.data.core.toString())))
+    case _ => log.debug("***** ClientActor cannot handle msg ")
+  }
+
+  override def preStart(): Unit = {
+    super.preStart()
+    //println("******** CLIENT ACTOR CREATED " + "clientActor-" + clientId + " *****************************")
+    connEventBus.subscribe(self, "clientActor-" + clientId)
+    connEventBus.subscribe(self, toClientChannel)
+
+  }
+
+  override def postStop(): Unit = {
+    connEventBus.unsubscribe(self, "clientActor-" + clientId)
+    connEventBus.unsubscribe(self, toClientChannel)
+    super.postStop()
   }
 }
diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/ClientGWApplication.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/ClientGWApplication.scala
index 0cf66f4076b037928463b2ae99aaac9a7d2b30fb..444963d411dedd86f2e8484c40165a8803492eae 100755
--- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/ClientGWApplication.scala
+++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/ClientGWApplication.scala
@@ -5,17 +5,12 @@ import akka.event.Logging
 import org.bigbluebutton.client.bus._
 import org.bigbluebutton.client.endpoint.redis.{ AppsRedisSubscriberActor, MessageSender, RedisPublisher }
 import org.bigbluebutton.client.meeting.MeetingManagerActor
-
 import scala.concurrent.duration._
 
 class ClientGWApplication(system: ActorSystem, val msgToClientGW: MsgToClientGW, connEventBus: InternalMessageBus) extends SystemConfiguration {
 
   implicit val timeout = akka.util.Timeout(3 seconds)
 
-  val log = Logging(system, getClass)
-
-  log.debug("*********** meetingManagerChannel = " + meetingManagerChannel)
-
   private val redisPublisher = new RedisPublisher(system)
   private val msgSender: MessageSender = new MessageSender(redisPublisher)
 
@@ -25,7 +20,6 @@ class ClientGWApplication(system: ActorSystem, val msgToClientGW: MsgToClientGW,
 
   private val meetingManagerActorRef = system.actorOf(MeetingManagerActor.props(connEventBus), "meetingManagerActor")
   connEventBus.subscribe(meetingManagerActorRef, fromAkkaAppsChannel)
-
   connEventBus.subscribe(meetingManagerActorRef, fromClientChannel)
 
   private val msgToAkkaAppsToJsonActor = system.actorOf(MsgToAkkaAppsToJsonActor.props(connEventBus), "msgToAkkaAppsToJsonActor")
diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/MsgToAkkaAppsToJsonActor.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/MsgToAkkaAppsToJsonActor.scala
index c194a0a3233e6e096e0ca9e3e583a322bde93e6c..50f50dc5709834c0c9129ca6a91a0232039ff28c 100755
--- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/MsgToAkkaAppsToJsonActor.scala
+++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/MsgToAkkaAppsToJsonActor.scala
@@ -14,11 +14,12 @@ class MsgToAkkaAppsToJsonActor(connEventBus: InternalMessageBus)
     extends Actor with ActorLogging with SystemConfiguration {
 
   def receive = {
-    case msg: BbbCommonEnvJsNodeMsg => handle(msg)
+    case msg: MsgToAkkaApps => handle(msg)
   }
 
-  def handle(msg: BbbCommonEnvJsNodeMsg): Unit = {
-    val json = JsonUtil.toJson(msg)
+  def handle(msg: MsgToAkkaApps): Unit = {
+    println("**************** TO AKKA APPS MESSAGE ***************")
+    val json = JsonUtil.toJson(msg.payload)
     val jsonMsg = JsonMsgToAkkaApps(toAkkaAppsRedisChannel, json)
     connEventBus.publish(MsgFromConnBusMsg(toAkkaAppsJsonChannel, jsonMsg))
   }
diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/bus/InternalMessageBus.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/bus/InternalMessageBus.scala
index 5e4412b098c1cf45c3ac2a37808866fbc366bee0..46658a9e9db2d29bddb044f3898b1b481a49ed7e 100755
--- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/bus/InternalMessageBus.scala
+++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/bus/InternalMessageBus.scala
@@ -8,9 +8,9 @@ import org.bigbluebutton.common2.msgs.BbbCommonEnvJsNodeMsg
 case class ConnInfo2(meetingId: String, userId: String, token: String, connId: String)
 
 sealed trait FromConnMsg
-case class ConnCreatedMsg(connInfo: ConnInfo2) extends FromConnMsg
-case class ConnDestroyedMsg(connInfo: ConnInfo2) extends FromConnMsg
-case class MsgToConnMsg(connInfo: ConnInfo2, json: String) extends FromConnMsg
+case class ConnectionCreated(connInfo: ConnInfo2) extends FromConnMsg
+case class ConnectionDestroyed(connInfo: ConnInfo2) extends FromConnMsg
+case class MsgToConnMsg(json: String) extends FromConnMsg
 case class MsgFromConnMsg(connInfo: ConnInfo2, json: String) extends FromConnMsg
 case class JsonMsgFromAkkaApps(name: String, data: String) extends FromConnMsg
 case class JsonMsgToAkkaApps(channel: String, json: String) extends FromConnMsg
diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/MeetingManagerActor.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/MeetingManagerActor.scala
index 22124ea81cc699aa5086ff78c70fd0ad1af62584..e789b73f4cf149bcfb7650d7fa4b8f53859523db 100755
--- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/MeetingManagerActor.scala
+++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/MeetingManagerActor.scala
@@ -18,7 +18,7 @@ class MeetingManagerActor(connEventBus: InternalMessageBus)
     case msg: ClientConnectedMsg => handleConnectMsg(msg)
     case msg: ClientDisconnectedMsg => handleDisconnectMsg(msg)
     case msg: MsgFromClientMsg => handleMsgFromClientMsg(msg)
-    case msg: BbbCommonEnvJsNodeMsg => handleBbbServerMsg(msg)
+    case msg: MsgFromAkkaApps => handleBbbServerMsg(msg)
     // TODO we should monitor meeting lifecycle so we can remove when meeting ends.
   }
 
@@ -55,12 +55,12 @@ class MeetingManagerActor(connEventBus: InternalMessageBus)
     }
   }
 
-  def handleBbbServerMsg(msg: BbbCommonEnvJsNodeMsg): Unit = {
+  def handleBbbServerMsg(msg: MsgFromAkkaApps): Unit = {
     //log.debug("**** MeetingManagerActor handleBbbServerMsg " + msg.envelope.name)
     for {
-      msgType <- msg.envelope.routing.get("msgType")
+      msgType <- msg.payload.envelope.routing.get("msgType")
     } yield {
-      handleServerMsg(msgType, msg)
+      handleServerMsg(msgType, msg.payload)
     }
   }
 
diff --git a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/UserActor.scala b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/UserActor.scala
index 074a07d984b8d02417b0bdc5467a9ab05ca35714..66caa310f22d2560b0e7526ade745dc99218e8ed 100755
--- a/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/UserActor.scala
+++ b/labs/vertx-akka/src/main/scala/org/bigbluebutton/client/meeting/UserActor.scala
@@ -91,6 +91,7 @@ class UserActor(val userId: String,
   }
 
   def handleMsgFromClientMsg(msg: MsgFromClientMsg, applyWhitelist: Boolean): Unit = {
+    println("************* MESSAGE FROM CLIENT *********** \n" + msg.json)
     def convertToJsonNode(json: String): Option[JsonNode] = {
       JsonUtil.toJsonNode(json) match {
         case Success(jsonNode) => Some(jsonNode)
@@ -133,6 +134,7 @@ class UserActor(val userId: String,
             jsonNode <- convertToJsonNode(json)
           } yield {
             val akkaMsg = BbbCommonEnvJsNodeMsg(envelope, jsonNode)
+            println("****** FORWARDING TO AKKA APPS ******")
             connEventBus.publish(MsgFromConnBusMsg(toAkkaAppsChannel, MsgToAkkaApps(akkaMsg)))
           }
         }
@@ -152,6 +154,7 @@ class UserActor(val userId: String,
 
   def handleServerMsg(msgType: String, msg: BbbCommonEnvJsNodeMsg): Unit = {
     // log.debug("**** UserActor handleServerMsg " + msg)
+    println("************* MESSAGE FROM SERVER *********** \n" + msg)
     msgType match {
       case MessageTypes.DIRECT => handleDirectMessage(msg)
       case MessageTypes.BROADCAST_TO_MEETING => handleBroadcastMessage(msg)