This is a bug fix release.

  • A get call using the old (non-JPQL) syntax will now accept the INCLUDE keyword in lower or mixed case.


This is a bug fix release.

  • The methods logout and refresh when called with an expired or otherwise invalid sessionId now throw an exception of type SESSION rather than INTERNAL.
  • A small improvement to testicat has been made to show who you are logged in as.
  • The relationship from DataCollection to DataCollectionParameters is now called parameters and can be accessed by getParameters and setParameters.


This includes schema changes and a number of speculative features.

  • The "ICATCompat" service for backwards compatibility with ICAT 3.x has now been removed.
  • A method "void refresh(String sid)" has been added to refresh an ICAT session.
  • The notification mechanism has been completely changed.
  • It is not legal in queries with an INCLUDE to use a "1" in conjunction with and entity name. This will now reliably throw an exception.
  • A new call "boolean isAccessAllowed" has been created to test whether a specific access type is allowed.
  • A call has been provided to return all the available entity names. This is of more use to tools than regular users.
  • Column names in the Database table for UserGroup have been changed as they were inconsistent.
  • The Rule entities are now store in a database table called RULE_. for compatibility with Microsoft SQLServer.
  • A file indices.sql is being distributed with the .ear file with indices which may improve performance. You should assess whether or not each index will be useful to your installation for while an index can give a huge improvement to a query there is also a cost in maintaining an index.
  • JPA mappings for floating point numbers now use precision 38 and scale 19. This is still not good on Oracle as mentioned in the installation instructions.
  • testicat.py (which replaces test.py) expects https://hostname:port rather than a pair of parameters
  • Call logging has been added either to file or to a log table or both.
  • Lucene free text search has been included via the new searchText call.
  • Changed uniqueness constraints to:
    dataset, name (-location)
    investigation, name (-sample -type)
    facility, name, version (+facility)
    investigation, name (-type)
    facility, name, visitid (-facilityCycle -instrument)
    facility, name, molecularFormula (+molecularFormula)
  • Made all constraint fields not nullable. This is checked by ICAT to ensure that future changes do not break this rule.
  • Add a string attribute: "arguments" to the job to store the program arguments that were used.
  • Relationship between FacilityCycle and Investigation removed.
  • Table between Investigation and Instrument added to represent many-to-many relationships between them.
  • Added DataCollection and changed Job to make use if it.
  • Group has been changed to Grouping as Group is a JPQL keyword.
  • Add attribute 'url' to Instrument.
  • Added new alternate query syntax that may be used in queries and authz rules. It is distinguished by starting with the keyword "SELECT".
  • It is no longer considered an error to have no authz rules matching a search call - you just get no data back.
  • Packaging now conforms to http://code.google.com/p/icatproject/wiki/ComponentGuidelines
  • A command icatadmin has been introduced to perform operations for which the rule based authorization is not appropriate.
  • Expired sessions are cleaned out of the database every hour.
  • The generated client jar contains two packages: org.icatproject and org.icatproject_4_3_0. Normal users should use the org.icatproject one. The other exists primarily for TopCAT so that multiple ICAT clients can co-exist.
  • The installation mechanism now has a single setup Python script which works both on Linux and Windows.


This is a bug fix release. If you already have 4.2.0, 4.2.1, 4.2.2, 4.2.3 or 4.2.4 installed, then simply remove the old ear file and deploy the new one. If you have changed log4j.properties from the one supplied then add an entry to your icat.properties: log4j.properties = log4j.properties which tells the ICAT to use the existing log4j.properties file in the config directory rather than the built in one. If you have not changed it then it is preferable to delete the log4j.properties from the config directory to avoid any possible confusion. The log4j.properties file is no longer reread, if you have configured your own copy and wish to change it then you must at least reload ICAT for the properties file to be read again.

  • A significant leak has been fixed which was causing an unlimited number of threads to be created. This has been addressed by changing the way in which the log4j.properties file is read. Only if you have a line in the icat.properties identifying a specific log4j.properties file will that file be used, otherwise a default file packaged within the .ear file will be used.


This is a bug fix release. If you already have 4.2.0, 4.2.1, 4.2.2 or 4.2.3 installed, then simply remove the old ear file and deploy the new one.

  • Version number updated to 4.2.4 and test updated to ensure that the version corresponds to the maven project version.
  • LICENSE.txt file added to top directory of the source tree.
  • Creating an Investigation which refers to a new InvestigationUser now works properly.
  • Using INCLUDE with User and Group now works properly. Previously it could throw a null pointer exception.
  • Database requirements have been made more precise in the deployment instructions.


This is a bug fix release. If you already have 4.2.0, 4.2.1 or 4.2.2 installed, then simply remove the old ear file and deploy the new one.

  • Two different error conditions were not being handled correctly in calls to createMany when a user attempted to violate a uniqueness constraint. In the case of a conflict with a pre-existing entry in ICAT the offset returned was -1. In the case that there were duplicates in the list passed in the call to createMany - rather than conflicts with existing database entries - an IcatException of type INTERNAL was being thrown, also with an offset of -1. These bugs are now fixed.


This is a bug fix release. If you already have 4.2.0 or 4.2.1 installed, then simply remove the old ear file and deploy the new one.

  • A bug causing read access to be denied in certain circumstances, when it should have been permitted, has been fixed.
  • When attempting to format an error message about an invalid list of INCLUDES a null pointer exception is no longer thrown.


This is a bug fix release. If you already have 4.2.0 installed, then simply remove the old ear file and deploy the new one.

  • Authorization rules without explicit relationships to groups (of the form "Investigation <-> InvestigationUser <-> User [name = :user]") now work properly.
  • It is now possible to use boolean values in queries. Attributes can be compared against literal values of TRUE and FALSE (not case sensitive) as in "ParameterType [enforced = TRUE]"
  • Null pointer exceptions were being throw with some authorization rules when using an Oracle database. This has now been fixed.


This introduces a clean mechanism for handling authentication plugins and provides significant speed enhancements.

  • ICAT now contains no authentication plugins but it does provide an Authenticator interface for plugin writers. If you plan to use the new authn_db database authentication plugin you will need to manually move data from the old table to the new passwd table.
  • The login call now accepts two parameters, the mnemonic for the authentication plugin and a map of credentials. This change necessitated the increase in the version number to 4.2.
  • There was a serious performance bug in release 4.1 and to a lesser extent in 4.0. In both case this affected read operations - search and get. This bug in the marshalling of the XML has now been addressed.
  • Previously JMS messages had the property "query" set to the primary key and the actual query value was not available. They are now assigned correctly to the properties "query" and "entityId".
  • You will need an up-to-date version of JAX-WS such as the one packaged with Glassfish 3.1.2
  • The main database schema is almost unchanged. The only difference is that some text fields have been made larger.
  • A bug has been fixed in the handling of enum types in expressions.


This is a bug fix release.

  • Aggregate functions (MIN, MAX, AVG, COUNT etc) no longer generate an internal exception.
  • Minor improvements to the installation documentation.


This is the first release of ICAT4 which is meant to be approaching production quality.

  • More changes to the API - too numerous to list here providing
    • support for pluggable authn,
    • support for rule based authz,
    • support for notifications and
    • a powerful search mechanism
  • Database independent
  • More regular schema with simple provenance mechanism


Technology preview release - not for production use

  • Many changes to the API


  • Changed the JPA provider from TopLink to EclipseLink
  • Removed Dataportal from the installation


Public release