diff --git a/src/main/java/org/olat/modules/appointments/ui/AppointmentEditController.java b/src/main/java/org/olat/modules/appointments/ui/AppointmentEditController.java
index c9da03471a31fa805d152b54e59a19c9f696e827..6db674ce3d9f65c40ba948f1c0800b886a1e19a2 100644
--- a/src/main/java/org/olat/modules/appointments/ui/AppointmentEditController.java
+++ b/src/main/java/org/olat/modules/appointments/ui/AppointmentEditController.java
@@ -73,6 +73,7 @@ public class AppointmentEditController extends FormBasicController {
 	
 	private static final String KEY_ON = "on";
 	private static final String[] KEYS_ON = new String[] { KEY_ON };
+	private static final String[] KEYS_YES_NO = new String[] { "yes", "no" };
 	
 	private DateChooser startEl;
 	private DateChooser endEl;
@@ -87,6 +88,7 @@ public class AppointmentEditController extends FormBasicController {
 	private TextElement followupTimeEl;
 	private TextElement welcomeEl;
 	private SingleSelection templateEl;
+	private SingleSelection recordEl;
 	private SingleSelection layoutEl;
 	
 	private BigBlueButtonMeetingsCalendarController calCtr;
@@ -203,6 +205,16 @@ public class AppointmentEditController extends FormBasicController {
 			if(isWebcamLayoutAvailable(getSelectedTemplate(templateEl, templates))) {
 				layoutKeyValues.add(KeyValues.entry(BigBlueButtonMeetingLayoutEnum.webcam.name(), translate("layout.webcam")));
 			}
+			
+			String[] yesNoValues = new String[] { translate("yes"), translate("no")  };
+			recordEl = uifactory.addRadiosVertical("meeting.record", formLayout, KEYS_YES_NO, yesNoValues);
+			recordEl.setEnabled(bbbEditable);
+			if(BigBlueButtonUIHelper.isRecord(meeting)) {
+				recordEl.select(KEYS_YES_NO[0], true);
+			} else {
+				recordEl.select(KEYS_YES_NO[1], true);
+			}
+			
 			layoutEl = uifactory.addDropdownSingleselect("meeting.layout", "meeting.layout", formLayout,
 					layoutKeyValues.keys(), layoutKeyValues.values());
 			layoutEl.setEnabled(bbbEditable);
@@ -230,7 +242,7 @@ public class AppointmentEditController extends FormBasicController {
 			
 			openCalLink = uifactory.addFormLink("calendar.open", formLayout);
 			openCalLink.setIconLeftCSS("o_icon o_icon-fw o_icon_calendar");
-			BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, templates);
+			BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, recordEl, templates);
 			
 			String leadtime = meeting == null ? null : Long.toString(meeting.getLeadTime());
 			leadTimeEl = uifactory.addTextElement("meeting.leadTime", 8, leadtime, formLayout);
@@ -292,7 +304,7 @@ public class AppointmentEditController extends FormBasicController {
 		} else if (source == bbbRoomEl) {
 			updateUI();
 		} else if (templateEl == source) {
-			BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, templates);
+			BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, recordEl, templates);
 			boolean webcamAvailable = isWebcamLayoutAvailable(getSelectedTemplate(templateEl, templates));
 			BigBlueButtonUIHelper.updateLayoutSelection(layoutEl, getTranslator(), webcamAvailable);
 		} else if (openCalLink == source) {
@@ -466,6 +478,12 @@ public class AppointmentEditController extends FormBasicController {
 			} else {
 				meeting.setMeetingLayout(BigBlueButtonMeetingLayoutEnum.standard);
 			}
+			
+			if(recordEl.isVisible() && recordEl.isOneSelected()) {
+				meeting.setRecord(Boolean.valueOf(KEYS_YES_NO[0].equals(recordEl.getSelectedKey())));
+			} else {
+				meeting.setRecord(null);
+			}
 		} else {
 			appointment = appointmentsService.removeMeeting(appointment);
 		}
