Release Notes for ReportServer 5.0.0

These release notes reflect the changes with respect to ReportServer 4.7.4.

Some Important Features and Noteworthy Improvements for ReportServer RS5.0.0

Java 21 or later required

IMPORTANT

With the release of ReportServer 5.0, Java 21 or later is required. Older Java versions are no longer compatible, as ReportServer has been updated to leverage the latest features and improvements.

Users must upgrade their Java runtime to Java 21 or newer before deploying ReportServer 5.0. Running it on an earlier Java version is not possible.

MySQL 5 No Longer Supported as RS Metadata DB

IMPORTANT

The previously used MySQL 5 driver has been replaced with a newer version, as MySQL 5 itself reached End-of-Life (EOL) in October 2023. Continuing to support MySQL 5 as an RS Metadata DB is no longer viable. As a result, MySQL 5 is no longer supported for use as an RS Metadata DB. Users who still wish to use MySQL 5 as a datasource can manually download and install the old driver. However, it is important to note that the old driver can only be used for datasources and is no longer supported for the RS Metadata DB itself.

Add Configuration Reload Button to Tools menu

A new option has been added to the Tools dropdown menu, allowing users to reload the configuration directly from the interface. This eliminates the need to manually enter the reload command in the console, streamlining the process for easier and more efficient configuration management.

Syntax highlighting in markdown code

The syntax of Markdown code is now highlighted, as illustrated in the screenshot below. Additionally, a "copy" button has been added to facilitate easy clipboard copying of the code.

For enabling code highlighting, use the standard Markdown syntax, e.g. for Groovy:

```groovy
	... your groovy code ...
```

Allow to configure strictHostKeyChecking

ReportServer now allows you to configure strictHostKeyChecking globally for all SFTP and SCP datasinks via the /security/misc.cf configuration file. Additionally, this setting can be overridden on a per-datasink basis by specifying it explicitly for individual datasinks within the configuration. This allows for flexibility in cases where certain connections require different handling.

The default setting is "true", which is recommended for production environments. This ensures a higher level of security by verifying the host key before establishing a connection, preventing man-in-the-middle attacks. Changing this setting to "false" should only be done if you fully understand the implications, as it can expose your system to security risks, such as unauthorized access or data interception.

The complete /security/misc.cf configuration file is shown below.

Add TeamSpaces to user information window with role details

The user information window now displays the TeamSpaces a user is part of, providing better visibility and easier access to TeamSpace memberships. For each TeamSpace, the user’s assigned role (e.g., Manager, User) is shown next to it.

JasperReports Version Display in System Console

The JasperReports version is now included in the "General Info" section of the System Console, providing quick access to this information directly within the System Console.

File and query edit popups - maximized by default with resize options

The file and query edit popups now open in a maximized state by default. Additionally, they include buttons to restore its original size and toggle between collapsed and maximized views (see next screenshots).

Allow to configure OAuth2 datasink redirect URI

The redirect URI for OAuth2-authenticated datasinks (e.g., Dropbox, OneDrive – SharePoint (O365), Google Drive, Box) can now be configured in the datasinks/datasink.cf configuration file. If no custom URI is specified, the system will use the default URI, just like in previous ReportServer versions.

Allow to copy General Info data easily to clipboard

The contents of the General Info system panel can now be easily copied to the clipboard for further analysis. Please refer to the screenshot below.

Added "job" Variable for Scheduled Script Datasinks

When a script datasink is scheduled, the new job variable provides access to the corresponding scheduler job instance, which is an instance of ReportExecuteJob.

The following example demonstrates how to retrieve the list of job recipients and include them in the email content:


package net.datenwerke.rs.samples.tools.email

import net.datenwerke.rs.core.service.mail.MailBuilderFactory
import net.datenwerke.rs.core.service.mail.MailService
import net.datenwerke.security.service.usermanager.UserManagerService
import net.datenwerke.rs.utils.misc.MimeUtils
import net.datenwerke.rs.core.service.mail.SimpleAttachment
import java.nio.file.Paths
import java.time.LocalDateTime

def mailBuilder = GLOBALS.getInstance(MailBuilderFactory)
def mailService = GLOBALS.getInstance(MailService)
def userService = GLOBALS.getInstance(UserManagerService)
def mimeUtils = GLOBALS.getInstance(MimeUtils)

// the user ids. They have to exist and the ids are passed as long (L)
def to = [123L]
def subject = 'Script datasink'
def content = "ReportServer script datasink ${LocalDateTime.now()} job recipients ${job.recipients}"
// name of the zip
def attachmentFilename = 'data.zip'

def attachments = [
   new SimpleAttachment(data, // you can also use report
   mimeUtils.getMimeTypeByExtension(datasinkConfiguration.filename),
   datasinkConfiguration.filename),
   // add the script
   new SimpleAttachment(script.data, script.contentType, script.name) 
]

