Pull Reports™ Release Notes


Learn about the enhancements and changes for each release of Pull Reports™ Ad Hoc Reporting software.

Table of Contents

Release 1.4

Upgrade notes and breaking changes

Release 1.4 contains breaking changes from the prior release. Please see the section called “Upgrading from 1.3 to 1.4” for more information.

Canned Queries

Release 1.4 introduces <canned_query>s to the Pull Reports™ Catalog Configuration and Report Creator. A <canned_query> is a collection of Export Report REST API parameters with a name and optional description. Use a <canned_query> to provide one click access to report exports via the new Canned Query Viewer.

Report Creator Makeover

In release 1.4, the Report Creator receives a new, streamlined look and several usability improvements. The improvements increase the size of the results preview, improve the creator's usability on mobile devices, and help users better navigate through a complex report tree graph.

In addition to a user interface makeover, the Report Creator receives a new component in 1.4, the Report Repository. The Report Repository is the new, default view of the Pull Reports™ Report Creator. It displays the hyperlinked name and description of all configured <report>s and <canned_query>s. The Report Repository replaces and improves the Switch Report menu of release 1.3 by providing more report context and descriptive information.

Read more about the new 1.4 Report Creator interface in the Component Overview documentation.

Extending the Report Creator

The Report Creator initialization JavaScript object now has a creatorControlsCallback property which is a JavaScript callback function invoked after the rendering of the Report Creator Results Preview. Use the callback to add custom controls to the creator.

Improved Results Preview export URL display

The Report Creator Results Preview Export URL dialog button now displays Export Report REST API HTTP and parameter information in a dialog box. The extra information helps users of the Pull Reports REST API quickly construct request URLs.

Catalog and Report Information REST Service Enhancements

The GET Catalog Information endpoint now includes <report> <description> and limited <canned_query> information within the JSON result. This enhancement permits clients of the service, such as the new Report Repository, to display more report contextual information.

Additionally, the GET Report Information endpoint now includes full <canned_query> information within the JSON result. This enhancement supports the new Canned Query Viewer.

Release 1.4.3


  • Release 1.4.3 adds official support for Oracle 18.

REST-API dependency upgrades

The following Java dependencies are upgraded.

  • org.codehaus.groovy:groovy-all to 2.4.17

  • com.opencsv:opencsv to 4.6

Release 1.4.2

