Icon Wiki

Feature Wiki

Information about planned and released features


Persisting Certificates

A crowdfunding for this feature has been started. If this feature is interesting for you, please contribute! →Crowdfunding

1 Initial Problem

  1. Persistence: If a course is deleted, so are the certificates produced by it. They are no longer accessible to users. 
  2. Many-Stop-Shopping: If a certificate is obtained, user have to harvest it in or at the producing object. There is no central place where certificates are located. They have to pick them up one by one. Plus: The certificate is not intrusive enough for users to find it. 
  3. Attractiveness: Even the most layouted certificate-PDF is presented in the ILIAS interface rather unspectacular. 

2 Conceptual Summary

  • Certificates should get their own indepentent life. Their fate must be separated from the fate of the course or test: As soon as an object which consumes the central certificate service (course, Learningmodule SCORM, Learningmodule ILIAS, Test, Exercise) finds a user eligible to a certificate, this very objects throws an event to the central certificate service. The certificate service  takes over and handles the certificate from that moment onwards. 
  • Persisting Certificates are stored as granted: with all glorious typos. If the certificate template gets changed after an individual certificate was granted NO NEW certificate is granted, the existing certificate is not replaced magically. 
  • Persiting certificates are granted once the consuming object calls for the certifcate service: If for example Manni Member gets a certificate in a Course and Carl Course Admin THEN changes the course and demotes Mannis status back to "In Progress" the originally granted certificate is NOT withdrawn magically. The learning progress status of Manni is yellow AND he has the certificate. 
  • In a migration step consuming objects would signal all their certificate worthy events at the point in time of the update to the certification service which in turn creates the certificates. 
  • Once obtained by a user Certificates should automatically be placed on the Desktop > My Workspace > Content. There should be no need to actively trigger this but they are placed there by ILIAS as it is done with the Badges. 
  • The Certificates should be places on a sperate tab "Certificates" in the Personal Workspace. It should be possible to configure the Workspace thus is only shows the Certificates. 
  • Within this Certificates tab in the Workspace the certificates are ordered by date when they were awarded, newest on top.  
  • Places that allowed so far the downloading of a certificate (top actions and list gui) keep offering this option. This allows installation to kep their certificates accessible even if they did not switch on the workspace and do not feel like it. 
  • The Certificate should be presented as deck of cards. The card should feature an explicit download link. However clicking on the picture should trigger the download as well. 
  • People with the Permission "Edit Settings" should be offered uploading a thumbnail / small picture to be used for presenting the certificate in the card, while creating the certificate. 

3 User Interface Modifications

3.1 List of Affected Views

{Please list all views (screens) of ILIAS that should be modified, newly introduced or removed.}

3.2 User Interface Details

3.3 New User Interface Concepts


4 Technical Information

{The maintainer has to provide necessary technical information, e.g. dependencies on other ILIAS components, necessary modifications in general services/architecture, potential security or performance issues.}

5 Contact

6 Funding

If you are interest in funding this feature, please add your name and institution to this list.
  • ...

7 Discussion

Jansen, Michael [mjansen] 28 Aug, 2017: Instead of migrating the implicit certificates during the database update steps, we should add some guided process in the personal workspace to migrate the existing implicit certificates to persistent ones. Consuming objects (tst, exs, crs, sahs, skill) should provide a list of all implicitly achieved certificates of a user for migration purposes.
Jansen, Michael [mjansen] 28 Aug, 2017: One addition ... What about generating something like verification hash (some random id) if a user achieved a persistent certificate? This could be used (in future, if not addressed by this feature request) to verify a certificate was really issued for you in a certain context (e.g. a course).
JourFixe, ILIAS [jourfixe], August 28, 2017: We highly appreciate this suggestion and schedule it for 5.4.
  • The following changes still should be made:
    • Certificates should be presented in a list not in a deck of cards.
    • PhantomJS should be used for PDF generation.
    • Instead of a sub-tab in Working Space, we would like to have a new Personal Desktop menu item called 'Learning Outcomes' that presents 'Badges' and 'Certificates' in tabs.
  • We agree with Michael's suggestion for a verification service. Please create a separate feature request for it.
Kiegel, Colin [kiegel] 2017-11-28
  • Yay, finally! This is a significant step forward. :-)
  • Will this page have a permalink? (custom menus, instructions for users, etc.).
Jansen, Michael [mjansen] 1 Dec, 2017:

@Colin: This is not specified, but could be done.

@Jour Fixe:

I am not sure if we should switch the PDF renderer to PhantomJS. I discussed this requirement with Guido and Max as the PDF service maintainers. In our opinion XSL-FO should still be used for documents with a content-driven approach, HTML/CSS renderer (PhantomJS, wkthmltopdf, ...) for documents with a layout-driven approach. Of course CSS3 is growing and you can do a great job by using it. Furthermore XSL-FO is feature completely, there will be no XSL 2.

But: We did some prototyping and discovered the background images being the current major issue. Using HTML/CSS3 does not render a background image set for the page. There a some webkit hacks like -webkit-print-color-adjust, but these do not work at all.
On the other hand, PhantomJS (specifically) does indeed respect background images set via CSS on the body element, but there will be issues (among others) with orphans or widows. I doubt we could adopt the current behaviour 1:1 when switchting to another renderer.

