diff --git a/src/main/java/org/olat/core/commons/modules/bc/comparators/LastModificationComparator.java b/src/main/java/org/olat/core/commons/modules/bc/comparators/LastModificationComparator.java
new file mode 100644
index 0000000000000000000000000000000000000000..f1f3ec7daadc982d48da0f26caf223e813b5a152
--- /dev/null
+++ b/src/main/java/org/olat/core/commons/modules/bc/comparators/LastModificationComparator.java
@@ -0,0 +1,43 @@
+/**
+ * <a href="http://www.openolat.org">
+ * OpenOLAT - Online Learning and Training</a><br>
+ * <p>
+ * Licensed under the Apache License, Version 2.0 (the "License"); <br>
+ * you may not use this file except in compliance with the License.<br>
+ * You may obtain a copy of the License at the
+ * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
+ * <p>
+ * Unless required by applicable law or agreed to in writing,<br>
+ * software distributed under the License is distributed on an "AS IS" BASIS, <br>
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
+ * See the License for the specific language governing permissions and <br>
+ * limitations under the License.
+ * <p>
+ * Initial code contributed and copyrighted by<br>
+ * frentix GmbH, http://www.frentix.com
+ * <p>
+ */
+package org.olat.core.commons.modules.bc.comparators;
+
+import java.util.Comparator;
+
+import org.olat.core.util.vfs.VFSItem;
+
+/**
+ * 
+ * Initial date: 4 janv. 2021<br>
+ * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
+ *
+ */
+public class LastModificationComparator implements Comparator<VFSItem> {
+
+	@Override
+	public int compare(VFSItem m1, VFSItem m2) {
+		if(m1 == null) return -1;
+		if(m2 == null) return 1;
+		
+		long t1 = m1.getLastModified();
+		long t2 = m2.getLastModified();
+		return Long.compare(t1, t2);
+	}
+}
diff --git a/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonModule.java b/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonModule.java
index 8a3021f4d61b9802a3b6f16bb7623fa91d635878..1bf627cf0494a874aaba2b5660bcf69ab58dacf6 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonModule.java
+++ b/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonModule.java
@@ -58,7 +58,7 @@ public class BigBlueButtonModule extends AbstractSpringModule implements ConfigO
 	private static final String PROP_RECORDING_HANDLER_ID = "vc.bigbluebutton.recording.handler.id";
 	private static final String PROP_MAX_UPLOAD_SIZE = "vc.bigbluebutton.max.upload.size";
 	
