diff --git a/src/main/java/org/olat/modules/glossary/GlossaryManagerImpl.java b/src/main/java/org/olat/modules/glossary/GlossaryManagerImpl.java
index 56b56858012ba3355aba716a7b5eb1fc274dfd0b..dd8590122ea66e1d9b4bf27a8758fe517af8ab0b 100644
--- a/src/main/java/org/olat/modules/glossary/GlossaryManagerImpl.java
+++ b/src/main/java/org/olat/modules/glossary/GlossaryManagerImpl.java
@@ -33,6 +33,7 @@ import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.media.CleanupAfterDeliveryFileMediaResource;
 import org.olat.core.gui.media.MediaResource;
 import org.olat.core.id.OLATResourceable;
+import org.olat.core.util.StringHelper;
 import org.olat.core.util.ZipUtil;
 import org.olat.core.util.filter.Filter;
 import org.olat.core.util.filter.FilterFactory;
@@ -171,6 +172,8 @@ public class GlossaryManagerImpl extends GlossaryManager {
 	public MediaResource getAsMediaResource(OLATResourceable res) {
 		RepositoryEntry repoEntry = RepositoryManager.getInstance().lookupRepositoryEntry(res, false);
 		String exportFileName = repoEntry.getDisplayname() + ".zip";
+		// OO-135 check for special / illegal chars in filename
+		exportFileName = StringHelper.transformDisplayNameToFileSystemName(exportFileName);
 		File fExportZIP = new File(FolderConfig.getCanonicalTmpDir() + "/" + exportFileName);
 		VFSContainer glossaryRoot = getGlossaryRootFolder(res);
 		ZipUtil.zip(glossaryRoot.getItems(), new LocalFileImpl(fExportZIP), false);