diff --git a/src/main/java/org/olat/course/assessment/manager/EfficiencyStatementManager.java b/src/main/java/org/olat/course/assessment/manager/EfficiencyStatementManager.java
index b3eea997c07ed9e5650b84ed82a32ee56b71d4b8..69ef2754e7c24cab5e482b18f64f400f9a66552e 100644
--- a/src/main/java/org/olat/course/assessment/manager/EfficiencyStatementManager.java
+++ b/src/main/java/org/olat/course/assessment/manager/EfficiencyStatementManager.java
@@ -195,7 +195,8 @@ public class EfficiencyStatementManager implements UserDataDeletable {
 					efficiencyProperty.setResource(repoEntry.getOlatResource());
 					efficiencyProperty.setCourseRepoKey(repoEntry.getKey());
 				}
-				
+				efficiencyProperty.setShortTitle(courseEnv.getRunStructure().getRootNode().getShortTitle());
+				efficiencyProperty.setTitle(courseEnv.getRunStructure().getRootNode().getLongTitle());
 				fillEfficiencyStatement(efficiencyStatement, efficiencyProperty);
 				dbInstance.getCurrentEntityManager().persist(efficiencyProperty);
 				if (debug) {
@@ -205,7 +206,9 @@ public class EfficiencyStatementManager implements UserDataDeletable {
 				// update existing
 				if (debug) {
 					log.debug("updating efficiency statement property::" + efficiencyProperty.getKey() + " for id::" + assessedIdentity.getName() + " repoEntry::" + repoEntry.getKey());
-				}	
+				}
+				efficiencyProperty.setShortTitle(courseEnv.getRunStructure().getRootNode().getShortTitle());
+				efficiencyProperty.setTitle(courseEnv.getRunStructure().getRootNode().getLongTitle());
 				fillEfficiencyStatement(efficiencyStatement, efficiencyProperty);
 				dbInstance.getCurrentEntityManager().merge(efficiencyProperty);
 			}
diff --git a/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementListController.java b/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementListController.java
index a0e94eb7d2f309b4ceea2d49f2e61fdc1c1652e8..d3770934a1a67fde00600b48c7145dc528972cca 100644
--- a/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementListController.java
+++ b/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementListController.java
@@ -56,6 +56,7 @@ import org.olat.core.gui.render.StringOutput;
 import org.olat.core.gui.render.URLBuilder;
 import org.olat.core.gui.translator.Translator;
 import org.olat.core.id.Identity;
+import org.olat.core.util.StringHelper;
 import org.olat.core.util.Util;
 import org.olat.core.util.coordinate.CoordinatorManager;
 import org.olat.core.util.event.GenericEventListener;
@@ -246,6 +247,9 @@ public class CertificateAndEfficiencyStatementListController extends FormBasicCo
 				resourceKeyToStatments.put(resourceKey, wrapper);
 				statments.add(wrapper);
 			} else {
+				if(!StringHelper.containsNonWhitespace(wrapper.getDisplayName())) {
+					wrapper.setDisplayName(certificate.getCourseTitle());
+				}
 				wrapper.setResourceKey(resourceKey);
 			}
 			if(resourceKey != null && wrapper.getResourceKey() == null) {
@@ -254,6 +258,13 @@ public class CertificateAndEfficiencyStatementListController extends FormBasicCo
 			wrapper.setCertificate(certificate);
 		}
 		
+		for(CertificateAndEfficiencyStatement statment:statments) {
+			if(!StringHelper.containsNonWhitespace(statment.getDisplayName()) && statment.getResourceKey() != null) {
+				String displayName = repositoryManager.lookupDisplayNameByResourceKey(statment.getResourceKey());
+				statment.setDisplayName(displayName);
+			}
+		}
+		
 		tableModel.setObjects(statments);
 	}
 
diff --git a/src/main/java/org/olat/repository/RepositoryEntry.java b/src/main/java/org/olat/repository/RepositoryEntry.java
index f7d3d00369d5b391dc93437f1764fc09b1a29aaf..a4f37ffa8fa6f1c259005058c823b79cfc400671 100644
--- a/src/main/java/org/olat/repository/RepositoryEntry.java
+++ b/src/main/java/org/olat/repository/RepositoryEntry.java
@@ -74,6 +74,7 @@ import org.olat.resource.OLATResourceImpl;
 	@NamedQuery(name="filterRepositoryEntryMembership", query="select v.key, membership.identity.key from repositoryentry as v inner join v.groups as relGroup inner join relGroup.group as baseGroup inner join baseGroup.members as membership on membership.role in ('owner','coach','participant') where membership.identity.key=:identityKey and v.key in (:repositoryEntryKey)"),
 	@NamedQuery(name="loadRepositoryEntryByKey", query="select v from repositoryentry as v inner join fetch v.olatResource as ores inner join fetch v.statistics as statistics left join fetch v.lifecycle as lifecycle where v.key = :repoKey"),
 	@NamedQuery(name="loadRepositoryEntryByResourceKey", query="select v from repositoryentry as v inner join fetch v.olatResource as ores inner join fetch v.statistics as statistics left join fetch v.lifecycle as lifecycle where ores.key = :resourceKey"),
+	@NamedQuery(name="getDisplayNameByResourceKey", query="select v.displayname from repositoryentry v where v.olatResource.key=:resKey"),
 	@NamedQuery(name="getDisplayNameByOlatResourceRedId", query="select v.displayname from repositoryentry v inner join v.olatResource as ores where ores.resId=:resid"),
 	@NamedQuery(name="getDisplayNameByRepositoryEntryKey", query="select v.displayname from repositoryentry v where v.key=:reKey")
 
diff --git a/src/main/java/org/olat/repository/RepositoryManager.java b/src/main/java/org/olat/repository/RepositoryManager.java
index 9173a930807d419db87a66b5dca197398c162342..709d1b6a71279172147df7c1ff4c30f1b9e3c0a6 100644
--- a/src/main/java/org/olat/repository/RepositoryManager.java
+++ b/src/main/java/org/olat/repository/RepositoryManager.java
@@ -429,6 +429,18 @@ public class RepositoryManager {
 		return displaynames.get(0);
 	}
 	
+	public String lookupDisplayNameByResourceKey(Long resourceKey) {
+		List<String> displaynames = dbInstance.getCurrentEntityManager()
+				.createNamedQuery("getDisplayNameByResourceKey", String.class)
+				.setParameter("resKey", resourceKey)
+				.setHint("org.hibernate.cacheable", Boolean.TRUE)
+				.getResultList();
+
+		if (displaynames.size() > 1) throw new AssertException("Repository lookup returned zero or more than one result: " + displaynames.size());
+		else if (displaynames.isEmpty()) return null;
+		return displaynames.get(0);
+	}
+	
 	/**
 	 * Convenience method to access the repositoryEntry displayname by the referenced OLATResourceable id.
 	 * This only works if a repository entry has an referenced olat resourceable like a course or an content package repo entry