• Searches can now span the contents of both a LabKey Server and external sites
    • Once an administrator configures search for external sites, users can execute searches across an organization's resources, even when those resources live on different systems.
    • Administrators can customize permission levels for search results from external sites.
  • Additional data types are now included in search results:
    • List metadata
    • External schema metadata
    • Container path elements (for example, "NIHM/Studies/2010/Study Data")
    • Study labels
    • Dataset names, labels and descriptions
    • Lab/site labels
  • Administrators can optionally exclude entities from search results, including:
    • The contents of a LabKey project or folder (via the Folder Settings -> Full-Text Search tab)
    • List metadata
    • External schemas
  • Administrative enhancements
    • A new administration interface makes it easier to relocate and clear the primary search index
    • Administrators no longer need to install BouncyCastle to support the search of encrypted PDFs
  • Updated search technology
    • Lucene search engine has been upgraded to v3.0.1

File Upload

  • Enhanced customization tools for admins
    • File web part's toolbar and column headers can be customized using a simple, drag/drop UI.
    • Admins can specify additional metadata that must be entered during the upload of each file. Metadata settings can be inherited by child folders.
    • Improved interface for specifying which file actions are enabled through the Import menu item and shown individually in the toolbar.
  • Enhanced feedback for users and admins
    • Email notifications can be configured to be sent automatically when files are uploaded or deleted.
    • A progress bar is now shown during upload of files.
  • More types of information available
    • New audit history view shows file events.
    • New "File Extension" column shown in the file browser displays the file type.
    • New "Usage" column indicates when a file is used by an assay.
    • The "Created By" field is now tracked for folders, not just files.
  • Area-specific enhancements
    • Flow import wizard now uses file browser
    • File interface replaces pipeline interface for must study users.
      • The "Data Pipeline" link in the "Study Overview" section now reads "Manage Files".
      • This link now leads to the File Management UI, unless a pipeline has been configured. If a pipeline override has been set up, the link leads to the pipeline management UI.

External Data Sources and Schemas

  • Enhancements for managing external data sources.
    • New data schema administration page provides current connection status for all data sources
    • New mechanism for automatically reloading external schema metadata as part of nightly maintenance
    • New ability to reconnect to data sources that go offline and return
    • Bulk reloading now available for all external schemas
  • Enhancements for defining external schemas
    • When defining or updating an external schema, an administrator can now mark a schema such that it is filtered out of the list of schemas shown in the schema browser.
    • Administrators can selectively include/exclude external schema metadata from full-text search.
  • Security enhancements.
    • Tighter security now enforced for external schema definitions. Folder admins can no longer update external schema definitions; only site admins can define and update external schemas


  • Proteomics (MS2)
    • Enhanced MS2 Runs Overview UI page.
    • New webpart for MS2 Runs Overview.
  • Sample sets for all assay data types.
    • Sample sets now have an HTML interface that allows insert, update and delete. Like all LabKey grids, sample sets also support insert/update/delete through the client API.
    • Sample sets use the new validation framework described in the "Validation" section of this page.
  • Neutralizing Antibodies (NAb)
    • Sort and page size are now remembered when NAb results are accessed via ‘view results.'

Custom Data Types

  • New list designer interface
    • List properties (e.g., name, description, title field, etc.) can be edited from the same page as list fields.
    • A graphical marker is now shown for the key field.
    • Fewer clicks are needed to delete lists.
    • The list design view now shows which fields are lookups to other tables. Previously, you could only see the field name and the datatype.
  • Improved algorithm for auto-picking the list title field:
    • LabKey picks the first non-lookup string column (this could be the key). If there are no string fields, LabKey uses the key.
    • LabKey does not exclude nullable fields from consideration.
    • You can still explicitly set the title column according to your preferences.
  • List archive time-stamping. List archive titles now include a time stamp that indicates when the archive was created, just like study archive titles. This helps to distinguish archives.
  • List drop-downs are now sorted. Drop-down lists are now sorted in ascending alphabetical order by the display column. This makes it easier to find desired values, particularly for long lists.
  • Improvements to the design tool for lists, assays and datasets
    • Cleaner definition of field data types and lookups. A new popup for the "Type" property of fields allows you to select a built-in type for the field, or set the field to be a lookup to another table, which itself defines the type.
    • A new, built-in "user" data type can represent users of the LabKey Server system.


  • Configurable rules for specimen availability. During specimen import, LabKey Server can now run an administrator-defined query (or queries) to determine which vials should have requestability set to a specific value and update vial requestability when necessary.
    • Each vial with requestability set via these queries is annotated so that users and administrators can determine why the vial is or is not requestable.
    • Administrators can specify the order in which the queries are run in order to resolve conflicts if two queries attempt to mark a single vial as both requestable and unrequestable.
    • Checks run exclusively during specimen load. This means that changes to the queries will not affect the requestability of vials currently stored in the system until the next specimen import.

