diff --git a/src/main/java/org/olat/course/certificate/manager/CertificatePDFFormWorker.java b/src/main/java/org/olat/course/certificate/manager/CertificatePDFFormWorker.java
index 667f93f54ff242af703f2f634d72dc0de6fefd44..60a132b0fd3b8a545a73fff92d5c7bd926842741 100644
--- a/src/main/java/org/olat/course/certificate/manager/CertificatePDFFormWorker.java
+++ b/src/main/java/org/olat/course/certificate/manager/CertificatePDFFormWorker.java
@@ -116,6 +116,10 @@ public class CertificatePDFFormWorker {
 				fillCertificationInfos(acroForm);
 				fillAssessmentInfos(acroForm);
 			}
+			if(!destinationDir.exists()) {
+				destinationDir.mkdirs();
+			}
+			
 			File certificateFile = new File(destinationDir, templateName);
 			OutputStream out = new FileOutputStream(certificateFile);
 			document.save(out);
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 74a879fd08ac7e91ec00bdef0bc1aa2b29d412a1..2e52334f14cc8f32798c9c70028aaeee1c49ae49 100644
--- a/src/main/java/org/olat/course/certificate/manager/CertificatesManagerImpl.java
+++ b/src/main/java/org/olat/course/certificate/manager/CertificatesManagerImpl.java
@@ -66,6 +66,7 @@ import org.olat.core.id.Roles;
 import org.olat.core.logging.OLog;
 import org.olat.core.logging.Tracing;
 import org.olat.core.util.FileUtils;
+import org.olat.core.util.Formatter;
 import org.olat.core.util.StringHelper;
 import org.olat.core.util.Util;
 import org.olat.core.util.WebappHelper;
@@ -111,6 +112,7 @@ import org.olat.repository.RepositoryService;
 import org.olat.repository.model.RepositoryEntrySecurity;
 import org.olat.resource.OLATResource;
 import org.olat.user.UserManager;
+import org.olat.user.propertyhandlers.DatePropertyHandler;
 import org.olat.user.propertyhandlers.UserPropertyHandler;
 import org.springframework.beans.factory.DisposableBean;
 import org.springframework.beans.factory.InitializingBean;
@@ -679,7 +681,11 @@ public class CertificatesManagerImpl implements CertificatesManager, MessageList
 		identity.setName("username");
 		List<UserPropertyHandler> userPropertyHandlers = userManager.getAllUserPropertyHandlers();
 		for(UserPropertyHandler handler:userPropertyHandlers) {
-			identity.getUser().setProperty(handler.getName(), handler.getName());
+			if(handler instanceof DatePropertyHandler) {
+				identity.getUser().setProperty(handler.getName(), Formatter.formatDatetime(new Date()));
+			} else {
+				identity.getUser().setProperty(handler.getName(), handler.getName());
+			}
 		}
 		return identity;
 	}
diff --git a/src/main/resources/org/olat/course/certificate/template.pdf b/src/main/resources/org/olat/course/certificate/template.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..688e2fa1a06ac9a6ac8e4f204829b5c0dd456968
Binary files /dev/null and b/src/main/resources/org/olat/course/certificate/template.pdf differ