-	public static final Set<String> SLIDES_MIME_TYPES = Set.of("image/gif", "image/jpg", "image/jpeg", "image/png", "application/pdf",
+	public static final Set<String> SLIDES_MIME_TYPES = Set.of("image/jpg", "image/jpeg", "image/png", "application/pdf",
 			"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
 			"application/vnd.openxmlformats-officedocument.presentationml.presentation",
 			"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
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 78a635410a119077524e71d11b26ef5379a83152..2cf4168ed10042528e8d610e728dc18841b7d056 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java
+++ b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java
@@ -51,6 +51,7 @@ import org.olat.commons.calendar.model.Kalendar;
 import org.olat.commons.calendar.model.KalendarEvent;
 import org.olat.commons.calendar.model.KalendarEventLink;
 import org.olat.commons.calendar.ui.components.KalendarRenderWrapper;
+import org.olat.core.commons.modules.bc.comparators.LastModificationComparator;
 import org.olat.core.commons.persistence.DB;
 import org.olat.core.commons.services.taskexecutor.Task;
 import org.olat.core.commons.services.taskexecutor.TaskExecutorManager;
@@ -435,7 +436,8 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager,
 		Date now = new Date();
 		Date start = meeting.getStartDate();
 		Date startWithLeadingTime = meeting.getStartWithLeadTime();
-		if(startWithLeadingTime != null && startWithLeadingTime.compareTo(now) <= 0 && start.compareTo(now) >= 0) {
+		if((startWithLeadingTime == null && meeting.isPermanent())
+				|| (startWithLeadingTime != null && startWithLeadingTime.compareTo(now) <= 0 && start.compareTo(now) >= 0)) {
 			List<VFSLeaf> slides = getSlides(meeting);
 			if(!slides.isEmpty()) {
 				BigBlueButtonErrors errors = new BigBlueButtonErrors();
@@ -476,7 +478,7 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager,
 			}
 		}
 		return meeting;
-	}	
+	}
 
 	@Override
 	public BigBlueButtonMeetingTemplate createAndPersistTemplate(String name) {
@@ -1049,6 +1051,7 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager,
 			if(!slides.isEmpty()) {
 				MapperKey mapperKey = mapperService.register(null,  meeting.getMeetingId(), new SlidesContainerMapper(slidesContainer), 360);
 				String url = Settings.createServerURI() + mapperKey.getUrl() + "/slides/";
+				Collections.sort(slides, new LastModificationComparator());
 				String slidesXml = slidesDocument(url, slides);
 				uriBuilder.xmlPayload(slidesXml);
 			}
diff --git a/src/main/java/org/olat/modules/bigbluebutton/manager/SlidesContainerMapper.java b/src/main/java/org/olat/modules/bigbluebutton/manager/SlidesContainerMapper.java
index cacf113b41d16abe9cce5bf9881c7311b88527b0..7c811ab22fc68d624438af720409b6b50eb73e5c 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/manager/SlidesContainerMapper.java
+++ b/src/main/java/org/olat/modules/bigbluebutton/manager/SlidesContainerMapper.java
@@ -21,10 +21,12 @@ package org.olat.modules.bigbluebutton.manager;
 
 import javax.servlet.http.HttpServletRequest;
 
+import org.apache.logging.log4j.Logger;
 import org.olat.core.dispatcher.mapper.Mapper;
 import org.olat.core.gui.media.ForbiddenMediaResource;
 import org.olat.core.gui.media.MediaResource;
 import org.olat.core.gui.media.NotFoundMediaResource;
+import org.olat.core.logging.Tracing;
 import org.olat.core.util.vfs.VFSContainer;
 import org.olat.core.util.vfs.VFSItem;
 import org.olat.core.util.vfs.VFSLeaf;
@@ -38,6 +40,7 @@ import org.olat.core.util.vfs.VFSMediaResource;
  */
 public class SlidesContainerMapper implements Mapper {
 	
+	private static final Logger log = Tracing.createLoggerFor(SlidesContainerMapper.class);
 	public static final String DOWNLOAD_PREFIX = "/slides/";
 	
 	private final VFSContainer container;
@@ -67,9 +70,11 @@ public class SlidesContainerMapper implements Mapper {
 			if(slide instanceof VFSLeaf) {
 				resource = new VFSMediaResource((VFSLeaf)slide);
 			} else {
+				log.warn("Slides not found: {}", relPath);
 				resource = new NotFoundMediaResource();
 			}	
 		} else {
+			log.warn("Slides path forbidden: {}", relPath);
 			resource = new ForbiddenMediaResource();
 		}
 		return resource;
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 2b81cb3ccd6c3722b1b6298ed7436ea1ca928be0..333e292bcf8c2fb2eab8c2afc62d88d4199f358c 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonMeetingController.java
+++ b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonMeetingController.java
@@ -20,6 +20,7 @@
 package org.olat.modules.bigbluebutton.ui;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 import java.util.TimerTask;
@@ -230,8 +231,11 @@ public class BigBlueButtonMeetingController extends FormBasicController implemen
 				}
 			}
 		}
-		
+		Collections.sort(documentWrappers);
 		layoutCont.contextPut("documents", documentWrappers);
+		
+		boolean showWarning = meeting.isPermanent() && !documentWrappers.isEmpty();
+		layoutCont.contextPut("uploadWarning", Boolean.valueOf(showWarning));
 	}
 	
 	private void initRecordings(FormItemContainer formLayout) {
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 8ded0af2c06952b9af081aebd49b4c4c95cf2211..c791c72dcb3d14820b4026451f8e2a1f6ed96b86 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java
+++ b/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java
@@ -25,6 +25,7 @@ import static org.olat.modules.bigbluebutton.ui.BigBlueButtonUIHelper.isWebcamLa
 import java.io.File;
 import java.util.ArrayList;
 import java.util.Calendar;
+import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -443,6 +444,7 @@ public class EditBigBlueButtonMeetingController extends FormBasicController {
 			reloadSlides(slidesContainer, false, wrappers, docsMap);
 		}
 		
+		Collections.sort(wrappers);
 		slidesCont.contextPut("documents", wrappers);
 		slidesCont.setVisible(!wrappers.isEmpty());
 
@@ -582,6 +584,7 @@ public class EditBigBlueButtonMeetingController extends FormBasicController {
 				allOk &= false;
 			}
 		}