diff --git a/src/main/java/org/olat/modules/appointments/ui/RecurringAppointmentsController.java b/src/main/java/org/olat/modules/appointments/ui/RecurringAppointmentsController.java
index 7702baae572fad8a17b6d65b3ec447521c59471e..471b74dcee7318b945f6255a01dba4b01d7efffe 100644
--- a/src/main/java/org/olat/modules/appointments/ui/RecurringAppointmentsController.java
+++ b/src/main/java/org/olat/modules/appointments/ui/RecurringAppointmentsController.java
@@ -74,6 +74,7 @@ public class RecurringAppointmentsController extends FormBasicController {
 	
 	private static final String KEY_ON = "on";
 	private static final String[] KEYS_ON = new String[] { KEY_ON };
+	private static final String[] KEYS_YES_NO = new String[] { "yes", "no" };
 	
 	private TextElement locationEl;
 	private TextElement maxParticipationsEl;
@@ -88,6 +89,7 @@ public class RecurringAppointmentsController extends FormBasicController {
 	private TextElement followupTimeEl;
 	private TextElement welcomeEl;
 	private SingleSelection templateEl;
+	private SingleSelection recordEl;
 	private SingleSelection layoutEl;
 	
 	private BigBlueButtonMeetingsCalendarController calCtr;
@@ -151,6 +153,10 @@ public class RecurringAppointmentsController extends FormBasicController {
 					templatesKV.keys(), templatesKV.values());
 			templateEl.addActionListener(FormEvent.ONCHANGE);
 			templateEl.select(templateEl.getKeys()[0], true);
+			
+			String[] yesNoValues = new String[] { translate("yes"), translate("no")  };
+			recordEl = uifactory.addRadiosVertical("meeting.record", formLayout, KEYS_YES_NO, yesNoValues);
+			recordEl.select(KEYS_YES_NO[0], true);
 		
 			KeyValues layoutKeyValues = new KeyValues();
 			layoutKeyValues.add(KeyValues.entry(BigBlueButtonMeetingLayoutEnum.standard.name(), translate("layout.standard")));
@@ -174,7 +180,7 @@ public class RecurringAppointmentsController extends FormBasicController {
 			
 			openCalLink = uifactory.addFormLink("calendar.open", formLayout);
 			openCalLink.setIconLeftCSS("o_icon o_icon-fw o_icon_calendar");
-			BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, templates);
+			BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, recordEl, templates);
 			
 			leadTimeEl = uifactory.addTextElement("meeting.leadTime", 8, null, formLayout);
 			leadTimeEl.setExampleKey("meeting.leadTime.explain", null);
@@ -228,7 +234,7 @@ public class RecurringAppointmentsController extends FormBasicController {
 		if (source == bbbRoomEl) {
 			updateUI();
 		} else if (templateEl == source) {
-			BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, templates);
+			BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, recordEl, templates);
 			boolean webcamAvailable = isWebcamLayoutAvailable(getSelectedTemplate(templateEl, templates));
 			BigBlueButtonUIHelper.updateLayoutSelection(layoutEl, getTranslator(), webcamAvailable);
 		} else if (openCalLink == source) {
@@ -423,6 +429,12 @@ public class RecurringAppointmentsController extends FormBasicController {
 				} else {
 					meeting.setMeetingLayout(BigBlueButtonMeetingLayoutEnum.standard);
 				}
+				
+				if(recordEl.isVisible() && recordEl.isOneSelected()) {
+					meeting.setRecord(Boolean.valueOf(KEYS_YES_NO[0].equals(recordEl.getSelectedKey())));
+				} else {
+					meeting.setRecord(null);
+				}
 			} 
 			
 			appointmentsService.saveAppointment(appointment);
