diff --git a/src/main/java/org/olat/core/gui/components/Window.java b/src/main/java/org/olat/core/gui/components/Window.java
index f4ebd4ad67ff252a0181ebfbbef7854842a04d3d..c9c5cb8fff3b761623a26237a5db987cc0a33057 100644
--- a/src/main/java/org/olat/core/gui/components/Window.java
+++ b/src/main/java/org/olat/core/gui/components/Window.java
@@ -41,6 +41,7 @@ import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.persistence.DBFactory;
 import org.olat.core.dispatcher.DispatcherModule;
 import org.olat.core.dispatcher.mapper.MapperService;
+import org.olat.core.dispatcher.mapper.manager.MapperKey;
 import org.olat.core.gui.GlobalSettings;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.Windows;
@@ -489,9 +490,10 @@ public class Window extends AbstractComponent {
 								// create a mapper which maps this mediaresource, and serves it once only
 								MediaResourceMapper extMRM = new MediaResourceMapper();
 								extMRM.setMediaResource(mmr);
-								String res = CoreSpringFactory.getImpl(MapperService.class).register(ureq.getUserSession(), extMRM) + "/";
+								MapperKey mapperKey = CoreSpringFactory.getImpl(MapperService.class).register(ureq.getUserSession(), extMRM);
+								String resUrl = mapperKey.getUrl() + "/";
 								// e.g. res = /olat/m/10001/
-								Command rmrcom = CommandFactory.createParentRedirectForExternalResource(res);
+								Command rmrcom = CommandFactory.createParentRedirectForExternalResource(resUrl);
 								wbackofficeImpl.sendCommandTo(rmrcom);
 								if (isDebugLog) {
 									long durationAfterCreateMediaResourceMapper = System.currentTimeMillis() - debug_start;
diff --git a/src/main/java/org/olat/search/service/document/file/WordOOXMLDocument.java b/src/main/java/org/olat/search/service/document/file/WordOOXMLDocument.java
index 4e82911f5b728fa2cdfa616145a741519a76c1c9..310580c26d0c02ded392b304ef0fa78c5e58b0c4 100644
--- a/src/main/java/org/olat/search/service/document/file/WordOOXMLDocument.java
+++ b/src/main/java/org/olat/search/service/document/file/WordOOXMLDocument.java
@@ -29,6 +29,7 @@ import org.olat.core.gui.util.CSSHelper;
 import org.olat.core.logging.OLog;
 import org.olat.core.logging.Tracing;
 import org.olat.core.util.FileUtils;
+import org.olat.core.util.StringHelper;
 import org.olat.core.util.io.ShieldInputStream;
 import org.olat.core.util.vfs.VFSLeaf;
 import org.olat.search.service.SearchResourceContext;
@@ -87,16 +88,28 @@ public class WordOOXMLDocument extends FileDocument {
 					doc.setContent(0, dh.getContent());
 				} else if(name.startsWith(HEADER) && name.endsWith(".xml")) {
 					String position = name.substring(HEADER.length(), name.indexOf(".xml"));
-					
-					OfficeDocumentHandler dh = new OfficeDocumentHandler();
-					parse(new ShieldInputStream(zip), dh);
-					doc.setHeader(Integer.parseInt(position), dh.getContent());
+					if(StringHelper.isLong(position)) {
+						try {
+							OfficeDocumentHandler dh = new OfficeDocumentHandler();
+							parse(new ShieldInputStream(zip), dh);
+							doc.setHeader(Integer.parseInt(position), dh.getContent());
+						} catch (NumberFormatException e) {
+							log.warn("", e);
+							//if position not a position, go head
+						}
+					}
 				} else if(name.startsWith(FOOTER) && name.endsWith(".xml")) {
 					String position = name.substring(FOOTER.length(), name.indexOf(".xml"));
-					
-					OfficeDocumentHandler dh = new OfficeDocumentHandler();
-					parse(new ShieldInputStream(zip), dh);
-					doc.setFooter(Integer.parseInt(position), dh.getContent());
+					if(StringHelper.isLong(position)) {
+						try {
+							OfficeDocumentHandler dh = new OfficeDocumentHandler();
+							parse(new ShieldInputStream(zip), dh);
+							doc.setFooter(Integer.parseInt(position), dh.getContent());
+						} catch (NumberFormatException e) {
+							log.warn("", e);
+							//if position not a position, go head
+						}
+					}
 				}
 				entry = zip.getNextEntry();
 			}