Title: TeamPage 6.2.31

TeamPage 6.2.31 is focused on performance. It incorporates major improvements in query optimization, handling of search expressions, and caching. These improvements will be particularly significant for customers with large journals and for those who use TeamPage solutions and reporting views that make extensive use of search expressions in queries and section definitions. Other changes include: additions and improvements to the Impi! Quality Management ISO 9001:2015 TeamPage solution; new ability to show Google calendar events in TeamPage Calendar pages; new PDF, Excel, CSV, and print export of for data tables; new data table filtering per column; improvements to PDF generation; improved temporary file management; improved background process task management; and improved statistics gathering. Please read on for the full list of improvements, bug fixes, and TeamPage SDK updates for developers.

Download TeamPage 6.2.31

Table of Contents


Query Performance

The focus of this release is to improve the performance of TeamPage's built-in queries. These improvements will be particularly noticeable for customers with large journals, or for customers who use queries with many search terms.

Query Optimizations

These optimizations apply to TeamPage's retrieval of the "base result set" for a query, before searches are applied.

• Modified the way that queries are serviced to ensure that requested parameters, such as date scoping, are are narrowed as much as possible before additional work is performed to retrieve any results.

• Moved all query type-specific "implicit" filtering to TeamPage's SDK query implementation layer, where in-memory metadata indices can be used to quickly disqualify candidate results that formerly had to be filtered out at higher levels of code.

• Optimized the handling of requested minimum and maximum numbers of results.

• Improved the handling of the handling of offsets used to retrieve the next "chunk" or "page" of results for infinite scrolling and in other similar contexts.

Search Optimizations

These optimizations are related to TeamPage's handling of queries that have search expressions, and are designed to minimize the amount of work performed.

• Search expressions are now simplified before any additional work, such as performing auxiliary queries, is performed to apply them.

• Added short-circuiting to avoid performing any additional work when it can quickly be determined that there are not (or cannot be) any matching results for a search expression.

• Optimized the way in which search filtering is actually applied. The best filtering strategy is selected, which may be purely iterative predicate filtering, filtering using high performing auxiliary queries, or a hybrid approach, depending upon the size of the base result set and what sort of search expressions are present.

• Optimized the handling of auxiliary queries used to handle search expressions to ensure that the parameters, such as date scoping, are narrowed as much as possible while still matching the scoping of the base query and base result set.

• Whenever possible, queries that have searches will be "rewritten" to use an equivalent but better performing query based upon one or more of the search expressions.

External Search Engine Integration

Apache Solr Advanced Search Module

TeamPage's Solr queries have been improved to ensure that the results represent the best matches for user requests.

• Queries with multiple terms are implicitly treated as conjunctions rather than disjunctions (i.e., joined with "and" instead of "or") unless otherwise specified using advanced query syntax. This ensures that by default, the results will nominally contain matches for all search terms. (Solr1123)

• TeamPage does not attempt to perform fulltext query tokenization before sending the query to Solr. (Tokenization is the process of breaking up a run of text according to separators and other word boundaries.) Both TeamPage and Solr can be configured to use the atilika Kuromoji morphological analyzer for tokenization, but relying upon Solr to tokenize the text of queries ensures that users will see the best results, as well as the best highlighting of search terms. (Solr1123 / Solr1156)

• The handling of complex drill-down filters, involving the "any" option with multiple "facet bucket" values, or the "all" or "none" options with any number of values, has been improved, and should result in higher fidelity matches.


• The Index Administration dialog for configured external search engines will now display much more quickly. (Server90763: Fix the index created for the ENGINE field in the TSI_DOC_STATUS table)

Co-occurrence of Terms Reporting Plug-in