diff --git a/src/main/java/org/olat/modules/appointments/ui/TopicCreateController.java b/src/main/java/org/olat/modules/appointments/ui/TopicCreateController.java
index 207af04fe449d8be81aa8673c003b0eb6a176744..31d1df6f58e2f0d184afe317372ac22e505f397e 100644
--- a/src/main/java/org/olat/modules/appointments/ui/TopicCreateController.java
+++ b/src/main/java/org/olat/modules/appointments/ui/TopicCreateController.java
@@ -85,6 +85,7 @@ public class TopicCreateController extends FormBasicController {
 	
 	private static final String KEY_ON = "on";
 	private static final String[] KEYS_ON = new String[] { KEY_ON };
+	private static final String[] KEYS_YES_NO = new String[] { "yes", "no" };
 	private static final String KEY_MULTI_PARTICIPATION = "multi.participation";
 	private static final String KEY_COACH_CONFIRMATION = "coach.confirmation";
 	private static final String CMD_REMOVE = "remove";
@@ -110,6 +111,7 @@ public class TopicCreateController extends FormBasicController {
 	private TextElement followupTimeEl;
 	private TextElement welcomeEl;
 	private SingleSelection templateEl;
+	private SingleSelection recordEl;
 	private SingleSelection layoutEl;
 	
 	private BigBlueButtonMeetingsCalendarController calCtr;
@@ -243,6 +245,10 @@ public class TopicCreateController extends FormBasicController {
 					templatesKV.keys(), templatesKV.values());
 			templateEl.addActionListener(FormEvent.ONCHANGE);
 			templateEl.select(templateEl.getKeys()[0], true);
+			
+			String[] yesNoValues = new String[] { translate("yes"), translate("no")  };
+			recordEl = uifactory.addRadiosVertical("meeting.record", formLayout, KEYS_YES_NO, yesNoValues);
+			recordEl.select(KEYS_YES_NO[0], true);
 		
 			KeyValues layoutKeyValues = new KeyValues();
 			layoutKeyValues.add(KeyValues.entry(BigBlueButtonMeetingLayoutEnum.standard.name(), translate("layout.standard")));
@@ -266,7 +272,7 @@ public class TopicCreateController extends FormBasicController {
 			
 			openCalLink = uifactory.addFormLink("calendar.open", formLayout);
 			openCalLink.setIconLeftCSS("o_icon o_icon-fw o_icon_calendar");
-			BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, templates);
+			BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, recordEl, templates);
 			
 			leadTimeEl = uifactory.addTextElement("meeting.leadTime", 8, null, formLayout);
 			leadTimeEl.setExampleKey("meeting.leadTime.explain", null);
@@ -347,7 +353,7 @@ public class TopicCreateController extends FormBasicController {
 		} else if (source == bbbRoomEl) {
 			updateUI();
 		} else if (templateEl == source) {
-			BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, templates);
+			BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, recordEl, templates);
 			boolean webcamAvailable = isWebcamLayoutAvailable(getSelectedTemplate(templateEl, templates));
 			BigBlueButtonUIHelper.updateLayoutSelection(layoutEl, getTranslator(), webcamAvailable);
 		} else if (openCalLink == source) {
@@ -689,6 +695,12 @@ public class TopicCreateController extends FormBasicController {
 			} else {
 				meeting.setMeetingLayout(BigBlueButtonMeetingLayoutEnum.standard);
 			}
+			
+			if(recordEl.isVisible() && recordEl.isOneSelected()) {
+				meeting.setRecord(Boolean.valueOf(KEYS_YES_NO[0].equals(recordEl.getSelectedKey())));
+			} else {
+				meeting.setRecord(null);
+			}
 		}
 		return appointment;
 	}
