diff --git a/src/main/java/org/olat/course/assessment/NewCachePersistingAssessmentManager.java b/src/main/java/org/olat/course/assessment/NewCachePersistingAssessmentManager.java
index 89609755385339918ddfa3217ac4d20ae660e84d..63b41bb1ca50a190a2188dda37527188da01d31e 100644
--- a/src/main/java/org/olat/course/assessment/NewCachePersistingAssessmentManager.java
+++ b/src/main/java/org/olat/course/assessment/NewCachePersistingAssessmentManager.java
@@ -889,7 +889,7 @@ public class NewCachePersistingAssessmentManager extends BasicManager implements
 				
 				if(passed != null && passed.booleanValue() && course.getCourseConfig().isAutomaticCertificationEnabled()) {
 					CertificatesManager certificatesManager = CoreSpringFactory.getImpl(CertificatesManager.class);
-					if(certificatesManager.isRecertificationAllowed(assessedIdentity, courseEntry)) {
+					if(certificatesManager.isCertificationAllowed(assessedIdentity, courseEntry)) {
 						CertificateTemplate template = null;
 						Long templateId = course.getCourseConfig().getCertificateTemplate();
 						if(templateId != null) {
diff --git a/src/main/java/org/olat/course/certificate/CertificatesManager.java b/src/main/java/org/olat/course/certificate/CertificatesManager.java
index d56331cebba45075928b358f1f1318b2929919a7..171cf78cba621eabdfbbfefab9fa706908b0cc05 100644
--- a/src/main/java/org/olat/course/certificate/CertificatesManager.java
+++ b/src/main/java/org/olat/course/certificate/CertificatesManager.java
@@ -137,7 +137,17 @@ public interface CertificatesManager {
 	
 	public List<Certificate> getCertificates(IdentityRef identity, OLATResource resource);
 	
-	public boolean isRecertificationAllowed(Identity identity, RepositoryEntry entry);
+	/**
+	 * Check if recertification is allowed and if it is the case, check the
+	 * recertification period. If not allowed, check if a certificate was
+	 * already emitted.
+	 * 
+	 * @param identity
+	 * @param entry
+	 * @return
+	 */
+	
+	public boolean isCertificationAllowed(Identity identity, RepositoryEntry entry);
 	
 	public File previewCertificate(CertificateTemplate template, RepositoryEntry entry, Locale locale);
 
diff --git a/src/main/java/org/olat/course/certificate/manager/CertificatesManagerImpl.java b/src/main/java/org/olat/course/certificate/manager/CertificatesManagerImpl.java
index acc66bef09ff8245e55b8269195242226c14e792..3d6ee860d40d96cfdab7fde99ea4e9329596f032 100644
--- a/src/main/java/org/olat/course/certificate/manager/CertificatesManagerImpl.java
+++ b/src/main/java/org/olat/course/certificate/manager/CertificatesManagerImpl.java
@@ -512,7 +512,7 @@ public class CertificatesManagerImpl implements CertificatesManager, MessageList
 	}
 
 	@Override
-	public boolean isRecertificationAllowed(Identity identity, RepositoryEntry entry) {
+	public boolean isCertificationAllowed(Identity identity, RepositoryEntry entry) {
 		boolean allowed = false;
 		try {
 			ICourse course = CourseFactory.loadCourse(entry.getOlatResource());
@@ -538,7 +538,7 @@ public class CertificatesManagerImpl implements CertificatesManager, MessageList
 					allowed = nextCertification.before(now);
 				}
 			} else {
-				allowed = true;
+				allowed = !hasCertificate(identity, entry.getOlatResource().getKey());
 			}
 		} catch (CorruptedCourseException e) {
 			log.error("", e);
diff --git a/src/main/java/org/olat/course/certificate/ui/AssessedIdentityCertificatesController.java b/src/main/java/org/olat/course/certificate/ui/AssessedIdentityCertificatesController.java
index 2961bfae91491b97961c81e2631eb5b931cb3500..4cc7b74868fe5159dfb5237b3a466933b2edf98c 100644
--- a/src/main/java/org/olat/course/certificate/ui/AssessedIdentityCertificatesController.java
+++ b/src/main/java/org/olat/course/certificate/ui/AssessedIdentityCertificatesController.java
@@ -185,7 +185,7 @@ public class AssessedIdentityCertificatesController extends BasicController impl
 		ICourse course = CourseFactory.loadCourse(resource);
 		Identity assessedIdentity = assessedUserCourseEnv.getIdentityEnvironment().getIdentity();
 		RepositoryEntry courseEntry = course.getCourseEnvironment().getCourseGroupManager().getCourseEntry();
-		if(certificatesManager.isRecertificationAllowed(assessedIdentity, courseEntry)) {
+		if(certificatesManager.isCertificationAllowed(assessedIdentity, courseEntry)) {
 			//don't need to confirm
 			doGenerateCertificate(ureq);
 		} else {