diff --git a/bigbluebutton-html5/imports/api/breakouts/server/handlers/breakoutJoinURL.js b/bigbluebutton-html5/imports/api/breakouts/server/handlers/breakoutJoinURL.js
index d0d6975024916c57f1e89384e761ff48399f10ae..0b4e593134e900035ffa8793aa0070c021e14bf2 100644
--- a/bigbluebutton-html5/imports/api/breakouts/server/handlers/breakoutJoinURL.js
+++ b/bigbluebutton-html5/imports/api/breakouts/server/handlers/breakoutJoinURL.js
@@ -20,6 +20,7 @@ export default function handleBreakoutJoinURL({ body }) {
       users: {
         userId,
         redirectToHtml5JoinURL,
+        insertedTime: new Date().getTime(),
       },
     },
   };
diff --git a/bigbluebutton-html5/imports/api/breakouts/server/methods/requestJoinURL.js b/bigbluebutton-html5/imports/api/breakouts/server/methods/requestJoinURL.js
index 971e43df2c788445f44ec6c0f0566c2ab218045f..f2da4d7d3208eeec9217d34d6477e0b569484530 100755
--- a/bigbluebutton-html5/imports/api/breakouts/server/methods/requestJoinURL.js
+++ b/bigbluebutton-html5/imports/api/breakouts/server/methods/requestJoinURL.js
@@ -1,7 +1,6 @@
 import { Meteor } from 'meteor/meteor';
 import { check } from 'meteor/check';
 import RedisPubSub from '/imports/startup/server/redis';
-import Breakouts from '/imports/api/breakouts';
 
 export default function requestJoinURL(credentials, { breakoutId, userId: userIdToInvite }) {
   const REDIS_CONFIG = Meteor.settings.private.redis;
@@ -13,10 +12,6 @@ export default function requestJoinURL(credentials, { breakoutId, userId: userId
   check(requesterUserId, String);
   check(requesterToken, String);
   const userId = userIdToInvite || requesterUserId;
-  const Breakout = Breakouts.findOne({ breakoutId });
-  const BreakoutUser = Breakout.users.filter(user => user.userId === userId).shift();
-
-  if (BreakoutUser) return null;
   const eventName = 'RequestBreakoutJoinURLReqMsg';
 
   return RedisPubSub.publishUserMessage(
diff --git a/bigbluebutton-html5/imports/ui/components/nav-bar/component.jsx b/bigbluebutton-html5/imports/ui/components/nav-bar/component.jsx
index 73d2d3aa5eff6304e8dfb3eb2c40db21246b38fa..3f247837af1e7ae88fb030824f3ccdd8b0396e5b 100755
--- a/bigbluebutton-html5/imports/ui/components/nav-bar/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/nav-bar/component.jsx
@@ -128,6 +128,8 @@ class NavBar extends PureComponent {
       isBreakoutRoom,
       mountModal,
       recordProps,
+      currentBreakoutUser,
+      getBreakoutByUser,
     } = this.props;
 
     if (!recordProps.recording) {
@@ -143,11 +145,21 @@ class NavBar extends PureComponent {
 
     const hadBreakouts = oldProps.breakouts.length;
     const hasBreakouts = breakouts.length;
-
     if (!hasBreakouts && hadBreakouts) {
       closeBreakoutJoinConfirmation(mountModal);
     }
 
+    if (hasBreakouts && currentBreakoutUser) {
+      const currentIsertedTime = currentBreakoutUser.insertedTime;
+      const oldCurrentUser = oldProps.currentBreakoutUser || {};
+      const oldInsertedTime = oldCurrentUser.insertedTime;
+
+      if (currentIsertedTime !== oldInsertedTime) {
+        const breakoutRoom = getBreakoutByUser(currentBreakoutUser);
+        this.inviteUserToBreakout(breakoutRoom);
+      }
+    }
+
     breakouts.forEach((breakout) => {
       if (!breakout.users) {
         return;
@@ -157,7 +169,7 @@ class NavBar extends PureComponent {
 
       if (!userOnMeeting) return;
 
-      if (!didSendBreakoutInvite && !isBreakoutRoom) {
+      if ((!didSendBreakoutInvite && !isBreakoutRoom) ) {
         this.inviteUserToBreakout(breakout);
       }
     });
diff --git a/bigbluebutton-html5/imports/ui/components/nav-bar/container.jsx b/bigbluebutton-html5/imports/ui/components/nav-bar/container.jsx
index f38c89ad244d23d58ed71372704c81002e4d28b3..0da9d1c2f85bac3c4dfbd130649ddd30d8e9fd48 100755
--- a/bigbluebutton-html5/imports/ui/components/nav-bar/container.jsx
+++ b/bigbluebutton-html5/imports/ui/components/nav-bar/container.jsx
@@ -86,6 +86,8 @@ export default withTracker(() => {
     presentationTitle: meetingTitle,
     hasUnreadMessages: checkUnreadMessages(),
     isBreakoutRoom: meetingIsBreakout(),
+    getBreakoutByUser: Service.getBreakoutByUser,
+    currentBreakoutUser: Service.getBreakoutUserByUserId(Auth.userID),
     recordProps: meetingRecorded,
     toggleUserList: () => {
       Session.set('isUserListOpen', !isExpanded);
diff --git a/bigbluebutton-html5/imports/ui/components/nav-bar/service.js b/bigbluebutton-html5/imports/ui/components/nav-bar/service.js
index 857da9f7403f0b66d945b81dcbdc210e1721156e..44fa05bd3f47a4b95c88e0a38fe1283283e4e861 100755
--- a/bigbluebutton-html5/imports/ui/components/nav-bar/service.js
+++ b/bigbluebutton-html5/imports/ui/components/nav-bar/service.js
@@ -2,6 +2,28 @@ import Auth from '/imports/ui/services/auth';
 import Breakouts from '/imports/api/breakouts';
 import { makeCall } from '/imports/ui/services/api';
 import Meetings from '/imports/api/meetings';
+import fp from 'lodash/fp';
+
+const getBreakoutByUserId = userId => Breakouts.find({ 'users.userId': userId }).fetch();
+
+const getBreakoutByUser = user => Breakouts.findOne({ users: user });
+
+const getUsersFromBreakouts = breakoutsArray => breakoutsArray
+  .map(breakout => breakout.users)
+  .flat();
+
+const filterUserURLs = userId => breakoutUsersArray => breakoutUsersArray
+  .filter(user => user.userId === userId);
+
+const getLastURLInserted = breakoutURLArray => breakoutURLArray
+  .sort((a, b) => a.insertedTime - b.insertedTime).pop();
+
+const getBreakoutUserByUserId = userId => fp.pipe(
+  getBreakoutByUserId,
+  getUsersFromBreakouts,
+  filterUserURLs(userId),
+  getLastURLInserted,
+)(userId);
 
 const getBreakouts = () => Breakouts.find({}, { sort: { sequence: 1 } }).fetch();
 
@@ -32,6 +54,7 @@ const connectRecordingObserver = () => {
 export default {
   connectRecordingObserver: () => connectRecordingObserver(),
   processOutsideToggleRecording: arg => processOutsideToggleRecording(arg),
+  getBreakoutUserByUserId,
+  getBreakoutByUser,
   getBreakouts,
 };
-