New release Curriculum 10.19

The release notes provide information on the features and improvements in the specified version.

Improvements and bug fixes

STABILITY, CHANGEABILITY- Custom fields using reference values should link to the value ID - CUR-12

Sometimes you make a design decision, where after a year (or 2) you realise this was not the best approach. To explain the issue is simple, but you keep pushing forward the solution, since that is rather complex. This is exactly what this issue is all about.

The design choice was to define the relation from a custom field value to a reference using the code. This means that for instance the custom field country was related to the code uk in the reference list countries. This works fine, until for some reason it is required to change the code. In that case all 'old custom field values' try to find the 'uk code', but that is gone since it's renamed.

The correct design choice is to define the relation on an invisible unique database Id. The value will not be affected, by the code change, since the invisible (immutable) database ID stays the same.

In this sprint the above correct design choice is implemented.
It is a pure technical change, with no impact on users.

Advised action

The change is from a technical perspective considered big, extensively tested, but we still would advise to perform some checks on fields using Reference lists in specific ways (e.g. calculated fields)

ADMINISTRATION, DATA - Enable trigger of a hook from a report - CUR-603

Hooks are small pieces of function that can be used in process configuration and process management to perform a specific task on a specific moment. An option is added to enable executing a hook from a report.
This works in a similar way as with the process manager, where a single object (e.g. module) or multiple objects can be selected. The 'Hook-button' is shown and will allow to execute the hook on the selected objects. This exact behaviour and function is added to the reports (based on authorization), where reports offer the flexibility of filtering on any field. This allows for a better filtering and selection of the objects to be touched by the hook.

The screenshot below shows the new function where in this case one specification is selected, and via the hook the publication date can be set.

Use the hook functionality from a report

Configuration

The hooks that are offered should be configured using the Administration / Hooks configuration option.
The basic configuration of each hook equal and consists of:

  • Name - The hook-function to be executed
  • Description - The description shown in the drop-down hook selection
  • Object type - The (optional) object type (e.g. module, study, ...) the hook is meant for.
    In case no object type is defined, the hook will run on each object.
  • Additional configuration - Based on the hook-function additional configuration options are added.

The screenshot below show the configuration for the hook Set field value. This specific hook requires additional fields to be entered to specify what field should be changed.

Hook configuration requires different fields to be defined

The recently added hooks especially targeted at use from the new report-hook option are:

  • Set field value - Change the value of an individual field (optional on a specific object type)
  • Generate value - (Re)generate a calculated field (e.g. code)

REPORTING, USABILITY - Filter on Boolean values should support filter on true or false - CUR-665

Filtering on Boolean values in reports didn't support filtering on False and also didn't differentiate between False and Undefined. An option is added to the Report filtering of Booleans that allows the user to check what type of filtering should be applied on the Column:

  • Yes - The field is selected as true (Boolean value = true)
  • No - The field is selected as false (Boolean value = false)
  • Undefined - The field value is not defined, neither the Yes / No is selected (Boolean value = empty)
  • No, or undefined - The field value is not Yes

IMPORT - Enable deletion of both Appraisals and Objectives via CSV - CUR-307, CUR-520

The CSV upload function supports the creation / update of educational objects. A new option is added to the CSV upload for Appraisals and Objectives to enable a delete of earlier imported or created objects.

An optional remove column is added to the CSV import definition, that is available directly from the Administration / CSV menu by selecting the import of type Appraisal or Objective). The remove column is added as an optional element and the existence will be validated on import. This means that older CSV-import files will still be processed correctly, since the remove is skipped if not present.

Configuration: The value for the remove should be set to true.

USABILITY, EXTERNAL EXAMINER - The external examiner evaluation should not be blocking in the workflow - CUR-674

The integration of Curriculum and Evaluation shows the user in the process the page and button that leads directly to the corresponding evaluation in Evaluation. In case the status of the evaluation was in the initial phase (open for input) and not submitted the workflow page was blocking to already start fill-out the rest of the Curriculum information.

A configuration option is added to support both the behaviour of a blocking page + button and a non-blocking page + button.

Configuration: Use the Force complete checkbox to enable strict validation.

Use the force complete option to define strict validation

USABILITY - Adding a qualification to a Study, only the specification qualification should be shown - CUR-675

In case a qualification is added to a study, all defined specifications in the system were standard offered. This has been changed where the support for adding a qualification is implemented similar to adding for instance a module-group to a study.

The add-option will open a pop-up that supports creating a new qualification (if configured) or selecting an existing qualification. The existing qualification will standard be filtered to only show the qualifications defined on the study specification. The user can alter the filter to enable selection from a broader range.

USABILITY - As a user I want to see which studies are delivering what qualification - CUR-677