• The Co-occurrence of Terms Reporting plug-in has been modified to work with the most recent versions of TeamPage, and in particular to be compatible with the current version of the Apache Solr advanced search module. This plug-in allows users to save complex queries, and view reports showing the co-occurrence frequency of each permutation of the query terms. Administrators can also set up a schedule for having these reports emailed each week to subscribed users. Please contact sales@tractionsoftware.com if you're interested in this capability. (Server91091: Refactor SDL SearchQuery creation to happen in SearchEngine implementation based upon new SearchQuery.Parameters implemented by each SDL tag as necessary / SPO8703)

Quality Management, Risk and Improvement Modules

TeamPage's Quality, Risk and Improvement modules have been substantially revised, and more tightly integrated with one another.

• In the Quality module, the "Non-conformance" or "Nonconformance" term has been changed "Nonconformity".

• The Risk module now includes a "Standard" entry type. These entries can be created as necessary to represent various standards -- e.g., ISO9001 or ISO45001 -- that apply to certain activities in a given enterprise. A special CSV attachment to a Standard entry represents the available sets of choices for certain fields in other forms, including the Quality module's Nonconformity form. They can also designate a preferred template to be applied when a user chooses to create a new Nonconformity referencing that standard.

• The Quality Module's Nonconformity and Corrective Action entry types, and the forms used to create them, have been improved and expanded. Most changes depend upon the Risk module, which via the new Standard entry and other changes, offers an expanded set of form fields, although the Quality module plug-in can still be used without the Risk module plug-in. When the Risk module is available, to create a new Nonconformity, the user must first choose an applicable Standard, and the choice of Standard governs the options that appear in certain other fields.

• Most of the due date fields for the separate phases covered by the Nonconformity and Corrective Action forms will now have default values when the user initially opens the forms, driven by per-space settings governing the offset in days from the current date to use for each default. This way, the default due dates can reflect the expected amount of time usually required to reach and complete each phase.

• Users now have the option to create an Innovation Task to follow up on an Improvement Opportunity. This provides a lighter-weight alternative than the full Improvement Project.

• Threats, Innovation Tasks and Improvement Opportunities can now all be associated with one or more feedback reports, and will appear in the special "References" list for any feedback report alongside Nonconformities and Corrective Actions. Buttons for adding any of these types of associated entries also appear there alongside the existing buttons to add new Nonconformities and Corrective Actions.

• Added server-level navigation tabs and pages for Nonconformities, to make it easy to survey quality management activities across all spaces.

• The "Associated Space" field in the Risk module's Process entry form is now a required field. A user creating or editing a process must designate at least one associated space.

• The creation date is now an available option for various configurable section tables built into dashboard summary pages in the Quality Management, Risk and Improvement Projects modules.


The Show Sidebox

• The states of the calendar control checkboxes are now saved so that they'll be remembered until the next time you close your browser.

• Administrators can now configure up to four Google Calendar sources to be made available for users to display in various Calendar pages.

• Changed the way of the settings for Google Calendar sources. You'll need to reconfigure any Google Calendar sources that you've configured using previous TeamPage releases.

Previously, each Google Calendar source was configured using a single setting covering the ID, text color, and background color.

Google Calendar setting in 6.2.29

These can now be specified separately. Sources can also be given a display name which will be used in various locations to identify that calendar.

Google Calendar setting in 6.2.30


We've made a number of improvements to the DataTables plug-in, which is free for licensed customers. You can learn more about it here.

• TeamPage installers now automatically install the DataTables plug-in.

• Improved the responsiveness and performance of the DataTable widget. (JPBO21224)

• Users can now export CSV, Excel, PDF, and a print version with the click of a button. The exported data will reflect any active filters. (JPBO21164)

• Each column now has its own separate filter control. (JPBO21167)

DataTables example


• Modified the way TeamPage maintains metadata indices to avoid storing certain unnecessary information. This will save memory as well as disk space. This will take effect for all metadata indices after you upgrade to this version of TeamPage, although an index rebuild is required to retroactively apply the effects of these changes to the metadata for your existing journal data. (Server88322)