Closed Defects

  • Sort indicator icons on preview table should point up for ascending sort and down for descending sort. (#520)

  • Preview table pagination indicator should display start record of 1 plus the offset instead of 0 plus offset. (#521)

Release 1.4.1


  • Release 1.4.1 adds official support for MySQL 8.

  • The json and xml formats of the Export Report REST API now include information about the sort applied to the export result. For an example, see the meta.sorts property of the returned JSON within the json export format.

Closed Defects

  • Servlet include decoration incorrectly places content outside of html body. (#509)

  • After removing the last value from "is one of" list in Canned Query Viewer, the Apply button is still active even though the form is invalid (#515)

  • Sort indicators do not correctly show in Report Creator when a <export_config> has a default sort. (#439)

  • The XML DTD for OK (200) response from the Export Report API has structural problems. (#519)

Release 1.4.0

Initial release.

Release 1.3

Upgrade notes and breaking changes

Release 1.3 contains breaking changes from the prior release. Please see the section called “Upgrading from 1.2 to 1.3” for more information.

Custom catalog configuration security

Release 1.3 adds the new <access_control_voter> element to enforce custom access control at all levels of the report hierarchy. This control ensures that users of the Pull Reports REST API or Report Creator may only access permitted catalogs, reports, relationships, and columns.

See the section called “Securing Pull Reports™” for more information.

Catalog Configuration Java API

Release 1.3 contains the first release of the Catalog Configuration Java API. The Catalog Configuration Java API is a Java bean API which permits Pull Reports™ catalog configuration within Java instead of XML. The Catalog Configuration Java API means the full power of the Java programming language and runtime libraries may be used to configure Pull Reports™. This permits configuration assembly from any external source such as a database, network resource, or content management system.

In order to use the Catalog Configuration Java API prefix the fully qualified name of a Java implementation of the CatalogConfigurationFactory interface with factory: within the catalogs configuration property.

See the catalogs configuration property for more information.

Customize <label_value_query>s per request

In release 1.3, the <label_value_query>'s value is now a Groovy template which may be used to dynamically create the label value query at request time. Additionally, the HttpServletRequest associated with the GET Label Value List REST API request is available as the request template attribute.

This new feature allows label value lists within the Pull Reports™ Report Creator Filter web form to be customized to the permissions or attributes of the current user.

See the section called “Securing Label Value Lists” for more information.

Release 1.3.2


Release 1.3.1


  • Make the PlaceholderDefaultQueryLabelValuesProvider available to the Catalog Configuration Java API so that users can mimic the <label_value_query_default> capability within the Java API. (#474)

  • The Pull Reports™ JAR is now available at an enterprise Maven 2 repository for the benefit of licensees and trial users. Learn how to use the new repository to manage Pull Reports™ dependencies at the installation guide.

  • The Pull Reports™ JAR file is now available at the Pull ReportsMaven repository for license holders and trial users. The Maven repository greatly simplifies Pull Reports™ installation and upgrade since maintainers no longer have to manage Pull Reports™ dependencies within their installation WAR.

    Pull Reports™ license holders and evaluators may contact to obtain Maven repository credentials.

Closed Defects

  • Commas and semicolons in the <report> name attribute cause error in Content Disposition header within the XML and KML formats. (#465)

Release 1.3.0

Initial release.

Release 1.2

Upgrade notes and breaking changes

Major breaking changes

  • This release contains a new pullreports-catalog-1.4.0.xsd schema file. Change the xmlns attribute in each Pull Reports™ XML Catalog file to the new value.

    <catalog xmlns="http://www.pullreports.com/catalog-1.4.0"...

    The pullreports-catalog-1.4.0.xsd schema contains a new <subquery> element but is otherwise backwards compatible with the pullreports-catalog-1.3.0.xsd structure.

Customize <table> SQL with <subquery>

Release 1.2 adds a new <subquery> element as a child of the <table> element. If included, <subquery> replaces the <table> name attribute within the Export Report REST API SQL from clause with a subquery statement. <subquery>'s may be dynamically created at request time through the use of a Groovy template or designated factory class. When combined with HttpServletRequest attributes, <subquery>s may provide row based access security to any <table>.

See the <subquery> and securing data rows documentation for more information.

REST-API dependency upgrades

The following Java dependencies are upgraded.

  • com.opencsv:opencsv to 4.1

  • com.verhas:license3j to 1.0.7


Since the opencsv upgrade changes the transitive dependency footprint, if an existing Pull Reports™ installation uses the project-local JARs dependency management strategy, please ensure the JAR files in the Pull Reports™ media's lib directory are available within the installation application's classpath.

Release 1.1

Upgrade notes and breaking changes

Minor breaking changes

  • The Leaflet dependency bundled with the Report Creator JavaScript is no longer available via the JavaScript global L variable. Any creator initialization code requiring Leaflet must be within the creator initialization require function with leaflet as an injected dependency.

    Change creator initialization code written like this:

    // L is a global variable. No longer supported.
    var layer = L.tileLayer(...);
            , function(angular,prMain) {
                angular.element(document).ready(function() {

    To this:

            , function(angular,prMain,L) {
                // L is a AMD dependency.
                var layer = L.tileLayer(...);
                angular.element(document).ready(function() {

Support for OR filters

The filter parameter of the Export Report REST API now allows multiple filter terms to be logically OR'ed together via the or keyword. Multiple filter parameters within the same GET request are still AND'ed together.

For example, the following filter parameters:

filter=/tableA@foo is not null or /tableB@bar > 10&filter=@baz in ('A','B')

result in the logical query: (Return all rows in which tableA, column foo is not null or tableB, column bar is greater than 10) and whose base table column baz is equal to either 'A' or 'B'.

OR filters in the Report Creator

Release 1.1 provides Add OR term buttons within the Filters navigation tab to specify new OR filter terms. Alternatively, create new OR filter terms by dragging a column from the Results Preview into an existing filter definition.

Viewing export report SQL

Release 1.1 adds a new SQL button to the Results Preview. The button opens a dialog containing the SQL query and query parameters which produce the export result.

The new GET Export SQL REST API endpoint supports the SQL button by returning the SQL produced from a given set of Export Report REST API parameters. To prevent unwanted database schema information leakage, the GET Export SQL REST API is disabled by default. See the GET Export SQL REST API documentation for instructions on how to activate both the API and SQL button for permitted users.

For consumers of the GET Report Information REST API, release 1.1 also includes a new exportSqlIsActive attribute which is true if the GET Export SQL endpoint is active for the report.

Improved Report Creator API

Release 1.1 removes all formatting restrictions on the filter and sort parameters in the Report Creator parameter API such that the parameters are now formatted identically to same parameters within the Export Report REST API. This enhancement is made possible by the new GET Export Parse Parameters endpoint.

Report Creator usability improvements

Release 1.1 adds the following usability improvements to the Report Creator.

Add Filter button

Create filters directly from the Filters navigation tab with the new Add Filter button.

Streamlined column labels

Column labels within the Tables and Search navigation tabs now have a streamlined, compact display. Click or drag the column label to add the column to the Results Preview. Shift+click to remove the column.

Streamlined table labels

Release 1.1 also streamlines the display of table labels within the Tables navigation tab, Related Tables panel for better understandability and to save vertical space. Additionally, The table Metadata button moves to a drop down menu item, and the cardinality indicator moves to the left of the table label.

PostgreSQL 9.6, SQL Server 2017, and Grails 3.3 support

Release 1.1 now officially supports both PostgreSQL 9.6 and SQL Server 2017. Additionally, the Grails installation instructions are compatible with Grails 3.3.

Creator dependency upgrades

Release 1.1 upgrades the following Report Creator JavaScript dependencies.

  • AngularJS upgraded to 1.6

  • Leaflet upgraded to 1.2

  • Leaflet Markercluster to 1.1

  • Lunr upgraded to 2.1

REST-API dependency upgrades

The following Java dependencies are upgraded.

  • org.codehaus.groovy:groovy-all to 2.4.13

Release 1.0

Upgrade notes and breaking changes

Major breaking changes

  • This release contains a new pullreports-catalog-1.3.0.xsd schema file. Change the xmlns attribute in each Pull Reports™ XML Catalog file to the new value.

    <catalog xmlns="http://www.pullreports.com/catalog-1.3.0"...

  • Within Pull Reports™ XML Catalog files, the defaultSort attribute moved from the <report> element to the <export_config> element.

  • Within Pull Reports™ XML Catalog files, the <column> export attribute is now a boolean value.

    Change <column> elements attributed as export='never' to export='false'.

    Since no <column>s may be absolutely required in Pull Reports REST API results, remove the export attribute from <column> elements configured as export='optional' or export='always'. <column>s without an export attribute are by default optionally exportable.

    Consider adding base table <column>s previously attributed as export='required' to the defaultColumns <export_config> parameter.

  • The containing HTML element into which the Report Creator installs must have a data-pr-creator attribute instead of data-pr-layout.

    To implement this change in creator HTML pages, change this:

    ...<section data-pr-layout id='...'></section>...

    To this:

    ...<section data-pr-creator id='...'></section>...

Minor breaking changes

  • The default behavior of the Export Report REST API columns parameter changed slightly in the case of an empty parameter value or a parameter value missing the base table path. In the former case, instead of returning all the exportable columns of the base table, an empty columns parameter now only returns the defaultColumns, if configured, from the base table. Similarly, if the columns parameter value is not empty, but is missing the base table path, only the defaultColumns, if configured, will be added to the beginning of the export result.

Redesigned Report Creator

The Report Creator underwent a complete redesign in this release. Major enhancements include:

  • Streamlined, single-page interface with minimal scrolling.

  • Table <column>s may be included individually into the export result and repositioned as needed.

  • Improved drag-n-drop interactivity.

  • Full text <table> and <column> search helps users find the data they need.

New defaultColumns attribute

The <export_config> has a new defaultColumns attribute to specify the default columns to be returned by the Export Report REST API if no other columns from the report's base table are included within the columns parameter. Use the defaultColumns attribute to return highest value base table columns to API users.

Base table columns may be at any position in the columns parameter

The Export Report REST API columns parameter no longer requires the base table columns to be specified at the beginning of the parameter value. Include base table or column resource paths at any position in the semicolon separated list.

Release 0.10

Upgrade notes and breaking changes

Major breaking changes

  • This release contains a new pullreports-catalog-1.2.0.xsd schema file. Change the xmlns attribute in each Pull Reports™ XML Catalog file to the new value.

    <catalog xmlns="http://www.pullreports.com/catalog-1.2.0"...

  • This release changes the <column> export attribute type from boolean to an enumeration of strings: always|optional|never. Any <column> defined as export='false' should be changed to export='never'. Any <column> defined as export='true' should be changed to either export='optional' or export='always'.

    Additionally, there is a new Pull Reports™ XML Catalog file requirement that at least one <column> of each <report>s base table must be set as export='always'.

    See this release note for more information.

Minor breaking changes

  • The GET Report Information JSON response schema's column.export value type changed from boolean to string. This API is used internally by the Pull ReportsReport Creator, but any custom clients dependent on this API should change accordingly.

  • The Export Report REST API columns parameter now requires that the base table path, if specified, must be at the first position in the table path list.

<column>s may now be optionally included in Export Report REST API

This release enhances the Export Report REST API columns parameter to allow the exact specification of columns and column order within the export results.

Specifying a full table resource path within the columns parameter continues to return all the columns available within that table in the order specified within the Pull Reports™ XML Catalog file. For example:


However, the columns parameter now supports appending a @ character to the table resource path followed by a comma separated list of <column> ids. This will restrict the export results to just the listed columns in the given order. For example:


To support this enhancement, the permitted values of the <column> export parameter changed from true|false to always|optional|never.

See the <column> element and columns parameter documentation for more information including the new requirement that at least one column of the <report>'s base table be defined with export='always'.

Visit the Pull Reportsweb service demonstration page for a demonstration of including specific columns in an Export Report REST API result.


This release does not yet support optionally including columns from Pull ReportsReport Creator export results.

Dynamic creation of Pull Reports™ XML Catalog files

This release adds a new method to specify Pull Reports™ XML Catalog files during initialization. Use the factory: prefix within the pullreports.properties, catalogs property to indicate a Java factory class responsible for dynamically creating a Pull Reports™ XML Catalog file.

See the pullreports.properties documentation for more information.

<table_ref> elements may have a <description>

This release allows <table_ref>s to have an optional child <description> element. If defined, a <table_ref> description overrides the description from the referenced <table>.

Ability to override Leaflet GeoJSON Layer options

This releases increases the Leaflet mapper configuration options available within Report Creator initialization and the Export Report REST API map format.

The new geoJsonOptions property permits customization of the creator's and map format's Leaflet GeoJSON layer including popups, geometry style, and feature filtration.

Improved error handling for <url_template>

Errors in <url_template>s can cause invalid responses from the Export Report REST API because the errors occur after the response is already streaming to the client. This release includes improved error handling and logging for these error conditions.

REST-API dependency upgrades

The following Java dependencies are upgraded.

  • org.codehaus.groovy:groovy-all to 2.4.11

  • org.slf4j:slf4j-api to 1.7.25

  • com.opencsv:opencsv to 3.9

Release 0.9

Upgrade notes and breaking changes

JNDI data source configuration is now exclusively configured within pullreports.properties. Although this change allows more flexible, per-report data source configuration, it means these breaking changes:

  • The <catalog> jndiDataSource attribute is no longer supported.

  • This release contains a new pullreports-catalog-1.1.0.xsd schema file with the jndiDataSource attribute removed.

  • The pullreports.properties default.jndiDataSource property is renamed to jndiDataSource.

See Per-<catalog> and per-<report> property configuration for more information.

Ad hoc creator usability improvements

The Report Creator Available Tables component received several usability improvements in the 0.9 release.

Column names now visible in table closed state

The first several <column> display names are now visible on the table component when the table is in its closed state. This helps users quickly review the columns without having to open the table.

Multiple tables open at once

More than one table component can now be opened a time. This helps users review many tables at once.

Additionally, the Available Tables component title bar contains buttons to open and close all tables with just one click.

Swatches indicate tables within export

Each table included within the export results is represented by a swatch button on the Available Tables component title bar. Clicking the swatch toggles the table's open/closed state and focuses the table within the Available Tables component. The new swatches provide a quick visual of which tables are in the current export and an easy way to navigate to an included table.

Non-exportable icon in table information tab

<column>s set to export="false" are now denoted with a special icon within the table's Info tab in addition to the text Not included in export results. Only for filtering.

Ability to decorate Export Report REST API output with Servlet includes

Decorate the HTML output of the html and map Export Report REST API formats via Servlet includes. This feature permits easy customization of the outputs with HTML, JavaScript, and CSS and provides an alternative decoration technology to SiteMesh.

Improved filter output for html, htmltable, and map output formats.

This release improves the readability of filters applied to the Export Report REST API results in the html, htmltable, and map formats. The filter format now following this pattern:

Table: <em>[table.displayName]</em>, Column: <em>[column.displayName]</em> <samp>[operator]</samp> [value(s)]

Row offset, limit, and total count added to html, htmltable, and map output formats.

The html and htmltable Export Report REST API formats now display the offset, limit, and total row count values within the table <caption>.

Additionally, the map format now displays the distinct feature count and raw data row offset, limit, and count values above the map.

Logging improvements

Logging may now be isolated to a specific <catalog>s or <report>s.

Per-<catalog> and per-<report> property configuration

Most properties within pullreports.properties may now be configured per-<catalog> or per-<report> by (.) appending the <catalog> id and, optionally, <report> id to the property name. Properties values specified at a lower scope (e.g. <report>) override the same property specified at a higher scope (e.g. <catalog> or global).

Properties whose values may now be customized per-<catalog> and per-<report> are:

  • jndiDataSource

  • export.report.maxResults

  • export.report.postgresql.queryCostMaximum

Documentation improvements

The GET Label Value List REST endpoints are now documented.

REST-API dependency upgrades

The following Java dependencies are upgraded.

  • org.codehaus.groovy:groovy-all to 2.4.8

  • org.slf4j:slf4j-api to 1.7.22

Creator dependency upgrades

The following Report Creator JavaScript dependencies are upgraded.

  • Angular Bootstrap upgraded to 2.5