diff --git a/src/main/java/org/olat/core/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/core/_i18n/LocalStrings_de.properties
index 2798cd275d1961fbb4a69ce198a3dc7278fadd41..a7787009158d1e56333db40843439c0f4370337f 100644
--- a/src/main/java/org/olat/core/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/core/_i18n/LocalStrings_de.properties
@@ -60,6 +60,7 @@ new=neu
 new.form.mandatory=Dieses Feld muss ausgef\u00FCllt werden. 
 next=Weiter
 no=Nein
+noTransOnlyParam={0}
 off=aus
 ok=OK
 on=ein
diff --git a/src/main/java/org/olat/core/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/core/_i18n/LocalStrings_en.properties
index a5077bfe7b13d6639e1d4d5c336355a119567d47..ba69474cfe0159068080d62eed1d5e7570b2df65 100644
--- a/src/main/java/org/olat/core/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/core/_i18n/LocalStrings_en.properties
@@ -60,6 +60,7 @@ new=new
 new.form.mandatory=This field is mandatory.
 next=Next
 no=No
+noTransOnlyParam={0}
 off=off
 ok=OK
 on=on
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormItemImpl.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormItemImpl.java
index ffc9a720c5c8529bdbc5137355d8e21cf99c5919..36c53fd999c22668e092a9df80b587ee5c2a576f 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormItemImpl.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormItemImpl.java
@@ -337,15 +337,19 @@ public abstract class FormItemImpl implements InlineElement {
 	 */
 	@Override
 	public void setExampleKey(String exampleKey, String[] params) {
-		hasExample = true;
-		this.exampleKey = exampleKey;
-		this.exampleParams = params;
-		if (getTranslator() != null) {
-			exampleC = new SimpleExampleText(exampleKey, translate(exampleKey, params));
-			examplePanel.setContent(exampleC);
-		} else if(exampleKey == null) {
+		if(exampleKey == null) {
+			// reset
 			exampleC = null;
 			examplePanel.setContent(exampleC);
+			hasExample = false;
+		} else {
+			hasExample = true;
+			this.exampleKey = exampleKey;
+			this.exampleParams = params;
+			if (getTranslator() != null) {
+				exampleC = new SimpleExampleText(exampleKey, translate(exampleKey, params));
+				examplePanel.setContent(exampleC);
+			} 
 		}
 	}
 	
diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonGuestJoinController.java b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonGuestJoinController.java
index 28755a74d9f7fb674da9782daf52355c176513c5..8a69432f499d685587a0ce7322022f6e0fb6b13e 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonGuestJoinController.java
+++ b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonGuestJoinController.java
@@ -175,6 +175,9 @@ public class BigBlueButtonGuestJoinController extends FormBasicController implem
 		} else if(isEnded) {
 			flc.contextPut("notStarted", Boolean.FALSE);
 		}
+		// update button style to indicate that the user must now press to start
+		joinButton.setPrimary(joinButton.isEnabled());
+
 	}
 	
 	private boolean isAllowedToMeet(UserRequest ureq) {
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 523299b64e3f47d6d1f87cf395276746ab6f7ac1..1ebda76455478013b84d1e0528ab9ed346d0c1ad 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonMeetingController.java
+++ b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonMeetingController.java
@@ -252,6 +252,14 @@ public class BigBlueButtonMeetingController extends FormBasicController implemen
 		} else if(isEnded) {
 			flc.contextPut("notStarted", Boolean.FALSE);
 		}
+
+		// update button style to indicate that the user must now press to start
+		if (guestJoinButton.isEnabled()) {
+			guestJoinButton.setElementCssClass("btn btn-lg btn-primary o_sel_bbb_guest_join");			
+		} else {			
+			guestJoinButton.setElementCssClass("btn btn-lg btn-default o_sel_bbb_guest_join");			
+		}
+		joinButton.setPrimary(joinButton.isEnabled());
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java b/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java
index 380b65d2324ec040ed027882eb6204a2e69c4f54..b11a216527008d3f32df5f0734137fae934a99dc 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java
+++ b/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java
@@ -40,6 +40,7 @@ import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController;
+import org.olat.core.util.CodeHelper;
 import org.olat.core.util.StringHelper;
 import org.olat.group.BusinessGroup;
 import org.olat.modules.bigbluebutton.BigBlueButtonDispatcher;