• TeamPage's journal entry data cache has been made more efficient. The cache is more compact, using slightly less memory to store data; and loading journal entry data from the cache also consumes less memory, and takes slightly less time. (Server87703: journal_entry should hold the data for a tsi.entry, not a tsi.entry itself)

• TeamPage has a new framework for running possibly long-running background processes to ensure that they do not interrupt or defer normal service startup. These processes don't usually have to run on startup after the first time a particular TeamPage journal has been used with a server that supports a particular feature. But in the rare cases in which they do have to run, they may have to import of a large amount of journal data and metadata into auxiliary database tables. Previously, when this happened, the TeamPage service might not be able to finish its startup process until the task was completed, which could lead to unpredictable behaviors. Such background processes, including those associated with TeamPage's built-in PM features, as well as add-ons such as the Signature Requirements module, now run much more unobtrusively, and will not interfere with TeamPage's startup process. (Server90381)

• New and improved gathering of statistics related to currently open resources. This is chiefly important for customers who are working with Traction support staff to actively investigate an issue, but is accessible to any user who has Server Setup permission in TeamPage's Metering console view (type /jmxviewer into the search bar). (Server87683 / Server87687)

• TeamPage now universally observes the configured maximum uploaded or emailed file size, regardless of how the file reached the server. There's also a new setting governing the total allowable size for a request, which can help TeamPage avoid using too much disk space or otherwise becoming overwhelmed by requests that are too large (whether this happens accidentally in ordinary use, or happens due to deliberate actions of malicious users).

• Added a setting to allow administrators to choose whether digests can be generated interactively for requests from users using the built-in Visitor account. The "Read digest online through present" link in each digest allows a user to click through to view a more up-to-date digest in their browser. If a user is not logged into TeamPage in the browser that opens when they click this link, and if TeamPage isn't configured to require them to log in, then they may still see a version of the digest based upon a combination of the default digest spaces and sections for the server and what the Visitor account is allowed to see. In many cases, this may not be desirable, and may lead to confusion on the part of the user as to why the digest they're seeing does not reflect their preferences and permissions. To avoid this confusion, the new "Require Named User Account to View Digest" setting (server settings > Email > Digest) may be set to "yes" to require users to log in using a named account in order to view a digest. This may be suitable for non-public TeamPage servers where single sign-on is not being used, but may not apply in many other cases, particularly for servers where user accounts are set up for the express purpose of getting TeamPage to send digest messages to mailing lists for receipt by users who do not have named accounts. (Server90096)

• Modified the way that type-ahead completion works in TeamPage's forms and other main UI so that they will always be driven by TeamPage's "unified search" capabilities. This will give more consistent behavior across various types of form fields, and will improve performance in most cases. Unified search sources that search entries now also support paragraph-level matches. (Proteus15727)

