diff --git a/akka-bbb-transcode/src/main/java/org/bigbluebutton/transcode/core/VideoTranscoder.java b/akka-bbb-transcode/src/main/java/org/bigbluebutton/transcode/core/VideoTranscoder.java
index 39cb55bf363a688379abb40e0e0679f179c41c79..e98370750410b29cf9a1f7998aaba8f0e6e40471 100644
--- a/akka-bbb-transcode/src/main/java/org/bigbluebutton/transcode/core/VideoTranscoder.java
+++ b/akka-bbb-transcode/src/main/java/org/bigbluebutton/transcode/core/VideoTranscoder.java
@@ -179,44 +179,28 @@ public class VideoTranscoder extends UntypedActor implements ProcessMonitorObser
                     this.type = Type.TRANSCODE_H264_TO_H263;
                     this.sourceModule = params.get(Constants.MODULE);
                     this.sourceIp = params.get(Constants.LOCAL_IP_ADDRESS);
-                    this.localVideoPort = params.get(Constants.LOCAL_VIDEO_PORT);
-                    this.remoteVideoPort = params.get(Constants.REMOTE_VIDEO_PORT);
                     this.destinationIp = params.get(Constants.DESTINATION_IP_ADDRESS);
-                    this.voiceBridge = params.get(Constants.VOICE_CONF);
-                    this.callername  = params.get(Constants.CALLERNAME);
                     this.videoStreamName = params.get(Constants.INPUT);
                     break;
 
                 case Constants.TRANSCODE_ROTATE_RIGHT:
                     this.type = Type.TRANSCODE_ROTATE_RIGHT;
                     this.sourceIp = params.get(Constants.LOCAL_IP_ADDRESS);
-                    this.localVideoPort = params.get(Constants.LOCAL_VIDEO_PORT);
-                    this.remoteVideoPort = params.get(Constants.REMOTE_VIDEO_PORT);
                     this.destinationIp = params.get(Constants.DESTINATION_IP_ADDRESS);
-                    this.voiceBridge = params.get(Constants.VOICE_CONF);
-                    this.callername  = params.get(Constants.CALLERNAME);
                     this.videoStreamName = params.get(Constants.INPUT);
                     break;
 
                 case Constants.TRANSCODE_ROTATE_LEFT:
                     this.type = Type.TRANSCODE_ROTATE_LEFT;
                     this.sourceIp = params.get(Constants.LOCAL_IP_ADDRESS);
-                    this.localVideoPort = params.get(Constants.LOCAL_VIDEO_PORT);
-                    this.remoteVideoPort = params.get(Constants.REMOTE_VIDEO_PORT);
                     this.destinationIp = params.get(Constants.DESTINATION_IP_ADDRESS);
-                    this.voiceBridge = params.get(Constants.VOICE_CONF);
-                    this.callername  = params.get(Constants.CALLERNAME);
                     this.videoStreamName = params.get(Constants.INPUT);
                     break;
 
                 case Constants.TRANSCODE_ROTATE_UPSIDE_DOWN:
                     this.type = Type.TRANSCODE_ROTATE_UPSIDE_DOWN;
                     this.sourceIp = params.get(Constants.LOCAL_IP_ADDRESS);
-                    this.localVideoPort = params.get(Constants.LOCAL_VIDEO_PORT);
-                    this.remoteVideoPort = params.get(Constants.REMOTE_VIDEO_PORT);
                     this.destinationIp = params.get(Constants.DESTINATION_IP_ADDRESS);
-                    this.voiceBridge = params.get(Constants.VOICE_CONF);
-                    this.callername  = params.get(Constants.CALLERNAME);
                     this.videoStreamName = params.get(Constants.INPUT);
                     break;
 
diff --git a/bbb-video/src/main/java/org/bigbluebutton/app/video/VideoApplication.java b/bbb-video/src/main/java/org/bigbluebutton/app/video/VideoApplication.java
index 7ff732dce4b7eafbd02f790ffe0bb342071bd58b..868c323ff9fd8c75db1c9753a9188c82231ee3f5 100755
--- a/bbb-video/src/main/java/org/bigbluebutton/app/video/VideoApplication.java
+++ b/bbb-video/src/main/java/org/bigbluebutton/app/video/VideoApplication.java
@@ -213,6 +213,28 @@ public class VideoApplication extends MultiThreadedApplicationAdapter {
         }
     }
 