User Interface

  • Web parts can now be reordered and deleted without a page refresh from the server
    • This makes it much quicker and easier to rearrange portal pages.
    • Administrators can still rearranges webparts on a portal page by clicking on the up and down arrows in the web part headers, but the process is swifter.
    • Deletion occurs without a server refresh.
    • Adding a web part still requires a server refresh because customization of the web part is sometimes required.
  • Scrolling menus for views
    • You can now scroll to items in long "Views" menus that previously would have been inaccessible.
  • More accessible menus
    • Admin, Help, My Account and SignIn/SignOut menus now float on the top right side of the page.
    • This means that you never need to scroll right to read them on wide pages.
    • Previously, they were fixed on the top right, so scrolling was sometimes necessary to reach them.
  • Improved file naming
    • Query export (tsv, xls, and iqy) filenames now use query/table name (instead of "tsv_" or "data_") followed by standard timestamp (one-second granularity, but guaranteed unique).
    • List archive file names now include a timestamp, just like study archives.


Resource: Powerpoint summary of 10.2 API Schema Changes. Includes schema changes in v10.2.

  • Button bars for any query or table can be customized through XML or the JavaScript client API
    • Can add, replace, or delete buttons or drop-down menus.
    • Custom button bars can leverage the functionality supplied by default buttons.
  • Folder types can now be defined in XML files. Custom folder type definitions, including active modules and web parts (with configuration) can now be defined in XML files in the "folderTypes" directory of any file-based module.
    • Useful when many folders need the same basic configuration.
    • An administrator can further customize the folder after setting the folder type.
    • A file-based module can use an XML template exported from an existing folder. A folder's template can be downloaded from its "Admin->Manage Project->Folder Settings" page.
  • Customize view option now available for module-defined query views. This allows users to create customized views for module-based queries, with the caveat that the views need to be saved under new names.
  • "Views" folder for default modules. Java modules can now have an associated "<module>/resources/views" folder, just like other modules. Simple .html views can be placed in this folder for use by the module. These views can be easily modified and changes are rendered immediately.
  • Query metadata override via module file.
    • A module-based query can be renamed by specifying the name attribute in meta-data XML, not just the UI.
    • Can specify format, label, etc for built-in tables in a /queries/<schema>/<query>.query.xml file
  • Schema Browser enhancements
    • Schemas can be displayed by data source.
    • "System" schemas can now be filtered out.
    • New "define multiple schemas" page
    • Improved schema administration page.
  • JDBC driver prototype
    • Potential alternative Java API
    • Uses existing, well understood JDBC API
    • Fairly direct mapping for SELECT and metadata queries
    • Allows use of existing tools and libraries, like DbVisualizer

Data Validation

  • Overview. Server-side JavaScript APIs are now available for transforming and/or validating data on a per-field or per-row basis when insert/update/delete occurs. A validation script can modify data or throw an error before insert/update/delete in most situations.
    • The script is run for changes that occur through HTML-based forms, client APIs and list batch insert.
    • In the future, the script will also run for list archive, dataset archive import and dataset batch insert.
  • Script location. The script used for transformation/validation for a particular table is placed in a module's "queries" folder. The script name needs to be in the form SCHEMA/QUERY.js, where SCHEMA and QUERY are the names of the query and schema associated with the table.
  • Sample. A sample script is available in the source code under server/test/modules/simpletest/queries/vehicle/colors.js
  • Comparison with pre-existing tools
    • This new type of script does its work in-process, whereas existing transformation/validation tools worked out-of-process and communicated via files with the server.
    • Existing methods for performing transformations only worked during data import, not at the point of every insert/update/delete.