• Improved the appearance of "share" (entries created with TeamPage's SEW features) in exported PDFs. The table that appears by default in these entries, including an icon representing the type of resource being shared, and an optional picture (e.g., from a shared web page), now uses a more sensible layout. (Server90752)

• Improved the performance of the queries used to determine users who have not been active in a certain amount of time, which TeamPage uses to enforce the optional automatic unused account deactivation policy. (Server90765)

• Improved the performance of the queries required to support the enforcement of password re-use policies. (Server90764)

• Improved the performance of rendering the "feed summary" used to display entries in a page using the collapsed "Feed" volume. (Server90287)

• Made the "Move" form's target space field automatically focused when the form is launched. (Proteus15638)

• In a single entry view, when a new entry is added to an entry section or when an Email Reply is sent, the page will be refreshed to show the newly created entry or reply in context. Previously, the user would be navigated to a single entry view of the newly created entry or reply. (Proteus15637 / Proteus15704)

• Improved the performance of dynamic snippet computation for search results and/or activity feeds and other places where the compact feed-style display is used. (Server91138 / Server91147)

• The "Temporary Files" administrative control on the server settings > Server FIles page under Other Files > Uploaded Files is now accompanied by two separate temporary file statistics summaries: one for files referenced by private drafts ("Works in Progress"); and another one for possibly "orphaned" temporary files, which are not referenced by any private drafts. This makes it easier to tell whether there are actually any unreferenced files that need to be manually cleaned up using this control.

Bug Fixes

• Fixed a bug that prevented an entry that was published on edit from appearing in the results of query for recently published entries scoped to a date range other than "All Time". This was most likely to affect email digest sections of type "Recently Published Articles," because that is the most common case in which a query for recently published entries would not cover all time. (Server90854)

• Fixed a possible concurrency issue in TeamPage's tracking of the current set of tags that are present on an entry or paragraph. (Server90423)

• Fixed a bug in the Signature Requirements module that prevented a user's email address from being accepted instead of a user name in the Signature form, even though that substitution is explicitly allowed. (Proteus15845)

• Fixed a bug that prevented type-ahead completions from working in certain cases when multiple entry types (e.g., both tasks and events) were requested. (Server90309)

• Fixed a bug related to gathering of statistics related to the usage of certain types of setup pages. (Server89913)

• Fixed a bug related to "expansion" of the compact display for certain types of results appearing in a page using TeamPage's Apache Solr advanced search module. Clicking on the "collapsed" feed-style result would vertically expand the displayed result, but the expanded area would be blank. This bug was a regression introduced in a recent release. (Solr1092)

• Fixed some issues related to TeamPage's startup process to prevent startup ("init") event listeners from being triggered prematurely. (Server90626)

• Fixed a bug that could cause TeamPage to enqueue document indexing tasks for a particular search engine even if one was already running or enqueued. Now only one such task will ever be either running or waiting to run for any given search engine. (Server90400)

• Fixed a bug which prevented TeamPage's background daemon processes from starting up if they were only enabled after the TeamPage service was launched. (Server90401)

• Fixed a bug that could prevent burn-up charts from appearing in certain pages. (Proteus15645)

• Fixed a bug that could prevent TeamPage's read/unread tracking from automatically marking entries as having been read by the user that created them. (Server90445)

• Fixed some issues that could prevent embedded images from appearing in exported PDFs. Previously, embedded references to images would not appear in an exported PDF either when the image was an attachment, and the journal is currently using the classic simple "file" attachment store on Windows; or when any image was referenced via a server-relative URL. (Server90755 / Server90776 / Server90777)

• Fixed a bug related to TeamPage's internal tracking of license expiration. Previously, after a license had expired, users might still be able to create new entries but TeamPage would fail to maintain auxiliary tables related to these new entries, such as those required to drive certain features in the Project Management suite. TeamPage now correctly enforces policies related to expired licenses. If your TeamPage license has expired, please file a support request or email support@teampage.co to request a renewal. (Server90727)

• Fixed a bug that caused a space's "Newspage Title" to be used on pages other than the dashboard / newspage. (Proteus15781)

• Fixed a bug that prevented fulltext queries for common "stoplist" words (which are ignored by TeamPage's "native" fulltext index) from being handled properly. (For superior fulltext search capabilities, we recommend using Apache Solr advanced search module.) (Server90094)

• Fixed a bug that could prevent case-insensitive search terms from being correctly highlighted where they appear in search result text. (Server89866)

• Fixed a bug that could prevent hit highlighting from working correctly in certain cases. (Server89856)

• Fixed a bug that could cause certain fulltext queries containing certain words to fail when using the Apache Solr advanced search module. (Server89940)

• Fixed a bug that could prevent certain search results from being displayed. The error message would have been reported to the user when displaying search results, and would include "StringIndexOutOfBoundsException". (Server89859)

• Fixed a bug related to the handling of certain special characters in search result text snippets which could cause the layout break in pages driven by external search results containing these characters in search result snippets. (Proteus15772)

• Fixed a bug that could prevent hit highlighting from being applied when presenting certain type-ahead completions, such as the unified search results used to offer suggestions for searches in the main search box. (Server89933)

• Fixed a bug that could cause the space-scoping for a section query to be wrong when the "Current Space" option was selected for a space-scoped section definition. This bug was a regression introduced in TeamPage version 6.2.22. (Server90198)

• Fixed a bug that could, in certain cases, prevent TeamPage forms from properly applying certain requested labels or references when creating or editing entries. (Proteus15696)

• Fixed a bug that prevented the queries used to retrieve type-ahead completions for certain form fields from being capped at a reasonable number of results. (Proteus15668)

• Fixed a bug that could cause default values intended to be applied to a form launched from a section's "Add" button to be ignored. (Server89842)

• Fixed a bug that prevented TeamPage's "Live Activity" feature from working in the Email Reply form. "Live Activity" will now appear in the Email Reply form to give information to users who are allowed to see it about what other activities other users are performing in a given discussion thread. (Proteus15660)

• Fixed a bug that could cause the tags from a template entry (or the source entry for a "Copy" operation) to be applied to a newly created entry even when the user had manually removed the tags in the form. (Proteus15292)

• Fixed a bug that in some cases caused TeamPage to needlessly re-save a work-in-progress ("private draft") even if no changes had been made. (Proteus15639)

• Fixed an issue that could cause an error to be displayed when a user clicked on the "Comment" action link for certain types of search results (e.g., files). (Server89888)

• Fixed a bug that could prevent the selection of a space-specific color / design scheme from taking effect. Using Design > Customize to choose a color scheme would initially appear to apply the change, but reloading the page would show that the change hadn't correctly taken effect. (Proteus15752)

• Fixed a bug that could cause an error to be displayed when pressing the escape key in certain forms, including the built-in "Close Task" and "Open Task" forms. (Proteus15648)

• Fixed a bug that could prevent a user's mini-biography from being correctly truncated in TeamPage's VCard-style user details dialogs. (Proteus15807)

• Fixed a bug that could prevent user profile information from being saved on the Edit Profile page. (JPBO21039)

• Fixed a bug introduced in a recent version of TeamPage that prevented the most recently added visible comment's content from being displayed in the Activity > Discussions page. The most recent comment author's avatar would be displayed, but the content and other details would be from the original entry (the "root" of the discussion thread). (Proteus15747)

• Fixed a bug that could, in some cases, prevent certain entries from being offered as type-ahead completions for some form fields used to reference other entries. (Server89847)

• Fixed a bug that could cause email replies from being included in a discussion thread. (Server89979)

• Fixed some issues related to identifying invalid search expressions. The errors reported to the user when an invalid search has been requested are now also much more informative. (Server90119 / Server90802)

• Fixed a bug that could, in some rare cases, cause some internal data intended to be tracked across entry edits to be lost during an edit operation. (Server90513)

• Fixed a bug that could cause temporary files to be "leaked" when a user deletes one or more private drafts from their "Work in Progress" page. Temporary files associated with Works in Progress are now consistently deleted when the associated Work in Progress is deleted, and any temporary files that may previously have "leaked" due to this issue will be automatically deleted the first time you run your TeamPage server with version 6.2.31 or later. (Server91178)

• Fixed a bug that could prevent temporary files from being cleaned up when an incoming email message that has attachments is rejected. Any such temporary files will also be cleaned up the first time you run your server with version 6.2.31 or later. (Server91204)

• Fixed an issue that prevented the appropriate display text from being used for certain external search engine results view drill-down "facet buckets." (Server91111)

• Fixed a bug that caused some error messages to appear in Calendar views when using the "Multiple User Calendars" plug-in. (JPBO21442: Error in Multiple User Calendars (mucals) view: jQuery.Deferred exception: Cannot read property 'split' of undefined TypeError: Cannot read property 'split' of undefined)

• Fixed a long-standing bug, affecting users of Internet Explorer, which could prevent events or other entries from being displayed on TeamPage calendars when the containing spaces' names contained non-ACSII characters. (JPBO21743: FullCalendar displays no events on IE when the target space name contains some non-ASCII characters)

For Developers

This release contains many changes to both the public SDK API and other extensibility points. If you write and maintain your own plug-ins for TeamPage, please read on for the full details.

Query API

com.traction.sdk.view.EntryFormat and Custom Filtering

EntryFormat's includeEntry method has been removed. This was a relic from a previous generation of TeamPage's public SDK: it was a barrier to improving query performance; and did not belong in the EntryFormat class, whose purpose is to give the SDK implementation layer certain information about how entry content and metadata should be presented to users. All the filtering which built-in EntryFormat objects used to implement is now automatically incorporated into the SDK implementation layer.

In the unlikely event that you still need to have a custom filter for a query that can't be expressed with a com.traction.sdk.SearchExpression, you can now use the com.traction.sdk.JournalRequest's setCustomFilter(java.util.function.Predicate<? super com.traction.sdk.Entry> customFilter) method to specify a custom Predicate for filtering Entry results.

File API

com.traction.sdk.File and com.traction.sdk.Attachment

com.traction.sdk.File and com.traction.sdk.Attachment are now interfaces rather than an abstract classes, as they always should have been. The new class com.traction.sdk.AbstractFile provides the same base implementation that the File abstract class used to provide, with most of the same internal implementation-dependent subclasses implementing different sorts of files (e.g., attachments stored in certain stores, files belonging to space share folders, etc.).

com.traction.sdk.iter.FileIterator, com.traction.sdk.FileRequest and getChildren

The existing getChildren and getHistory methods now return instances of the new com.traction.sdk.iter.FileIterator interface. There's also an overloaded version of getChildren that accepts a parameter of the new type com.traction.sdk.FileRequest. FileRequest, similar to com.traction.sdk.CJournalRequest and JournalRequest, encapsulates the requested sort order, as well as optional offset, maximum results, and filtering using a very simple java.util.function.Predicate.

Handling of Unexpected File Load Errors with com.traction.sdk.file.FileLoadFailedException

File's getChildren and getHistory methods also now throw a new type of checked Exception: com.traction.sdk.file.FileLoadFailedException. FileLoadFailedException extends com.traction.sdk.DocumentLoadFailedException so that it will already be handled by clients of methods on com.traction.sdk.search.DocumentType objects that represent File types, since DocumentType's getDocument method declares the thrown Exception type DocumentLoadFailedException. Like the other main subclass of DocumentLoadFailedException, com.traction.sdk.JournalException, FileLoadFailedException generally represents any low-level failure, and will possibly wrap an IOException or other Exception that represents the original cause of the problem.

In addition to throwing a com.traction.sdk.AuthenticationException when a check on the requesting user's permissions fails when attempting to load a File for a given URI/URL, com.traction.sdk.Journal's getFile method can also now throw a FileLoadFailedException.

Temporary Files

com.traction.sdk.util.TransientTempFile has been removed. The existing com.traction.sdk.file.TempFile type now covers the cases that TransientTempFile used to cover. TempFiles can be obtained through various com.traction.sdk.SdkFactory methods, e.g.,

// With a com.traction.sdk.Context object:
TempFile temp = context.getSdkFactory().createNewTempFile(context);

TempFile has been modified to ensure that it offers at least the same set of features that TransientTempFile did, and to support a "safer" usage pattern with respect to ensuring that any underlying file descriptor or other resources are properly disposed of:

com.traction.sdk.edit.NewAttachment has been removed. com.traction.sdk.edit.NewEntry's addAttachment method now accepts any IFileData, and since TempFile implements IFileData, they can be directly used as new attachments.

For further details on the updates to TempFile, NewEntry and other classes, please see the latest Traction Java SDK documentation.

Related Articles
Article: Customer5126 (permalink)
Categories: :Doc:changelog, :Doc:r62
Date: February 7, 2019; 4:52:04 PM EST
Author Name: Dave Shepperton
Author ID: shep