diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/EjectUserFromMeetingCmdMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/EjectUserFromMeetingCmdMsgHdlr.scala
index d7802a3515140a7c0ab38054271a4c718be49d7a..833824ef6d90d3ae1fc65e183921ee46a0d83631 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/EjectUserFromMeetingCmdMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/EjectUserFromMeetingCmdMsgHdlr.scala
@@ -16,6 +16,7 @@ trait EjectUserFromMeetingCmdMsgHdlr extends RightsManagementTrait {
     val meetingId = liveMeeting.props.meetingProp.intId
     val userId = msg.body.userId
     val ejectedBy = msg.body.ejectedBy
+    val banUser = msg.body.banUser
 
     if (permissionFailed(
       PermissionCheck.MOD_LEVEL,
@@ -38,7 +39,8 @@ trait EjectUserFromMeetingCmdMsgHdlr extends RightsManagementTrait {
           // For the moment, just assume that is a user is ejected by another user,
           // then that user should be banned (ralam may 19, 2020)
           // see https://github.com/bigbluebutton/bigbluebutton/issues/9608
-          val ban = true
+          val ban = banUser
+
           // Eject users
           //println("****************** User " + ejectedBy + " ejecting user " + userId)
           // User might have joined using multiple browsers.
diff --git a/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/UsersMgs.scala b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/UsersMgs.scala
index 4936931676dc2eca0ec2a35691e219ec37f63d07..d658d5236580558a9890d4d7f01b0e75c3a6d3a5 100755
--- a/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/UsersMgs.scala
+++ b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/UsersMgs.scala
@@ -221,7 +221,7 @@ case class UserRoleChangedEvtMsgBody(userId: String, role: String, changedBy: St
  */
 object EjectUserFromMeetingCmdMsg { val NAME = "EjectUserFromMeetingCmdMsg" }
 case class EjectUserFromMeetingCmdMsg(header: BbbClientMsgHeader, body: EjectUserFromMeetingCmdMsgBody) extends StandardMsg
-case class EjectUserFromMeetingCmdMsgBody(userId: String, ejectedBy: String)
+case class EjectUserFromMeetingCmdMsgBody(userId: String, ejectedBy: String, banUser: Boolean)
 
 /**
  * Sent from client to lock user in meeting.
diff --git a/bigbluebutton-html5/imports/api/users/server/methods/removeUser.js b/bigbluebutton-html5/imports/api/users/server/methods/removeUser.js
index afe41d6f9f83c3e34a23dd0932a67080b9bb77cc..6649b481ea15d6f55897e0470dbeea7ebfb1facb 100644
--- a/bigbluebutton-html5/imports/api/users/server/methods/removeUser.js
+++ b/bigbluebutton-html5/imports/api/users/server/methods/removeUser.js
@@ -3,7 +3,7 @@ import { check } from 'meteor/check';
 import RedisPubSub from '/imports/startup/server/redis';
 import { extractCredentials } from '/imports/api/common/server/helpers';
 
-export default function removeUser(userId) {
+export default function removeUser(userId, banUser) {
   const REDIS_CONFIG = Meteor.settings.private.redis;
   const CHANNEL = REDIS_CONFIG.channels.toAkkaApps;
   const EVENT_NAME = 'EjectUserFromMeetingCmdMsg';
@@ -15,6 +15,7 @@ export default function removeUser(userId) {
   const payload = {
     userId,
     ejectedBy,
+    banUser,
   };
 
   return RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, ejectedBy, payload);
diff --git a/bigbluebutton-html5/imports/api/voice-users/server/methods/ejectUserFromVoice.js b/bigbluebutton-html5/imports/api/voice-users/server/methods/ejectUserFromVoice.js
index a29699dfb8890970590c72e4446621051fa00c7f..1039a83d9234fa2e47cad612d963c64e8dc81ab7 100644
--- a/bigbluebutton-html5/imports/api/voice-users/server/methods/ejectUserFromVoice.js
+++ b/bigbluebutton-html5/imports/api/voice-users/server/methods/ejectUserFromVoice.js
@@ -3,7 +3,7 @@ import { check } from 'meteor/check';
 import RedisPubSub from '/imports/startup/server/redis';
 import { extractCredentials } from '/imports/api/common/server/helpers';
 
-export default function ejectUserFromVoice(userId, banUser) {
+export default function ejectUserFromVoice(userId) {
   const REDIS_CONFIG = Meteor.settings.private.redis;
   const CHANNEL = REDIS_CONFIG.channels.toAkkaApps;
   const EVENT_NAME = 'EjectUserFromVoiceCmdMsg';
diff --git a/bigbluebutton-html5/imports/startup/server/redis.js b/bigbluebutton-html5/imports/startup/server/redis.js
index f8901d35204579f0cceb9bbd69f29daf9e21c6e8..5894152a5e2ac4f464aa6e13a3eacdc51c865c5a 100755
--- a/bigbluebutton-html5/imports/startup/server/redis.js
+++ b/bigbluebutton-html5/imports/startup/server/redis.js
@@ -239,6 +239,9 @@ class RedisPubSub {
       userId,
     };
 
+    if (!meetingId || !userId) {
+      return Logger.warn(`Interrupted publishing of ${JSON.stringify(header)} due to missing data`);
+    }
     const envelope = makeEnvelope(channel, eventName, header, payload, { meetingId, userId });
 
     return this.pub.publish(channel, envelope, RedisPubSub.handlePublishError);
diff --git a/bigbluebutton-html5/imports/ui/components/user-list/service.js b/bigbluebutton-html5/imports/ui/components/user-list/service.js
index a614699e8e09a08af4785139143b34139dae52d4..27788e40e35ed097fd416301db31d425481dce43 100755
--- a/bigbluebutton-html5/imports/ui/components/user-list/service.js
+++ b/bigbluebutton-html5/imports/ui/components/user-list/service.js
@@ -394,7 +394,7 @@ const assignPresenter = (userId) => { makeCall('assignPresenter', userId); };
 
 const removeUser = (userId, banUser) => {
   if (isVoiceOnlyUser(userId)) {
-    makeCall('ejectUserFromVoice', userId, banUser);
+    makeCall('ejectUserFromVoice', userId);
   } else {
     makeCall('removeUser', userId, banUser);
   }