diff --git a/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonManager.java b/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonManager.java
index 89b2f5e4dfb42814039c0133526c0facb7450281..766368dadb0941eece1de76c7cfbadee527f947a 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonManager.java
+++ b/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonManager.java
@@ -89,7 +89,8 @@ public interface BigBlueButtonManager {
 	
 	public List<BigBlueButtonMeeting> getAllMeetings();
 	
-	public String join(BigBlueButtonMeeting meeting, Identity identity, boolean moderator, boolean guest, BigBlueButtonErrors errors);
+	public String join(BigBlueButtonMeeting meeting, Identity identity, boolean moderator, boolean guest,
+			Boolean isRunning, BigBlueButtonErrors errors);
 	
 	public boolean isMeetingRunning(BigBlueButtonMeeting meeting);
 	
diff --git a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java
index 0c30490bc6fa69f6b09c6119d837bd826aa4abfa..938bb5dc874e83ed5a799bf4fb57656d77b84ce9 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java
+++ b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java
@@ -94,7 +94,7 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ
 				Boolean.FALSE, Boolean.FALSE, // cam, mic
 				Boolean.FALSE, Boolean.TRUE, // chat
 				Boolean.FALSE, Boolean.FALSE, // node, layout
-				GuestPolicyEnum.ALWAYS_DENY, templates);
+				GuestPolicyEnum.ALWAYS_ACCEPT, templates);
 		
 		defaultTemplate("sys-classes", "Classes", 20, 30,
 				Boolean.FALSE, Boolean.FALSE, Boolean.TRUE, // recording
@@ -102,7 +102,7 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ
 				Boolean.TRUE, Boolean.TRUE, // cam, mic
 				Boolean.FALSE, Boolean.FALSE, // chat
 				Boolean.FALSE, Boolean.FALSE, // node, layout
-				GuestPolicyEnum.ALWAYS_DENY, templates);
+				GuestPolicyEnum.ALWAYS_ACCEPT, templates);
 		
 		defaultTemplate("sys-cafe", "Cafe", 10, 10,
 				Boolean.FALSE, Boolean.FALSE, Boolean.TRUE, // recording
@@ -110,7 +110,7 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ
 				Boolean.FALSE, Boolean.FALSE, // cam, mic
 				Boolean.TRUE, Boolean.FALSE, // chat
 				Boolean.FALSE, Boolean.FALSE, // node, layout
-				GuestPolicyEnum.ALWAYS_DENY, templates);
+				GuestPolicyEnum.ALWAYS_ACCEPT, templates);
 	}
 	
 	private void defaultTemplate(String externalId, String name, Integer maxConcurrentMeetings, Integer maxParticipants,
@@ -297,15 +297,14 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ
 		if(doc == null || errors.hasErrors() || !BigBlueButtonUtils.checkSuccess(doc, errors)) {
 			return false;
 		}
-		
 		String running = BigBlueButtonUtils.getFirstElementValue(doc.getDocumentElement(), "running");
 		return "true".equals(running);
 	}
 
 	@Override
