diff --git a/config.h b/config.h
index 38783dd841c0d070aa8987e6f385be77de2d7d60..e9187bd7b4a22dd3b95af01cdedab040a26b4b59 100755
--- a/config.h
+++ b/config.h
@@ -3,4 +3,5 @@
 
 #define DBVERSION 2
 
+
 #endif // CONFIG_H
diff --git a/ddpRequests/ddpsubscriptionrequest.cpp b/ddpRequests/ddpsubscriptionrequest.cpp
index 1d0d7089285ae6c52e86201866e580e7c5ce672f..da6a374a59d9124c47d34868cfde1c692b01f58f 100755
--- a/ddpRequests/ddpsubscriptionrequest.cpp
+++ b/ddpRequests/ddpsubscriptionrequest.cpp
@@ -21,6 +21,7 @@
 
 
 #include "ddpsubscriptionrequest.h"
+#include "../rocketchatserverconfig.h"
 
 DDPSubscriptionRequest::DDPSubscriptionRequest( const QString &pCollection, const QJsonArray &pParams )
 {
@@ -39,9 +40,24 @@ DDPSubscriptionRequest::DDPSubscriptionRequest()
 
 void DDPSubscriptionRequest::buildRequest( const QString &pCollection, const QJsonArray &pParams )
 {
+    QJsonArray params = pParams;
+    QJsonArray args;
+    QJsonObject obj;
+    obj["useCollection"] = false;
+    obj["args"] = args;
+    int major = std::get<0>( RocketChatServerConfig::serverVersion );
+    int minor = std::get<1>( RocketChatServerConfig::serverVersion );
+    int patch = std::get<2>( RocketChatServerConfig::serverVersion );
+
+    if ( major != -1 && minor != -1 && patch != -1 ) {
+        if ( major >= 0 && minor > 6 ) {
+            params.append( obj );
+        }
+    }
+
     QJsonObject request;
     request["name"] = pCollection;
     request["msg"] = "sub";
-    request["params"] = pParams;
+    request["params"] = params;
     mRawRequest = request;
 }
diff --git a/engine.pro b/engine.pro
index 2ca379ed4a2f118c7cc4251e9931dc4ea0123242..bdbee04702809ee7c79f531b6609d18cd066515a 100644
--- a/engine.pro
+++ b/engine.pro
@@ -85,6 +85,7 @@ SOURCES +=  api/meteorddp.cpp \
     CustomModels/loginmethodsmodel.cpp \
     repos/loginmethodsrepository.cpp \
     repos/entities/loginmethod.cpp \
+    restRequests/getserverinforequest.cpp \
     ddpRequests/rocketchatblockuserrequest.cpp \
     ddpRequests/rocketchatunblockuserrequest.cpp
 
@@ -172,6 +173,7 @@ HEADERS += \
     CustomModels/loginmethodsmodel.h \
     repos/loginmethodsrepository.h \
     repos/entities/loginmethod.h \
+    restRequests/getserverinforequest.h \
     ddpRequests/rocketchatblockuserrequest.h \
     ddpRequests/rocketchatunblockuserrequest.h
 
@@ -264,4 +266,3 @@ CONFIG(release, debug|release) {
 RESOURCES += \
     sql.qrc
 
-
diff --git a/restRequests/getserverinforequest.cpp b/restRequests/getserverinforequest.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ac6475b028bfdb9a6fb9f4910e36328a72fa248d
--- /dev/null
+++ b/restRequests/getserverinforequest.cpp
@@ -0,0 +1,6 @@
+#include "getserverinforequest.h"
+
+GetServerInfoRequest::GetServerInfoRequest( const RestRequestCallback &pSuccess, const RestRequestCallback &pError ): GetRequest( RestPaths::apiServerInfo, pSuccess, pError )
+{
+
+}
diff --git a/restRequests/getserverinforequest.h b/restRequests/getserverinforequest.h
new file mode 100644
index 0000000000000000000000000000000000000000..dbabce0b2578ab94a9950b668e3396554435e7ce
--- /dev/null
+++ b/restRequests/getserverinforequest.h
@@ -0,0 +1,13 @@
+#ifndef GETSERVERINFOREQUEST_H
+#define GETSERVERINFOREQUEST_H
+
+#include "getrequest.h"
+#include "restpaths.h"
+
+class GetServerInfoRequest: public GetRequest
+{
+    public:
+        GetServerInfoRequest( const RestRequestCallback &pSuccess, const RestRequestCallback &pError );
+};
+
+#endif // GETSERVERINFOREQUEST_H
diff --git a/restRequests/restpaths.cpp b/restRequests/restpaths.cpp
index 08ea3c8a58c57190e81a5ba0d9fe9146812bfd52..f4d707a097ad9f6092610a45f88c62fef7ba9aff 100755
--- a/restRequests/restpaths.cpp
+++ b/restRequests/restpaths.cpp
@@ -31,3 +31,4 @@ const QString RestPaths::apiRoomMessages = "/channels.history";
 const QString RestPaths::apiSendMessage = "/chat.postMessage";
 const QString RestPaths::apiJoinedRooms = "/channels.list.joined";
 const QString RestPaths::apiJoinedGroups = "/groups.list";
+const QString RestPaths::apiServerInfo = "/info";
diff --git a/restRequests/restpaths.h b/restRequests/restpaths.h
index 3a6eece3f72715f88b24940685a739de99cafd14..b82d7f37a58f34af84e3e1df0eeb3e13a565ec7b 100755
--- a/restRequests/restpaths.h
+++ b/restRequests/restpaths.h
@@ -36,6 +36,7 @@ class RestPaths
         const static QString apiSendMessage;
         const static QString apiJoinedRooms;
         const static QString apiJoinedGroups;
+        const static QString apiServerInfo;
 };
 
 #endif // RESTPATHS_H
diff --git a/rocketchatserver.cpp b/rocketchatserver.cpp
index 6bac9e3aa86afc0ddf90bf7135714e4430105b16..dbff073e0a34c4b9a87a43b4bdcf4ccdcdd32800 100755
--- a/rocketchatserver.cpp
+++ b/rocketchatserver.cpp
@@ -64,7 +64,6 @@ RocketChatServerData::~RocketChatServerData()
 {
     qDebug() << "RocketChatServerData destructor start";
 
-    
     delete mEmojiService;
     delete mFileService;
     qDebug() << "RocketChatServerData destructor end";
@@ -838,6 +837,7 @@ void RocketChatServerData::onDDPAuthenticated()
     getCustomEmojis();
     setUserPresenceStatus( 1 );
     mStorage->setSetting( "currentServer", mBaseUrl );
+    getServerInfo();
 
     if ( !mCurrentChannel.isEmpty() ) {
         joinChannel( mCurrentChannel );
@@ -1040,6 +1040,7 @@ void RocketChatServerData::onDDPMessageReceived( const QJsonObject &pMessage )
     sendUnsentMessages();
 
     if ( Q_LIKELY( pMessage.contains( "collection" ) ) ) {
+
         if ( pMessage["collection"] == "stream-notify-user" ) {
             handleChannelMessage( pMessage );
         } else if ( pMessage["collection"] == "users" ) {
@@ -1242,13 +1243,13 @@ void RocketChatServerData::joinJitsiCall( const QString &pRoomId )
 {
 
     if ( Q_LIKELY( mChannels->contains( pRoomId ) ) ) {
-        QString hash = QCryptographicHash::hash( ( config.uniqueId + pRoomId ).toUtf8(), QCryptographicHash::Md5 ).toHex();
+        QString hash = QCryptographicHash::hash( ( RocketChatServerConfig::uniqueId + pRoomId ).toUtf8(), QCryptographicHash::Md5 ).toHex();
 #if defined(Q_OS_IOS) || defined(Q_OS_ANDROID)
         QString scheme = "org.jitsi.meet://";
 #else
         QString scheme = "https://";
 #endif
-        QString url = scheme + config.jitsiMeetUrl + "/" + config.jitsiMeetPrefix + hash;
+        QString url = scheme + RocketChatServerConfig::jitsiMeetUrl + "/" + RocketChatServerConfig::jitsiMeetPrefix + hash;
         qDebug() << url;
         emit openUrl( url );
     }
@@ -1316,15 +1317,15 @@ void RocketChatServerData::getServerSettings()
             QString value = currentConfObject["value"].toString();
 
             if ( id  == "uniqueID" ) {
-                config.uniqueId = value;
+                RocketChatServerConfig::uniqueId = value;
             }
 
             if ( id == "Jitsi_Domain" ) {
-                config.jitsiMeetUrl = value;
+                RocketChatServerConfig::jitsiMeetUrl = value;
             }
 
             if ( id == "Jitsi_URL_Room_Prefix" ) {
-                config.jitsiMeetPrefix = value;
+                RocketChatServerConfig::jitsiMeetPrefix = value;
             }
         }
 
@@ -1637,6 +1638,29 @@ void RocketChatServerData::getLoginMethods()
     mDdpApi->sendRequest( loginMethodsSubscription );
 }
 
+void RocketChatServerData::getServerInfo()
+{
+    RestRequestCallback success = [ = ]( QNetworkReply * pReply, QJsonObject data, RestApi * pApi ) {
+        Q_UNUSED( pApi );
+        Q_UNUSED( pReply );
+        qDebug() << data;
+
+        if ( data.contains( "info" ) ) {
+            QJsonObject info = data["info"].toObject();
+
+            if ( info.contains( "version" ) ) {
+                QString version = info["version"].toString();
+                QStringList verParts = version.split( "." );
+                std::get<0>( RocketChatServerConfig::serverVersion ) = verParts[0].toInt();
+                std::get<1>( RocketChatServerConfig::serverVersion ) = verParts[1].toInt();
+                std::get<2>( RocketChatServerConfig::serverVersion ) = verParts[2].toInt();
+            }
+        }
+    };
+    QSharedPointer<GetServerInfoRequest> serverInfoRequest( new GetServerInfoRequest( success, nullptr ) );
+    mRestApi->sendRequest( serverInfoRequest );
+}
+
 QList<QSharedPointer<RocketChatUser> > RocketChatServerData::getUserOfChannel( const QString &pChannelId )
 {
     QList<QSharedPointer<RocketChatUser>> users;
diff --git a/rocketchatserver.h b/rocketchatserver.h
index d2a0ced09e465b2206df6f562cf545c1c5bb7ba8..c2bec5c4983c5591887d5471688ba67a217707c9 100755
--- a/rocketchatserver.h
+++ b/rocketchatserver.h
@@ -67,6 +67,7 @@
 #include "ddpRequests/rocketchatunblockuserrequest.h"
 #include "restRequests/restrequest.h"
 #include "restRequests/restlogoutrequest.h"
+#include "restRequests/getserverinforequest.h"
 #include "fileuploader.h"
 #include "notifications/notifications.h"
 #include "services/rocketchatchannelservice.h"
@@ -129,7 +130,7 @@ class RocketChatServerData : public QObject
         void createChannel( const QString &pChannelName, const QStringList &pUsers, bool pReadonly );
         void createPrivateGroup( const QString &pChannelName, const QStringList &pUsers, bool pReadonly );
         void addUsersToChannel( const QString &pChannelName, const QStringList &pUsers );
-        void sendMessage( const QString &pMessage, const QString &pChannelId );
+        void sendMessage( const QString &pChannelId, const QString &pMessage );
 
         void uploadFile( const QString &pChannelId, const QString &pFile );
         void cancelUpload( const QString &pFileId );
@@ -153,6 +154,8 @@ class RocketChatServerData : public QObject
         void getRoomInformation( const QString &pRoomName );
         void getLoginMethods();
 
+        void getServerInfo();
+
         void logout( void );
 
         void setConnectionState( const ConnectionState &pValue );
diff --git a/rocketchatserverconfig.cpp b/rocketchatserverconfig.cpp
index 8c2f14a3e171dba84bd49a3b3351bd6a20a69886..2790381c9219752fa0d97978a59da7f7a559406e 100644
--- a/rocketchatserverconfig.cpp
+++ b/rocketchatserverconfig.cpp
@@ -21,6 +21,11 @@
 
 #include "rocketchatserverconfig.h"
 
+std::tuple<int, int, int> RocketChatServerConfig::serverVersion = std::make_tuple( -1, -1, -1 );
+QString RocketChatServerConfig::uniqueId;
+QString RocketChatServerConfig::jitsiMeetUrl;
+QString RocketChatServerConfig::jitsiMeetPrefix;
+
 RocketChatServerConfig::RocketChatServerConfig()
 {
 
diff --git a/rocketchatserverconfig.h b/rocketchatserverconfig.h
index 4d932d314ccc2a022040600c78a003a87db6c2ca..2dd65a75e5ae8fcf1388f56fe4c00fd18ba9f4df 100644
--- a/rocketchatserverconfig.h
+++ b/rocketchatserverconfig.h
@@ -22,14 +22,17 @@
 #ifndef ROCKETCHATSERVERCONFIG_H
 #define ROCKETCHATSERVERCONFIG_H
 #include <QString>
+#include <tuple>
 
 class RocketChatServerConfig
 {
     public:
         RocketChatServerConfig();
-        QString uniqueId;
-        QString jitsiMeetUrl;
-        QString jitsiMeetPrefix;
+        static QString uniqueId;
+        static QString jitsiMeetUrl;
+        static QString jitsiMeetPrefix;
+        static std::tuple<int, int, int> serverVersion;
+
 };
 
 #endif // ROCKETCHATSERVERCONFIG_H
diff --git a/services/messageservice.cpp b/services/messageservice.cpp
index b69475eacfe5db70449c60d40a3d62076a06fe62..624b9bf5f8ea3759ff386422625dbc18ec035875 100644
--- a/services/messageservice.cpp
+++ b/services/messageservice.cpp
@@ -149,6 +149,11 @@ QSharedPointer<RocketChatMessage> MessageService::parseMessage( const QJsonObjec
             author = userObject["username"].toString();
         }
 
+        // if alias given, us it instead of the username, required for bridges
+        if ( Q_LIKELY( pMessageData.contains( "alias" ) ) ) {
+            author = pMessageData["alias"].toString();
+        }
+
         if ( Q_LIKELY( userObject.contains( "_id" ) ) ) {
             authorId = userObject["_id"].toString();
         }