diff --git a/src/main/java/org/olat/core/util/mail/MailBundle.java b/src/main/java/org/olat/core/util/mail/MailBundle.java
index f0fd4cefa05465e54bd5ebdb1b477224b5484f9d..de3a734f7c629c3cca5ada2687ae001943181c9c 100644
--- a/src/main/java/org/olat/core/util/mail/MailBundle.java
+++ b/src/main/java/org/olat/core/util/mail/MailBundle.java
@@ -38,6 +38,8 @@ public class MailBundle {
 	private MailContext context;
 	private Identity fromId;
 	private String from;
+	private String mimeFromEmail;
+	private String mimeFromName;
 	private Identity toId;
 	private String to;
 	private Identity cc;
@@ -77,6 +79,22 @@ public class MailBundle {
 		this.from = from;
 	}
 	
+	public String getMimeFromEmail() {
+		return mimeFromEmail;
+	}
+
+	public void setMimeFromEmail(String mimeFromEmail) {
+		this.mimeFromEmail = mimeFromEmail;
+	}
+
+	public String getMimeFromName() {
+		return mimeFromName;
+	}
+
+	public void setMimeFromName(String mimeFromName) {
+		this.mimeFromName = mimeFromName;
+	}
+
 	public Identity getToId() {
 		return toId;
 	}
diff --git a/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java b/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java
index cc71b444f5107aefb3a2ea1cfb2a5209d2f5c7a0..2959ee950aa32253191c7024212b09068cd99de4 100644
--- a/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java
+++ b/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java
@@ -692,19 +692,19 @@ public class MailManagerImpl implements MailManager, InitializingBean  {
 		MailerResult result = new MailerResult();
 		for(MailBundle bundle:bundles) {
 			MailContent content = decorateMail(bundle);
-			if(mailModule.isInternSystem()) {
-				saveDBMessage(bundle.getContext(), bundle.getFromId(), bundle.getFrom(),
-						bundle.getToId(), bundle.getTo(), bundle.getCc(),
-						bundle.getContactLists(), bundle.getMetaId(), content, result);
+			InternetAddress mimeFrom = createMimeFrom(bundle.getMimeFromEmail(), bundle.getMimeFromName());
+			if (mailModule.isInternSystem()) {
+				saveDBMessage(bundle.getContext(), mimeFrom, bundle.getFromId(), bundle.getFrom(), bundle.getToId(),
+						bundle.getTo(), bundle.getCc(), bundle.getContactLists(), bundle.getMetaId(), content, result);
 			} else {
-				sendExternMessage(bundle.getFromId(), bundle.getFrom(),
+				sendExternMessage(mimeFrom, bundle.getFromId(), bundle.getFrom(),
 						bundle.getToId(), bundle.getTo(), bundle.getCc(),
 						bundle.getContactLists(), content, result);
 			}
 		}
 		return result;
 	}
-	
+
 	@Override
 	public MailContent decorateMail(MailBundle bundle) {
 		MailContent content = bundle.getContent();
@@ -758,6 +758,7 @@ public class MailManagerImpl implements MailManager, InitializingBean  {
 		return new SimpleMailContent(subjectWriter.toString(), bodyWriter.toString(), template.getAttachments());
 	}
 
+	@Override
 	public String decorateMailBody(String body, Locale locale) {
 		String template = getMailTemplate();
 		boolean htmlTemplate = StringHelper.isHtml(template);
@@ -875,13 +876,15 @@ public class MailManagerImpl implements MailManager, InitializingBean  {
 		if(useTemplate) {
 			content = decorateMail(bundle);
 		}
-		return sendExternMessage(bundle.getFromId(), bundle.getFrom(), bundle.getToId(), bundle.getTo(), bundle.getCc(),
-				bundle.getContactLists(), content, result);
+		Address mimeFrom = createMimeFrom(bundle.getMimeFromEmail(), bundle.getMimeFromName());
+		return sendExternMessage(mimeFrom, bundle.getFromId(), bundle.getFrom(), bundle.getToId(), bundle.getTo(),
+				bundle.getCc(), bundle.getContactLists(), content, result);
 	}
 	
 	
 	/**
 	 * Send the message via e-mail, always.
+	 * @param mimeFrom 
 	 * @param from
 	 * @param to
 	 * @param cc
@@ -892,13 +895,13 @@ public class MailManagerImpl implements MailManager, InitializingBean  {
 	 * @param attachments
 	 * @return
 	 */
-	private MailerResult sendExternMessage(Identity fromId, String from, Identity toId, String to, Identity cc, List<ContactList> bccLists,
-			MailContent content, MailerResult result) {
+	private MailerResult sendExternMessage(Address mimeFrom, Identity fromId, String from, Identity toId, String to,
+			Identity cc, List<ContactList> bccLists, MailContent content, MailerResult result) {
 
 		if(result == null) {
 			result = new MailerResult();
 		}
-		MimeMessage mail = createMimeMessage(fromId, from, toId, to, cc, bccLists, content, result);
+		MimeMessage mail = createMimeMessage(mimeFrom, fromId, from, toId, to, cc, bccLists, content, result);
 		if(mail != null) {
 			sendMessage(mail, result);
 			if(result != null && !result.isSuccessful()) {
@@ -919,8 +922,8 @@ public class MailManagerImpl implements MailManager, InitializingBean  {
 		return mailModule.isReceiveRealMailUserDefaultSetting();
 	}
 	
-	protected DBMail saveDBMessage(MailContext context, Identity fromId, String from, Identity toId, String to, 
-			Identity cc,  List<ContactList> bccLists, String metaId, MailContent content, MailerResult result) {
+	protected DBMail saveDBMessage(MailContext context, InternetAddress mimeFromAddress, Identity fromId, String from, Identity toId, String to, 
+			Identity cc, List<ContactList> bccLists, String metaId, MailContent content, MailerResult result) {
 		
 		try {
 			DBMailImpl mail = new DBMailImpl();
@@ -949,7 +952,13 @@ public class MailManagerImpl implements MailManager, InitializingBean  {
 				mail.setFrom(fromRecipient);
 			} else {
 				if(!StringHelper.containsNonWhitespace(from)) {
-					from = WebappHelper.getMailConfig("mailFrom");
+					if (mimeFromAddress != null) {
+						from = mimeFromAddress.getPersonal();
+						fromAddress = mimeFromAddress;
+					} else {
+						from = WebappHelper.getMailConfig("mailFrom");
+						fromAddress = createFromAddress(from, result);
+					}
 				}
 				DBMailRecipient fromRecipient = new DBMailRecipient();
 				fromRecipient.setEmailAddress(from);
@@ -957,7 +966,6 @@ public class MailManagerImpl implements MailManager, InitializingBean  {
 				fromRecipient.setMarked(Boolean.FALSE);
 				fromRecipient.setDeleted(Boolean.TRUE);//marked as delted as nobody can read it
 				mail.setFrom(fromRecipient);
-				fromAddress = createFromAddress(from, result);
 			}
 			
 			if(result.getReturnCode() != MailerResult.OK) {
@@ -1088,7 +1096,7 @@ public class MailManagerImpl implements MailManager, InitializingBean  {
 			if(makeRealMail) {
 				//check that we send an email to someone
 				if(!toAddress.isEmpty() || !ccAddress.isEmpty() || !bccAddress.isEmpty()) {
-					sendRealMessage(fromAddress, toAddress, ccAddress, bccAddress, subject, body, attachments, result);
+					sendRealMessage(mimeFromAddress, fromAddress, toAddress, ccAddress, bccAddress, subject, body, attachments, result);
 					if(result != null && !result.isSuccessful()) {
 						handleErrors(result, fromId, toId, cc, bccLists);
 					}
@@ -1271,8 +1279,8 @@ public class MailManagerImpl implements MailManager, InitializingBean  {
 		return makeRealMail;
 	}
 	
-	private MimeMessage createMimeMessage(Identity fromId, String mailFrom, Identity toId, String to, Identity ccId,
-			List<ContactList> bccLists, MailContent content, MailerResult result) {
+	private MimeMessage createMimeMessage(Address mimeFrom, Identity fromId, String mailFrom, Identity toId, String to,
+			Identity ccId, List<ContactList> bccLists, MailContent content, MailerResult result) {
 		try {
 			Address from;
 			if(StringHelper.containsNonWhitespace(mailFrom)) {
@@ -1329,7 +1337,7 @@ public class MailManagerImpl implements MailManager, InitializingBean  {
 			Address[] tos = toList.toArray(new Address[toList.size()]);
 			Address[] ccs = ccList.toArray(new Address[ccList.size()]);
 			Address[] bccs = bccList.toArray(new Address[bccList.size()]);
-			return createMimeMessage(from, tos, ccs, bccs, content.getSubject(), content.getBody(), content.getAttachments(), result);
+			return createMimeMessage(mimeFrom, from, tos, ccs, bccs, content.getSubject(), content.getBody(), content.getAttachments(), result);
 		} catch (MessagingException e) {
 			log.error("", e);
 			return null;
@@ -1352,6 +1360,24 @@ public class MailManagerImpl implements MailManager, InitializingBean  {
 		return add;
 	}
 	
+	private InternetAddress createMimeFrom(String mimeFromEmail, String mimeFromName) {
+		InternetAddress mimeFromAddress = null;
+		
+		try {
+			if (StringHelper.containsNonWhitespace(mimeFromEmail)) {
+				if (StringHelper.containsNonWhitespace(mimeFromName)) {
+					mimeFromAddress = new InternetAddress(mimeFromEmail, mimeFromName);
+				} else {
+					mimeFromAddress = new InternetAddress(mimeFromEmail);
+				}
+			}
+		} catch (Exception e) {
+			log.warn("Unable to create mime from address: email={}, name={}", mimeFromEmail, mimeFromName);
+		}
+		
+		return mimeFromAddress;
+	}
+	
 	private Address createFromAddress(String address, MailerResult result) throws AddressException {
 		if (!StringHelper.containsNonWhitespace(address)) {
 			address = WebappHelper.getMailConfig("mailFrom");
@@ -1477,8 +1503,8 @@ public class MailManagerImpl implements MailManager, InitializingBean  {
 		return null;
 	}
 	
-	private void sendRealMessage(Address from, List<Address> toList, List<Address> ccList, List<Address> bccList, String subject, String body,
-			List<File> attachments, MailerResult result) {
+	private void sendRealMessage(Address mimeFrom, Address from, List<Address> toList, List<Address> ccList,
+			List<Address> bccList, String subject, String body, List<File> attachments, MailerResult result) {
 		
 		Address[] tos = null;
 		if(toList != null && !toList.isEmpty()) {
@@ -1498,7 +1524,7 @@ public class MailManagerImpl implements MailManager, InitializingBean  {
 			bccs = bccList.toArray(bccs);
 		}
 
-		MimeMessage msg = createMimeMessage(from, tos, ccs, bccs, subject, body, attachments, result);
+		MimeMessage msg = createMimeMessage(mimeFrom, from, tos, ccs, bccs, subject, body, attachments, result);
 		sendMessage(msg, result);
 	}
 	
@@ -1659,10 +1685,15 @@ public class MailManagerImpl implements MailManager, InitializingBean  {
 		return !(Arrays.stream(addressArray).map(r -> ((InternetAddress) r).getAddress())
 				.filter(x -> x.contains("@")).allMatch(x -> x.endsWith(fromDomain)));
 	}
-
+	
 	@Override
 	public MimeMessage createMimeMessage(Address from, Address[] tos, Address[] ccs, Address[] bccs, String subject, String body,
 			List<File> attachments, MailerResult result) {
+		return createMimeMessage(from, tos, ccs, bccs, subject, body, attachments, result);
+	}
+	
+	public MimeMessage createMimeMessage(Address mimeSender, Address from, Address[] tos, Address[] ccs, Address[] bccs, String subject, String body,
+			List<File> attachments, MailerResult result) {
 		
 		if (from == null || ((tos == null || tos.length == 0) && ((ccs == null || ccs.length == 0)) && (bccs == null || bccs.length == 0))) return null;
 		try {
@@ -1678,18 +1709,19 @@ public class MailManagerImpl implements MailManager, InitializingBean  {
 			if(bccs != null && bccs.length > 0) {
 				msg.addRecipients(RecipientType.BCC, bccs);
 			}
-
-			String platformFrom = WebappHelper.getMailConfig("mailFrom");
-			String platformName = WebappHelper.getMailConfig("mailFromName");
-			Address viewablePlatformFrom = createAddressWithName(platformFrom, platformName);
-			// in case the sender and one of the recipients has an external mail address domain we set
-			// the from header to the admin address to prevent rejected or messages detected as spam.
-			msg.setFrom(from);
-			// from has to be set for this check to work
-			if (hasExternalFromAndRecipient(msg)) {
-				msg.setFrom(viewablePlatformFrom);
+			
+			// If custom mime from address, use it.
+			if (mimeSender != null) {
+				msg.setFrom(mimeSender);
+				Address rawMimeSender = getRawEmailFromAddress(mimeSender);
+				msg.setReplyTo(new Address[] {rawMimeSender});
+			} else if (!hasExternalFromAndRecipient(msg)) {
+				// Only if whether the sender nor one of the recipients have an external email address,
+				// we set the from to the sender email address. In all other cases we use the admin address
+				// to prevent rejected or messages detected as spam (see createMessage(subject, from)).
+				msg.setFrom(from);
 			}
-
+			
 			if (attachments != null && !attachments.isEmpty()) {
 				// with attachment use multipart message
 				Multipart multipart = new MimeMultipart("mixed");
diff --git a/src/main/java/org/olat/modules/quality/QualityModule.java b/src/main/java/org/olat/modules/quality/QualityModule.java
index ddf32dfbefa045d9c099d039452c0a76a990a73b..40f74a6e3fd620b8a6d6a48fa43e287f1b9d5eb9 100644
--- a/src/main/java/org/olat/modules/quality/QualityModule.java
+++ b/src/main/java/org/olat/modules/quality/QualityModule.java
@@ -49,6 +49,8 @@ public class QualityModule extends AbstractSpringModule implements ConfigOnOff {
 	private static final String SUGGESTION_EMAIL_SUBJECT = "quality.suggestion.email.subject";
 	private static final String SUGGESTION_EMAIL_BODY = "quality.suggestion.email.body";
 	private static final String DELIMITER = ",";
+	private static final String FROM_EMAIL = "quality.from.email";
+	private static final String FROM_NAME = "quality.from.name";
 	
 	@Value("${quality.enabled:false}")
 	private boolean enabled;
@@ -58,6 +60,10 @@ public class QualityModule extends AbstractSpringModule implements ConfigOnOff {
 	private String suggestionEmailAddresses;
 	private String suggestionEmailSubject;
 	private String suggestionEmailBody;
+	@Value("${quality.from.email}")
+	private String fromEmail;
+	@Value("${quality.from.name}")
+	private String fromName;
 
 	@Autowired
 	public QualityModule(CoordinatorManager coordinatorManager) {
@@ -102,6 +108,16 @@ public class QualityModule extends AbstractSpringModule implements ConfigOnOff {
 		if (StringHelper.containsNonWhitespace(suggestionEmailBodyObj)) {
 			suggestionEmailBody = suggestionEmailBodyObj;
 		}
+		
+		String fromEmailObj = getStringPropertyValue(FROM_EMAIL, true);
+		if (StringHelper.containsNonWhitespace(fromEmailObj)) {
+			fromEmail = fromEmailObj;
+		}
+		
+		String fromNameObj = getStringPropertyValue(FROM_NAME, true);
+		if (StringHelper.containsNonWhitespace(fromNameObj)) {
+			fromName = fromNameObj;
+		}
 	}
 
 	@Override
@@ -153,4 +169,22 @@ public class QualityModule extends AbstractSpringModule implements ConfigOnOff {
 		setStringProperty(SUGGESTION_EMAIL_BODY, suggestionEmailBody, true);
 	}
 
+	public String getFromEmail() {
+		return fromEmail;
+	}
+
+	public void setFromEmail(String fromEmail) {
+		this.fromEmail = fromEmail;
+		setStringProperty(FROM_EMAIL, fromEmail, true);
+	}
+
+	public String getFromName() {
+		return fromName;
+	}
+
+	public void setFromName(String fromName) {
+		this.fromName = fromName;
+		setStringProperty(FROM_NAME, fromName, true);
+	}
+
 }
diff --git a/src/main/java/org/olat/modules/quality/manager/QualityMailing.java b/src/main/java/org/olat/modules/quality/manager/QualityMailing.java
index c9100d0c2b064a59a57e99f42b1727d804ffe9cc..251040ecb8b9676198b3606c15edc3ecee9508c2 100644
--- a/src/main/java/org/olat/modules/quality/manager/QualityMailing.java
+++ b/src/main/java/org/olat/modules/quality/manager/QualityMailing.java
@@ -88,6 +88,7 @@ import org.olat.modules.quality.QualityDataCollectionView;
 import org.olat.modules.quality.QualityDataCollectionViewSearchParams;
 import org.olat.modules.quality.QualityExecutorParticipation;
 import org.olat.modules.quality.QualityExecutorParticipationSearchParams;
+import org.olat.modules.quality.QualityModule;
 import org.olat.modules.quality.QualityReminder;
 import org.olat.modules.quality.model.QualityMailTemplateBuilder;
 import org.olat.modules.quality.ui.FiguresFactory;
@@ -116,6 +117,8 @@ class QualityMailing {
 			QualityDataCollectionStatus.RUNNING,
 			QualityDataCollectionStatus.FINISHED);
 	
+	@Autowired
+	private QualityModule qualityModule;
 	@Autowired
 	private QualityParticipationDAO participationDao;
 	@Autowired
@@ -138,6 +141,7 @@ class QualityMailing {
 			MailManager mailManager = CoreSpringFactory.getImpl(MailManager.class);
 			MailBundle bundle = mailManager.makeMailBundle(null, executor, template, null, null, result);
 			if(bundle != null) {
+				appendMimeFrom(bundle);
 				result = mailManager.sendMessage(bundle);
 				if (result.isSuccessful()) {
 					log.info(MessageFormat.format("{0} for quality data collection [key={1}] sent to {2}",
@@ -246,6 +250,7 @@ class QualityMailing {
 		MailManager mailManager = CoreSpringFactory.getImpl(MailManager.class);
 		MailBundle bundle = mailManager.makeMailBundle(null, recipient, template, null, null, result);
 		if(bundle != null) {
+			appendMimeFrom(bundle);
 			result = mailManager.sendMessage(bundle);
 			if (result.isSuccessful()) {
 				log.info("Report access email send");
@@ -462,5 +467,14 @@ class QualityMailing {
 		return new EvaluationFormPrintControllerCreator(form, storage, filter, figures, reportHelper, printSelection,
 				dataCollection.getTitle());
 	}
+	
+	private void appendMimeFrom(MailBundle bundle) {
+		if (StringHelper.containsNonWhitespace(qualityModule.getFromEmail())) {
+			bundle.setMimeFromEmail(qualityModule.getFromEmail());
+			bundle.setMimeFromName(qualityModule.getFromName());
+		}
+		
+	}
+
 
 }
diff --git a/src/main/java/org/olat/modules/quality/ui/QualityAdminGeneralController.java b/src/main/java/org/olat/modules/quality/ui/QualityAdminGeneralController.java
index 2e642816f51206024202c455cc864d6902c74b02..8d11363037408f0df63a6cb30c5bf12468031530 100644
--- a/src/main/java/org/olat/modules/quality/ui/QualityAdminGeneralController.java
+++ b/src/main/java/org/olat/modules/quality/ui/QualityAdminGeneralController.java
@@ -20,13 +20,15 @@
 package org.olat.modules.quality.ui;
 
 import org.olat.core.gui.UserRequest;
-import org.olat.core.gui.components.form.flexible.FormItem;
 import org.olat.core.gui.components.form.flexible.FormItemContainer;
 import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement;
+import org.olat.core.gui.components.form.flexible.elements.TextElement;
 import org.olat.core.gui.components.form.flexible.impl.FormBasicController;
-import org.olat.core.gui.components.form.flexible.impl.FormEvent;
+import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer;
 import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.WindowControl;
+import org.olat.core.util.StringHelper;
+import org.olat.core.util.mail.MailHelper;
 import org.olat.modules.quality.QualityModule;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -41,6 +43,8 @@ public class QualityAdminGeneralController extends FormBasicController {
 	private static final String[] onKeys = new String[] { "on" };
 	
 	private MultipleSelectionElement enableEl;
+	private TextElement fromEmailEl;
+	private TextElement fromNameEl;
 	
 	@Autowired
 	private QualityModule qualityModule;
@@ -56,27 +60,50 @@ public class QualityAdminGeneralController extends FormBasicController {
 		
 		String[] onValues = new String[] { translate("on") };
 		enableEl = uifactory.addCheckboxesHorizontal("admin.enabled", formLayout, onKeys, onValues);
-		enableEl.addActionListener(FormEvent.ONCHANGE);
 		if (qualityModule.isEnabled()) {
 			enableEl.select(onKeys[0], true);
 		}
+		
+		fromEmailEl = uifactory.addTextElement("admin.from.email", 500, qualityModule.getFromEmail(), formLayout);
+		fromEmailEl.setHelpTextKey("admin.from.email.help", null);
+		
+		fromNameEl = uifactory.addTextElement("admin.from.name", 500, qualityModule.getFromName(), formLayout);
+		
+		FormLayoutContainer buttonLayout = FormLayoutContainer.createButtonLayout("buttons", getTranslator());
+		buttonLayout.setRootForm(mainForm);
+		formLayout.add(buttonLayout);
+		uifactory.addFormSubmitButton("save", buttonLayout);
 	}
-
+	
 	@Override
-	protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
-		if(enableEl == source) {
-			qualityModule.setEnabled(enableEl.isAtLeastSelected(1));
+	protected boolean validateFormLogic(UserRequest ureq) {
+		boolean allOk = super.validateFormLogic(ureq);
+		
+		fromEmailEl.clearError();
+		fromNameEl.clearError();
+		if (StringHelper.containsNonWhitespace(fromEmailEl.getValue())) {
+			if (!MailHelper.isValidEmailAddress(fromEmailEl.getValue())) {
+				fromEmailEl.setErrorKey("error.email.invalid", null);
+				allOk = false;
+			}
+		} else if (StringHelper.containsNonWhitespace(fromNameEl.getValue())) {
+			fromNameEl.setErrorKey("error.email.name.no.address", null);
+			allOk = false;
 		}
-		super.formInnerEvent(ureq, source, event);
+		
+		return allOk;
 	}
 	
 	@Override
-	protected void doDispose() {
-		//
+	protected void formOK(UserRequest ureq) {
+		qualityModule.setEnabled(enableEl.isAtLeastSelected(1));
+		
+		qualityModule.setFromEmail(fromEmailEl.getValue());
+		qualityModule.setFromName(fromNameEl.getValue());
 	}
-
+	
 	@Override
-	protected void formOK(UserRequest ureq) {
+	protected void doDispose() {
 		//
 	}
 
diff --git a/src/main/java/org/olat/modules/quality/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/quality/ui/_i18n/LocalStrings_de.properties
index 6e76c6004fa5130e784d3c26b86fb05ee8d4ed5b..d32036adacaef5fb0ccfa9a736c9a103518af6a9 100644
--- a/src/main/java/org/olat/modules/quality/ui/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/modules/quality/ui/_i18n/LocalStrings_de.properties
@@ -1,6 +1,9 @@
 #Wed Dec 19 17:17:44 CET 2018
 admin.config.title=Einstellungen Qualit\u00E4tsmanagement
 admin.enabled=Qualit\u00E4tsmanagement
+admin.from.email=Absender Email-Adresse
+admin.from.email.help=Hier k\u00F6nnen Sie optional eine spezielle Email-Adresse f\u00FCr Emails des Qualit\u00E4tsmanagement konfigurieren (Einladungen, Erinnerungen, ...).
+admin.from.name=Absender Name
 admin.menu.title=Qualit\u00E4tsmanagement
 admin.menu.title.alt=$\:admin.menu.title
 admin.suggestion.email.addresses=Empf\u00E4nger Email-Adressen
@@ -77,9 +80,14 @@ data.collection.topic.type.select=Gegenstandsart
 data.collections=Datenerhebungen
 error.deadline.before.start=Der Endtermin muss sp\u00E4ter sein als der Starttermin.
 error.email.invalid=Email-Adresse ung\u00FCltig.
+<<<<<<< Upstream, based on origin/master
 error.input.toolong=Der eingegebene Text ist mit {1} Zeichen zu lang. Bitte beschr\u00E4nken Sie sich auf maximal {0} Zeichen.
 error.number.greater=Die Zahl muss gr\u00F6sser oder gleich {0} sein.
 error.number.lower=Die Zahl muss kleiner oder gleich {0} sein.
+=======
+error.email.name.no.address=Sie k\u00F6nnen den Namen nur angeben, wenn Sie auch eine Email-Adresse angeben.
+error.input.toolong=Der eingegebene Text ist mit {1} Zeichen zu lang. Bitte beschr\u00E4nken Sie sich auf maximal {0} Zeichen.
+>>>>>>> f9f79a8 OO-4390: Specific sender address of QM e-mails
 error.repo.entry.missing=Der Fragebogen, welchen Sie anzeigen m\u00F6chten, wurde in der Zwischenzeit aus der Ablage der Lernressourcen gel\u00F6scht.
 error.repo.entry.not.replaceable=Der Fragebogen kann nicht mehr ge\u00E4ndert werden.
 error.wrong.number=Ung\u00FCltiges Zahlenfomat.
diff --git a/src/main/java/org/olat/modules/quality/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/quality/ui/_i18n/LocalStrings_en.properties
index f8a15ad74eecb4c163f94e0fa0689383095a572d..054d27dd11c29b0255a3b5bd842ef8eb4f00e0e1 100644
--- a/src/main/java/org/olat/modules/quality/ui/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/modules/quality/ui/_i18n/LocalStrings_en.properties
@@ -1,6 +1,9 @@
 #Thu Nov 08 16:18:28 CET 2018
 admin.config.title=Configuration quality management
 admin.enabled=Quality management
+admin.from.email=Sender email address
+admin.from.email.help=Here you can optionally configure a special email address for emails from quality management (invitations, remeinders, ...).
+admin.from.name=Sender email name
 admin.menu.title=Quality management
 admin.menu.title.alt=$\:admin.menu.title
 admin.suggestion.email.addresses=Recipient email addresses
@@ -77,6 +80,7 @@ data.collection.topic.type.select=Topic type
 data.collections=Data collections
 error.deadline.before.start=The deadline has to be after the start date.
 error.email.invalid=Email address not valid.
+error.email.name.no.address=You can only enter the name if you also provide an email address.
 error.input.toolong=The text you entered is to long ({1} characters). Only {0} characters are allowed.
 error.number.greater=The number must be greater than or equal to {0}.
 error.number.lower=The number must be less than or equal to {0}.
diff --git a/src/main/resources/serviceconfig/olat.properties b/src/main/resources/serviceconfig/olat.properties
index 661ae44894faf9c02ddd84436f4b6b8d8cfc3b91..d0747c9e73203f2cfc79683309bb28b01f503aef 100644
--- a/src/main/resources/serviceconfig/olat.properties
+++ b/src/main/resources/serviceconfig/olat.properties
@@ -1454,6 +1454,16 @@ lecture.assessment.mode.seb.keys=
 relation.role.enabled=enabled
 relation.role.enabled.values=enabled,disabled
 
+########################################
+# Quality management
+########################################
+quality.enabled=false
+
+# Custom email address and name for emails sent by the quality module.
+# If empty, the values of $fromemail and $fromname are used.
+quality.from.email=
+quality.from.name=
+
 ########################################
 # Options for Virtual Classrooms
 ########################################