+    private void requestRotateVideoTranscode(IBroadcastStream stream) {
+        IConnection conn = Red5.getConnectionLocal();
+        String userId = getUserId();
+        String meetingId = conn.getScope().getName();
+        String streamId = stream.getPublishedName();
+        String ipAddress = conn.getHost();
+
+        switch (VideoRotator.getDirection(streamId)) {
+            case VideoRotator.ROTATE_RIGHT:
+                publisher.startRotateRightTranscodeRequest(meetingId, userId, streamId, ipAddress);
+                break;
+            case VideoRotator.ROTATE_LEFT:
+                publisher.startRotateLeftTranscodeRequest(meetingId, userId, streamId, ipAddress);
+                break;
+            case VideoRotator.ROTATE_UPSIDE_DOWN:
+                publisher.startRotateUpsideDownTranscodeRequest(meetingId, userId, streamId, ipAddress);
+                break;
+            default:
+                break;
+        }
+    }
+
     @Override
     public void streamBroadcastStart(IBroadcastStream stream) {
     	IConnection conn = Red5.getConnectionLocal();  
@@ -226,8 +248,9 @@ public class VideoApplication extends MultiThreadedApplicationAdapter {
         addH263PublishedStream(streamId);
         if (streamId.contains("/")) {
             if(VideoRotator.getDirection(streamId) != null) {
-                VideoRotator rotator = new VideoRotator(streamId);
-                videoRotators.put(streamId, rotator);
+//                VideoRotator rotator = new VideoRotator(streamId);
+                videoRotators.put(streamId, null);
+                requestRotateVideoTranscode(stream);
             }
         }
         else if (recordVideoStream) {
@@ -277,7 +300,8 @@ public class VideoApplication extends MultiThreadedApplicationAdapter {
         removeH263ConverterIfNeeded(streamId);
         if(videoRotators.containsKey(streamId)) {
           // Stop rotator
-          videoRotators.remove(streamId).stop();
+          videoRotators.remove(streamId);
+          // TODO: Call transcode and end video
         }
         removeH263PublishedStream(streamId);
       } else if (recordVideoStream) {
diff --git a/bbb-video/src/main/java/org/bigbluebutton/app/video/converter/VideoRotator.java b/bbb-video/src/main/java/org/bigbluebutton/app/video/converter/VideoRotator.java
index 4c56d237743904bbe1781e81f3453540576e1bee..07c4123b5cac2f3fd7bea62a0e2949ccdbf63cbc 100644
--- a/bbb-video/src/main/java/org/bigbluebutton/app/video/converter/VideoRotator.java
+++ b/bbb-video/src/main/java/org/bigbluebutton/app/video/converter/VideoRotator.java
@@ -74,9 +74,9 @@ public class VideoRotator {
 	/**
 	 * Get the rotate direction from the streamName string.
 	 * @param streamName Name of the stream with rotate direction
-	 * @return FFmpegCommand.ROTATE for the given direction if present, null otherwise
+	 * @return String for the given direction if present, null otherwise
 	 */
-	public static FFmpegCommand.ROTATE getDirection(String streamName) {
+	public static String getDirection(String streamName) {
 		int index = streamName.lastIndexOf("/");
 		String parts[] =  {
 				streamName.substring(0, index),
@@ -85,11 +85,11 @@ public class VideoRotator {
 
 		switch(parts[0]) {
 			case ROTATE_LEFT:
-				return FFmpegCommand.ROTATE.LEFT;
+				return ROTATE_LEFT;
 			case ROTATE_RIGHT:
-				return FFmpegCommand.ROTATE.RIGHT;
+				return ROTATE_RIGHT;
 			case ROTATE_UPSIDE_DOWN:
-				return FFmpegCommand.ROTATE.UPSIDE_DOWN;
+				return ROTATE_UPSIDE_DOWN;
 			default:
 				return null;
 		}
diff --git a/bbb-video/src/main/java/org/bigbluebutton/red5/pubsub/MessagePublisher.java b/bbb-video/src/main/java/org/bigbluebutton/red5/pubsub/MessagePublisher.java
index db0c5b0584616338394c6f264ec382c35acb1bcd..b26eee01986518e49122d52e1e53c029cbaa9e35 100755
--- a/bbb-video/src/main/java/org/bigbluebutton/red5/pubsub/MessagePublisher.java
+++ b/bbb-video/src/main/java/org/bigbluebutton/red5/pubsub/MessagePublisher.java
@@ -21,4 +21,36 @@ public class MessagePublisher {
 		sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
 	}
 	
+	public void startRotateLeftTranscodeRequest(String meetingId, String userId, String streamId, String ipAddress) {
+		Map<String, String> params = new HashMap<String, String>();
+		params.put(Constants.TRANSCODER_TYPE) = Constants.TRANSCODE_ROTATE_LEFT;
+		params.put(Constants.LOCAL_IP_ADDRESS) = ipAddress;
+		params.put(Constants.DESTINATION_IP_ADDRESS) = ipAddress;
+		params.put(Constants.INPUT) = streamId;
+		// TODO: transcodeId is getting userId, this probably have to change
+		StartTranscoderRequestMessage msg = new StartTranscoderRequestMessage(meetingId, userId, params);
+		sender.send(MessagingConstants.TO_BBB_TRANSCODE_SYSTEM_CHAN, msg.toJson());
+	}
+
+	public void startRotateRightTranscodeRequest(String meetingId, String userId, String streamId, String ipAddress) {
+		Map<String, String> params = new HashMap<String, String>();
+		params.put(Constants.TRANSCODER_TYPE) = Constants.TRANSCODE_ROTATE_RIGHT;
+		params.put(Constants.LOCAL_IP_ADDRESS) = ipAddress;
+		params.put(Constants.DESTINATION_IP_ADDRESS) = ipAddress;
+		params.put(Constants.INPUT) = streamId;
+		// TODO: transcodeId is getting userId, this probably have to change
+		StartTranscoderRequestMessage msg = new StartTranscoderRequestMessage(meetingId, userId, params);
+		sender.send(MessagingConstants.TO_BBB_TRANSCODE_SYSTEM_CHAN, msg.toJson());
+	}
+
+	public void startRotateUpsideDownTranscodeRequest(String meetingId, String userId, String streamId, String ipAddress) {
+		Map<String, String> params = new HashMap<String, String>();
+		params.put(Constants.TRANSCODER_TYPE) = Constants.TRANSCODE_ROTATE_UPSIDE_DOWN;
+		params.put(Constants.LOCAL_IP_ADDRESS) = ipAddress;
+		params.put(Constants.DESTINATION_IP_ADDRESS) = ipAddress;
+		params.put(Constants.INPUT) = streamId;
+		// TODO: transcodeId is getting userId, this probably have to change
+		StartTranscoderRequestMessage msg = new StartTranscoderRequestMessage(meetingId, userId, params);
+		sender.send(MessagingConstants.TO_BBB_TRANSCODE_SYSTEM_CHAN, msg.toJson());
+	}
 }