The study and qualification reports are extended with a new field 'Used by'. For the qualification report this field will show which study/studies are providing this qualification. For the study report this field will show which qualifications are provided by the study.

The used-by field can also be shown (configuration: shown on general) on the study-general and qualification-general page.

BUG, USABILITY - Specification report should filter on active year - CUR-675

The specification report showed all defined specifications and didn't consider the selected academic year. A change is applied to the specification report limiting the shown specialisations based on start and end date. Only the specialisations that are active within the selected academic year will be shown.

BUG, EXTERNAL EXAMINER - Creating a new evaluation from Curriculum should use team members - CUR-650

When creating an evaluation from Curriculum, all the relevant information, including roles and users are automatically transferred and used to create the evaluation. In case a role in Curriculum was using a Team, the expected behaviour is that the evaluation is made with the team members (users). This was not working correctly, but has been fixed in this version. In case a team is assigned in Curriculum and an evaluation is created from Curriculum, the team members will be correctly assigned.

BUG - Tagging persons with a login containing the @-character should be supported - CUR-478

Using the feedback panel it is possible to use the @-character to directly tag a user. This didn't function correctly if the user ID (login) of the tagged user contains an @-character. E.g. in case users login with their email address.

A change is made to correctly support tagging of users containing an @-character. For the users nothing have changed in tagging the person.

ADMINISTRATION, DATA - Propagate Description changes to future year(s) - CUR-396

The support to propagate data from the 'running year' into future years is extended with the support of propagating changes in descriptive texts. This will allow preparing the curriculum for the upcoming year, and in case changes are made to a descriptive text for the actual (running) year this will be propagated. The propagation will only be executed in case the text in the upcoming year(s) is not changed.

For each individual descriptive Element of Faculty, Organisation, Specification, Study, Module-group, Module the propagation behaviour can be set.


The option Propagate future years can be set on each individual textual element

INTEGRATION - Add information on the used reference list to custom-fields of type Reference - CUR-651

The API output provided the name of the custom-field, the assigned value(s) and the fact the field is of type REFERENCE.

"name": "difficultyId",

"type": "REFERENCE",

"values": ["EASY"]

To perform validation on the provided value in the integration layer, it could be handy to know what Reference type is actually used. In this release an additional attribute is added to the output that defines the used reference list. The Reference API endpoint can be used to get all supported values for this reference list.

"name": "difficultyId",

"type": "REFERENCE",

"subType": "Level",

"values": ["EASY"]

INTEGRATION - publicationDate should be generic defined in the metadata - CUR-581

The publicationDate was both defined on the actual object and in the metadata tag in the object. This has been changed, so the publicationDate is only published in the metadata ($.metadata.publicationDate).

INTEGRATION - Automation and use of more granular update options using CSV - CUR-308

Based on requests from you to be able to implement a more automated test approach we decided to not extend the API with separate endpoint for each sub-object, but to implement a new endpoint that supports the receive and processing of the CSV files. This also enables integration to Curriculum based on CSV for older systems that are not capable of creating JSON files, but can create CSV files.

  • Endpoint: csv/raw
  • URL attributes
    • type
    • separator
    • quote
  • Data: --data-raw

Example:

curl --location 'http://localhost:8080/api/csv/raw?type=VALUE&separator=;&quote="' \

--header 'Content-Type: text/plain' \

--data-raw 'year;object_type;object_id;uid;type;name;value

2024;module;ABC_001;;additional;location;Rotterdam

2024;module;ABC_001;;additional;team;Feyenoord

2024;module;ABC_001;;additional;stadium;De Kuip

INTEGRATION - Added custom fields to Object to Person relations should be available - CUR-691

In case custom fields are added to the Object's custom type Person that is considered as fields relevant for the relation. These fields are not available via the API.

For example custom fields can be defined on the relation between a Module and a Person. These relation related custom fields provide information that are specific for the relation between in this case the Person and the Module (context specific). In case the Person is used in another Module, the information can be different.

The API is adjusted to also exchange the custom defined fields on the relation between an Object and a Person. The information is added as a 'values' object in the API, similar to other object-relations that are already offering this relation information.

INTEGRATION - New endpoint: Teams- CUR-680

The usage of teams is heavily increasing and we noticed there is no proper API endpoint to manage teams. In this version we added a new endpoint to manage (find, get, create, update, delete) teams and their team members.

Security improvements

It has been a while no security issues were reported and fixed within a version, but this version there were no reports.

Detailed information can be found at the central database of vulnerabilities.

Customer unique training

This class is available to receive tailor made for your database set-up. Just fill out the form below and our product expert will get in touch with you to set-up your bespoke class.
I want a bespoke class