+		slidesCont.setDirty(true);
 		
 		return allOk;
 	}
diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/SlideWrapper.java b/src/main/java/org/olat/modules/bigbluebutton/ui/SlideWrapper.java
index 7e6cd69ac6dadb24e8bd54ddb13e7600b7b79655..bf1e1a53f32c5ea7048fcd42eb3da8962773805d 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/ui/SlideWrapper.java
+++ b/src/main/java/org/olat/modules/bigbluebutton/ui/SlideWrapper.java
@@ -29,7 +29,7 @@ import org.olat.core.util.vfs.VFSLeaf;
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  *
  */
-public class SlideWrapper {
+public class SlideWrapper implements Comparable<SlideWrapper> {
 	
 	private final VFSLeaf document;
 	private FormLink deleteButton;
@@ -74,4 +74,19 @@ public class SlideWrapper {
 		deleteButton.setUserObject(this);
 	}
 
+	@Override
+	public int compareTo(SlideWrapper o) {
+		if(o == null || o.getDocument() == null) {
+			return 1;
+		}
+		if(document == null) {
+			return -1;
+		}
+		
+		long oModified = o.getDocument().getLastModified();
+		return Long.compare(document.getLastModified(), oModified);
+	}
+	
+	
+
 }
diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/_content/meeting.html b/src/main/java/org/olat/modules/bigbluebutton/ui/_content/meeting.html
index b04e8abb20aa52d53239fa409b6b3a42d59db681..b6182240cef005f6ff09609d5d575d17c5666c67 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/ui/_content/meeting.html
+++ b/src/main/java/org/olat/modules/bigbluebutton/ui/_content/meeting.html
@@ -34,9 +34,10 @@
 <label forid="meeting-slides"><i class="o_icon o_filetype_file"> </i> $r.translate("meeting.slides")</label>
 <ul id="meeting-slides" class="list-unstyled o_slides">
 	#foreach($document in $documents)
-		<li><a href="$mapperUri/slides/$r.encodeUrl($document.filename)" target="_blank"><i class="o_icon o_icon-fw $r.getFiletypeIconCss($document.filename)"> </i> $r.escapeHtml($document.label)</a> #if($r.visible($document.deleteButton))$r.render($document.deleteButton)#end</li>
+		<li><a href="$mapperUri/slides/$r.encodeUrl($document.filename)" target="_blank"><i class="o_icon $r.getFiletypeIconCss($document.filename)"> </i> $r.escapeHtml($document.label)</a> #if($r.visible($document.deleteButton))$r.render($document.deleteButton)#end</li>
 	#end
 </ul>
+<div class="o_warning">$r.translate("warning.slides.meeting.running")</div>
 #end
 #if($r.available("meeting.slides.upload"))
 	$r.render("meeting.slides.upload")
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 a2f992faca377134b382310612d9a1729462f2c7..68086c2ade883caf00e895a9fb17eda7ecd3890c 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
@@ -226,6 +226,7 @@ warning.meeting.started=Sie k\u00f6nnen einen gestarteten Online-Termin nicht me
 warning.no.access=Sie k\u00f6nnen dem Online-Termin noch nicht beitreten.
 warning.no.meeting=Der Online-Termin wurde gel\u00f6scht.
 warning.recording.not.found=Die Aufzeichnung k\u00f6nnte nicht gefunden werden.
+warning.slides.meeting.running=Pr\u00e4sentationsfolien k\u00f6nnen nicht in einem laufende Online-Termine hochgeladet werden.
 warning.template.in.use=Die Raumvorlage kann nicht gel\u00f6scht werden, da sie nocht benutzt wird. L\u00f6schen 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 7ddfca48a942f9f837433bf7f83b36a0c43b4acf..0b4d4ada9d358c0efae56e491dfbd8cbc568f714 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
@@ -226,6 +226,7 @@ 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.recording.not.found=The recording cannot be found.
+warning.slides.meeting.running=Slides cannot be uploaded in a running online-meeting.
 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