-	public String join(BigBlueButtonMeeting meeting, Identity identity, boolean moderator, boolean guest, BigBlueButtonErrors errors) {
+	public String join(BigBlueButtonMeeting meeting, Identity identity, boolean moderator, boolean guest, Boolean isRunning, BigBlueButtonErrors errors) {
 		String joinUrl = null;
-		if(createBigBlueButtonMeeting(meeting, errors)) {
+		if((isRunning != null && isRunning.booleanValue()) || createBigBlueButtonMeeting(meeting, errors)) {
 			joinUrl = buildJoinUrl(meeting, identity, moderator, guest);
 		}
 		return joinUrl;
@@ -348,10 +347,9 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ
 		if(meeting.getEntry() != null) {
 			businessPath = "[RepositoryEntry:" + meeting.getEntry().getKey() + "]";
 			if(StringHelper.containsNonWhitespace(meeting.getSubIdent())) {
-				businessPath = "[CourseNode:" + meeting.getSubIdent() + "]";
+				businessPath += "[CourseNode:" + meeting.getSubIdent() + "]";
 			}
 		} else if(meeting.getBusinessGroup() != null) {
-
 			businessPath = "[BusinessGroup:" + meeting.getBusinessGroup().getKey() + "]";
 		} else {
 			businessPath = "[RepositoryEntry:0]";
@@ -381,7 +379,7 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ
 
 		if(template != null) {
 			uriBuilder
-				.optionalParameter("maxParticipants", template.getMaxParticipants())
+				.optionalParameter("maxParticipants", template.getMaxParticipants().intValue() + 1)
 				.optionalParameter("record", "true")
 				// video options
 				.optionalParameter("muteOnStart", template.getMuteOnStart())
@@ -397,7 +395,7 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ
 				.optionalParameter("lockSettingsDisableNote", template.getLockSettingsDisableNote())
 				.optionalParameter("lockSettingsLockedLayout", template.getLockSettingsLockedLayout())
 				// guest policy
-				.optionalParameter("guestPolicy", template.getGuestPolicyEnum().name());
+				.optionalParameter("guestPolicy", GuestPolicyEnum.ALWAYS_ACCEPT.name());
 		}
 		
 		Document doc = sendRequest(uriBuilder, errors);
diff --git a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonUtils.java b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonUtils.java
index c57d0773af4bf8f3a7aa8ad402cc9d60770a1812..92a6435d3ffdc23ffa6d051880bab56356c9294b 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonUtils.java
+++ b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonUtils.java
@@ -158,7 +158,7 @@ public class BigBlueButtonUtils {
     
 	protected static void print(Document document) {
 		if(log.isDebugEnabled()) {
-		    try(StringWriter writer = new StringWriter()) {
+			try(StringWriter writer = new StringWriter()) {
 		    	TransformerFactory factory = TransformerFactory.newInstance();
 				factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
 				Transformer transformer = factory.newTransformer();
diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonMeetingController.java b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonMeetingController.java
index 933ce1f6119cd7387da4c1cfb48edf8ce45aaadc..4b3f6fe33c986caa76ffffffb64c24d8a96be798 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonMeetingController.java
+++ b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonMeetingController.java
@@ -234,12 +234,15 @@ public class BigBlueButtonMeetingController extends FormBasicController implemen
 		String meetingUrl = null;
 		BigBlueButtonErrors errors = new BigBlueButtonErrors();
 		if(moderator || administrator) {
-			meetingUrl = bigBlueButtonManager.join(meeting, getIdentity(), (administrator || moderator), false, errors);
+			meetingUrl = bigBlueButtonManager.join(meeting, getIdentity(), (administrator || moderator), false, null, errors);
 			BigBlueButtonEvent openEvent = new BigBlueButtonEvent(meeting.getKey(), getIdentity().getKey());
 			CoordinatorManager.getInstance().getCoordinator().getEventBus().fireEventToListenersOf(openEvent, meetingOres);
-		} else if(!moderatorStartMeeting || bigBlueButtonManager.isMeetingRunning(meeting)) {
+		} else if(!moderatorStartMeeting) {
 			boolean guest = ureq.getUserSession().getRoles().isGuestOnly();
-			meetingUrl = bigBlueButtonManager.join(meeting, getIdentity(), false, guest, errors);
+			meetingUrl = bigBlueButtonManager.join(meeting, getIdentity(), false, guest, null, errors);
+		} else if(bigBlueButtonManager.isMeetingRunning(meeting)) {
+			boolean guest = ureq.getUserSession().getRoles().isGuestOnly();
+			meetingUrl = bigBlueButtonManager.join(meeting, getIdentity(), false, guest, Boolean.TRUE, errors);
 		}
 		redirectTo(ureq, meetingUrl, errors);
 	}
diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonTemplateController.java b/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonTemplateController.java
index ad3e171277dec60577cc677ba505fda051db3f36..e995361f8dff0d3beed3eb676de96a15e52ec21c 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonTemplateController.java
+++ b/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonTemplateController.java
@@ -32,7 +32,6 @@ import org.olat.core.gui.control.WindowControl;
 import org.olat.core.util.StringHelper;
 import org.olat.modules.bigbluebutton.BigBlueButtonManager;
 import org.olat.modules.bigbluebutton.BigBlueButtonMeetingTemplate;
-import org.olat.modules.bigbluebutton.GuestPolicyEnum;
 import org.springframework.beans.factory.annotation.Autowired;
 
 /**
@@ -45,9 +44,6 @@ public class EditBigBlueButtonTemplateController extends FormBasicController {
 
 	private static final String[] maxParticipantsKeys = new String[] { "2", "5", "10", "25", "50", "100" };
 	private static final String[] onKeys = new String[] { "yes", "no" };
-	private static final String[] guestPolicyKeys = new String[] {
-			GuestPolicyEnum.ALWAYS_DENY.name(), GuestPolicyEnum.ASK_MODERATOR.name(), GuestPolicyEnum.ALWAYS_ACCEPT.name()
-		};
 	
 	private TextElement nameEl;
 	private TextElement descriptionEl;
@@ -64,8 +60,6 @@ public class EditBigBlueButtonTemplateController extends FormBasicController {
 	private SingleSelection lockSettingsDisablePublicChatEl;
 	private SingleSelection lockSettingsDisableNoteEl;
 	private SingleSelection lockSettingsLockedLayoutEl;
-
-	private SingleSelection guestPolicyEl;
 	
 	private final boolean readOnly;
 	private BigBlueButtonMeetingTemplate template;
@@ -159,14 +153,6 @@ public class EditBigBlueButtonTemplateController extends FormBasicController {
 		Boolean lockSettingsLockedLayout = template == null ? null : template.getLockSettingsLockedLayout();
 		lockSettingsLockedLayoutEl = uifactory.addRadiosHorizontal("template.lockSettingsLockedLayout", formLayout, onKeys, onValues);
 		select(lockSettingsLockedLayout, lockSettingsLockedLayoutEl, false);
-
-		GuestPolicyEnum guestPolicy = template == null ? GuestPolicyEnum.ALWAYS_DENY : template.getGuestPolicyEnum();
-		String[] guestPolicyValues = new String[] {
-				translate("guest.policy.always.deny"), translate("guest.policy.ask.moderator"),
-				translate("guest.policy.always.accept")
-			};
-		guestPolicyEl = uifactory.addRadiosHorizontal("template.guestPolicy", formLayout, guestPolicyKeys, guestPolicyValues);
-		guestPolicyEl.select(guestPolicy.name(), true);
 		
 		FormLayoutContainer buttonLayout = FormLayoutContainer.createButtonLayout("buttons", getTranslator());
 		formLayout.add("buttons", buttonLayout);
@@ -195,7 +181,6 @@ public class EditBigBlueButtonTemplateController extends FormBasicController {
 		lockSettingsDisablePublicChatEl.setEnabled(false);
 		lockSettingsDisableNoteEl.setEnabled(false);
 		lockSettingsLockedLayoutEl.setEnabled(false);
-		guestPolicyEl.setEnabled(false);
 	}
 	
 	private void select(Boolean val, SingleSelection selectEl, boolean defaultValue) {
@@ -277,10 +262,6 @@ public class EditBigBlueButtonTemplateController extends FormBasicController {
 		template.setLockSettingsDisablePublicChat(getSelected(lockSettingsDisablePublicChatEl));
 		template.setLockSettingsDisableNote(getSelected(lockSettingsDisableNoteEl));
 		template.setLockSettingsLockedLayout(getSelected(lockSettingsLockedLayoutEl));
-		
-		if(guestPolicyEl.isOneSelected()) {
-			template.setGuestPolicyEnum(GuestPolicyEnum.valueOf(guestPolicyEl.getSelectedKey()));
-		}
 		template = bigBlueButtonManager.updateTemplate(template);
 		fireEvent(ureq, Event.DONE_EVENT);
 	}