def mail = mailBuilder.create(
      subject,
      content,
      to.collect{userId -> userService.getNodeById(userId)})
      .withAttachments(attachments)
      .withZippedAttachments(attachmentFilename)
      .build()

mailService.sendMail mail

Added Clear Filters Button in Scheduled Reports Overview

A new button has been added to the Scheduled Reports interface, allowing users to clear all applied filters with a single click.

New Features, Improvements and Bug Fixes for ReportServer RS5.0.0

RS-6928 New Feature Configuration Reload Button in Tools Menu
RS-8402 New Feature Code highlighting im rendered markdown
RS-8486 New Feature Display the TeamSpaces a user belongs to within the user information window
RS-8571 New Feature Allow to copy code in Markdown per button
RS-8593 New Feature Added variable "job" containing the corresponding scheduler job instance if the script datasink has been scheduled
RS-8610 New Feature Print JasperReports version in General Info System Console
RS-8611 New Feature Allow to display velocity template results per URL
RS-8630 New Feature Allow to update license information without logging into ReportServer
RS-8635 New Feature Allow to configure SSH StrictHostKeyChecking globally
RS-8637 New Feature Allow to configure SSH StrictHostKeyChecking per datasink
RS-8848 New Feature Allow to configure OAuth2 datasink redirect URI
RS-8850 New Feature Allow to copy General Info data easily to clipboard
RS-8925 New Feature LDAP: Allow configuring deleting groups
RS-7529 Improvement reportserver$ is not visible in terminal
RS-7665 Improvement Improve german translation for "Executor"
RS-8495 Improvement Allow implicit boolean values in FileServerAccessServlet
RS-8682 Improvement Upgrade GWT to 2.9.0
RS-8685 Improvement Upgrade gwt-servlet to 2.9.0
RS-8688 Improvement Remove servlet-api-2.4.jar dependency
RS-8690 Improvement Upgrade requestfactory-server to 2.9.0
RS-8691 Improvement Remove xml-apis-1.4.01.jar dependency
RS-8749 Improvement Add step-by-step OneDrive / Sharepoint O365 guide
RS-8809 Improvement File edit popup - maximized by default with resize options
RS-8847 Improvement Query popup - maximized by default with resize options
RS-8849 Improvement Improve the alignment of member configuration in the group form
RS-8854 Improvement License: Improved error message for mismatched server IDs and for other root causes
RS-8864 Improvement Upgrade mysql-connector-j to 9.2.0
RS-8868 Improvement Upgrade postgresql to 42.7.5
RS-8869 Improvement Upgrade checker-qual to 3.48.3
RS-8872 Improvement Improve cache behavior when upgrading ReportServer
RS-8873 Improvement Upgrade mariadb-java-client to 3.5.2
RS-8874 Improvement Upgrade groovy to 4.0.26
RS-8879 Improvement Upgrade groovy-astbuilder to 4.0.26
RS-8880 Improvement Upgrade groovy-cli-picocli to 4.0.26
RS-8881 Improvement Upgrade groovy-datetime to 4.0.26
RS-8882 Improvement Upgrade groovy-dateutil to 4.0.26
RS-8883 Improvement Upgrade groovy-json to 4.0.26
RS-8884 Improvement Upgrade groovy-jsr223 to 4.0.26
RS-8885 Improvement Upgrade groovy-macro to 4.0.26
RS-8886 Improvement Upgrade groovy-nio to 4.0.26
RS-8887 Improvement Upgrade groovy-servlet to 4.0.26
RS-8888 Improvement Upgrade groovy-sql to 4.0.26
RS-8889 Improvement Upgrade groovy-templates to 4.0.26
RS-8890 Improvement Upgrade groovy-xml to 4.0.26
RS-8891 Improvement Upgrade picocli to 4.7.6
RS-8916 Improvement Better default column widths in group form
RS-8935 Improvement Remove encoding from file attachment name in emails
RS-8943 Improvement Errors in Markdown should not stop rendering, but error should be shown in rendered page
RS-8965 Improvement Improved window focus when adding parameters
RS-8969 Improvement Empty Markdown files should render an empty file
RS-9046 Improvement Scheduler view: do not show "New Scheduler Job" button if user does not have Scheduler Exec permission
RS-9052 Improvement Add simple client license validation before sending to server to validate
RS-9054 Improvement Improve some Saiku translations
RS-9064 Improvement Add "clear filter" button to scheduler view
RS-8507 Bug DEMO data can not be installed
RS-8913 Bug Fix problem with license initialization in some scenarios
RS-8922 Bug Deleted LDAP groups are not displaying their correct name in ldapinfo terminal command result
RS-8987 Bug Parameter key is not shown in parameter drop down menu
RS-9023 Bug Dynamic list displays incorrect counter when exactly one record is present
RS-9025 Bug restrictTo is not working if users element is not present in urlView.cf configuration file
RS-9026 Bug Super users are not seeing elements in urlView.cf configuration file if restrictedTo element found