2022.2 adds more support for administrators to better manage code values used in the database. It introduces Virtual Dataviews and adds support to generate inventories for material sent for regeneration.

New features and API updates:

  • Generate "withdrawn Inventories" from OrderRequest
  • Virtual Dataviews and Lookups
  • CodeValue statistics API

Improvements and bug fixes:

  • Added missing @CodeValueField annotations to the model
  • Refuse deletion of used code values
  • Replace and remove a code value with another code
  • Fixed incorrect role check when accessing API with OAuth Client authentication
  • Use Lax HTTP ATiC cookie setting when not on https://
  • MCPD: Accession availability is based on current inventory data

Database changes:

  • Added withdrawn_inventory_id column to order_request_item (as foreign key to inventory table) to hold the optional reference to the withdrawn inventory.

Tracking withdrawn material

Distribution of germplasm generally does not require the genebank to maintain the same level of detail for the sample as for the material in the collection (meaning that we do not register a new Inventory record because we don't expect to monitor it in the future). Samples sent for viability or health testing may be tracked using the order_request_item_id since the test results will be applied back to the source inventory.

Select cases however require the genebank to manage the information about the withdrawn material. Samples sent for safety duplication should be handled as if they are just in a different room: you want to know the quantity, location, dates, etc. about everything that is backed up. Similarly, material sent for regeneration will (hopefully) come back to the genebank and the database should be ready to receive the fresh material when it arrives.

GGCE now allows you to generate Inventory records for such cases and will link each record with its source inventory and populate the necessary fields.

Managing Code Values

GGCE now protects code values from being removed from the database if they are currently in use. At the same time, it allows for removing unused codes and for merging two codes with the same meaning into one code. It is also able to detect any codes that are used in the database, but are missing definitions as Code Values (and translations).

Virtual Dataviews and Lookups

MSSQL database engine is primarily used for full compatibility with the Dataviews included with GG. We are making progress towards removing the dependency on MSSQL for GGCE server and the important first step is to avoid using sql_dataview and related tables.

GGCE introduces virtual dataviews and lookups that are generated from the object model and do not require manual updating of the sys_* data with the GG Admin Tool. Virtual dataviews and lookups still allow for using the Curator & Search Tools with GGCE for bulk data manipulation.


  • f2945ccd API: Fixed incorrect role check for /api access
  • ac4c7967 OrderRequestItem: Register inventory actions for new withdrawnInventory
  • 1404711a Virtual Lookups: Extracted VirtualLookupService
  • 43f1bdc5 Virtual Lookups: Added @LookupDisplay to entities
  • 2d2c262f SOAP: Fixed parsing dataview params
  • 5bb53baa Virtual Lookups: Consider @CodeVaueField on getter, only generate virtual lookup for audited models
  • c6904c31 Virtual Lookups: Added other entities to entityClassSet, added lookup value/display caching
  • 61ad6e4c Virtual Lookups: General implementation
  • 26235637 Virtual dataviews: cleanup and extra test
  • 66375bf4 Virtual dataviews: saveData() support
  • d75fe7ae Virtual dataviews: Cleanup for Search Tool
  • aed8d743 Virtual dataviews: getData() implementation
  • 26937fe2 Virtual dataviews: Added transient SysTableField#propertyName
  • b2b0964a Virtual dataviews: Initial implementation
  • 3cfb8afb CodeValue statistics API
  • 48473d6c GGCE: Inject Virtual Dataviews
  • 08c84f7c ATiC: Use Lax when not on https://
  • 4bfaa06a CodeValue: added endpoint for delete many
  • 5ba471c0 CodeValue: added endpoint for delete target
  • 25c2e76f Generating Inventories from OrderRequest endpoint
  • 0eda3b03 OrderRequestItem: added withdrawnInventory field
  • adc4dd25 Inventory: Updating quantityOnHand affects availability flag and availabilityStatusCode
  • 6ddd7ca3 MCPD: Accession availability is based on current inventory data
  • 54223044 CodeValues: Replace and remove a code value with another code
  • 0dbe72a7 CodeValues: Refuse deletion of used code values
  • 74b2d25e Added missing CodeValueFields
  • 94284525 Mock GG: Implementation of sys_table_field generation
  • b303dd0c Model: Updated annotations
  • 33de382b Mock GG: Initial implementation of SysTableComponent