JavaScript Client API

  • LABKEY.QueryWebPart now supports button customization, including the specification of new buttons and the use of multi-select on any query, not just updateable queries. Paging, sorting and filtering are now performed in-place using AJAX.
  • LABKEY.Query.saveRows() is now officially a public API. Allows you to do multiple insert/update/deletes across different tables in a single transaction.
  • LABKEY.DataRegion is now a public API for interacting with data grids. It supports paging, filtering, sorting, etc. Methods include getChecked(), showMessage(), clearAllFilters() and setOffset().
  • LABKEY.Experiment.saveMaterials() is deprecated. This API was redundant with the improved QueryUpdateService API for samples/materials, plus the new ability to create materials as part of inserting a new assay run. Use LABKEY.Query instead.
  • LABKEY.Experiment.saveBatch(). This API for programatically creating assay runs now supports adding materials as inputs and outputs. It also now supports referring to files by path. The path can either be the absolute path on the web server or the path relative to the root for that folder.
  • LABKEY.Assay.getStudyNabGraphURL Retrieves the URL of an image that contains a graph of dilution curves for NAb results that have been copied to a study. This can be used from study folders containing NAb summary data
  • LABKEY.Utils.onTrue() for web parts fetched dynamically that require common script files.
  • LABKEY.Utils.generateUUID() for generating UUIDs/GUIDs like “92329D39-6F5C-4520-ABFC-AAB64544E172” from JavaScript code.
  • LABKEY.Message.sendMessage no longer requires a logon. This allows guest users to submit a form that triggers an email notification via this API.
  • General Enhancements
    • JavaScript APIs now use Ext 3.2.1
    • Ext menus resize in a smoother manner.
    • A link to the server's JavaScript console is now available from the "Admin->Developer Links" menu.
    • Updated Documentation

Other Client APIs

  • Java client API
    • Now requires JDK 1.6+
    • Existing tools are encouraged to update their older JARs
    • Adds equivalents of the following JavaScript APIs:
      • LABKEY.Query.getQueryDetails()
      • LABKEY.Assay.saveBatch()
  • Rlabkey
    • saveResults.
      • Allows saving the results of R analyses back to the server as assay runs
    • requiresSelection option added to button configuration.
  • LabKey SQL
    • AGE(date1, date2, interval). New, three-parameter version of the function for calculating ages.
    • CAST ( AS ). This function lets you cast an expression as a type. CAST(R.d AS SQL_VARCHAR) is the same as CONVERT(R.d,SQL_VARCHAR).
    • Custom SQL queries now support the container filter parameter.
      • This lets you run a custom query over data from multiple folders at once.
      • For example, you can now write a single aggregate report across all folders that shows the count of NAb runs in each lab’s subfolder.
      • A container filter is settable through the "Views" menu or through the client API.


  • Areas of enhancement include:
    • Flow interface
    • Assay copy-to-study verification page, particularly on sites with large numbers of specimens.

Collaboration Tools

  • Issue Trackers
    • Improved UI for handling duplicate issues
      • The number of any duplicate bug is now rendered as a link. This provides ready access to duplicates.
      • A duplicate issue identifier is now required when an issue is resolved as a duplicate
      • Users can now edit the "Duplicate" field when reopening a bug.
      • Each issue now lists all related issues that have been marked as its duplicates.
      • Resolving a bug as a duplicate now automatically enters a descriptive comment in both the source and target bugs.
    • The existing "Issues" web part now includes a "New Issue" button. Previously this button was only available from the "Issues List" page
    • The new "Issues List" web part now can be added to any portal page. This web part displays the contents of an issue list.
  • Wikis
    • Author names now visible when you use the wiki "Compare With" menu available through the wiki's "History" page.
  • Messages
    • The number of users who will receive an "Admin Broadcast" message is now listed next to the checkbox that allows you to broadcast a mail. This helps you avoid accidental broadcasts.


  • Maximum size setting for files stored in the database.
    • By default, the maximum size is 50MB. This can be customized through the "Customize Site" page (accessed through Admin -> Site Settings).
  • Security improvements.
    • Enhanced security management interface. The folder tree interface on the permissions management page is now easier to use.
    • User passwords are now salted to increase system security.
    • Improved audit logging for failed logins.
  • Admin menu enhancements
    • For folders that have a study, "Manage Study" is now included in the Admin drop-down.
    • The "Developer Links" menu item now includes a link to the "Server JavaScript Console."
    • The Admin menu now floats at the right side of the page, so it does not get bumped beyond the browser's field of view on wide pages.
  • Version information for LabKey Server v10.2
    • Java 5 is no longer supported.
    • The installer now includes Tomcat 5.5.29
    • LabKey Server is now compatible with Tomcat 6.0.



  • Tutorial: Use URLs to Filter and Pass Data
  • Modules: Folder Types
  • Security administration
  • Message boards
  • Search
  • External Schemas
  • File Administration Guide
  • R API
  • Developer documentation structure simplified

Bug Fixes

For an exhaustive list of all issues resolved in 10.2, see Items Completed in 10.2


expand all collapse all