Maybe we should create a separate feature wiki page/feature request for changing the renderer in future. Doing this know will result in high efforts regarding investigation and prototyping.


Furthermore I like to discuss the current (on demand) certificate handling in contrast to the persisting certificates. As mentioned in the description there should be a migration from all implicit certificates to explicit/persisting certicates.
In my comment above I already described that I don't see any chance to do this migration in the ILIAS setup with database update steps. I just wanted to ask the Jour Fixe again if the suggested procedure is clear for everyone. A migration should be offered in the 'Learning Outcome' area (there will be a button to trigger this, maybe this could be done with a background task), which asks the certifcate enabled modules (courses, tests, etc.) and services for the current certificates of the user (a pull, not a push).
The main issue for the components will be the determination of all implicit certificates the user has access to. Beside the learning progress (tests, exercises, ...) or passed (courses) status determination, the challenge (performance, runtime) is to identify all 'readable' repository objetcs for this user.
Certificate documents could not be downloaded on places offering certificate downloads so far, until the migration was done.
JourFixe, ILIAS [jourfixe], 04 DEC 2017: We follow Michael's suggestion and allow to keep XSL-FO as renderer for certificates. PhantomJS should not be used until CSS4 guarantees better results of PDF generation.
Jansen, Michael [mjansen], 01 May 2018: After some discussion with Alex Killing and Alexandra Tödt during our (Databay) technical elaborations we suggest the following change according to the trigger event for certificate achievements: Currently (ILIAS <= 5.3.x) there is no streamlined bevahiour for the different object types which support certificates:
  • ilCourseCertificateAdapter (depends on the 'completion_status' of the course)
  • ilExerciseCertificateAdapter (depends on a 'completed' learning progress or the user's state of the exercise in table 'exc_members')
  • ilSCORMCertificateAdapter (depends on a 'completed learning progress' or some SCO based 'passed' determination)
  • ilTestCertificateAdapter (depends on a 'passed' test result)
To reduce the complexity for the component maintainers and because of comprehensibility/verifiability reasons, we suggest to bind the certificate achievement to the 'completed' learning progress event only.
Even if the learning progress is disabled (globally or for the respetive object), the status determination for the different components should work.

Furthermore some objects (test/exercides) currenlty offer a 'Always Visible' option for certificates. This option will be abandoned, or  (if set to "always visible") will be issue if the learning progress state transits to 'In Progress'.
JourFixe, ILIAS [jourfixe], 07 May 2018 : We appreciate Michael's suggestion to bind the certificate achievement to the 'completed' learning progress event only. The 'Always visible' option should be abadoned as we do not really see a need of this option. The certificate administration should link to the screen 'Completion Status' (see below) where the different completion status are already managed. This screen needs to be extended for object type 'Course'. We would like to abandon the migration of old certificates to the new version with ILIAS 5.6 to reduce the amount of no longer needed source code in ILIAS.
Jansen, Michael [mjansen], 08 Jun 2018: As checked together with Stefan, Alex and Alex, we don't need to extend the screen above for the 'Course'. In the object specific certificate form in each course, we will introduce some configuration similar to the badge service, if the LP is disabled.
Suittenpointner, Florian [suittenpointner], 22. August 2018
One question regarding the issue of course certificates based on LP = completed:
What for will then be the "Passed" status of the course in the future?
The only thing remaining is dissolving preconditions but this could already be done by LP = completed, too.
So, will the "Passed" status remain at all?
Jansen, Michael [mjansen] 18 SEPT 2018:

@Florian: This has to be answered by the maintainer of the course component. The certificate service does not know something like "a passed course". It only relies on events.


According to the Jour Fixe decision (see  comments above) the presentation of the achieved certificates MUST be done with a list/table, NOT with a deck of cards. Therefore we do not allow an upload of thumnail images for presentation purposes when creating certificate templates.
JourFixe, ILIAS [jourfixe], 15 OCT 2018 : We accept the presentation of certificates as deck of cards (and revise our decision from August 2017 above). Main reasons are streamlining with badges and more attractive presentation of certificates for users. Please add a sortation view control for (1) Issue Date (ascending, descending) and (2) Object Title (ascending, descending). We take the svg icon that existed when the certificate was issued for presenting the certificate in the deck of cards.

8 Implementation

8.1 Achievements/History

8.2 Migration

8.3 Certificate Templates

Please note that the 'Visibility' option for exercises and tests has been removed according to JF decision.
Test Cases
Test cases completed at 19 OCT 2018 by Zenzen, Enrico [ezenzen]

  • C24822: Testfragen beantworten und Zertifikat abrufen
  • C24817: Teilnehmerdatensätze löschen
  • C24818: Test löschen
  • C24811: Abgabe einreichen und Zertifikat abrufen
  • C24813: Status "Bestanden" manuell durch Tutor ändern
  • C24812: Übung löschen
  • C24829: Kurs bearbeiten und Zertifikat abrufe
  • C24830:Zusätzliches Objekt als Voraussetzung für das Bestehen des Kurses definieren
  • C24831: Kurs löschen
Approved at 2018-10-22 by Samoila, Oliver [oliver.samoila] for the Technische Hochschule OWL-funded parts of the feature.
Approved on 2018-10-25 by Tödt, Alexandra [atoedt] on behalf of SWR

Last edited: 02. Apr 2019, 20:30, Samoila, Oliver [oliver.samoila]