diff --git a/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonMeeting.java b/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonMeeting.java
index f7e4662fbafbe9fee48e004f09d8c08ea5c54163..b6bf94b6f8557ced44483756e709ca95323bbc9a 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonMeeting.java
+++ b/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonMeeting.java
@@ -189,6 +189,10 @@ public interface BigBlueButtonMeeting extends ModifiedInfo, CreateInfo {
 
 	public void setRecordingsPublishingEnum(BigBlueButtonRecordingsPublishingEnum publishing);
 	
+	public Boolean getRecord();
+
+	public void setRecord(Boolean record);
+	
 	/**
 	 * The plain text name of the presenter or main organizer. By default the name
 	 * of the creator but can be change to anything. Metadata just for display
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 8746c562230b05e6d294b26ad21f8be907550af8..d2144bc3dad7d23e62c3d6b22269e53a5144f039 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java
+++ b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java
@@ -915,11 +915,15 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager,
 		}
 
 		if(template != null) {
+			boolean record = template.getRecord() != null && template.getRecord().booleanValue();
+			if(record && meeting.getRecord() != null) {
+				record = meeting.getRecord().booleanValue();
+			}
+
 			uriBuilder
 				.optionalParameter("maxParticipants", template.getMaxParticipants().intValue() + 1)
-				.optionalParameter("record", template.getRecord())
+				.optionalParameter("record", record)
 				.optionalParameter("breakoutRoomsEnabled", template.getBreakoutRoomsEnabled())
-				
 				// video options
 				.optionalParameter("muteOnStart", template.getMuteOnStart())
 				.optionalParameter("autoStartRecording", template.getAutoStartRecording())
diff --git a/src/main/java/org/olat/modules/bigbluebutton/model/BigBlueButtonMeetingImpl.java b/src/main/java/org/olat/modules/bigbluebutton/model/BigBlueButtonMeetingImpl.java
index 77309db86b8a80ad7cc2c9a2d65f81d3bf3abb1e..dc12a7d513d009e527c3580d5c0d816758134c15 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/model/BigBlueButtonMeetingImpl.java
+++ b/src/main/java/org/olat/modules/bigbluebutton/model/BigBlueButtonMeetingImpl.java
@@ -117,6 +117,8 @@ public class BigBlueButtonMeetingImpl implements Persistable, BigBlueButtonMeeti
 
 	@Column(name="b_recordings_publishing", nullable=true, insertable=true, updatable=true)
 	private String recordingsPublishing;
+	@Column(name="b_record", nullable=true, insertable=true, updatable=true)
+	private Boolean record;
 	
 	@ManyToOne(targetEntity=IdentityImpl.class, fetch=FetchType.LAZY, optional=true)
 	@JoinColumn(name="fk_creator_id", nullable=true, insertable=true, updatable=false)
@@ -368,6 +370,16 @@ public class BigBlueButtonMeetingImpl implements Persistable, BigBlueButtonMeeti
 		}
 	}
 
+	@Override
+	public Boolean getRecord() {
+		return record;
+	}
+
+	@Override
+	public void setRecord(Boolean record) {
+		this.record = record;
+	}
+
 	@Override
 	public String getMainPresenter() {
 		return mainPresenter;
diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonUIHelper.java b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonUIHelper.java
index a1b896ec1e98925d1603a36b633517022a3dc76b..bdb08ad216d66ec7ce391d10aaaf4622db13a405 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonUIHelper.java
+++ b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonUIHelper.java
@@ -46,7 +46,7 @@ import org.olat.modules.bigbluebutton.BigBlueButtonMeetingTemplate;
  */
 public class BigBlueButtonUIHelper {
 	
-	public static void updateTemplateInformations(SingleSelection templateEl, TextElement externalLinkEl, List<BigBlueButtonMeetingTemplate> templates) {
+	public static void updateTemplateInformations(SingleSelection templateEl, TextElement externalLinkEl, SingleSelection recordEl, List<BigBlueButtonMeetingTemplate> templates) {
 		templateEl.setExampleKey(null, null);
 		if(templateEl.isOneSelected()) {
 			BigBlueButtonMeetingTemplate template = getSelectedTemplate(templateEl, templates);
@@ -65,8 +65,20 @@ public class BigBlueButtonUIHelper {
 			if(visible && !StringHelper.containsNonWhitespace(externalLinkEl.getValue())) {
 				externalLinkEl.setValue(Long.toString(CodeHelper.getForeverUniqueID()));
 			}
+			
+			if(recordEl != null) {
+				boolean recordVisible = template != null && template.getRecord() != null && template.getRecord().booleanValue();
+				boolean wasVisible = recordEl.isVisible();
+				recordEl.setVisible(recordVisible);
+				if(!recordEl.isOneSelected() || (recordVisible && !wasVisible)) {
+					recordEl.select("yes", true);	
+				}
+			}
 		} else {
 			externalLinkEl.setVisible(false);
+			if(recordEl != null) {
+				recordEl.setVisible(false);
+			}
 		}
 	}
 	
@@ -240,10 +252,19 @@ public class BigBlueButtonUIHelper {
 		return followupTime;
 	}
 	
+	public static boolean isRecord(BigBlueButtonMeetingTemplate template) {
+		return template != null && template.getRecord() != null && template.getRecord().booleanValue();
+	}
+	
 	public static boolean isRecord(BigBlueButtonMeeting meeting) {
-		return meeting != null && meeting.getTemplate() != null
+		boolean record = meeting != null && meeting.getTemplate() != null
 				&& meeting.getTemplate().getRecord() != null
 				&& meeting.getTemplate().getRecord().booleanValue();
+		// override only if template enables recording
+		if(record && meeting.getRecord() != null) {
+			record = meeting.getRecord().booleanValue();
+		}
+		return record;
 	}
 	
 	private static BigBlueButtonManager getBigBlueButtonManager() {
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 ad8d12bcefc9d6e7d9afefcd5c24d231138ddd7f..63d776c756a99d11b6b38b085a15668988012f39 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java
+++ b/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java
@@ -67,6 +67,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 public class EditBigBlueButtonMeetingController extends FormBasicController {
 	
 	private static final String[] onKeys = new String[] { "on" };
+	private static final String[] yesNoKeys = new String[] { "yes", "no" };
 
 	private FormLink openCalLink;
 	private TextElement nameEl;
@@ -79,6 +80,7 @@ public class EditBigBlueButtonMeetingController extends FormBasicController {
 	private DateChooser endDateEl;
 	private SingleSelection templateEl;
 	private SingleSelection layoutEl;
+	private SingleSelection recordEl;
 	private SingleSelection publishingEl;
 	private MultipleSelectionElement guestEl;
 	private TextElement externalLinkEl;
@@ -209,6 +211,14 @@ public class EditBigBlueButtonMeetingController extends FormBasicController {
 		BigBlueButtonRecordingsPublishingEnum publish = meeting == null ? BigBlueButtonRecordingsPublishingEnum.auto :  meeting.getRecordingsPublishingEnum();
 		publishingEl.select(publish.name(), true);
 		publishingEl.setEnabled(editable);
+		
+		String[] yesNoValues = new String[] { translate("yes"), translate("no")  };
+		recordEl = uifactory.addRadiosVertical("meeting.record", formLayout, yesNoKeys, yesNoValues);
+		if(meeting == null || BigBlueButtonUIHelper.isRecord(meeting)) {
+			recordEl.select(yesNoKeys[0], true);
+		} else {
+			recordEl.select(yesNoKeys[1], true);
+		}
 
 		KeyValues layoutKeyValues = new KeyValues();
 		layoutKeyValues.add(KeyValues.entry(BigBlueButtonMeetingLayoutEnum.standard.name(), translate("layout.standard")));
@@ -247,7 +257,7 @@ public class EditBigBlueButtonMeetingController extends FormBasicController {
 		
 		openCalLink = uifactory.addFormLink("calendar.open", formLayout);
 		openCalLink.setIconLeftCSS("o_icon o_icon-fw o_icon_calendar");
-		BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, templates);
+		BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, recordEl, templates);
 		
 		if(mode == Mode.dates) {
 			Date startDate = meeting == null ? new Date() : meeting.getStartDate();
@@ -404,7 +414,7 @@ public class EditBigBlueButtonMeetingController extends FormBasicController {
 	@Override
 	protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
 		if(templateEl == source) {
-			BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, templates);
+			BigBlueButtonUIHelper.updateTemplateInformations(templateEl, externalLinkEl, recordEl, templates);
 			boolean webcamAvailable = isWebcamLayoutAvailable(getSelectedTemplate(templateEl, templates));
 			BigBlueButtonUIHelper.updateLayoutSelection(layoutEl, getTranslator(), webcamAvailable);
 		} else if (openCalLink == source) {
@@ -466,7 +476,11 @@ public class EditBigBlueButtonMeetingController extends FormBasicController {
 		}
 		
 		meeting.setRecordingsPublishingEnum(BigBlueButtonRecordingsPublishingEnum.valueOf(publishingEl.getSelectedKey()));
-		
+		if(recordEl.isVisible() && recordEl.isOneSelected()) {
+			meeting.setRecord(Boolean.valueOf(yesNoKeys[0].equals(recordEl.getSelectedKey())));
+		} else {
+			meeting.setRecord(null);
+		}
 		meeting = bigBlueButtonManager.updateMeeting(meeting);
 
 		fireEvent(ureq, Event.DONE_EVENT);
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 6564961420b672626fd1aa05d8e1b47537385a69..9558dfcca3297e82a0d7032b1e9d697ca9e05bde 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
@@ -93,6 +93,7 @@ meeting.permanent.on=Ohne Datum
 meeting.publishing=Aufzeichnung publizieren
 meeting.publishing.auto=Automatisch
 meeting.publishing.manual=Manuell
+meeting.record=$\:template.record
 meeting.recurring.end=Ende wiederkehrendes Datum
 meeting.recurring.start=Start wiederkehrendes Datum
 meeting.resource=Kontext
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 99867cf0eedbf79f0701db2f5edb68d06119cc04..1ed3c882c6fbe6222c84dccb601eb7d8cde7a7c4 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
@@ -93,6 +93,7 @@ meeting.permanent.on=Without date
 meeting.publishing=Publish recording
 meeting.publishing.auto=Automatisch
 meeting.publishing.manual=Manual
+meeting.record=$\:template.record
 meeting.recurring.end=End recurring date
 meeting.recurring.start=Start recurring date
 meeting.resource=Context
diff --git a/src/main/java/org/olat/upgrade/_spring/databaseUpgradeContext.xml b/src/main/java/org/olat/upgrade/_spring/databaseUpgradeContext.xml
index eeba35e14a50ea338fe769d955af379b459dffc5..38502007c6b5980beb2d9e393fa691f642188c92 100644
--- a/src/main/java/org/olat/upgrade/_spring/databaseUpgradeContext.xml
+++ b/src/main/java/org/olat/upgrade/_spring/databaseUpgradeContext.xml
@@ -312,6 +312,10 @@
 					<constructor-arg index="0" value="OLAT_15.3.1" />
 					<property name="alterDbStatements" value="alter_15_3_x_to_15_3_1.sql" />
 				</bean>
+				<bean id="database_upgrade_15_3_2" class="org.olat.upgrade.DatabaseUpgrade">
+					<constructor-arg index="0" value="OLAT_15.3.2" />
+					<property name="alterDbStatements" value="alter_15_3_x_to_15_3_2.sql" />
+				</bean>
 			</list>
 		</property>
 	</bean>
diff --git a/src/main/resources/database/mysql/alter_15_3_x_to_15_3_2.sql b/src/main/resources/database/mysql/alter_15_3_x_to_15_3_2.sql
new file mode 100644
index 0000000000000000000000000000000000000000..acea6a271b93ea2fba9d792e7556dffbde65bcb2
--- /dev/null
+++ b/src/main/resources/database/mysql/alter_15_3_x_to_15_3_2.sql
@@ -0,0 +1,3 @@
+-- BigBlueButton
+alter table o_bbb_meeting add column b_record bool default null;
+
diff --git a/src/main/resources/database/mysql/setupDatabase.sql b/src/main/resources/database/mysql/setupDatabase.sql
index 4a4bdb143e36923b27c5ca5b86459e6db6dc18f1..3d3b54144887385b5add330b46f7e815b6c95711 100644
--- a/src/main/resources/database/mysql/setupDatabase.sql
+++ b/src/main/resources/database/mysql/setupDatabase.sql
@@ -1225,6 +1225,7 @@ create table o_bbb_meeting (
    b_end_with_followuptime datetime,
    b_main_presenter varchar(255),
    b_recordings_publishing varchar(16) default 'auto',
+   b_record bool default null,
    fk_creator_id bigint default null,
    fk_entry_id bigint default null,
    a_sub_ident varchar(64) default null,
diff --git a/src/main/resources/database/oracle/alter_15_3_x_to_15_3_2.sql b/src/main/resources/database/oracle/alter_15_3_x_to_15_3_2.sql
new file mode 100644
index 0000000000000000000000000000000000000000..03490a2cb672c39005f989c3f1530893f7cca48e
--- /dev/null
+++ b/src/main/resources/database/oracle/alter_15_3_x_to_15_3_2.sql
@@ -0,0 +1,3 @@
+-- BigBlueButton
+alter table o_bbb_meeting add b_record number default null;
+
diff --git a/src/main/resources/database/oracle/setupDatabase.sql b/src/main/resources/database/oracle/setupDatabase.sql
index 27b793ba4820963bed2380fc4dca3a86b9fbfed8..6dd09e8a3da93ffc92ce4e9dd6eadf4cb20cf3cd 100644
--- a/src/main/resources/database/oracle/setupDatabase.sql
+++ b/src/main/resources/database/oracle/setupDatabase.sql
@@ -1289,6 +1289,7 @@ create table o_bbb_meeting (
    b_end_with_followuptime timestamp,
    b_main_presenter varchar2(255),
    b_recordings_publishing varchar2(16) default 'auto',
+   b_record number default null,
    fk_creator_id number(20),
    fk_entry_id number(20) default null,
    a_sub_ident varchar(64) default null,
diff --git a/src/main/resources/database/postgresql/alter_15_3_x_to_15_3_2.sql b/src/main/resources/database/postgresql/alter_15_3_x_to_15_3_2.sql
new file mode 100644
index 0000000000000000000000000000000000000000..acea6a271b93ea2fba9d792e7556dffbde65bcb2
--- /dev/null
+++ b/src/main/resources/database/postgresql/alter_15_3_x_to_15_3_2.sql
@@ -0,0 +1,3 @@
+-- BigBlueButton
+alter table o_bbb_meeting add column b_record bool default null;
+
diff --git a/src/main/resources/database/postgresql/setupDatabase.sql b/src/main/resources/database/postgresql/setupDatabase.sql
index fa5cd9c10b54d9d7fc68efc7177e1d71f1ff5ca9..00c08ace941aa012609a587a487596e3822139a5 100644
--- a/src/main/resources/database/postgresql/setupDatabase.sql
+++ b/src/main/resources/database/postgresql/setupDatabase.sql
@@ -1247,6 +1247,7 @@ create table o_bbb_meeting (
    b_end_with_followuptime timestamp,
    b_main_presenter varchar(255),
    b_recordings_publishing varchar(16) default 'auto',
+   b_record bool default null,
    fk_creator_id int8,
    fk_entry_id int8 default null,
    a_sub_ident varchar(64) default null,