@@ -206,8 +207,14 @@ public class EditBigBlueButtonMeetingController extends FormBasicController {
 		guestEl.setVisible(entry != null && entry.isGuests());
 		guestEl.select(onKeys[0], meeting != null && meeting.isGuest());
 		
-		String externalLink = meeting == null ? null : meeting.getReadableIdentifier();
+		String externalLink = meeting == null ? CodeHelper.getForeverUniqueID() + "" : meeting.getReadableIdentifier();
 		externalLinkEl = uifactory.addTextElement("meeting.external.users", 64, externalLink, formLayout);
+		externalLinkEl.setPlaceholderKey("meeting.external.users.empty", null);
+		externalLinkEl.setHelpTextKey("meeting.external.users.help", null);
+		externalLinkEl.addActionListener(FormEvent.ONCHANGE);
+		if (externalLink != null) {
+			externalLinkEl.setExampleKey("noTransOnlyParam", new String[] {BigBlueButtonDispatcher.getMeetingUrl(externalLink)});			
+		}
 		
 		openCalLink = uifactory.addFormLink("calendar.open", formLayout);
 		openCalLink.setIconLeftCSS("o_icon o_icon-fw o_icon_calendar");
@@ -387,22 +394,27 @@ public class EditBigBlueButtonMeetingController extends FormBasicController {
 		boolean allOk = true;
 		
 		externalLinkEl.clearError();
-		if(externalLinkEl.isVisible() && StringHelper.containsNonWhitespace(externalLinkEl.getValue())) {
+		if(externalLinkEl.isVisible()) {
 			String identifier = externalLinkEl.getValue();
-			if(identifier.length() > 64) {
-				externalLinkEl.setErrorKey("form.error.toolong", new String[] { "64" });
-				allOk &= false;
-			} else if(bigBlueButtonManager.isIdentifierInUse(identifier, meeting)) {
-				externalLinkEl.setErrorKey("error.identifier.in.use", null);
-				allOk &= false;
-			} else {
-				try {
-					URI uri = new URI(BigBlueButtonDispatcher.getMeetingUrl(identifier));
-					uri.normalize();
-				} catch(Exception e) {
-					externalLinkEl.setErrorKey("error.identifier.url.not.valid", new String[] { e.getMessage() });
+			if (StringHelper.containsNonWhitespace(externalLinkEl.getValue())) {
+				if(identifier.length() > 64) {
+					externalLinkEl.setErrorKey("form.error.toolong", new String[] { "64" });
 					allOk &= false;
+				} else if(bigBlueButtonManager.isIdentifierInUse(identifier, meeting)) {
+					externalLinkEl.setErrorKey("error.identifier.in.use", null);
+					allOk &= false;
+				} else {
+					try {
+						URI uri = new URI(BigBlueButtonDispatcher.getMeetingUrl(identifier));
+						uri.normalize();
+					} catch(Exception e) {
+						externalLinkEl.setErrorKey("error.identifier.url.not.valid", new String[] { e.getMessage() });
+						allOk &= false;
+					}
 				}
+				externalLinkEl.setExampleKey("noTransOnlyParam", new String[] {BigBlueButtonDispatcher.getMeetingUrl(identifier)});			
+			} else {
+				externalLinkEl.setExampleKey(null, null);			
 			}
 		}
 
@@ -525,6 +537,8 @@ public class EditBigBlueButtonMeetingController extends FormBasicController {
 			updateLayoutSelection();
 		} else if (openCalLink == source) {
 			doOpenCalendar(ureq);
+		} else if (externalLinkEl == source) {
+			validateReadableIdentifier();
 		}
 		super.formInnerEvent(ureq, source, event);
 	}
diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/_content/guest_join.html b/src/main/java/org/olat/modules/bigbluebutton/ui/_content/guest_join.html
index ccc3dbc5c0db37e60f42cd300873c81dae7d8041..a56d296686ec0b11a899f2f2820783021076e78d 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/ui/_content/guest_join.html
+++ b/src/main/java/org/olat/modules/bigbluebutton/ui/_content/guest_join.html
@@ -15,7 +15,7 @@
 	#if($r.isTrue($disabled))
 		<div class="o_block_large o_error" role="alert">$r.translate("error.serverDisabled")</div>
 	#elseif($r.isTrue($notStarted))
-	<div class="o_block_large o_info">$r.translate("meeting.create.intro")</div>
+	<div class="o_block_large o_warning">$r.translate("meeting.create.intro")</div>
 	#end
 	
 	#if($r.visible("meeting.join.button"))
diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_de.properties
index f924fba5c1438fc2bca8549642ae1a5308204229..f9253579f197a19a8d5d08af339577560895ea9e 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_de.properties
@@ -66,14 +66,16 @@ meeting.deleted=Das Meeting wurde erfolgreich gel\u00F6scht.
 meeting.description=Beschreibung
 meeting.end=Ende
 meeting.ended=Der Online-Termin wurde bereits beendet.
-meeting.external.users=F\u00FCr externe Benutzer
+meeting.external.users=Zugang externe Benutzer
+meeting.external.users.empty=Zugang mit URL f\u00FCr externe Benutzer deaktivert
+meeting.external.users.help=Um den Zugang zu dem Meeting über eine URL auch f\u00FCr externe Benutzer zu erm\u00F6glichen hinterlegen Sie hier ein Meeting Kennzeichen. Die generierte URL k\u00F6nnen Sie dann mit den externen Benutzenr z.B. über E-Mail teilen. Das Kennzeichen muss ein eindeutiges Wort ohne Sonderzeichen sein.
 meeting.followupTime=Nachlaufzeit (Min.)
 meeting.go.button=Zum Online-Termin Raum
 meeting.guest.on=erlauben
 meeting.guest=G\u00E4ste
-meeting.guest.join.button=Meeting beitreten
-meeting.guest.pseudo=Name
-meeting.guest.pseudo.explain=Bitte geben Sie ihre Name ein.
+meeting.guest.join.button=Online-Termin beitreten
+meeting.guest.pseudo=Ihr Name
+meeting.guest.pseudo.explain=Bitte geben Sie Ihren Namen ein und dr\u00FCcken Sie die Schaltfl\u00E4che um dem Online-Termin beizutreten. 
 meeting.join.button=Meeting beitreten
 meeting.layout=Darstellung
 meeting.leadTime=Vorlaufzeit (Min.)
@@ -184,11 +186,11 @@ templates.title=Raumvorlagen
 undelete=Wieder aktivieren
 view=Ansehen
 view.template=Raumvorlage "{0}"
-warning.at.least.one.meeting=Sie m\u00FCssen mindestens ein Meeting w\u00E4hlen.
-warning.meeting.permission.denied=Sie haben nicht die Berechtigung den Meeting beizutreten.
-warning.meeting.started=Sie k\u00F6nnen ein gestartetes Meeting nicht mehr bearbeiten.
-warning.no.access=Sie k\u00F6nnen noch nicht dem Meeting beitreten.
-warning.no.meeting=Das Meeting wurde gel\u00F6scht.
+warning.at.least.one.meeting=Sie m\u00FCssen mindestens einen Online-Termin w\u00E4hlen.
+warning.meeting.permission.denied=Sie sind nicht berechtigt dem Online-Termin beizutreten. Bitte versuchen Sie est sp\u00E4ter nochmals. 
+warning.meeting.started=Sie k\u00F6nnen einen gestarteten Online-Termin nicht mehr bearbeiten.
+warning.no.access=Sie k\u00F6nnen dem Online-Termin noch nicht beitreten.
+warning.no.meeting=Der Online-Termin wurde gel\u00F6scht.
 warning.template.in.use=Die Raumvorlage kann nicht gel\u00F6scht werden da sie nocht benutzt wird. L\u00F6schschen Sie zuerst die entsprechenden Online-Termine oder deaktivieren Sie die Raumvorlage.
 wizard.dates.title=Datum
 wizard.meeting.title=Konfiguration
diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_en.properties
index e8c8fe7e28976c185fc0774ad161603dcf081276..f087ae1d65d30f18b030abef02de47a3a228247a 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_en.properties
@@ -66,20 +66,22 @@ meeting.deleted=The meeting was successfully deleted.
 meeting.description=Description
 meeting.end=End date
 meeting.ended=The online-meeting has already ended.
-meeting.external.users=For external users
+meeting.external.users=Access external users
+meeting.external.users.empty=URL-access for external users is deactivated
+meeting.external.users.help=To enable external users to access the meeting via a URL, you can define a meeting reference here. You can then share the generated URL e.g. via e-mail. The reference must be a unique word without special characters.
 meeting.followupTime=Follow-up (min.)
 meeting.go.button=Go to the onlin-meeting room
 meeting.guest.on=allowed
 meeting.guest=Guests
-meeting.guest.join.button=Join the meeting 
-meeting.guest.pseudo=Name
-meeting.guest.pseudo.explain=Please, enter you name.
-meeting.join.button=Join the meeting
+meeting.guest.join.button=Join the online-meeting 
+meeting.guest.pseudo=Your name
+meeting.guest.pseudo.explain=Please enter your name and press the button to join the online-meeting.
+meeting.join.button=Join the online-meeting
 meeting.layout=Layout
 meeting.leadTime=Prep time (min.)
 meeting.leadTime.explain=Prep time is only relevant for moderators.
 meeting.name=Name
-meeting.permanent=Onine-Meeting scheduling
+meeting.permanent=Online-Meeting scheduling
 meeting.permanent.on=Without date
 meeting.recurring.end=End recurring date
 meeting.recurring.start=Start recurring date
@@ -184,11 +186,11 @@ templates.title=Room-templates
 undelete=Reactivate
 view=View
 view.template=Room-template "{0}"
-warning.at.least.one.meeting=You must select at least one meeting.
-warning.meeting.permission.denied=You are not allowed to access the meeting.
-warning.meeting.started=You cannot edit a started meeting anymore.
-warning.no.meeting=The meeting has been deleted.
-warning.no.access=You cannot access the meeting yet.
+warning.at.least.one.meeting=You must select at least one online-meeting.
+warning.meeting.permission.denied=You are not allowed to access the online-meeting. Please try again later.
+warning.meeting.started=You cannot edit a started online-meeting anymore.
+warning.no.meeting=The online-meeting has been deleted.
+warning.no.access=You cannot access the online-meeting yet.
 warning.template.in.use=The room-template cannot be deleted because it is used by online-meetings. Delete the corresponding online-meeting or de-activate the room-template.
 wizard.dates.title=Dates
 wizard.meeting.title=Configuration
diff --git a/src/main/resources/database/mysql/alter_15_0_x_to_15_1_0.sql b/src/main/resources/database/mysql/alter_15_0_x_to_15_1_0.sql
index 8cf5a3dc869698c1db43e9c441b0e7d5876765fc..7cf3b4b3aae32d3b5354e787465c729da7aaffa8 100644
--- a/src/main/resources/database/mysql/alter_15_0_x_to_15_1_0.sql
+++ b/src/main/resources/database/mysql/alter_15_0_x_to_15_1_0.sql
@@ -10,7 +10,7 @@ alter table o_bbb_meeting add column b_guest bool default false not null;
 alter table o_bbb_meeting add column b_identifier varchar(64);
 alter table o_bbb_meeting add column b_read_identifier varchar(64);
 
-alter table o_bbb_template add column b_external_users bool default false not null;
+alter table o_bbb_template add column b_external_users bool default true not null;
 
 
 -- Lock
diff --git a/src/main/resources/database/oracle/alter_15_0_x_to_15_1_0.sql b/src/main/resources/database/oracle/alter_15_0_x_to_15_1_0.sql
index 0ae4eb01579658bda618aa2e6ac7f8d8f24dc573..3ddcc3d96c24c1618cc6cc0765aba65a068e6a0d 100644
--- a/src/main/resources/database/oracle/alter_15_0_x_to_15_1_0.sql
+++ b/src/main/resources/database/oracle/alter_15_0_x_to_15_1_0.sql
@@ -10,7 +10,7 @@ alter table o_bbb_meeting add b_guest number default 0 not null;
 alter table o_bbb_meeting add b_identifier varchar2(64);
 alter table o_bbb_meeting add b_read_identifier varchar2(64);
 
-alter table o_bbb_template add b_external_users number default 0 not null;
+alter table o_bbb_template add b_external_users number default 1 not null;
 
 
 -- Lock
diff --git a/src/main/resources/database/postgresql/alter_15_0_x_to_15_1_0.sql b/src/main/resources/database/postgresql/alter_15_0_x_to_15_1_0.sql
index f5234cd7d6b07d631dbe7cb6a904d9d39359180e..0710e2b0214490ecf372e71cf0691da83116c26a 100644
--- a/src/main/resources/database/postgresql/alter_15_0_x_to_15_1_0.sql
+++ b/src/main/resources/database/postgresql/alter_15_0_x_to_15_1_0.sql
@@ -10,7 +10,7 @@ alter table o_bbb_meeting add column b_guest bool default false not null;
 alter table o_bbb_meeting add column b_identifier varchar(64);
 alter table o_bbb_meeting add column b_read_identifier varchar(64);
 
-alter table o_bbb_template add column b_external_users bool default false not null;
+alter table o_bbb_template add column b_external_users bool default true not null;
 
 
 -- Lock