These release notes reflect the changes with respect to ReportServer 3.3.0.
Datasinks are the counterpart of datasources in ReportServer. Reports can be sent to any datasink defined, e.g. to a FTP or SFTP datasink. Reports may be sent directly to a datasink (via the SendTo button) or scheduled to be sent to a specific datasink. Multiple datasinks of the same type are allowed, analogously as datasources. Further, as with most other objects in ReportServer, datasinks are maintained in a hierarchical structure. The datasink management module can be found in the Administration module under Datasinks.
Note that that FTP datasinks are supported as of ReportServer 3.4.0. For scheduled reports using the legacy FTP functionality, a dummy FTP datasink is created on ReportServer start (found in the Administration area, in the datasink root folder). This dummy FTP datasink must be adapted in order for these reports to further work. You can see the "dummy ftp datasink" in the screenshot above.
Currently, SFTP datasink authentication supported is by username/password. Note that for SFTP to work, you have to add your SFTP host to your .ssh/known_hosts file (https://en.wikibooks. org/wiki/OpenSSH/Client_Configuration_Files#~/.ssh/known_hosts) in order to verify the identity of the remote host, thus protecting against impersonation or man-in-the-middle attacks. Its location be configured in the /fileserver/etc/security/misc.cf file as described in the Configuration Guide. For manually adding a public key to the .ssh/known_hosts file, check here: https://en.wikibooks.org/wiki/OpenSSH/Client_Configuration_Files#Manually_ Adding_Public_Keys_to_~/.ssh/known_hosts.
The complete /fileserver/etc/security/misc.cf file is the following (check the knownHosts option):
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<juel>
<expression>
<blacklist>getClass</blacklist>
</expression>
</juel>
<errorMessages>
<hideViolatedSecurityExceptionDetails>false</hideViolatedSecurityExceptionDetails>
</errorMessages>
<knownHosts>/path/to/.ssh/known_hosts</knownHosts>
</configuration>
Datasinks can be enabled/disabled in the /fileserver/etc/datasinks/datasinks.cf file.
Datasinks are supported as of ReportServer 3.4.0. The legacy FTP configuration in /fileserver/etc/exportfilemd/storage.cf is ignored as of version 3.4.0.
The complete /fileserver/etc/datasinks/datasinks.cf is the following:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<sftp disabled="false" supportsScheduling="true" />
<ftp disabled="false" supportsScheduling="true" />
</configuration>
The texts used during scheduling can be configured in the /fileserver/etc/scheduler/scheduler.cf file analogously as the other texts. The complete file is the following (note the fileactionSftp and fileactionFtp sections):
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<scheduler>
<mailaction html="false">
<subject>ReportServer: ${subject}</subject>
<text>${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['mailactionMsgText']}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelJobName']} ${job.getName()}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelMessage']} ${message}
</text>
<attachment>
<name>rep-${report.getName()}-${RS_CURRENT_DATE}</name>
</attachment>
</mailaction>
<fileaction disabled="false" html="false">
<subject>ReportServer: ${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['fileactionMsgSubject']}</subject>
<text>${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['fileactionMsgText']}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelJobName']} ${job.getName()}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelFilename']} ${filename}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelDescription']} ${description}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelTeamspace']} ${teamspace.getName()}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelFolder']} ${folder.getName()}
</text>
</fileaction>
<fileactionSftp disabled="false" html="false">
<subject>ReportServer: ${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['fileactionSftpMsgSubject']}</subject>
<text>${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['fileactionSftpMsgText']}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelJobName']} ${job.getName()}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelFilename']} ${filename}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelFolder']} ${folder}
</text>
</fileactionSftp>
<fileactionFtp disabled="false" html="false">
<subject>ReportServer: ${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['fileactionFtpMsgSubject']}</subject>
<text>${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['fileactionFtpMsgText']}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelJobName']} ${job.getName()}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelFilename']} ${filename}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelFolder']} ${folder}
</text>
</fileactionFtp>
<notification disabled="false" html="false">
<scheduled>
<subject>ReportServer: ${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['notificationMsgScheduledSubject']}</subject>
<text>${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['notificationMsgScheduledText']}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelJobName']} ${job.getName()}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelUser']} ${scheduleUser}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['notificationMsgScheduledNextDates']} ${nextDates}
</text>
</scheduled>
<unscheduled>
<subject>ReportServer: ${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['notificationMsgUnscheduledSubject']}</subject>
<text>${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['notificationMsgUnscheduledText']}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelJobName']} ${jobName}</text>
</unscheduled>
<failed>
<subject>ReportServer: ${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['notificationMsgFailedSubject']}</subject>
<text>${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['notificationMsgFailedText']}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelJobName']} ${job.getName()}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelErrorMessage']} ${errMsg}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelRecipient']} ${recipients}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelErrorDetails']} ${stacktrace}
</text>
</failed>
</notification>
<properties>
<disabled>false</disabled>
</properties>
</scheduler>
</configuration>
Previously, when a user did not have sufficient permissions for accessing some object in ReportServer, it was difficult to determine which permissions exactly were missing, since no details were given in the error message.
In ReportServer 3.4.0 this changed. The following screenshot depicts two examples. On the left side, you see the error messages of previous ReportServer versions, which did not contain any details. On the right side you can see which permissions exactly are missing (Execute rights) for two different objects: above, for the ExportSecurityTarget (i.e. the user does not have Execute-"Ex/Import" generic right). Below, for the dynamic list with id 108158. For the administrator it will be easier to give the user appropriate permissions.
If this level of detail is not desired, it can be configured in the /etc/security/misc.cf configuration file. Here, you can select the level of detail of error messages shown to the user. Currently, the following is supported:
Below you can see the complete default /etc/security/misc.cf file including error message level of detail settings.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<juel>
<expression>
<blacklist>getClass</blacklist>
</expression>
</juel>
<errorMessages>
<hideViolatedSecurityExceptionDetails>false</hideViolatedSecurityExceptionDetails>
</errorMessages>
</configuration>
A new administration area "System Console" was added. For a user to see this, the user needs "System Console" read-access generic permission as shown in the following screenshot. Note that users having this permission can access the complete "System Console" area, i.e. all system console subsections.
We added the subsection "Live JVM Memory", which allows you to analyze live JVM memory usage. Example screenshots are shown below. Per default, it is refreshed every second. This can be configured with the "Refresh interval" field.
Analogous to the current FTP functionality, reports can now be sent to a SFTP server. Scheduling is supported here as well.
SFTP server configuration is done in the /fileserver/etc/datasinks/datasinks.cf configuration file:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<sftp disabled="false" supportsScheduling="true" />
<ftp disabled="false" supportsScheduling="true" />
</configuration>
Note that for SFTP to work, you have to set the location of your .ssh/known_hosts file (https://en.wikibooks.org/wiki/OpenSSH/Client_Configuration_Files#~/.ssh/known_hosts) in order to verify the identity of the remote host, thus protecting against impersonation or man-in-the-middle attacks. This may be configured in the /fileserver/etc/security/misc.cf file as follows.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<knownHosts>/path/to/.ssh/known_hosts</knownHosts>
</configuration>
For manually adding a public key to the .ssh/known_hosts file, check here: https://en.wikibooks.org/wiki/OpenSSH/Client_Configuration_Files#Manually_Adding_Public_Keys_to_~/.ssh/known_hosts.
SFTP Email text configuration is done in the /fileserver/etc/scheduler/scheduler.cf file:
<fileactionSftp disabled="false" html="false">
<subject>Email subject</subject>
<text>
Email text
</text>
</fileactionSftp>
Following you can see the complete default /fileserver/etc/scheduler/scheduler.cf file:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<scheduler>
<mailaction html="false">
<subject>ReportServer: ${subject}</subject>
<text>${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['mailactionMsgText']}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelReport']} ${report.getName()}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelMessage']} ${message}
</text>
<attachment>
<name>rep-${report.getName()}-${RS_CURRENT_DATE}</name>
</attachment>
</mailaction>
<fileaction disabled="false" html="false">
<subject>ReportServer: ${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['fileactionMsgSubject']}</subject>
<text>${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['fileactionMsgText']}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelReport']} ${report.getName()}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelFilename']} ${filename}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelDescription']} ${description}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelTeamspace']} ${teamspace.getName()}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelFolder']} ${folder.getName()}
</text>
</fileaction>
<fileactionSftp disabled="false" html="false">
<subject>ReportServer: ${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['fileactionSftpMsgSubject']}</subject>
<text>${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['fileactionSftpMsgText']}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelReport']} ${report.getName()}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelFilename']} ${filename}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelFolder']} ${folder}
</text>
</fileactionSftp>
<fileactionFtp disabled="false" html="false">
<subject>ReportServer: ${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['fileactionFtpMsgSubject']}</subject>
<text>${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['fileactionFtpMsgText']}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelReport']} ${report.getName()}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelFilename']} ${filename}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelFolder']} ${folder}
</text>
</fileactionFtp>
<notification disabled="false" html="false">
<scheduled>
<subject>ReportServer: ${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['notificationMsgScheduledSubject']}</subject>
<text>${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['notificationMsgScheduledText']}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelReport']} ${report.getName()}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelUser']} ${scheduleUser}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['notificationMsgScheduledNextDates']} ${nextDates}
</text>
</scheduled>
<unscheduled>
<subject>ReportServer: ${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['notificationMsgUnscheduledSubject']}</subject>
<text>${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['notificationMsgUnscheduledText']}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelReport']} ${reportName}</text>
</unscheduled>
<failed>
<subject>ReportServer: ${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['notificationMsgFailedSubject']}</subject>
<text>${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['notificationMsgFailedText']}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelReport']} ${report.getName()}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelErrorMessage']} ${errMsg}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelRecipient']} ${recipients}
${msgs['net.datenwerke.rs.scheduler.client.scheduler.locale.SchedulerMessages']['labelErrorDetails']} ${stacktrace}
</text>
</failed>
</notification>
<properties>
<disabled>false</disabled>
</properties>
</scheduler>
</configuration>
Reports and variants may be now directly tested. This allows to check if the report's query/columns/configuration is correct without having to explicitly execute the corresponding report. This may be done via terminal or GUI. Example screenshots below.
JXLS templates are a powerful feature in ReportServer. Nevertheless, creating JXLS templates is sometimes cumbersome. ReportServer now supports exporting dynamic lists as JXLS templates. These can then be easily adapted/configurated as needed with Excel and may be uploaded to ReportServer either as a JXLS report or a JXLS template for the dynamic list. Example screenshots below.
Note that you can configure the default column widths in the /fileserver/exportfilemd/jxlsexport.cf configuration file.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<jxls>
<numberColumnWidth>8</numberColumnWidth>
<textColumnWidth>8</textColumnWidth>
<dateColumnWidth>8</dateColumnWidth>
<currencyColumnWidth>8</currencyColumnWidth>
</jxls>
</configuration>
Scheduling jobs contain now a name and a description, analogously to other elements in ReportServer. For existing jobs, the report's name and description are being copied into these new fields.
You can now change the report of an existing scheduling job. This allows you to keep current job configuration while scheduling a different report. A screenshot is shown below.
You can now turn off adding/duplicating/removing records per grid report. Default is true (allowed).
This can be done via the following settings:
def adapter = definition.getAdapter()
adapter.setCanAddRecords(false)
adapter.setCanDuplicateRecords(false)
adapter.setCanRemoveRecords(false)
While scheduling new jobs, you can select the option "Compress report" if you want the report to be compressed in the email sent. Normally, this option is not selected by default. Now you can set this setting to be selected by default (in /fileserver/etc/main/main.cf):
<scheduler>
<email>
<defaultcompression>true</defaultcompression>
</email>
</scheduler>
If you set this to true, "Report compression" will be automatically selected when scheduling new jobs. Defaults to false.
Following you can see the complete default /fileserver/etc/main/main.cf file.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<install>
<basedata>true</basedata>
</install>
<default>
<charset>UTF-8</charset>
</default>
<tempdir>tempdir</tempdir>
<tempfile>
<lifetime>3600</lifetime>
</tempfile>
<maintenance>
<tasks>
<interval>600000</interval>
</tasks>
</maintenance>
<search>
<timeout>5000</timeout>
</search>
<pagetitle>ReportServer</pagetitle>
<scheduler>
<email>
<defaultcompression>false</defaultcompression>
</email>
</scheduler>
</configuration>
Reports may now be opened/executed directly directly in the dashboard. You can see this in the following screenshots. When clicking on the "execute" button, the report opens in the report execution view.
You can now refresh the report preview directly, refer to the screenshot below. This of course works with the rest of report types as well.
For dynamic lists, you will see a new context menu entry as well:
You can now list the catalina log files in your catalina.home directory by the terminal command "listlogfiles". If you need to explicitly set the log file path, you can use the logdir setting in the /fileserver/etc/main/main.cf configuration file. You can specify the sorting column(s) by a semicolon-separated list of column numbers in the -s option. Allowed are values 1, 2, and 3 for the first (filename), second (last modified) and third (size) columns, respectively. If you need to sort a given column in descending order, you can enter a - prefix in front of the column’s index. Default sorting is by filename (ascending order). Example output is shown below.
Further, you can use Java regular expressions for filtering files.
The example below lists all log files starting with “reportserver” and sorting them by size in descending order.
listlogfiles -s -3 -f "reportserver.*"
The example below lists all log files starting with “reportserver” and sorting them by size in descending order, followed by filename in ascending order.
listlogfiles -s -3;1 -f "reportserver.*"
Further, you can use the -e option if you want to send the (filtered) log files via e-mail. For example, the following allows you to ZIP and send all log files starting with “reportserver” to the current user via e-mail.
listlogfiles -s -3;1 -f "reportserver.*" -e
By using the viewlogfile command you can see the last 500 lines of a given tomcat file as you can see in the following screenshot.
If needed, you can explicitely set the log directory in /fileserver/etc/main/main.cf (logdir). If not set, it uses the catalina.home path. The default /fileserver/etc/main/main.cf file is the following:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<install>
<basedata>true</basedata>
</install>
<default>
<charset>UTF-8</charset>
</default>
<tempdir>tempdir</tempdir>
<!-- Explicitly sets the log directory path. Default uses catalina.home path.
<logdir>logdir</logdir>
-->
<tempfile>
<lifetime>3600</lifetime>
</tempfile>
<maintenance>
<tasks>
<interval>600000</interval>
</tasks>
</maintenance>
<search>
<timeout>5000</timeout>
</search>
<pagetitle>ReportServer</pagetitle>
<scheduler>
<email>
<defaultcompression>false</defaultcompression>
</email>
</scheduler>
</configuration>
You can configure the texts in the email with the /etc/security/notifications.cf file (logfiles). The default file is the following:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<createdpassword disabled="false">
<email>
<subject>${msgs['net.datenwerke.rs.passwordpolicy.service.locale.PasswordPolicyMessages']['createdPasswordSubject']}</subject>
<text>${msgs['net.datenwerke.rs.passwordpolicy.service.locale.PasswordPolicyMessages']['createdPasswordSalutation']} ${user.getFirstname()} ${user.getLastname()},
${msgs['net.datenwerke.rs.passwordpolicy.service.locale.PasswordPolicyMessages']['createdPasswordIntro']}
${user.getUsername()}
${msgs['net.datenwerke.rs.passwordpolicy.service.locale.PasswordPolicyMessages']['createdPasswordEnd']}
</text>
</email>
</createdpassword>
<changedpassword disabled="false">
<email>
<subject>${msgs['net.datenwerke.rs.passwordpolicy.service.locale.PasswordPolicyMessages']['changedPasswordSubject']}</subject>
<text>${msgs['net.datenwerke.rs.passwordpolicy.service.locale.PasswordPolicyMessages']['changedPasswordSalutation']} ${user.getFirstname()} ${user.getLastname()},
${msgs['net.datenwerke.rs.passwordpolicy.service.locale.PasswordPolicyMessages']['changedPasswordIntro']}
${user.getUsername()}
${msgs['net.datenwerke.rs.passwordpolicy.service.locale.PasswordPolicyMessages']['changedPasswordEnd']}
</text>
</email>
</changedpassword>
<lostpassword indicateWrongUsername="false">
<email>
<subject>${msgs['net.datenwerke.rs.passwordpolicy.service.locale.PasswordPolicyMessages']['lostPasswordSubject']}</subject>
<text>${msgs['net.datenwerke.rs.passwordpolicy.service.locale.PasswordPolicyMessages']['lostPasswordSalutation']} ${user.getFirstname()} ${user.getLastname()},
${msgs['net.datenwerke.rs.passwordpolicy.service.locale.PasswordPolicyMessages']['lostPasswordIntro']}
${msgs['net.datenwerke.rs.passwordpolicy.service.locale.PasswordPolicyMessages']['lostPasswordUsername']}: ${user.getUsername()}
${msgs['net.datenwerke.rs.passwordpolicy.service.locale.PasswordPolicyMessages']['lostPasswordPassword']}: ${password}
${msgs['net.datenwerke.rs.passwordpolicy.service.locale.PasswordPolicyMessages']['lostPasswordEnd']}
</text>
</email>
</lostpassword>
<logfiles>
<email>
<subject>${msgs['net.datenwerke.rs.adminutils.service.locale.AdminUtilsMessages']['emailLogFilesSubject']}</subject>
<text>${msgs['net.datenwerke.rs.adminutils.service.locale.AdminUtilsMessages']['emailLogFilesSalutation']} ${user.getFirstname()} ${user.getLastname()},
${msgs['net.datenwerke.rs.adminutils.service.locale.AdminUtilsMessages']['emailLogFilesIntro']}
${filter}
${msgs['net.datenwerke.rs.adminutils.service.locale.AdminUtilsMessages']['emailLogFilesEnd']}
</text>
</email>
</logfiles>
</configuration>
You can now modify the web access of a fileserver directory or directories by the new dirmod command. E.g. the following command adds web access to all filesystem directories containing “report” in their name:
dirmod webaccess "hql:from FileServerFolder where name like '%report%'" true
You can specify the title of the data and configuration sheets in the exported Excel file by the "datasheet" and "configsheet" parameters in the /fileserver/etc/exportfilemd/excelexport.cf configuration file. The default file is the following:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<xls>
<format>xlsx</format>
<stream>true</stream>
<datasheet>Dynamic list</datasheet>
<configsheet>Configuration</configsheet>
</xls>
</configuration>
Certain operations, e.g. redirect, are not allowed for external URLs. If you need to allow a URL you can add it to the whitelist in the /fileserver/etc/security/whitelist.cf configuration file.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<urls>
<!-- <url>http://www.host.com</url> -->
</urls>
</configuration>
RS-3619 | New Feature | Show inherited report properties in variant view |
RS-4004 | New Feature | Support sending reports via SFTP |
RS-4331 | New Feature | Allow to configure .ssh/known_hosts file |
RS-4387 | New Feature | Allow to modify the web access property of a given fileserver directory via terminal |
RS-4390 | New Feature | Allow to hide ViolatedSecurityExceptions message details |
RS-4391 | New Feature | Provide details for ViolatedSecurityExceptions (list missing permissions) |
RS-4394 | New Feature | Allow to execute open report execution view directly from report dadget |
RS-4395 | New Feature | Allow to configure (per report dadget) if opening report execution view should be allowed for the given report dadget |
RS-4398 | New Feature | Allow to specify report scheduler job's title and description |
RS-4399 | New Feature | Add "Refresh preview" button to report view |
RS-4404 | New Feature | Add "Refresh" entry to dynamic list context menu |
RS-4417 | New Feature | Allow to configure "show execute" button in library dadgets of report type |
RS-4418 | New Feature | Allow to use object resolver queries in dirmod command |
RS-4420 | New Feature | Report deployment analyis should be able to ignore case-sensitivity in field names by command option |
RS-4425 | New Feature | Allow to disable adding records in grid report with setCanAddRecords() |
RS-4429 | New Feature | Allow to filter scheduler list by "Job name" in scheduler admin view |
RS-4432 | New Feature | Allow to test reports and variants per terminal with "variantTest" command |
RS-4433 | New Feature | The "variantTest" command should work for reports using database bundles |
RS-4435 | New Feature | The user should be able to specify datasources to test in "variantTest" command if report uses datasource bundle |
RS-4436 | New Feature | Allow to test report in scheduler job configuration dialog |
RS-4438 | New Feature | Allow to select compression in new scheduler jobs by default |
RS-4443 | New Feature | Allow JXLS1 template export |
RS-4445 | New Feature | Allow to list tomcat log files per "listlogfiles" terminal command |
RS-4448 | New Feature | Allow to sort log files in "listlogfiles" terminal command by filename, last modified or size |
RS-4449 | New Feature | Allow to filter log files with regular expressions based on their filename |
RS-4450 | New Feature | Allow to send zipped log files per e-mail with the "listlogfiles" terminal command |
RS-4453 | New Feature | Add example script for fetching all fields of all dynamic lists including their calculated columns: fieldsindynamiclists.groovy |
RS-4457 | New Feature | Allow to disable session renewal |
RS-4461 | New Feature | Allow to configure column width for text and numeric columns in JXLS1 template export |
RS-4462 | New Feature | Allow to test reports in the teamspaces |
RS-4464 | New Feature | The "variantTest" command should use object resolver queries for datasource and report selection |
RS-4466 | New Feature | Allow to export report in context menu of scheduler job configuration dialog |
RS-4468 | New Feature | Allow to reverse sorting order in "listlogfiles" terminal command |
RS-4470 | New Feature | Allow to test reports in variant list |
RS-4474 | New Feature | Allow to show the last n lines of a given log file with the "viewlogfile" terminal command |
RS-4476 | New Feature | Allow to disable duplicating records in grid report with setCanDuplicateRecords() |
RS-4477 | New Feature | Allow to disable removing records in grid report with setCanRemoveRecords() |
RS-4480 | New Feature | Allow to change report in scheduler job |
RS-4483 | New Feature | Allow to refresh log file manually opened with "viewlogfile" terminal command |
RS-4484 | New Feature | Allow to send log file displayed with viewlogfile terminal command per email |
RS-4490 | New Feature | Allow to export JXLS1-report template |
RS-4491 | New Feature | Allow to export JXLS1 template for variants of dynamic list |
RS-4492 | New Feature | Allow to configure JXLS1 template export parameters per report |
RS-4494 | New Feature | Allow to sort tomcat logs on multiple columns with "listlogfiles" terminal command |
RS-4496 | New Feature | Allow to explicitly configure log files directory |
RS-4500 | New Feature | Allow to configure texts in email sent with listlogfiles terminal command |
RS-4510 | New Feature | Allow to configure column width for date columns in JXLS1 template export |
RS-4511 | New Feature | Refresh exporter forms default values when changing job name in job configuration window |
RS-4518 | New Feature | Allow to configure default JXLS template export values in configuration file |
RS-4519 | New Feature | Allow to export column alias in JXLS1 template export |
RS-4520 | New Feature | Allow to configure column width for currency columns in JXLS1 template export |
RS-4529 | New Feature | Allow to fluidly create emails with MailBuilder using Builder pattern |
RS-4531 | New Feature | Allow to include filter in email sent by listlogfiles terminal command (set by -f) |
RS-4532 | New Feature | Allow to export JXLS2 template for variants of dynamic list |
RS-4533 | New Feature | Allow to export JXLS2-report template |
RS-4534 | New Feature | Allow to export column alias in JXLS2 template export |
RS-4535 | New Feature | Allow to configure column width for text, numeric, date and currency columns in JXLS2 template export |
RS-4547 | New Feature | Add "System Console" administration area |
RS-4548 | New Feature | Allow to analyze live JVM memory via chart in system console |
RS-4551 | New Feature | Add System Console generic permission |
RS-4555 | New Feature | Add "General Info" system console |
RS-4556 | New Feature | Support aggregations in JXLS2 template export |
RS-4559 | New Feature | Allow line breaks in query of JXLS2 reports |
RS-4560 | New Feature | Allow comments in query of JXLS2 reports |
RS-4564 | New Feature | Allow to start/stop live memory console animation |
RS-4566 | New Feature | Allow to configure number of units in live memory console |
RS-4567 | New Feature | Allow to configure refresh interval in live memory console |
RS-4568 | New Feature | Allow to turn off max memory in live memory console |
RS-4571 | New Feature | Allow to call JVM Garbage Collector in live memory console |
RS-4572 | New Feature | Allow to configure title of the data and configuration sheets in Excel export file |
RS-4586 | New Feature | Allow to configure allowed redir URLs by whitelist configuration file |
RS-4594 | New Feature | Support scheduling reports via SFTP |
RS-4595 | New Feature | Support disabling sending reports via SFTP |
RS-4596 | New Feature | Support disabling scheduling reports via SFTP |
RS-4597 | New Feature | Support JXLS template export to legacy Excel xls files |
RS-4600 | New Feature | Add "Datasinks" administration area |
RS-4601 | New Feature | Add "DatasinkDefinition" entity among with other necessary entities |
RS-4603 | New Feature | Add FTP datasink |
RS-4605 | New Feature | Allow to clear FTP datasink password |
RS-4606 | New Feature | Replace old FTP functionality with FTP datasinks |
RS-4610 | New Feature | Allow to override default FTP folder |
RS-4612 | New Feature | Allow to test ftp datasinks |
RS-4616 | New Feature | Add Datasinks Administration generic permission |
RS-4619 | New Feature | Add system console to Enterprise Edition |
RS-4621 | New Feature | Add datasink security object |
RS-4623 | New Feature | Add SFTP datasink |
RS-4627 | New Feature | Add JXLS Template export to Enterprise Edition |
RS-4639 | New Feature | Support aggregations in JXLS1 template export |
RS-4701 | New Feature | MariaDB support for pivot/Saiku reports |
RS-4721 | New Feature | Allow to test sftp datasinks |
RS-3326 | Improvement | Move external sources out of src directory |
RS-3767 | Improvement | Remove old jxls 2.8.0 patches |
RS-3935 | Improvement | Add options for Java as of version 9 to documentation |
RS-4191 | Improvement | Add missing substitutions in all available scheduler job emails |
RS-4334 | Improvement | Use vfs2 StaticUserAuthenticator in FTP/SFTP for hiding credentials from URL |
RS-4392 | Improvement | Refactor FTP to use commons-vfs2 |
RS-4409 | Improvement | Dadget library should allow to configure the "show execute" button of report dadgets |
RS-4419 | Improvement | Report deployment analysis should not ignore case in field names by default |
RS-4421 | Improvement | Report deployment analysis should include the report ids in its title |
RS-4423 | Improvement | Report deployment analysis should include ignore case-sensitivity option |
RS-4428 | Improvement | Replace scheduler list "Report" and "Report description" fields by "Job name" and "Job description" |
RS-4430 | Improvement | Job name and description should be shown in job properties (details) |
RS-4437 | Improvement | Remove unnecessary jersey-multipart-1.19.jar library |
RS-4439 | Improvement | Upgrade to activation-1.1.1.jar |
RS-4440 | Improvement | Remove unnecessary calls to jersey-multipart-1.19.jar |
RS-4441 | Improvement | Remove unnecessary mimepull-1.9.3.jar library |
RS-4452 | Improvement | Show scheduled report in scheduler job configuration dialog |
RS-4458 | Improvement | Separate scheduler metadata and report windows in scheduler job configuration dialog |
RS-4459 | Improvement | Allow to open report in scheduler job configuration dialog |
RS-4465 | Improvement | Check permissions on variantTest and show query only if "administration" and "report management" generic permissions are set (read permission) |
RS-4472 | Improvement | Allow to minimize scheduler job configuration dialog |
RS-4473 | Improvement | Allow to export variant in context menu of variant list |
RS-4475 | Improvement | Allow to autocomplete log files in "viewlogfile" terminal command |
RS-4479 | Improvement | Disable "clear filters" from context menu when filtering is disabled in grid reports |
RS-4481 | Improvement | Use XML file for translations |
RS-4482 | Improvement | Allow to create translation .properties files from XML |
RS-4495 | Improvement | Integrate lambda rethrowing functions / consumers / suppliers |
RS-4497 | Improvement | Allow to configure export type in report tab in job configuration dialog |
RS-4499 | Improvement | Log files methods should restrict access to log directory defined and should not allow access to subdirectories |
RS-4501 | Improvement | Set default job name and description if set in corresponding report |
RS-4504 | Improvement | Allow report server-side search in report catalog dialog for avoiding to load complete catalog on dialog init |
RS-4508 | Improvement | Default values in exporter forms should base on job name in job configuration window |
RS-4509 | Improvement | Allow to include scheduler job id, name and description in scheduler emails |
RS-4512 | Improvement | Limit number of radio buttons per row in scheduler job configuration window |
RS-4523 | Improvement | Adapt reportsinteamspace.groovy example to show compiled reports in TeamSpaces |
RS-4526 | Improvement | Allow file viewer used in viewlogfile terminal command to automatically scroll to end of file |
RS-4528 | Improvement | Move messages in notifications.cf configuration file to appropriate location |
RS-4542 | Improvement | Allow to add comments to excel sheet in ExcelUtilsService |
RS-4552 | Improvement | Move system environment information into general info system console |
RS-4562 | Improvement | Add gxt-chart-4.0.2.jar dependency |
RS-4577 | Improvement | Upgrade to commons-vfs2-2.7.0 |
RS-4578 | Improvement | Upgrade to commons-compress-1.20 |
RS-4579 | Improvement | Upgrade to commons-collections4-4.4 |
RS-4580 | Improvement | Upgrade to commons-lang3-3.11 |
RS-4581 | Improvement | Upgrade to commons-net-3.7.2 |
RS-4584 | Improvement | Perform redir check in server-side |
RS-4588 | Improvement | Allow to check on blank values for form fields other than strings |
RS-4589 | Improvement | Add icon to "apply" button |
RS-4591 | Improvement | Add jsch-0.1.55.jar dependency |
RS-4611 | Improvement | Install FTP and SFTP datasink instance descriptors |
RS-4614 | Improvement | Install dummy FTP datasink at startup if legacy FTP scheduler actions are found |
RS-4622 | Improvement | Install Datasink root automatically |
RS-4624 | Improvement | JXLS template fields should always be generated in same case (lower case or upper case) as RS returns in JXLS export |
RS-4626 | Improvement | Optimize maintainance queries |
RS-4646 | Improvement | Upgrade to commons-codec-1.15 |
RS-4647 | Improvement | Add SparseBitSet-1.2.jar dependency |
RS-4648 | Improvement | Upgrade to poi-4.1.2.jar |
RS-4649 | Improvement | Upgrade to poi-ooxml-4.1.2.jar |
RS-4650 | Improvement | Upgrade to poi-scratchpad-4.1.2jar |
RS-4651 | Improvement | Upgrade to jxls-2.9.0.jar |
RS-4652 | Improvement | Upgrade to jxls-poi-2.9.0.jar |
RS-4653 | Improvement | Remove old poi patches |
RS-4654 | Improvement | Remove unnecessary stax-1.2.0.jar dependency |
RS-4655 | Improvement | Remove unnecessary stax-api-1.0-2-sources.jar library |
RS-4656 | Improvement | Remove unnecessary stax-api-1.0.1.jar library |
RS-4657 | Improvement | Remove unnecessary xml-apis-1.4.01.jar library |
RS-4659 | Improvement | Remove unnecessary bonecp-0.8.0.RELEASE.jar library |
RS-4661 | Improvement | Remove calls to deprecated bonecp library |
RS-4662 | Improvement | Remove unnecessary mx4j-jmx-1.1.jar library |
RS-4665 | Improvement | Remove jmx calls |
RS-4667 | Improvement | Remove unnecessary guice-jmx-3.0.jar library |
RS-4668 | Improvement | Upgrade to gin-3.0.0 |
RS-4669 | Improvement | Upgrade to guice-4.2.3 |
RS-4670 | Improvement | Upgrade to guava-30.1-jre |
RS-4671 | Improvement | Upgrade to guice-assistedinject-4.2.3 |
RS-4672 | Improvement | Upgrade to guice-jndi-4.2.3 |
RS-4673 | Improvement | Upgrade to guice-multibindings-4.2.3 |
RS-4674 | Improvement | Upgrade to guice-persist-4.2.3 |
RS-4675 | Improvement | Upgrade to guice-servlet-4.2.3 |
RS-4676 | Improvement | Upgrade to jsr305-3.0.2 |
RS-4677 | Improvement | Upgrade to owasp-java-html-sanitizer-20200713.1 |
RS-4678 | Improvement | Add checker-qual-3.9.1.jar dependency |
RS-4679 | Improvement | Add error_prone_annotations-2.5.1.jar dependency |
RS-4680 | Improvement | Add failureaccess-1.0.1.jar dependency |
RS-4681 | Improvement | Add j2objc-annotations-1.3.jar dependency |
RS-4682 | Improvement | Add listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar dependency |
RS-4683 | Improvement | Adding new jxls2 template should appear before jxls1 legacy template |
RS-4709 | Improvement | Strings in "Further Examples"- script datasources should have same size as in ReportServer (128) |
RS-4718 | Improvement | Support single quotes in JXLS1 report template export |
RS-4719 | Improvement | Support single quotes in JXLS2 report template export |
RS-3531 | Bug | HTML email is not working with Java 11 |
RS-3554 | Bug | Override metadata in variants when including it into datasource parameter query analogously as when this is included in the report query |
RS-3555 | Bug | Override report internal properties in variants when including them into datasource parameter query analogously as when these are included in the report query |
RS-3599 | Bug | Importing reports into TeamSpace always add "(copy)" into report's name |
RS-3873 | Bug | Scheduler dialog should not allow job's end date to be before begin date |
RS-4034 | Bug | mv and cp commands should check permissions on source objects |
RS-4202 | Bug | Datasource parameters are not showing available parameters and expressions in menu |
RS-4354 | Bug | Mondrian 3 chart export is not working |
RS-4401 | Bug | Error stack details are not showing correctly in user error window |
RS-4402 | Bug | Login Bundles are not working together with Java 11 |
RS-4408 | Bug | Dashboard library is showing empty message when adding a report dadget to a dashboard |
RS-4410 | Bug | Dadget height can not be set in the dadget library for some dadget types |
RS-4412 | Bug | Refresh interval and height can not be set in dadget library when editing report dadgets |
RS-4415 | Bug | Refresh interval and height can not be set in library dadgets correctly |
RS-4416 | Bug | The incorrect refresh interval, name and height fields should not be shown in dadget library |
RS-4493 | Bug | Edit file tabs are not being shown correctly in some cases |
RS-4498 | Bug | Paging is not actualizing correctly in grid reports when filtering |
RS-4557 | Bug | Aggregations with grouped fields are not showing correctly in dynamic list Excel export |
RS-4620 | Bug | Email date should be set in header explicitly |
RS-4637 | Bug | CE version is not running correctly |
RS-4688 | Bug | Correct javadocs errors |
RS-4705 | Bug | JXLS2 template export is not handling aggregations correctly |
RS-4706 | Bug | JXLS2 template export is not using selected number of columns but all columns in the report |
RS-4707 | Bug | JXLS template is not counting correctly when using aggregations |
RS-4708 | Bug | Aggregations are not working in JXLS2 report template export |
RS-4752 | Bug | "Add Condition" button in conditional scheduling is always disabled |
RS-4768 | Bug | Postgres upgrade is having issues with show_execute_button column |
RS-4771 | Improvement | mail.cf username and password should be @Nullable |
RS-4772 | Improvement | Allow both lower and upper case variable names in upgrade script |
RS-4769 | Bug | Parameters are not showing in dashboard for reports imported from TeamSpace as a reference |
RS-4806 | Bug | Parameters are not working correctly with HTML-output dadgets (except for root user) |
RS-4820 | Bug | Parameter dadget value is not applying for reports imported from TeamSpace as a reference |