<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.bgbm.org/bps/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JoergHoletschek</id>
	<title>BioCASe Provider Software - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.bgbm.org/bps/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JoergHoletschek"/>
	<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php/Special:Contributions/JoergHoletschek"/>
	<updated>2026-07-10T01:17:59Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1220</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1220"/>
		<updated>2026-01-30T09:59:49Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Upcoming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.9 [2026-01-30] ===&lt;br /&gt;
* DarwinCore archive transformation&lt;br /&gt;
** DwC terms &#039;&#039;recordedByID&#039;&#039;, &#039;&#039;identifiedByID&#039;&#039;, &#039;&#039;scientificNameID&#039;&#039;, &#039;&#039;associatedSequences&#039;&#039; and &#039;&#039;preparations&#039;&#039; are now filled from respective ABCD fields.&lt;br /&gt;
** &#039;&#039;License/Text&#039;&#039; and &#039;&#039;License/URI&#039;&#039; from ABCD are now stored in &#039;&#039;intellectualRights&#039;&#039; paragraph in EML document, so that license can be parsed from GBIF (and the DwC archives successfully pass the GBIF Data Validator test).&lt;br /&gt;
* New ABCD subversion 2.06g added. This subversion allows semantic annotation of scientificName, identifierPerson and gatheringAgent (using &#039;&#039;ResourceURI&#039;&#039; data elements).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.8 [2025-08-05] ===&lt;br /&gt;
* Usage of cgi-traceback module removed (dropped in Python v3.13)&lt;br /&gt;
* Legcacy-cgi included in BPS (dropped in Python v3.13)&lt;br /&gt;
* Default webroot changed to &amp;quot;/&amp;quot; in Docker image&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.7 [2025-03-06] ===&lt;br /&gt;
* Code repo moved to git: https://git.bgbm.org/biocase/bps&lt;br /&gt;
* Update hint now uses link to new Git repo instead of Subversion&lt;br /&gt;
* Use alternative DB connector pymysql if importing MySQLdb fails (apparently on latest Ubuntu distributions). Thanks to Kjell-Åke Lundblad from Nordic Genetic Resource Center for this!&lt;br /&gt;
* Miscellaneous optimisations in Docker image (multistage build &amp;amp; chained RUN statements for smaller image size, separate Apache config file, no root user) thanks to Petr Novotný from Prague university!&lt;br /&gt;
&lt;br /&gt;
===  Version 3.8.6 [2024-12-12] ===&lt;br /&gt;
* Timeout added for the request to retrieve latest version from subversion repository&lt;br /&gt;
* Archiving page: List schemas in dropdown box in descending order, so that ABCD 2.1 shows before 2.06 before 1.2&lt;br /&gt;
* QueryTool: Changed default schema from ABCD 2.1 to ABCD 2.06, since this is used more commonly&lt;br /&gt;
* Fix for DwC archives: occurrenceStatus and occurrencID had been swapped in descriptor file meta.xml&lt;br /&gt;
* DwC archive transformation: BasisOfRecord=&amp;quot;AbsenceObservation&amp;quot; will be translated into &amp;quot;HumanObservation&amp;quot;, since AbsenceObservation is not accepted by GBIF.&lt;br /&gt;
* Dockerfile adapted to latest Debian version and Python 3.13&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.5 [2023-11-30] ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1219</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1219"/>
		<updated>2026-01-30T09:54:46Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Upcoming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Upcoming ===&lt;br /&gt;
* DarwinCore archive transformation&lt;br /&gt;
** DwC terms &#039;&#039;recordedByID&#039;&#039;, &#039;&#039;identifiedByID&#039;&#039;, &#039;&#039;scientificNameID&#039;&#039;, &#039;&#039;associatedSequences&#039;&#039; and &#039;&#039;preparations&#039;&#039; are now filled from respective ABCD fields.&lt;br /&gt;
** &#039;&#039;License/Text&#039;&#039; and &#039;&#039;License/URI&#039;&#039; from ABCD are now stored in &#039;&#039;intellectualRights&#039;&#039; paragraph in EML document, so that license can be parsed from GBIF (and the DwC archives successfully pass the GBIF Data Validator test).&lt;br /&gt;
* New ABCD subversion 2.06g added. This subversion allows semantic annotation of scientificName, identifierPerson and gatheringAgent (using &#039;&#039;ResourceURI&#039;&#039; data elements).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.8 [2025-08-05] ===&lt;br /&gt;
* Usage of cgi-traceback module removed (dropped in Python v3.13)&lt;br /&gt;
* Legcacy-cgi included in BPS (dropped in Python v3.13)&lt;br /&gt;
* Default webroot changed to &amp;quot;/&amp;quot; in Docker image&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.7 [2025-03-06] ===&lt;br /&gt;
* Code repo moved to git: https://git.bgbm.org/biocase/bps&lt;br /&gt;
* Update hint now uses link to new Git repo instead of Subversion&lt;br /&gt;
* Use alternative DB connector pymysql if importing MySQLdb fails (apparently on latest Ubuntu distributions). Thanks to Kjell-Åke Lundblad from Nordic Genetic Resource Center for this!&lt;br /&gt;
* Miscellaneous optimisations in Docker image (multistage build &amp;amp; chained RUN statements for smaller image size, separate Apache config file, no root user) thanks to Petr Novotný from Prague university!&lt;br /&gt;
&lt;br /&gt;
===  Version 3.8.6 [2024-12-12] ===&lt;br /&gt;
* Timeout added for the request to retrieve latest version from subversion repository&lt;br /&gt;
* Archiving page: List schemas in dropdown box in descending order, so that ABCD 2.1 shows before 2.06 before 1.2&lt;br /&gt;
* QueryTool: Changed default schema from ABCD 2.1 to ABCD 2.06, since this is used more commonly&lt;br /&gt;
* Fix for DwC archives: occurrenceStatus and occurrencID had been swapped in descriptor file meta.xml&lt;br /&gt;
* DwC archive transformation: BasisOfRecord=&amp;quot;AbsenceObservation&amp;quot; will be translated into &amp;quot;HumanObservation&amp;quot;, since AbsenceObservation is not accepted by GBIF.&lt;br /&gt;
* Dockerfile adapted to latest Debian version and Python 3.13&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.5 [2023-11-30] ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1215</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1215"/>
		<updated>2025-12-11T17:03:32Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Upcoming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Upcoming ===&lt;br /&gt;
* DarwinCore archive transformation&lt;br /&gt;
** DwC terms &#039;&#039;recordedByID&#039;&#039;, &#039;&#039;identifiedByID&#039;&#039;, &#039;&#039;scientificNameID&#039;&#039;, &#039;&#039;associatedSequences&#039;&#039; and &#039;&#039;preparations&#039;&#039; are now filled from respective ABCD fields.&lt;br /&gt;
** &#039;&#039;License/Text&#039;&#039; and &#039;&#039;License/URI&#039;&#039; from ABCD are now stored in &#039;&#039;intellectualRights&#039;&#039; paragraph in EML document, so that license can be parsed from GBIF (and the DwC archives successfully pass the GBIF Data Validator test).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.8 [2025-08-05] ===&lt;br /&gt;
* Usage of cgi-traceback module removed (dropped in Python v3.13)&lt;br /&gt;
* Legcacy-cgi included in BPS (dropped in Python v3.13)&lt;br /&gt;
* Default webroot changed to &amp;quot;/&amp;quot; in Docker image&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.7 [2025-03-06] ===&lt;br /&gt;
* Code repo moved to git: https://git.bgbm.org/biocase/bps&lt;br /&gt;
* Update hint now uses link to new Git repo instead of Subversion&lt;br /&gt;
* Use alternative DB connector pymysql if importing MySQLdb fails (apparently on latest Ubuntu distributions). Thanks to Kjell-Åke Lundblad from Nordic Genetic Resource Center for this!&lt;br /&gt;
* Miscellaneous optimisations in Docker image (multistage build &amp;amp; chained RUN statements for smaller image size, separate Apache config file, no root user) thanks to Petr Novotný from Prague university!&lt;br /&gt;
&lt;br /&gt;
===  Version 3.8.6 [2024-12-12] ===&lt;br /&gt;
* Timeout added for the request to retrieve latest version from subversion repository&lt;br /&gt;
* Archiving page: List schemas in dropdown box in descending order, so that ABCD 2.1 shows before 2.06 before 1.2&lt;br /&gt;
* QueryTool: Changed default schema from ABCD 2.1 to ABCD 2.06, since this is used more commonly&lt;br /&gt;
* Fix for DwC archives: occurrenceStatus and occurrencID had been swapped in descriptor file meta.xml&lt;br /&gt;
* DwC archive transformation: BasisOfRecord=&amp;quot;AbsenceObservation&amp;quot; will be translated into &amp;quot;HumanObservation&amp;quot;, since AbsenceObservation is not accepted by GBIF.&lt;br /&gt;
* Dockerfile adapted to latest Debian version and Python 3.13&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.5 [2023-11-30] ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1214</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1214"/>
		<updated>2025-12-11T09:42:50Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Current Version 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Upcoming ===&lt;br /&gt;
* DarwinCore archive transformation: DwC terms recordedByID, identifiedByID, scientificNameID, associatedSequences and preparations are now filled from respective ABCD fields.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.8 [2025-08-05] ===&lt;br /&gt;
* Usage of cgi-traceback module removed (dropped in Python v3.13)&lt;br /&gt;
* Legcacy-cgi included in BPS (dropped in Python v3.13)&lt;br /&gt;
* Default webroot changed to &amp;quot;/&amp;quot; in Docker image&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.7 [2025-03-06] ===&lt;br /&gt;
* Code repo moved to git: https://git.bgbm.org/biocase/bps&lt;br /&gt;
* Update hint now uses link to new Git repo instead of Subversion&lt;br /&gt;
* Use alternative DB connector pymysql if importing MySQLdb fails (apparently on latest Ubuntu distributions). Thanks to Kjell-Åke Lundblad from Nordic Genetic Resource Center for this!&lt;br /&gt;
* Miscellaneous optimisations in Docker image (multistage build &amp;amp; chained RUN statements for smaller image size, separate Apache config file, no root user) thanks to Petr Novotný from Prague university!&lt;br /&gt;
&lt;br /&gt;
===  Version 3.8.6 [2024-12-12] ===&lt;br /&gt;
* Timeout added for the request to retrieve latest version from subversion repository&lt;br /&gt;
* Archiving page: List schemas in dropdown box in descending order, so that ABCD 2.1 shows before 2.06 before 1.2&lt;br /&gt;
* QueryTool: Changed default schema from ABCD 2.1 to ABCD 2.06, since this is used more commonly&lt;br /&gt;
* Fix for DwC archives: occurrenceStatus and occurrencID had been swapped in descriptor file meta.xml&lt;br /&gt;
* DwC archive transformation: BasisOfRecord=&amp;quot;AbsenceObservation&amp;quot; will be translated into &amp;quot;HumanObservation&amp;quot;, since AbsenceObservation is not accepted by GBIF.&lt;br /&gt;
* Dockerfile adapted to latest Debian version and Python 3.13&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.5 [2023-11-30] ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1213</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1213"/>
		<updated>2025-08-05T11:53:44Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Installing BioCASe from a Docker image */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This part of the wiki explains how to install the BioCASe Provider Software. Depending on your skills, it should take between 15 and 60 minutes. If you’re a beginner, please read the [[BeginnersGuide|Beginner’s Guide]] first.&lt;br /&gt;
&lt;br /&gt;
== Requirements and Considerations ==&lt;br /&gt;
Before installing, please make sure that the system you’re intending to install the BPS on meets the following requirements (If you find out one of these items is not met, please ask your system administrator for help, read the [[FAQ]] or get in [[Special:Contact|contact with the BioCASe Team]].):&lt;br /&gt;
&lt;br /&gt;
# You have administrative privileges on this machine, i.e. the user rights to install new software packages.&lt;br /&gt;
# It is accessible from outside your institution. This means it either needs to be outside any institutional firewall or, more likely, the HTTP port is open for an existing firewall.&lt;br /&gt;
# A direct connection can be established from this machine to the database to be published – either because there’s no firewall in between, or the port used by the DBMS is open (e. g. 3306 for MySQL).&lt;br /&gt;
&lt;br /&gt;
In addition to the regular installation, you can install BioCASe from a Docker image. Docker is an operating-system-level virtualization software that allows easy software deployment in so-called containers. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide]. &#039;&#039;&#039;If you&#039;re famliar with Docker, we&#039;d suggest to use the Docker path for installing BioCASe&#039;&#039;&#039; - read more in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]] below.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Installing BioCASe from a Docker image ==&lt;br /&gt;
&lt;br /&gt;
Good choice! Installing BioCASe from a Docker image is much easer than installing the required components step-by-step. In addition, it&#039;s easier to update an existing installation. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide] first.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; BioCASe requires Docker version 17 or later. If you already have Docker installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
&lt;br /&gt;
For installing BioCASe from the Docker image, please follow these steps:&lt;br /&gt;
&lt;br /&gt;
# If you&#039;re not using Linux, install the &#039;&#039;make&#039;&#039; tool from https://gnuwin32.sourceforge.net/packages/make.htm.&lt;br /&gt;
# Install Docker Community Edition (Docker CE). For detailed instructions, see [https://docs.docker.com/install/ About Docker CE] and choose the tutorial for your platform. To make sure Docker is properly installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
# Download the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] that contains the commands for installing and updating BioCASe. Use &amp;quot;Save as...&amp;quot; to store it to your home folder on the server machine.&lt;br /&gt;
# Open a terminal window and change the work directory to the location you&#039;ve just saved the Makefile to. Then type in &#039;&#039;make install&#039;&#039; and press enter. This should download the latest BioCASe image, create a BioCASe container and run it.&lt;br /&gt;
&lt;br /&gt;
Per default, Docker will use port 80 for BioCASe. If this port is already used by another application on your server, you can instruct Docker to use another port. For using port 8181, for example, type in &#039;&#039;make install PORT=8181&#039;&#039; instead:&lt;br /&gt;
&lt;br /&gt;
[[File:DockerInstall.png|650px]]&lt;br /&gt;
&lt;br /&gt;
Voilà, that&#039;s it! To check your BioCASe installation, use your Browser to go to &#039;&#039;http://&amp;lt;dockerhost&amp;gt;&#039;&#039; (or &#039;&#039;http://&amp;lt;dockerhost&amp;gt;:8181&#039;&#039; if you used port 8181). Don&#039;t forget to [[Installation#Changing_the_Default_Password | change the default password]].&lt;br /&gt;
&lt;br /&gt;
You can also use the Makefile for stopping and starting the BioCASe container (for example, if you restart your server each night automatically) - just type &#039;&#039;make stop&#039;&#039; and &#039;&#039;make start&#039;&#039;. For removing the container, use &#039;&#039;make remove&#039;&#039;, for updating your BioCASe installation &#039;&#039;make update&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tell BioCASe your dockerhost&#039;&#039;&#039; Last thing to do is to tell BioCASe the name of your dockerhost: On the start page of BioCASe, choose  &amp;lt;small&amp;gt;Config Tool&amp;lt;/small&amp;gt;, then  &amp;lt;small&amp;gt;System Administration&amp;lt;/small&amp;gt;. Enter the password you just set and click &amp;lt;small&amp;gt;Submit&amp;lt;/small&amp;gt;. Type in the URL you just used in your browser (&#039;&#039;http://&amp;lt;dockerhost&amp;gt;&#039;&#039; or &#039;&#039;http://&amp;lt;dockerhost&amp;gt;:8181&#039;&#039; if you used port 8181) in the first line as &amp;lt;small&amp;gt;Webserver domain&amp;lt;/small&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; The configuration and the log files of your BioCASe installation, as well as any XML and DwC archives created, will be stored in Docker hosted volumes. That means they are stored outside of the BioCASe container and will be preserved, even when the container is removed (actually, that&#039;s what happens if you update your installation). Docker hosted volumes are stored in the &#039;&#039;volumes&#039;&#039; folder of your docker installation, e.g. /var/lib/docker/volumes. If you want to backup the configuration of your BioCASe installation, just backup the folder /var/lib/docker/volumes/bps_config. To learn more about docker hosted volumes, please refer to the [https://docs.docker.com/storage/volumes/ Docker guide].&lt;br /&gt;
&lt;br /&gt;
== Regular BioCASe Installation ==&lt;br /&gt;
This is the path to choose if you haven&#039;t heard of [https://www.docker.com/ Docker] yet. If you have experience with this virtualisation software, we&#039;d suggest to install BioCASe from the Docker image (instructions in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]]).&lt;br /&gt;
&lt;br /&gt;
BioCASe runs on both Windows and Linux machines. Two thoughts to consider for you:&lt;br /&gt;
* If you want to use ODBC to connect to your database (for example to an Access database), you should make sure that an ODBC driver is available for the OS of your choice. For an Access database, for example, such a ODBC driver is available only for Windows - so you should go for Windows.&lt;br /&gt;
* If you don&#039;t wanna use ODBC, because you plan to connect to a wide-spread DB system such as MySQL, Postgres or MS SQL Server, we recommend Linux (Debian).&lt;br /&gt;
&lt;br /&gt;
=== Installing Apache/IIS and Python ===&lt;br /&gt;
If you’re using a Linux system, you probably don’t need to install either, since Apache and Python are usually preinstalled. Same holds true for MacOS, but you should have a look at one of the articles on the web to find out about the file locations.&lt;br /&gt;
&lt;br /&gt;
Even though the BPS runs with both Apache and Internet Information Server (IIS), we recommend using Apache, which is much easier to configure. However, if you’re already using IIS, you might want to stick with that.&lt;br /&gt;
&lt;br /&gt;
The BPS requires Python 3.7+ to run, it doesn&#039;t work with Python 2, which ended its life cycle in 2020 (same is true for Python 3 versions &amp;lt; 3.7). On most Linux systems, Python 3 will be pre-installed. If not, you should be able to install Python using &#039;&#039;apt-get update&#039;&#039; and &#039;&#039;apt-get install python&#039;&#039;. (By the way: You can install several different Python versions on the same machine without any conflicts.)&lt;br /&gt;
&lt;br /&gt;
If you’re installing on a Windows Vista (poor you) or Windows 7 machine, we recommend not to install Apache in the default program files folder, since there is some magic spell on that which can get you into trouble when changing Apache’s configuration files. Just choose another path (Apache Software Foundation?) to spare that hassle.&lt;br /&gt;
&lt;br /&gt;
Once you’ve successfully installed Apache and Python, you can proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
=== Downloading and unpacking the Provider Software ===&lt;br /&gt;
You can find the latest release of BioCASe on our [https://git.bgbm.org/biocase/bps/-/releases/permalink/latest Git page]. There are two archives available for download:&lt;br /&gt;
* The [https://git.bgbm.org/biocase/bps/-/archive/3.8.6/bps-3.8.6.zip default package (recommended)] contains the full installation and allows the generation of DarwinCore archives. For this feature, the [https://github.com/pentaho/pentaho-kettle Kettle libraries] are included in the download.&lt;br /&gt;
* The [https://www.biocase.org/products/provider_software/files/bps-3.8.6-minimal.zip minimal package] doesn&#039;t contain the Kettle libraries, hence it&#039;s not possible to create DarwinCore archives with such an installation. Choose this download only if you have a good reason to do so.&lt;br /&gt;
&lt;br /&gt;
Download the file to your server and unpack it to the desired location of your file system. It contains the BioCASe Provider Software in a folder that contains the version number, e.g. &#039;&#039;bps-3.8.0&#039;&#039;. We recommend to rename it to something that doesn&#039;t include the version number, so you don&#039;t need to touch your web server&#039;s configuration during future updates.&lt;br /&gt;
&lt;br /&gt;
For the remainder of this guide, we will assume you’ve installed the BPS into a folder named &#039;&#039;biocase&#039;&#039;, which should look like this by now:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseFolder.png|650px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the Setup Script ===&lt;br /&gt;
The setup script will initiate the configuration files with values you provide and point the script files to your Python installation (you can re-run the setup script in case that location changes). If you want to modify any of settings you made during the setup, you can change the values in the configuration tool later.&lt;br /&gt;
&lt;br /&gt;
In order to run the script, open a terminal window (or “command prompt” in Windows). Change the working directory to the folder you’ve downloaded the BPS to (&#039;&#039;biocase&#039;&#039;) and type in:&amp;lt;pre&amp;gt;python setup.py&amp;lt;/pre&amp;gt; In case Python is not found, you’ll have to add the full path name to the Python executable. Make sure the Python version given in the fifth line of the output is the one you desire (otherwise add the path to the correct executable):&lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptStart.png|550px]]&lt;br /&gt;
&lt;br /&gt;
The questions asked by the setup script do have defaults. If you want to keep them, just press &amp;lt;small&amp;gt;Return&amp;lt;/small&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Webserver domain:&amp;lt;/strong&amp;gt; This is the domain name of the web server you’re installing BioCASe on, e.g. &#039;&#039;http://www.myinstitution.org&#039;&#039;.  You can keep the default &#039;&#039;localhost&#039;&#039; as long as you’re configuring and testing the installation locally; for production you’ll need to change that into the correct domain name (or IP address) later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Base URL:&amp;lt;/strong&amp;gt; This will become the second part of the URL your installation will use. If you keep the default biocase, your installation will be accessible later at &#039;&#039;www.myinstitution.org/biocase&#039;&#039;, for example.&lt;br /&gt;
&lt;br /&gt;
After answering these two questions, the script will update your files. At the end of the output you can find the lines you&#039;ll need later to create the link between BioCASe and your web server, so do not close the window! &lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptDone.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Linking BioCASe and Your Web Server ===&lt;br /&gt;
&lt;br /&gt;
The public part of the provider software is stored in the &#039;&#039;www&#039;&#039; subfolder of your BioCASe installation and must be configured in your web server as a public folder. You should always make this folder public using a virtual directory: This means that you should never install BioCASe under the default root folder of your web server. Doing so can compromise your server security and will allow people to see your configuration files (which include passwords). So since we installed BioCASe in &#039;&#039;c:\biocase&#039;&#039;, the folder that must be published with a virtual directory is &#039;&#039;c:\biocase\www&#039;&#039; and will be accessible later through &#039;&#039;http://www.myinstitution.org/biocase&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Apache ====&lt;br /&gt;
If you use Apache, adding the BioCASe folder to your web server environment is as simple as copying the lines printed at the end of the setup script to the end of the Apache configuration file &#039;&#039;httpd.conf&#039;&#039;. This can typically be found in the &#039;&#039;conf&#039;&#039; folder of your Apache installation. If you’re adding BioCASe to an already productive web server, please ask the server admin before doing any changes!&lt;br /&gt;
&lt;br /&gt;
[[image:instHttpdConf.png|550px]] &lt;br /&gt;
&lt;br /&gt;
Save the file and restart Apache for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
==== Internet Information Server ====&lt;br /&gt;
&lt;br /&gt;
If you use Internet Information Server, you need to create a virtual directory for the folder &#039;&#039;c:\biocase\www&#039;&#039; using the IIS Server Manager. Grant all rights for this directory (Read, Write, Script Execution, Directory listing). You should also add &#039;&#039;index.html&#039;&#039; to the list of default documents (&amp;lt;small&amp;gt;Virtual Directory &amp;gt; Properties &amp;gt; Documents &amp;gt; Default&amp;lt;/small&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
In order to associate Python scripts with Python in IIS 5/6, you need to use the &amp;lt;small&amp;gt;Configure&amp;lt;/small&amp;gt; button on the virtual directory tab and associate the file extensions .cgi and .py with Python (see screenshot below). In IIS 7, you can open this dialog by choosing &amp;lt;small&amp;gt;Add Script Map&amp;lt;/small&amp;gt;. Note the placeholders &#039;&#039;%s %s&#039;&#039; after the Python executable!&lt;br /&gt;
&lt;br /&gt;
[[File:instAddScriptMap.png|330px]]&lt;br /&gt;
&lt;br /&gt;
If you run into problems configuring IIS, you should have a look at the tutorials available on the web, for example&lt;br /&gt;
* http://haishibai.blogspot.de/2011/02/setting-up-python-on-iis-7_01.html&lt;br /&gt;
* http://support.microsoft.com/kb/276494&lt;br /&gt;
&lt;br /&gt;
==== Testing the Link ====&lt;br /&gt;
&lt;br /&gt;
Once you’re done, you can test your BioCASe Installation by opening a browser and typing in &#039;&#039;http://localhost/biocase&#039;&#039; (replace &#039;&#039;localhost&#039;&#039; with the domain name of the machine you installed BioCASe on, if you’re not working locally). You should then see the start page of the BPS:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseStartpage.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Installing Additional Python Packages/Java/Graphviz ===&lt;br /&gt;
&lt;br /&gt;
Before you can start configuring your installation, you need to install additional packages, depending on the management system used for the database to be published and the functions of the BPS you intend to use.&lt;br /&gt;
&lt;br /&gt;
On the BPS start page, click on &amp;lt;small&amp;gt;Utilities&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;library test&amp;lt;/small&amp;gt; in order to navigate to the library test page that shows the status of installed libraries. On a fresh BPS installation, only the BioCASe libraries should be installed, since they&#039;re part of the archive file you’ve downloaded (or the Subversion repository you checked out from):&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesVanilla.png|550px]]&lt;br /&gt;
&lt;br /&gt;
If you plan to use the Local Query Tool (a small portal for querying and browsing your BioCASe webservice), you need to install the lxml library. You can do this easily by running the Python Package Installer (PIP): &#039;&#039;pip install lxml&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For each DBMS you plan to use with BioCASe (i.e. you have a database you want to publish with BioCASe), you’ll have to install the corresponding package. So if your collection is stored in a MySQL database, you&#039;ll need the MySQLdb library; the table shows you the command to run for installing it using pip: &#039;&#039;pip install mysqlclient&#039;&#039;. Once pip has installed the package, reload the libraries test page. The according list entry should turn from an orange &#039;&#039;not installed&#039;&#039; into a green version number. Redo this process for all DBMS you want to connect to.&lt;br /&gt;
&lt;br /&gt;
The Graphviz library listed under optional external binaries is used by the BPS to create a graph of your database’s data model in the table setup (you will learn in the [[DatasourceSetup#Setting_up_the_Database_Structure|Table Setup]] about this). If the data model is very simple (i.e., not more than 3 or 4 tables), you probably can spare the effort of installing Graphviz. Otherwise we recommend installing it: Simply click on the Download link and install the package using an installer file or a package manager on Linux.&lt;br /&gt;
&lt;br /&gt;
If you want to create DarwinCore Archives for your web services, you also need to install a Java Runtime Environment (JRE). BioCASe requires Java 1.8 or later for creating DarwinCore archives, so please check the version listed on the Testlibs page if it&#039;s already installed on the server.&lt;br /&gt;
&lt;br /&gt;
=== Changing the Default Password ===&lt;br /&gt;
&lt;br /&gt;
The configuration tool is a browser interface that allows you to configure almost every aspect of the BPS. As a last step of the setup, you should change the password.&lt;br /&gt;
&lt;br /&gt;
Go back to the Start page of the BPS (by clicking &amp;lt;small&amp;gt;Start&amp;lt;/small&amp;gt; at the top of the page, or by retyping &#039;&#039;http://localhost/biocase&#039;&#039; if the server is running on your computer), choose &amp;lt;small&amp;gt;Config Tool&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;System Administration&amp;lt;/small&amp;gt;. You will then be prompted for a password. Type in the default &#039;&#039;ACDC&#039;&#039;, then click &amp;lt;small&amp;gt;Submit&amp;lt;/small&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The top of the configuration page you’ll be directed to should look similar to this:&lt;br /&gt;
&lt;br /&gt;
[[image:instConfigTool.png|500px]]&lt;br /&gt;
&lt;br /&gt;
In the first two lines, you’ll see the values you entered during the setup script (in this case, the defaults &#039;&#039;localhost&#039;&#039; and &#039;&#039;biocase&#039;&#039;). In the fourth line, enter a new password. Please be careful when typing (if you forget the password some day, you can reset it by directly editing the configuration file). Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the new password to the configuration file.&lt;br /&gt;
&lt;br /&gt;
In case you’ve installed Graphviz, you need to tell the BPS the location of the binaries, since it is not a Python package that will be registered automatically. In order to do so, locate the Graphviz installation on your local disk and enter the path to the binary executable into the text box labelled &amp;lt;small&amp;gt;Path to Graphviz executable&amp;lt;/small&amp;gt;. On Linux machines it might look similar to the default (&#039;&#039;/usr/local/bin/dot&#039;&#039;), on Windows machines it will be probably something like &#039;&#039;C:/Program Files/Graphviz 2.44.1/bin/&#039;&#039;. Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the path.&lt;br /&gt;
&lt;br /&gt;
=== Checking Your Installation ===&lt;br /&gt;
&lt;br /&gt;
Before you proceed to the configuration, you should make sure everything is installed correctly:&lt;br /&gt;
&lt;br /&gt;
# Typing in &#039;&#039;http://localhost/biocase&#039;&#039; (or the appropriate values of your installation) takes you to the entry page of the provider software (as shown in the section [[#Linking_BioCASe_and_Your_Web_Server|Linking BioCASe and Your Web Server]]).&lt;br /&gt;
# The libraries test page (&amp;lt;small&amp;gt;Utilities &amp;gt; library test&amp;lt;/small&amp;gt;) shows you’ve installed the packages for your DBMS, lxml (if you want to use the Local Query Tool), Java (if you want to create DarwinCore Archives) and the Graphviz dot (if you decided so).&lt;br /&gt;
# &amp;lt;small&amp;gt;Status of writeable directories&amp;lt;/small&amp;gt; shows a green &amp;lt;small&amp;gt;writeable&amp;lt;/small&amp;gt; for all four directories. If not, the path to problematic file will be given – please grant write access to Python.&lt;br /&gt;
&lt;br /&gt;
If you want to connect BioCASe to a variety of different database management systems, create DarwinCore archives and use the QueryTool, the libraries test pages should look like this:&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesDone.png|650px]]&lt;br /&gt;
&lt;br /&gt;
== Updating an existing BioCASe Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Updating a BioCASe Docker installation ===&lt;br /&gt;
This is very simple with the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] you downloaded for installing BioCASe. Just go to the folder where you stored the file and run &#039;&#039;make update&#039;&#039;. This will stop and remove the BioCASe container, download the latest BioCASe image and create/start a new BioCASe container. Since the configuration files are not stored within the container, all your data sources will be preserved.&lt;br /&gt;
&lt;br /&gt;
=== Updating a regular BioCASe installation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Important Note&amp;lt;/u&amp;gt;&#039;&#039;&#039;: If you have a running BioCASe installation, you shouldn’t touch it until you’ve successfully installed a new version. So keep the old installation instead of replacing it!&lt;br /&gt;
&lt;br /&gt;
==== Updating from version 2.5 or later ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# Change directory to the new installation and run setup script. When asked whether to import the configuration from an old installation, answer yes. The setup script will now import the configuration of the old installation, including the data sources.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;br /&gt;
&lt;br /&gt;
==== Updating from older versions &amp;lt; 2.5 ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version; moreover, you will need the configuration files later.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# [[Installation#Running_the_Setup_Script|Run the setup script]]. When asked whether to import the configuration from an old installation, just press Return (defaults to no). Make sure to provide the the same base URL that was used by the old installation (for example &#039;&#039;/biocase&#039;&#039;).&lt;br /&gt;
# [[Installation#Changing_the_Default_Password|Change the default password]] of the new installation to the one you used in the old installation.&lt;br /&gt;
# Open the file &#039;&#039;config/config.ini&#039;&#039; of your old installation in a text editor. Open the config tool of the new installation and navigate to the System Administration page. Compare the settings in the section &amp;lt;small&amp;gt;Server configuration&amp;lt;/small&amp;gt; with the values you can find in the old configuration file and change them, if necessary (leave values unchanged if you don&#039;t find them in the old file). Press &amp;lt;small&amp;gt;Update config&amp;lt;/small&amp;gt;.&lt;br /&gt;
# Last, copy the configuration of the BioCASe web services: Open the folder &#039;&#039;config/datasources&#039;&#039; of your old installation and copy all subfolders to &#039;&#039;config/datasources&#039;&#039; of your new installation.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1212</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1212"/>
		<updated>2025-08-05T11:51:51Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Installing BioCASe from a Docker image */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This part of the wiki explains how to install the BioCASe Provider Software. Depending on your skills, it should take between 15 and 60 minutes. If you’re a beginner, please read the [[BeginnersGuide|Beginner’s Guide]] first.&lt;br /&gt;
&lt;br /&gt;
== Requirements and Considerations ==&lt;br /&gt;
Before installing, please make sure that the system you’re intending to install the BPS on meets the following requirements (If you find out one of these items is not met, please ask your system administrator for help, read the [[FAQ]] or get in [[Special:Contact|contact with the BioCASe Team]].):&lt;br /&gt;
&lt;br /&gt;
# You have administrative privileges on this machine, i.e. the user rights to install new software packages.&lt;br /&gt;
# It is accessible from outside your institution. This means it either needs to be outside any institutional firewall or, more likely, the HTTP port is open for an existing firewall.&lt;br /&gt;
# A direct connection can be established from this machine to the database to be published – either because there’s no firewall in between, or the port used by the DBMS is open (e. g. 3306 for MySQL).&lt;br /&gt;
&lt;br /&gt;
In addition to the regular installation, you can install BioCASe from a Docker image. Docker is an operating-system-level virtualization software that allows easy software deployment in so-called containers. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide]. &#039;&#039;&#039;If you&#039;re famliar with Docker, we&#039;d suggest to use the Docker path for installing BioCASe&#039;&#039;&#039; - read more in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]] below.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Installing BioCASe from a Docker image ==&lt;br /&gt;
&lt;br /&gt;
Good choice! Installing BioCASe from a Docker image is much easer than installing the required components step-by-step. In addition, it&#039;s easier to update an existing installation. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide] first.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; BioCASe requires Docker version 17 or later. If you already have Docker installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
&lt;br /&gt;
For installing BioCASe from the Docker image, please follow these steps:&lt;br /&gt;
&lt;br /&gt;
# If you&#039;re not using Linux, install the &#039;&#039;make&#039;&#039; tool from https://gnuwin32.sourceforge.net/packages/make.htm.&lt;br /&gt;
# Install Docker Community Edition (Docker CE). For detailed instructions, see [https://docs.docker.com/install/ About Docker CE] and choose the tutorial for your platform. To make sure Docker is properly installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
# Download the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] that contains the commands for installing and updating BioCASe. Use &amp;quot;Save as...&amp;quot; to store it to your home folder on the server machine.&lt;br /&gt;
# Open a terminal window and change the work directory to the location you&#039;ve just saved the Makefile to. Then type in &#039;&#039;make install&#039;&#039; and press enter. This should download the latest BioCASe image, create a BioCASe container and run it.&lt;br /&gt;
&lt;br /&gt;
Per default, Docker will use port 80 for BioCASe. If this port is already used by another application on your server, you can instruct Docker to use another port. For using port 8181, for example, type in &#039;&#039;make install PORT=8181&#039;&#039; instead:&lt;br /&gt;
&lt;br /&gt;
[[File:DockerInstall.png|650px]]&lt;br /&gt;
&lt;br /&gt;
Voilà, that&#039;s it! To check your BioCASe installation, use your Browser to go to &#039;&#039;http://&amp;lt;dockerhost&amp;gt;&#039;&#039; (or &#039;&#039;http://&amp;lt;dockerhost&amp;gt;:8181&#039;&#039; if you used port 8181). Don&#039;t forget to [[Installation#Changing_the_Default_Password | change the default password]].&lt;br /&gt;
&lt;br /&gt;
You can also use the Makefile for stopping and starting the BioCASe container (for example, if you restart your server each night automatically) - just type &#039;&#039;make stop&#039;&#039; and &#039;&#039;make start&#039;&#039;. For removing the container, use &#039;&#039;make remove&#039;&#039;, for updating your BioCASe installation &#039;&#039;make update&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tell BioCASe your dockerhost&#039;&#039;&#039; Last thing to do is to tell BioCASe the name of your dockerhost: On the start page of BioCASe, choose  &amp;lt;small&amp;gt;Config Tool&amp;lt;/small&amp;gt;, then  &amp;lt;small&amp;gt;System Administration&amp;lt;/small&amp;gt;. Enter the password you just set and click &amp;lt;small&amp;gt;Submit&amp;lt;/small&amp;gt;. Find the line  &amp;lt;small&amp;gt;Base URL&amp;lt;/small&amp;gt; and type in the URL you just used in your browser (&#039;&#039;http://&amp;lt;dockerhost&amp;gt;&#039;&#039; or &#039;&#039;http://&amp;lt;dockerhost&amp;gt;:8181&#039;&#039; if you used port 8181).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; The configuration and the log files of your BioCASe installation, as well as any XML and DwC archives created, will be stored in Docker hosted volumes. That means they are stored outside of the BioCASe container and will be preserved, even when the container is removed (actually, that&#039;s what happens if you update your installation). Docker hosted volumes are stored in the &#039;&#039;volumes&#039;&#039; folder of your docker installation, e.g. /var/lib/docker/volumes. If you want to backup the configuration of your BioCASe installation, just backup the folder /var/lib/docker/volumes/bps_config. To learn more about docker hosted volumes, please refer to the [https://docs.docker.com/storage/volumes/ Docker guide].&lt;br /&gt;
&lt;br /&gt;
== Regular BioCASe Installation ==&lt;br /&gt;
This is the path to choose if you haven&#039;t heard of [https://www.docker.com/ Docker] yet. If you have experience with this virtualisation software, we&#039;d suggest to install BioCASe from the Docker image (instructions in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]]).&lt;br /&gt;
&lt;br /&gt;
BioCASe runs on both Windows and Linux machines. Two thoughts to consider for you:&lt;br /&gt;
* If you want to use ODBC to connect to your database (for example to an Access database), you should make sure that an ODBC driver is available for the OS of your choice. For an Access database, for example, such a ODBC driver is available only for Windows - so you should go for Windows.&lt;br /&gt;
* If you don&#039;t wanna use ODBC, because you plan to connect to a wide-spread DB system such as MySQL, Postgres or MS SQL Server, we recommend Linux (Debian).&lt;br /&gt;
&lt;br /&gt;
=== Installing Apache/IIS and Python ===&lt;br /&gt;
If you’re using a Linux system, you probably don’t need to install either, since Apache and Python are usually preinstalled. Same holds true for MacOS, but you should have a look at one of the articles on the web to find out about the file locations.&lt;br /&gt;
&lt;br /&gt;
Even though the BPS runs with both Apache and Internet Information Server (IIS), we recommend using Apache, which is much easier to configure. However, if you’re already using IIS, you might want to stick with that.&lt;br /&gt;
&lt;br /&gt;
The BPS requires Python 3.7+ to run, it doesn&#039;t work with Python 2, which ended its life cycle in 2020 (same is true for Python 3 versions &amp;lt; 3.7). On most Linux systems, Python 3 will be pre-installed. If not, you should be able to install Python using &#039;&#039;apt-get update&#039;&#039; and &#039;&#039;apt-get install python&#039;&#039;. (By the way: You can install several different Python versions on the same machine without any conflicts.)&lt;br /&gt;
&lt;br /&gt;
If you’re installing on a Windows Vista (poor you) or Windows 7 machine, we recommend not to install Apache in the default program files folder, since there is some magic spell on that which can get you into trouble when changing Apache’s configuration files. Just choose another path (Apache Software Foundation?) to spare that hassle.&lt;br /&gt;
&lt;br /&gt;
Once you’ve successfully installed Apache and Python, you can proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
=== Downloading and unpacking the Provider Software ===&lt;br /&gt;
You can find the latest release of BioCASe on our [https://git.bgbm.org/biocase/bps/-/releases/permalink/latest Git page]. There are two archives available for download:&lt;br /&gt;
* The [https://git.bgbm.org/biocase/bps/-/archive/3.8.6/bps-3.8.6.zip default package (recommended)] contains the full installation and allows the generation of DarwinCore archives. For this feature, the [https://github.com/pentaho/pentaho-kettle Kettle libraries] are included in the download.&lt;br /&gt;
* The [https://www.biocase.org/products/provider_software/files/bps-3.8.6-minimal.zip minimal package] doesn&#039;t contain the Kettle libraries, hence it&#039;s not possible to create DarwinCore archives with such an installation. Choose this download only if you have a good reason to do so.&lt;br /&gt;
&lt;br /&gt;
Download the file to your server and unpack it to the desired location of your file system. It contains the BioCASe Provider Software in a folder that contains the version number, e.g. &#039;&#039;bps-3.8.0&#039;&#039;. We recommend to rename it to something that doesn&#039;t include the version number, so you don&#039;t need to touch your web server&#039;s configuration during future updates.&lt;br /&gt;
&lt;br /&gt;
For the remainder of this guide, we will assume you’ve installed the BPS into a folder named &#039;&#039;biocase&#039;&#039;, which should look like this by now:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseFolder.png|650px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the Setup Script ===&lt;br /&gt;
The setup script will initiate the configuration files with values you provide and point the script files to your Python installation (you can re-run the setup script in case that location changes). If you want to modify any of settings you made during the setup, you can change the values in the configuration tool later.&lt;br /&gt;
&lt;br /&gt;
In order to run the script, open a terminal window (or “command prompt” in Windows). Change the working directory to the folder you’ve downloaded the BPS to (&#039;&#039;biocase&#039;&#039;) and type in:&amp;lt;pre&amp;gt;python setup.py&amp;lt;/pre&amp;gt; In case Python is not found, you’ll have to add the full path name to the Python executable. Make sure the Python version given in the fifth line of the output is the one you desire (otherwise add the path to the correct executable):&lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptStart.png|550px]]&lt;br /&gt;
&lt;br /&gt;
The questions asked by the setup script do have defaults. If you want to keep them, just press &amp;lt;small&amp;gt;Return&amp;lt;/small&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Webserver domain:&amp;lt;/strong&amp;gt; This is the domain name of the web server you’re installing BioCASe on, e.g. &#039;&#039;http://www.myinstitution.org&#039;&#039;.  You can keep the default &#039;&#039;localhost&#039;&#039; as long as you’re configuring and testing the installation locally; for production you’ll need to change that into the correct domain name (or IP address) later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Base URL:&amp;lt;/strong&amp;gt; This will become the second part of the URL your installation will use. If you keep the default biocase, your installation will be accessible later at &#039;&#039;www.myinstitution.org/biocase&#039;&#039;, for example.&lt;br /&gt;
&lt;br /&gt;
After answering these two questions, the script will update your files. At the end of the output you can find the lines you&#039;ll need later to create the link between BioCASe and your web server, so do not close the window! &lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptDone.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Linking BioCASe and Your Web Server ===&lt;br /&gt;
&lt;br /&gt;
The public part of the provider software is stored in the &#039;&#039;www&#039;&#039; subfolder of your BioCASe installation and must be configured in your web server as a public folder. You should always make this folder public using a virtual directory: This means that you should never install BioCASe under the default root folder of your web server. Doing so can compromise your server security and will allow people to see your configuration files (which include passwords). So since we installed BioCASe in &#039;&#039;c:\biocase&#039;&#039;, the folder that must be published with a virtual directory is &#039;&#039;c:\biocase\www&#039;&#039; and will be accessible later through &#039;&#039;http://www.myinstitution.org/biocase&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Apache ====&lt;br /&gt;
If you use Apache, adding the BioCASe folder to your web server environment is as simple as copying the lines printed at the end of the setup script to the end of the Apache configuration file &#039;&#039;httpd.conf&#039;&#039;. This can typically be found in the &#039;&#039;conf&#039;&#039; folder of your Apache installation. If you’re adding BioCASe to an already productive web server, please ask the server admin before doing any changes!&lt;br /&gt;
&lt;br /&gt;
[[image:instHttpdConf.png|550px]] &lt;br /&gt;
&lt;br /&gt;
Save the file and restart Apache for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
==== Internet Information Server ====&lt;br /&gt;
&lt;br /&gt;
If you use Internet Information Server, you need to create a virtual directory for the folder &#039;&#039;c:\biocase\www&#039;&#039; using the IIS Server Manager. Grant all rights for this directory (Read, Write, Script Execution, Directory listing). You should also add &#039;&#039;index.html&#039;&#039; to the list of default documents (&amp;lt;small&amp;gt;Virtual Directory &amp;gt; Properties &amp;gt; Documents &amp;gt; Default&amp;lt;/small&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
In order to associate Python scripts with Python in IIS 5/6, you need to use the &amp;lt;small&amp;gt;Configure&amp;lt;/small&amp;gt; button on the virtual directory tab and associate the file extensions .cgi and .py with Python (see screenshot below). In IIS 7, you can open this dialog by choosing &amp;lt;small&amp;gt;Add Script Map&amp;lt;/small&amp;gt;. Note the placeholders &#039;&#039;%s %s&#039;&#039; after the Python executable!&lt;br /&gt;
&lt;br /&gt;
[[File:instAddScriptMap.png|330px]]&lt;br /&gt;
&lt;br /&gt;
If you run into problems configuring IIS, you should have a look at the tutorials available on the web, for example&lt;br /&gt;
* http://haishibai.blogspot.de/2011/02/setting-up-python-on-iis-7_01.html&lt;br /&gt;
* http://support.microsoft.com/kb/276494&lt;br /&gt;
&lt;br /&gt;
==== Testing the Link ====&lt;br /&gt;
&lt;br /&gt;
Once you’re done, you can test your BioCASe Installation by opening a browser and typing in &#039;&#039;http://localhost/biocase&#039;&#039; (replace &#039;&#039;localhost&#039;&#039; with the domain name of the machine you installed BioCASe on, if you’re not working locally). You should then see the start page of the BPS:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseStartpage.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Installing Additional Python Packages/Java/Graphviz ===&lt;br /&gt;
&lt;br /&gt;
Before you can start configuring your installation, you need to install additional packages, depending on the management system used for the database to be published and the functions of the BPS you intend to use.&lt;br /&gt;
&lt;br /&gt;
On the BPS start page, click on &amp;lt;small&amp;gt;Utilities&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;library test&amp;lt;/small&amp;gt; in order to navigate to the library test page that shows the status of installed libraries. On a fresh BPS installation, only the BioCASe libraries should be installed, since they&#039;re part of the archive file you’ve downloaded (or the Subversion repository you checked out from):&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesVanilla.png|550px]]&lt;br /&gt;
&lt;br /&gt;
If you plan to use the Local Query Tool (a small portal for querying and browsing your BioCASe webservice), you need to install the lxml library. You can do this easily by running the Python Package Installer (PIP): &#039;&#039;pip install lxml&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For each DBMS you plan to use with BioCASe (i.e. you have a database you want to publish with BioCASe), you’ll have to install the corresponding package. So if your collection is stored in a MySQL database, you&#039;ll need the MySQLdb library; the table shows you the command to run for installing it using pip: &#039;&#039;pip install mysqlclient&#039;&#039;. Once pip has installed the package, reload the libraries test page. The according list entry should turn from an orange &#039;&#039;not installed&#039;&#039; into a green version number. Redo this process for all DBMS you want to connect to.&lt;br /&gt;
&lt;br /&gt;
The Graphviz library listed under optional external binaries is used by the BPS to create a graph of your database’s data model in the table setup (you will learn in the [[DatasourceSetup#Setting_up_the_Database_Structure|Table Setup]] about this). If the data model is very simple (i.e., not more than 3 or 4 tables), you probably can spare the effort of installing Graphviz. Otherwise we recommend installing it: Simply click on the Download link and install the package using an installer file or a package manager on Linux.&lt;br /&gt;
&lt;br /&gt;
If you want to create DarwinCore Archives for your web services, you also need to install a Java Runtime Environment (JRE). BioCASe requires Java 1.8 or later for creating DarwinCore archives, so please check the version listed on the Testlibs page if it&#039;s already installed on the server.&lt;br /&gt;
&lt;br /&gt;
=== Changing the Default Password ===&lt;br /&gt;
&lt;br /&gt;
The configuration tool is a browser interface that allows you to configure almost every aspect of the BPS. As a last step of the setup, you should change the password.&lt;br /&gt;
&lt;br /&gt;
Go back to the Start page of the BPS (by clicking &amp;lt;small&amp;gt;Start&amp;lt;/small&amp;gt; at the top of the page, or by retyping &#039;&#039;http://localhost/biocase&#039;&#039; if the server is running on your computer), choose &amp;lt;small&amp;gt;Config Tool&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;System Administration&amp;lt;/small&amp;gt;. You will then be prompted for a password. Type in the default &#039;&#039;ACDC&#039;&#039;, then click &amp;lt;small&amp;gt;Submit&amp;lt;/small&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The top of the configuration page you’ll be directed to should look similar to this:&lt;br /&gt;
&lt;br /&gt;
[[image:instConfigTool.png|500px]]&lt;br /&gt;
&lt;br /&gt;
In the first two lines, you’ll see the values you entered during the setup script (in this case, the defaults &#039;&#039;localhost&#039;&#039; and &#039;&#039;biocase&#039;&#039;). In the fourth line, enter a new password. Please be careful when typing (if you forget the password some day, you can reset it by directly editing the configuration file). Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the new password to the configuration file.&lt;br /&gt;
&lt;br /&gt;
In case you’ve installed Graphviz, you need to tell the BPS the location of the binaries, since it is not a Python package that will be registered automatically. In order to do so, locate the Graphviz installation on your local disk and enter the path to the binary executable into the text box labelled &amp;lt;small&amp;gt;Path to Graphviz executable&amp;lt;/small&amp;gt;. On Linux machines it might look similar to the default (&#039;&#039;/usr/local/bin/dot&#039;&#039;), on Windows machines it will be probably something like &#039;&#039;C:/Program Files/Graphviz 2.44.1/bin/&#039;&#039;. Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the path.&lt;br /&gt;
&lt;br /&gt;
=== Checking Your Installation ===&lt;br /&gt;
&lt;br /&gt;
Before you proceed to the configuration, you should make sure everything is installed correctly:&lt;br /&gt;
&lt;br /&gt;
# Typing in &#039;&#039;http://localhost/biocase&#039;&#039; (or the appropriate values of your installation) takes you to the entry page of the provider software (as shown in the section [[#Linking_BioCASe_and_Your_Web_Server|Linking BioCASe and Your Web Server]]).&lt;br /&gt;
# The libraries test page (&amp;lt;small&amp;gt;Utilities &amp;gt; library test&amp;lt;/small&amp;gt;) shows you’ve installed the packages for your DBMS, lxml (if you want to use the Local Query Tool), Java (if you want to create DarwinCore Archives) and the Graphviz dot (if you decided so).&lt;br /&gt;
# &amp;lt;small&amp;gt;Status of writeable directories&amp;lt;/small&amp;gt; shows a green &amp;lt;small&amp;gt;writeable&amp;lt;/small&amp;gt; for all four directories. If not, the path to problematic file will be given – please grant write access to Python.&lt;br /&gt;
&lt;br /&gt;
If you want to connect BioCASe to a variety of different database management systems, create DarwinCore archives and use the QueryTool, the libraries test pages should look like this:&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesDone.png|650px]]&lt;br /&gt;
&lt;br /&gt;
== Updating an existing BioCASe Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Updating a BioCASe Docker installation ===&lt;br /&gt;
This is very simple with the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] you downloaded for installing BioCASe. Just go to the folder where you stored the file and run &#039;&#039;make update&#039;&#039;. This will stop and remove the BioCASe container, download the latest BioCASe image and create/start a new BioCASe container. Since the configuration files are not stored within the container, all your data sources will be preserved.&lt;br /&gt;
&lt;br /&gt;
=== Updating a regular BioCASe installation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Important Note&amp;lt;/u&amp;gt;&#039;&#039;&#039;: If you have a running BioCASe installation, you shouldn’t touch it until you’ve successfully installed a new version. So keep the old installation instead of replacing it!&lt;br /&gt;
&lt;br /&gt;
==== Updating from version 2.5 or later ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# Change directory to the new installation and run setup script. When asked whether to import the configuration from an old installation, answer yes. The setup script will now import the configuration of the old installation, including the data sources.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;br /&gt;
&lt;br /&gt;
==== Updating from older versions &amp;lt; 2.5 ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version; moreover, you will need the configuration files later.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# [[Installation#Running_the_Setup_Script|Run the setup script]]. When asked whether to import the configuration from an old installation, just press Return (defaults to no). Make sure to provide the the same base URL that was used by the old installation (for example &#039;&#039;/biocase&#039;&#039;).&lt;br /&gt;
# [[Installation#Changing_the_Default_Password|Change the default password]] of the new installation to the one you used in the old installation.&lt;br /&gt;
# Open the file &#039;&#039;config/config.ini&#039;&#039; of your old installation in a text editor. Open the config tool of the new installation and navigate to the System Administration page. Compare the settings in the section &amp;lt;small&amp;gt;Server configuration&amp;lt;/small&amp;gt; with the values you can find in the old configuration file and change them, if necessary (leave values unchanged if you don&#039;t find them in the old file). Press &amp;lt;small&amp;gt;Update config&amp;lt;/small&amp;gt;.&lt;br /&gt;
# Last, copy the configuration of the BioCASe web services: Open the folder &#039;&#039;config/datasources&#039;&#039; of your old installation and copy all subfolders to &#039;&#039;config/datasources&#039;&#039; of your new installation.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1211</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1211"/>
		<updated>2025-08-05T11:51:15Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Installing BioCASe from a Docker image */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This part of the wiki explains how to install the BioCASe Provider Software. Depending on your skills, it should take between 15 and 60 minutes. If you’re a beginner, please read the [[BeginnersGuide|Beginner’s Guide]] first.&lt;br /&gt;
&lt;br /&gt;
== Requirements and Considerations ==&lt;br /&gt;
Before installing, please make sure that the system you’re intending to install the BPS on meets the following requirements (If you find out one of these items is not met, please ask your system administrator for help, read the [[FAQ]] or get in [[Special:Contact|contact with the BioCASe Team]].):&lt;br /&gt;
&lt;br /&gt;
# You have administrative privileges on this machine, i.e. the user rights to install new software packages.&lt;br /&gt;
# It is accessible from outside your institution. This means it either needs to be outside any institutional firewall or, more likely, the HTTP port is open for an existing firewall.&lt;br /&gt;
# A direct connection can be established from this machine to the database to be published – either because there’s no firewall in between, or the port used by the DBMS is open (e. g. 3306 for MySQL).&lt;br /&gt;
&lt;br /&gt;
In addition to the regular installation, you can install BioCASe from a Docker image. Docker is an operating-system-level virtualization software that allows easy software deployment in so-called containers. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide]. &#039;&#039;&#039;If you&#039;re famliar with Docker, we&#039;d suggest to use the Docker path for installing BioCASe&#039;&#039;&#039; - read more in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]] below.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Installing BioCASe from a Docker image ==&lt;br /&gt;
&lt;br /&gt;
Good choice! Installing BioCASe from a Docker image is much easer than installing the required components step-by-step. In addition, it&#039;s easier to update an existing installation. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide] first.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; BioCASe requires Docker version 17 or later. If you already have Docker installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
&lt;br /&gt;
For installing BioCASe from the Docker image, please follow these steps:&lt;br /&gt;
&lt;br /&gt;
# If you&#039;re not using Linux, install the &#039;&#039;make&#039;&#039; tool from https://gnuwin32.sourceforge.net/packages/make.htm.&lt;br /&gt;
# Install Docker Community Edition (Docker CE). For detailed instructions, see [https://docs.docker.com/install/ About Docker CE] and choose the tutorial for your platform. To make sure Docker is properly installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
# Download the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] that contains the commands for installing and updating BioCASe. Use &amp;quot;Save as...&amp;quot; to store it to your home folder on the server machine.&lt;br /&gt;
# Open a terminal window and change the work directory to the location you&#039;ve just saved the Makefile to. Then type in &#039;&#039;make install&#039;&#039; and press enter. This should download the latest BioCASe image, create a BioCASe container and run it.&lt;br /&gt;
&lt;br /&gt;
Per default, Docker will use port 80 for BioCASe. If this port is already used by another application on your server, you can instruct Docker to use another port. For using port 8181, for example, type in &#039;&#039;make install PORT=8181&#039;&#039; instead:&lt;br /&gt;
&lt;br /&gt;
[[File:DockerInstall.png|650px]]&lt;br /&gt;
&lt;br /&gt;
Voilà, that&#039;s it! To check your BioCASe installation, use your Browser to go to &#039;&#039;http://&amp;lt;dockerhost&amp;gt;&#039;&#039; (or &#039;&#039;http://&amp;lt;dockerhost&amp;gt;:8181&#039;&#039; if you used port 8181). Don&#039;t forget to [[Installation#Changing_the_Default_Password | change the default password]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tell BioCASe your dockerhost&#039;&#039;&#039; Last thing to do is to tell BioCASe the name of your dockerhost: On the start page of BioCASe, choose  &amp;lt;small&amp;gt;Config Tool&amp;lt;/small&amp;gt;, then  &amp;lt;small&amp;gt;System Administration&amp;lt;/small&amp;gt;. Enter the password you just set and click &amp;lt;small&amp;gt;Submit&amp;lt;/small&amp;gt;. Find the line  &amp;lt;small&amp;gt;Base URL&amp;lt;/small&amp;gt; and type in the URL you just used in your browser (&#039;&#039;http://&amp;lt;dockerhost&amp;gt;&#039;&#039; or &#039;&#039;http://&amp;lt;dockerhost&amp;gt;:8181&#039;&#039; if you used port 8181).&lt;br /&gt;
&lt;br /&gt;
You can also use the Makefile for stopping and starting the BioCASe container (for example, if you restart your server each night automatically) - just type &#039;&#039;make stop&#039;&#039; and &#039;&#039;make start&#039;&#039;. For removing the container, use &#039;&#039;make remove&#039;&#039;, for updating your BioCASe installation &#039;&#039;make update&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; The configuration and the log files of your BioCASe installation, as well as any XML and DwC archives created, will be stored in Docker hosted volumes. That means they are stored outside of the BioCASe container and will be preserved, even when the container is removed (actually, that&#039;s what happens if you update your installation). Docker hosted volumes are stored in the &#039;&#039;volumes&#039;&#039; folder of your docker installation, e.g. /var/lib/docker/volumes. If you want to backup the configuration of your BioCASe installation, just backup the folder /var/lib/docker/volumes/bps_config. To learn more about docker hosted volumes, please refer to the [https://docs.docker.com/storage/volumes/ Docker guide].&lt;br /&gt;
&lt;br /&gt;
== Regular BioCASe Installation ==&lt;br /&gt;
This is the path to choose if you haven&#039;t heard of [https://www.docker.com/ Docker] yet. If you have experience with this virtualisation software, we&#039;d suggest to install BioCASe from the Docker image (instructions in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]]).&lt;br /&gt;
&lt;br /&gt;
BioCASe runs on both Windows and Linux machines. Two thoughts to consider for you:&lt;br /&gt;
* If you want to use ODBC to connect to your database (for example to an Access database), you should make sure that an ODBC driver is available for the OS of your choice. For an Access database, for example, such a ODBC driver is available only for Windows - so you should go for Windows.&lt;br /&gt;
* If you don&#039;t wanna use ODBC, because you plan to connect to a wide-spread DB system such as MySQL, Postgres or MS SQL Server, we recommend Linux (Debian).&lt;br /&gt;
&lt;br /&gt;
=== Installing Apache/IIS and Python ===&lt;br /&gt;
If you’re using a Linux system, you probably don’t need to install either, since Apache and Python are usually preinstalled. Same holds true for MacOS, but you should have a look at one of the articles on the web to find out about the file locations.&lt;br /&gt;
&lt;br /&gt;
Even though the BPS runs with both Apache and Internet Information Server (IIS), we recommend using Apache, which is much easier to configure. However, if you’re already using IIS, you might want to stick with that.&lt;br /&gt;
&lt;br /&gt;
The BPS requires Python 3.7+ to run, it doesn&#039;t work with Python 2, which ended its life cycle in 2020 (same is true for Python 3 versions &amp;lt; 3.7). On most Linux systems, Python 3 will be pre-installed. If not, you should be able to install Python using &#039;&#039;apt-get update&#039;&#039; and &#039;&#039;apt-get install python&#039;&#039;. (By the way: You can install several different Python versions on the same machine without any conflicts.)&lt;br /&gt;
&lt;br /&gt;
If you’re installing on a Windows Vista (poor you) or Windows 7 machine, we recommend not to install Apache in the default program files folder, since there is some magic spell on that which can get you into trouble when changing Apache’s configuration files. Just choose another path (Apache Software Foundation?) to spare that hassle.&lt;br /&gt;
&lt;br /&gt;
Once you’ve successfully installed Apache and Python, you can proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
=== Downloading and unpacking the Provider Software ===&lt;br /&gt;
You can find the latest release of BioCASe on our [https://git.bgbm.org/biocase/bps/-/releases/permalink/latest Git page]. There are two archives available for download:&lt;br /&gt;
* The [https://git.bgbm.org/biocase/bps/-/archive/3.8.6/bps-3.8.6.zip default package (recommended)] contains the full installation and allows the generation of DarwinCore archives. For this feature, the [https://github.com/pentaho/pentaho-kettle Kettle libraries] are included in the download.&lt;br /&gt;
* The [https://www.biocase.org/products/provider_software/files/bps-3.8.6-minimal.zip minimal package] doesn&#039;t contain the Kettle libraries, hence it&#039;s not possible to create DarwinCore archives with such an installation. Choose this download only if you have a good reason to do so.&lt;br /&gt;
&lt;br /&gt;
Download the file to your server and unpack it to the desired location of your file system. It contains the BioCASe Provider Software in a folder that contains the version number, e.g. &#039;&#039;bps-3.8.0&#039;&#039;. We recommend to rename it to something that doesn&#039;t include the version number, so you don&#039;t need to touch your web server&#039;s configuration during future updates.&lt;br /&gt;
&lt;br /&gt;
For the remainder of this guide, we will assume you’ve installed the BPS into a folder named &#039;&#039;biocase&#039;&#039;, which should look like this by now:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseFolder.png|650px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the Setup Script ===&lt;br /&gt;
The setup script will initiate the configuration files with values you provide and point the script files to your Python installation (you can re-run the setup script in case that location changes). If you want to modify any of settings you made during the setup, you can change the values in the configuration tool later.&lt;br /&gt;
&lt;br /&gt;
In order to run the script, open a terminal window (or “command prompt” in Windows). Change the working directory to the folder you’ve downloaded the BPS to (&#039;&#039;biocase&#039;&#039;) and type in:&amp;lt;pre&amp;gt;python setup.py&amp;lt;/pre&amp;gt; In case Python is not found, you’ll have to add the full path name to the Python executable. Make sure the Python version given in the fifth line of the output is the one you desire (otherwise add the path to the correct executable):&lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptStart.png|550px]]&lt;br /&gt;
&lt;br /&gt;
The questions asked by the setup script do have defaults. If you want to keep them, just press &amp;lt;small&amp;gt;Return&amp;lt;/small&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Webserver domain:&amp;lt;/strong&amp;gt; This is the domain name of the web server you’re installing BioCASe on, e.g. &#039;&#039;http://www.myinstitution.org&#039;&#039;.  You can keep the default &#039;&#039;localhost&#039;&#039; as long as you’re configuring and testing the installation locally; for production you’ll need to change that into the correct domain name (or IP address) later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Base URL:&amp;lt;/strong&amp;gt; This will become the second part of the URL your installation will use. If you keep the default biocase, your installation will be accessible later at &#039;&#039;www.myinstitution.org/biocase&#039;&#039;, for example.&lt;br /&gt;
&lt;br /&gt;
After answering these two questions, the script will update your files. At the end of the output you can find the lines you&#039;ll need later to create the link between BioCASe and your web server, so do not close the window! &lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptDone.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Linking BioCASe and Your Web Server ===&lt;br /&gt;
&lt;br /&gt;
The public part of the provider software is stored in the &#039;&#039;www&#039;&#039; subfolder of your BioCASe installation and must be configured in your web server as a public folder. You should always make this folder public using a virtual directory: This means that you should never install BioCASe under the default root folder of your web server. Doing so can compromise your server security and will allow people to see your configuration files (which include passwords). So since we installed BioCASe in &#039;&#039;c:\biocase&#039;&#039;, the folder that must be published with a virtual directory is &#039;&#039;c:\biocase\www&#039;&#039; and will be accessible later through &#039;&#039;http://www.myinstitution.org/biocase&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Apache ====&lt;br /&gt;
If you use Apache, adding the BioCASe folder to your web server environment is as simple as copying the lines printed at the end of the setup script to the end of the Apache configuration file &#039;&#039;httpd.conf&#039;&#039;. This can typically be found in the &#039;&#039;conf&#039;&#039; folder of your Apache installation. If you’re adding BioCASe to an already productive web server, please ask the server admin before doing any changes!&lt;br /&gt;
&lt;br /&gt;
[[image:instHttpdConf.png|550px]] &lt;br /&gt;
&lt;br /&gt;
Save the file and restart Apache for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
==== Internet Information Server ====&lt;br /&gt;
&lt;br /&gt;
If you use Internet Information Server, you need to create a virtual directory for the folder &#039;&#039;c:\biocase\www&#039;&#039; using the IIS Server Manager. Grant all rights for this directory (Read, Write, Script Execution, Directory listing). You should also add &#039;&#039;index.html&#039;&#039; to the list of default documents (&amp;lt;small&amp;gt;Virtual Directory &amp;gt; Properties &amp;gt; Documents &amp;gt; Default&amp;lt;/small&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
In order to associate Python scripts with Python in IIS 5/6, you need to use the &amp;lt;small&amp;gt;Configure&amp;lt;/small&amp;gt; button on the virtual directory tab and associate the file extensions .cgi and .py with Python (see screenshot below). In IIS 7, you can open this dialog by choosing &amp;lt;small&amp;gt;Add Script Map&amp;lt;/small&amp;gt;. Note the placeholders &#039;&#039;%s %s&#039;&#039; after the Python executable!&lt;br /&gt;
&lt;br /&gt;
[[File:instAddScriptMap.png|330px]]&lt;br /&gt;
&lt;br /&gt;
If you run into problems configuring IIS, you should have a look at the tutorials available on the web, for example&lt;br /&gt;
* http://haishibai.blogspot.de/2011/02/setting-up-python-on-iis-7_01.html&lt;br /&gt;
* http://support.microsoft.com/kb/276494&lt;br /&gt;
&lt;br /&gt;
==== Testing the Link ====&lt;br /&gt;
&lt;br /&gt;
Once you’re done, you can test your BioCASe Installation by opening a browser and typing in &#039;&#039;http://localhost/biocase&#039;&#039; (replace &#039;&#039;localhost&#039;&#039; with the domain name of the machine you installed BioCASe on, if you’re not working locally). You should then see the start page of the BPS:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseStartpage.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Installing Additional Python Packages/Java/Graphviz ===&lt;br /&gt;
&lt;br /&gt;
Before you can start configuring your installation, you need to install additional packages, depending on the management system used for the database to be published and the functions of the BPS you intend to use.&lt;br /&gt;
&lt;br /&gt;
On the BPS start page, click on &amp;lt;small&amp;gt;Utilities&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;library test&amp;lt;/small&amp;gt; in order to navigate to the library test page that shows the status of installed libraries. On a fresh BPS installation, only the BioCASe libraries should be installed, since they&#039;re part of the archive file you’ve downloaded (or the Subversion repository you checked out from):&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesVanilla.png|550px]]&lt;br /&gt;
&lt;br /&gt;
If you plan to use the Local Query Tool (a small portal for querying and browsing your BioCASe webservice), you need to install the lxml library. You can do this easily by running the Python Package Installer (PIP): &#039;&#039;pip install lxml&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For each DBMS you plan to use with BioCASe (i.e. you have a database you want to publish with BioCASe), you’ll have to install the corresponding package. So if your collection is stored in a MySQL database, you&#039;ll need the MySQLdb library; the table shows you the command to run for installing it using pip: &#039;&#039;pip install mysqlclient&#039;&#039;. Once pip has installed the package, reload the libraries test page. The according list entry should turn from an orange &#039;&#039;not installed&#039;&#039; into a green version number. Redo this process for all DBMS you want to connect to.&lt;br /&gt;
&lt;br /&gt;
The Graphviz library listed under optional external binaries is used by the BPS to create a graph of your database’s data model in the table setup (you will learn in the [[DatasourceSetup#Setting_up_the_Database_Structure|Table Setup]] about this). If the data model is very simple (i.e., not more than 3 or 4 tables), you probably can spare the effort of installing Graphviz. Otherwise we recommend installing it: Simply click on the Download link and install the package using an installer file or a package manager on Linux.&lt;br /&gt;
&lt;br /&gt;
If you want to create DarwinCore Archives for your web services, you also need to install a Java Runtime Environment (JRE). BioCASe requires Java 1.8 or later for creating DarwinCore archives, so please check the version listed on the Testlibs page if it&#039;s already installed on the server.&lt;br /&gt;
&lt;br /&gt;
=== Changing the Default Password ===&lt;br /&gt;
&lt;br /&gt;
The configuration tool is a browser interface that allows you to configure almost every aspect of the BPS. As a last step of the setup, you should change the password.&lt;br /&gt;
&lt;br /&gt;
Go back to the Start page of the BPS (by clicking &amp;lt;small&amp;gt;Start&amp;lt;/small&amp;gt; at the top of the page, or by retyping &#039;&#039;http://localhost/biocase&#039;&#039; if the server is running on your computer), choose &amp;lt;small&amp;gt;Config Tool&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;System Administration&amp;lt;/small&amp;gt;. You will then be prompted for a password. Type in the default &#039;&#039;ACDC&#039;&#039;, then click &amp;lt;small&amp;gt;Submit&amp;lt;/small&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The top of the configuration page you’ll be directed to should look similar to this:&lt;br /&gt;
&lt;br /&gt;
[[image:instConfigTool.png|500px]]&lt;br /&gt;
&lt;br /&gt;
In the first two lines, you’ll see the values you entered during the setup script (in this case, the defaults &#039;&#039;localhost&#039;&#039; and &#039;&#039;biocase&#039;&#039;). In the fourth line, enter a new password. Please be careful when typing (if you forget the password some day, you can reset it by directly editing the configuration file). Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the new password to the configuration file.&lt;br /&gt;
&lt;br /&gt;
In case you’ve installed Graphviz, you need to tell the BPS the location of the binaries, since it is not a Python package that will be registered automatically. In order to do so, locate the Graphviz installation on your local disk and enter the path to the binary executable into the text box labelled &amp;lt;small&amp;gt;Path to Graphviz executable&amp;lt;/small&amp;gt;. On Linux machines it might look similar to the default (&#039;&#039;/usr/local/bin/dot&#039;&#039;), on Windows machines it will be probably something like &#039;&#039;C:/Program Files/Graphviz 2.44.1/bin/&#039;&#039;. Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the path.&lt;br /&gt;
&lt;br /&gt;
=== Checking Your Installation ===&lt;br /&gt;
&lt;br /&gt;
Before you proceed to the configuration, you should make sure everything is installed correctly:&lt;br /&gt;
&lt;br /&gt;
# Typing in &#039;&#039;http://localhost/biocase&#039;&#039; (or the appropriate values of your installation) takes you to the entry page of the provider software (as shown in the section [[#Linking_BioCASe_and_Your_Web_Server|Linking BioCASe and Your Web Server]]).&lt;br /&gt;
# The libraries test page (&amp;lt;small&amp;gt;Utilities &amp;gt; library test&amp;lt;/small&amp;gt;) shows you’ve installed the packages for your DBMS, lxml (if you want to use the Local Query Tool), Java (if you want to create DarwinCore Archives) and the Graphviz dot (if you decided so).&lt;br /&gt;
# &amp;lt;small&amp;gt;Status of writeable directories&amp;lt;/small&amp;gt; shows a green &amp;lt;small&amp;gt;writeable&amp;lt;/small&amp;gt; for all four directories. If not, the path to problematic file will be given – please grant write access to Python.&lt;br /&gt;
&lt;br /&gt;
If you want to connect BioCASe to a variety of different database management systems, create DarwinCore archives and use the QueryTool, the libraries test pages should look like this:&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesDone.png|650px]]&lt;br /&gt;
&lt;br /&gt;
== Updating an existing BioCASe Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Updating a BioCASe Docker installation ===&lt;br /&gt;
This is very simple with the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] you downloaded for installing BioCASe. Just go to the folder where you stored the file and run &#039;&#039;make update&#039;&#039;. This will stop and remove the BioCASe container, download the latest BioCASe image and create/start a new BioCASe container. Since the configuration files are not stored within the container, all your data sources will be preserved.&lt;br /&gt;
&lt;br /&gt;
=== Updating a regular BioCASe installation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Important Note&amp;lt;/u&amp;gt;&#039;&#039;&#039;: If you have a running BioCASe installation, you shouldn’t touch it until you’ve successfully installed a new version. So keep the old installation instead of replacing it!&lt;br /&gt;
&lt;br /&gt;
==== Updating from version 2.5 or later ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# Change directory to the new installation and run setup script. When asked whether to import the configuration from an old installation, answer yes. The setup script will now import the configuration of the old installation, including the data sources.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;br /&gt;
&lt;br /&gt;
==== Updating from older versions &amp;lt; 2.5 ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version; moreover, you will need the configuration files later.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# [[Installation#Running_the_Setup_Script|Run the setup script]]. When asked whether to import the configuration from an old installation, just press Return (defaults to no). Make sure to provide the the same base URL that was used by the old installation (for example &#039;&#039;/biocase&#039;&#039;).&lt;br /&gt;
# [[Installation#Changing_the_Default_Password|Change the default password]] of the new installation to the one you used in the old installation.&lt;br /&gt;
# Open the file &#039;&#039;config/config.ini&#039;&#039; of your old installation in a text editor. Open the config tool of the new installation and navigate to the System Administration page. Compare the settings in the section &amp;lt;small&amp;gt;Server configuration&amp;lt;/small&amp;gt; with the values you can find in the old configuration file and change them, if necessary (leave values unchanged if you don&#039;t find them in the old file). Press &amp;lt;small&amp;gt;Update config&amp;lt;/small&amp;gt;.&lt;br /&gt;
# Last, copy the configuration of the BioCASe web services: Open the folder &#039;&#039;config/datasources&#039;&#039; of your old installation and copy all subfolders to &#039;&#039;config/datasources&#039;&#039; of your new installation.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1210</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1210"/>
		<updated>2025-08-05T11:42:50Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Installing BioCASe from a Docker image */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This part of the wiki explains how to install the BioCASe Provider Software. Depending on your skills, it should take between 15 and 60 minutes. If you’re a beginner, please read the [[BeginnersGuide|Beginner’s Guide]] first.&lt;br /&gt;
&lt;br /&gt;
== Requirements and Considerations ==&lt;br /&gt;
Before installing, please make sure that the system you’re intending to install the BPS on meets the following requirements (If you find out one of these items is not met, please ask your system administrator for help, read the [[FAQ]] or get in [[Special:Contact|contact with the BioCASe Team]].):&lt;br /&gt;
&lt;br /&gt;
# You have administrative privileges on this machine, i.e. the user rights to install new software packages.&lt;br /&gt;
# It is accessible from outside your institution. This means it either needs to be outside any institutional firewall or, more likely, the HTTP port is open for an existing firewall.&lt;br /&gt;
# A direct connection can be established from this machine to the database to be published – either because there’s no firewall in between, or the port used by the DBMS is open (e. g. 3306 for MySQL).&lt;br /&gt;
&lt;br /&gt;
In addition to the regular installation, you can install BioCASe from a Docker image. Docker is an operating-system-level virtualization software that allows easy software deployment in so-called containers. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide]. &#039;&#039;&#039;If you&#039;re famliar with Docker, we&#039;d suggest to use the Docker path for installing BioCASe&#039;&#039;&#039; - read more in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]] below.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Installing BioCASe from a Docker image ==&lt;br /&gt;
&lt;br /&gt;
Good choice! Installing BioCASe from a Docker image is much easer than installing the required components step-by-step. In addition, it&#039;s easier to update an existing installation. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide] first.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; BioCASe requires Docker version 17 or later. If you already have Docker installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
&lt;br /&gt;
For installing BioCASe from the Docker image, please follow these steps:&lt;br /&gt;
&lt;br /&gt;
# If you&#039;re not using Linux, install the &#039;&#039;make&#039;&#039; tool from https://gnuwin32.sourceforge.net/packages/make.htm.&lt;br /&gt;
# Install Docker Community Edition (Docker CE). For detailed instructions, see [https://docs.docker.com/install/ About Docker CE] and choose the tutorial for your platform. To make sure Docker is properly installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
# Download the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] that contains the commands for installing and updating BioCASe. Use &amp;quot;Save as...&amp;quot; to store it to your home folder on the server machine.&lt;br /&gt;
# Open a terminal window and change the work directory to the location you&#039;ve just saved the Makefile to. Then type in &#039;&#039;make install&#039;&#039; and press enter. This should download the latest BioCASe image, create a BioCASe container and run it.&lt;br /&gt;
Per default, Docker will use port 80 for BioCASe. If this port is already used by another application on your server, you can instruct Docker to use another port. For using port 8181, for example, type in &#039;&#039;make install PORT=8181&#039;&#039; instead:&lt;br /&gt;
[[File:DockerInstall.png|650px]]&lt;br /&gt;
Voilà, that&#039;s it! To check your BioCASe installation, use your Browser to go to &#039;&#039;http://&amp;lt;dockerhost&amp;gt;&#039;&#039; (or &#039;&#039;http://&amp;lt;dockerhost&amp;gt;:8181&#039;&#039; if you used port 8181). Don&#039;t forget to [[Installation#Changing_the_Default_Password | change the default password]].&lt;br /&gt;
&lt;br /&gt;
You can also use the Makefile for stopping and starting the BioCASe container (for example, if you restart your server each night automatically) - just type &#039;&#039;make stop&#039;&#039; and &#039;&#039;make start&#039;&#039;. For removing the container, use &#039;&#039;make remove&#039;&#039;, for updating your BioCASe installation &#039;&#039;make update&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; The configuration and the log files of your BioCASe installation, as well as any XML and DwC archives created, will be stored in Docker hosted volumes. That means they are stored outside of the BioCASe container and will be preserved, even when the container is removed (actually, that&#039;s what happens if you update your installation). Docker hosted volumes are stored in the &#039;&#039;volumes&#039;&#039; folder of your docker installation, e.g. /var/lib/docker/volumes. If you want to backup the configuration of your BioCASe installation, just backup the folder /var/lib/docker/volumes/bps_config. To learn more about docker hosted volumes, please refer to the [https://docs.docker.com/storage/volumes/ Docker guide].&lt;br /&gt;
&lt;br /&gt;
== Regular BioCASe Installation ==&lt;br /&gt;
This is the path to choose if you haven&#039;t heard of [https://www.docker.com/ Docker] yet. If you have experience with this virtualisation software, we&#039;d suggest to install BioCASe from the Docker image (instructions in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]]).&lt;br /&gt;
&lt;br /&gt;
BioCASe runs on both Windows and Linux machines. Two thoughts to consider for you:&lt;br /&gt;
* If you want to use ODBC to connect to your database (for example to an Access database), you should make sure that an ODBC driver is available for the OS of your choice. For an Access database, for example, such a ODBC driver is available only for Windows - so you should go for Windows.&lt;br /&gt;
* If you don&#039;t wanna use ODBC, because you plan to connect to a wide-spread DB system such as MySQL, Postgres or MS SQL Server, we recommend Linux (Debian).&lt;br /&gt;
&lt;br /&gt;
=== Installing Apache/IIS and Python ===&lt;br /&gt;
If you’re using a Linux system, you probably don’t need to install either, since Apache and Python are usually preinstalled. Same holds true for MacOS, but you should have a look at one of the articles on the web to find out about the file locations.&lt;br /&gt;
&lt;br /&gt;
Even though the BPS runs with both Apache and Internet Information Server (IIS), we recommend using Apache, which is much easier to configure. However, if you’re already using IIS, you might want to stick with that.&lt;br /&gt;
&lt;br /&gt;
The BPS requires Python 3.7+ to run, it doesn&#039;t work with Python 2, which ended its life cycle in 2020 (same is true for Python 3 versions &amp;lt; 3.7). On most Linux systems, Python 3 will be pre-installed. If not, you should be able to install Python using &#039;&#039;apt-get update&#039;&#039; and &#039;&#039;apt-get install python&#039;&#039;. (By the way: You can install several different Python versions on the same machine without any conflicts.)&lt;br /&gt;
&lt;br /&gt;
If you’re installing on a Windows Vista (poor you) or Windows 7 machine, we recommend not to install Apache in the default program files folder, since there is some magic spell on that which can get you into trouble when changing Apache’s configuration files. Just choose another path (Apache Software Foundation?) to spare that hassle.&lt;br /&gt;
&lt;br /&gt;
Once you’ve successfully installed Apache and Python, you can proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
=== Downloading and unpacking the Provider Software ===&lt;br /&gt;
You can find the latest release of BioCASe on our [https://git.bgbm.org/biocase/bps/-/releases/permalink/latest Git page]. There are two archives available for download:&lt;br /&gt;
* The [https://git.bgbm.org/biocase/bps/-/archive/3.8.6/bps-3.8.6.zip default package (recommended)] contains the full installation and allows the generation of DarwinCore archives. For this feature, the [https://github.com/pentaho/pentaho-kettle Kettle libraries] are included in the download.&lt;br /&gt;
* The [https://www.biocase.org/products/provider_software/files/bps-3.8.6-minimal.zip minimal package] doesn&#039;t contain the Kettle libraries, hence it&#039;s not possible to create DarwinCore archives with such an installation. Choose this download only if you have a good reason to do so.&lt;br /&gt;
&lt;br /&gt;
Download the file to your server and unpack it to the desired location of your file system. It contains the BioCASe Provider Software in a folder that contains the version number, e.g. &#039;&#039;bps-3.8.0&#039;&#039;. We recommend to rename it to something that doesn&#039;t include the version number, so you don&#039;t need to touch your web server&#039;s configuration during future updates.&lt;br /&gt;
&lt;br /&gt;
For the remainder of this guide, we will assume you’ve installed the BPS into a folder named &#039;&#039;biocase&#039;&#039;, which should look like this by now:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseFolder.png|650px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the Setup Script ===&lt;br /&gt;
The setup script will initiate the configuration files with values you provide and point the script files to your Python installation (you can re-run the setup script in case that location changes). If you want to modify any of settings you made during the setup, you can change the values in the configuration tool later.&lt;br /&gt;
&lt;br /&gt;
In order to run the script, open a terminal window (or “command prompt” in Windows). Change the working directory to the folder you’ve downloaded the BPS to (&#039;&#039;biocase&#039;&#039;) and type in:&amp;lt;pre&amp;gt;python setup.py&amp;lt;/pre&amp;gt; In case Python is not found, you’ll have to add the full path name to the Python executable. Make sure the Python version given in the fifth line of the output is the one you desire (otherwise add the path to the correct executable):&lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptStart.png|550px]]&lt;br /&gt;
&lt;br /&gt;
The questions asked by the setup script do have defaults. If you want to keep them, just press &amp;lt;small&amp;gt;Return&amp;lt;/small&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Webserver domain:&amp;lt;/strong&amp;gt; This is the domain name of the web server you’re installing BioCASe on, e.g. &#039;&#039;http://www.myinstitution.org&#039;&#039;.  You can keep the default &#039;&#039;localhost&#039;&#039; as long as you’re configuring and testing the installation locally; for production you’ll need to change that into the correct domain name (or IP address) later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Base URL:&amp;lt;/strong&amp;gt; This will become the second part of the URL your installation will use. If you keep the default biocase, your installation will be accessible later at &#039;&#039;www.myinstitution.org/biocase&#039;&#039;, for example.&lt;br /&gt;
&lt;br /&gt;
After answering these two questions, the script will update your files. At the end of the output you can find the lines you&#039;ll need later to create the link between BioCASe and your web server, so do not close the window! &lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptDone.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Linking BioCASe and Your Web Server ===&lt;br /&gt;
&lt;br /&gt;
The public part of the provider software is stored in the &#039;&#039;www&#039;&#039; subfolder of your BioCASe installation and must be configured in your web server as a public folder. You should always make this folder public using a virtual directory: This means that you should never install BioCASe under the default root folder of your web server. Doing so can compromise your server security and will allow people to see your configuration files (which include passwords). So since we installed BioCASe in &#039;&#039;c:\biocase&#039;&#039;, the folder that must be published with a virtual directory is &#039;&#039;c:\biocase\www&#039;&#039; and will be accessible later through &#039;&#039;http://www.myinstitution.org/biocase&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Apache ====&lt;br /&gt;
If you use Apache, adding the BioCASe folder to your web server environment is as simple as copying the lines printed at the end of the setup script to the end of the Apache configuration file &#039;&#039;httpd.conf&#039;&#039;. This can typically be found in the &#039;&#039;conf&#039;&#039; folder of your Apache installation. If you’re adding BioCASe to an already productive web server, please ask the server admin before doing any changes!&lt;br /&gt;
&lt;br /&gt;
[[image:instHttpdConf.png|550px]] &lt;br /&gt;
&lt;br /&gt;
Save the file and restart Apache for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
==== Internet Information Server ====&lt;br /&gt;
&lt;br /&gt;
If you use Internet Information Server, you need to create a virtual directory for the folder &#039;&#039;c:\biocase\www&#039;&#039; using the IIS Server Manager. Grant all rights for this directory (Read, Write, Script Execution, Directory listing). You should also add &#039;&#039;index.html&#039;&#039; to the list of default documents (&amp;lt;small&amp;gt;Virtual Directory &amp;gt; Properties &amp;gt; Documents &amp;gt; Default&amp;lt;/small&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
In order to associate Python scripts with Python in IIS 5/6, you need to use the &amp;lt;small&amp;gt;Configure&amp;lt;/small&amp;gt; button on the virtual directory tab and associate the file extensions .cgi and .py with Python (see screenshot below). In IIS 7, you can open this dialog by choosing &amp;lt;small&amp;gt;Add Script Map&amp;lt;/small&amp;gt;. Note the placeholders &#039;&#039;%s %s&#039;&#039; after the Python executable!&lt;br /&gt;
&lt;br /&gt;
[[File:instAddScriptMap.png|330px]]&lt;br /&gt;
&lt;br /&gt;
If you run into problems configuring IIS, you should have a look at the tutorials available on the web, for example&lt;br /&gt;
* http://haishibai.blogspot.de/2011/02/setting-up-python-on-iis-7_01.html&lt;br /&gt;
* http://support.microsoft.com/kb/276494&lt;br /&gt;
&lt;br /&gt;
==== Testing the Link ====&lt;br /&gt;
&lt;br /&gt;
Once you’re done, you can test your BioCASe Installation by opening a browser and typing in &#039;&#039;http://localhost/biocase&#039;&#039; (replace &#039;&#039;localhost&#039;&#039; with the domain name of the machine you installed BioCASe on, if you’re not working locally). You should then see the start page of the BPS:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseStartpage.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Installing Additional Python Packages/Java/Graphviz ===&lt;br /&gt;
&lt;br /&gt;
Before you can start configuring your installation, you need to install additional packages, depending on the management system used for the database to be published and the functions of the BPS you intend to use.&lt;br /&gt;
&lt;br /&gt;
On the BPS start page, click on &amp;lt;small&amp;gt;Utilities&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;library test&amp;lt;/small&amp;gt; in order to navigate to the library test page that shows the status of installed libraries. On a fresh BPS installation, only the BioCASe libraries should be installed, since they&#039;re part of the archive file you’ve downloaded (or the Subversion repository you checked out from):&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesVanilla.png|550px]]&lt;br /&gt;
&lt;br /&gt;
If you plan to use the Local Query Tool (a small portal for querying and browsing your BioCASe webservice), you need to install the lxml library. You can do this easily by running the Python Package Installer (PIP): &#039;&#039;pip install lxml&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For each DBMS you plan to use with BioCASe (i.e. you have a database you want to publish with BioCASe), you’ll have to install the corresponding package. So if your collection is stored in a MySQL database, you&#039;ll need the MySQLdb library; the table shows you the command to run for installing it using pip: &#039;&#039;pip install mysqlclient&#039;&#039;. Once pip has installed the package, reload the libraries test page. The according list entry should turn from an orange &#039;&#039;not installed&#039;&#039; into a green version number. Redo this process for all DBMS you want to connect to.&lt;br /&gt;
&lt;br /&gt;
The Graphviz library listed under optional external binaries is used by the BPS to create a graph of your database’s data model in the table setup (you will learn in the [[DatasourceSetup#Setting_up_the_Database_Structure|Table Setup]] about this). If the data model is very simple (i.e., not more than 3 or 4 tables), you probably can spare the effort of installing Graphviz. Otherwise we recommend installing it: Simply click on the Download link and install the package using an installer file or a package manager on Linux.&lt;br /&gt;
&lt;br /&gt;
If you want to create DarwinCore Archives for your web services, you also need to install a Java Runtime Environment (JRE). BioCASe requires Java 1.8 or later for creating DarwinCore archives, so please check the version listed on the Testlibs page if it&#039;s already installed on the server.&lt;br /&gt;
&lt;br /&gt;
=== Changing the Default Password ===&lt;br /&gt;
&lt;br /&gt;
The configuration tool is a browser interface that allows you to configure almost every aspect of the BPS. As a last step of the setup, you should change the password.&lt;br /&gt;
&lt;br /&gt;
Go back to the Start page of the BPS (by clicking &amp;lt;small&amp;gt;Start&amp;lt;/small&amp;gt; at the top of the page, or by retyping &#039;&#039;http://localhost/biocase&#039;&#039; if the server is running on your computer), choose &amp;lt;small&amp;gt;Config Tool&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;System Administration&amp;lt;/small&amp;gt;. You will then be prompted for a password. Type in the default &#039;&#039;ACDC&#039;&#039;, then click &amp;lt;small&amp;gt;Submit&amp;lt;/small&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The top of the configuration page you’ll be directed to should look similar to this:&lt;br /&gt;
&lt;br /&gt;
[[image:instConfigTool.png|500px]]&lt;br /&gt;
&lt;br /&gt;
In the first two lines, you’ll see the values you entered during the setup script (in this case, the defaults &#039;&#039;localhost&#039;&#039; and &#039;&#039;biocase&#039;&#039;). In the fourth line, enter a new password. Please be careful when typing (if you forget the password some day, you can reset it by directly editing the configuration file). Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the new password to the configuration file.&lt;br /&gt;
&lt;br /&gt;
In case you’ve installed Graphviz, you need to tell the BPS the location of the binaries, since it is not a Python package that will be registered automatically. In order to do so, locate the Graphviz installation on your local disk and enter the path to the binary executable into the text box labelled &amp;lt;small&amp;gt;Path to Graphviz executable&amp;lt;/small&amp;gt;. On Linux machines it might look similar to the default (&#039;&#039;/usr/local/bin/dot&#039;&#039;), on Windows machines it will be probably something like &#039;&#039;C:/Program Files/Graphviz 2.44.1/bin/&#039;&#039;. Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the path.&lt;br /&gt;
&lt;br /&gt;
=== Checking Your Installation ===&lt;br /&gt;
&lt;br /&gt;
Before you proceed to the configuration, you should make sure everything is installed correctly:&lt;br /&gt;
&lt;br /&gt;
# Typing in &#039;&#039;http://localhost/biocase&#039;&#039; (or the appropriate values of your installation) takes you to the entry page of the provider software (as shown in the section [[#Linking_BioCASe_and_Your_Web_Server|Linking BioCASe and Your Web Server]]).&lt;br /&gt;
# The libraries test page (&amp;lt;small&amp;gt;Utilities &amp;gt; library test&amp;lt;/small&amp;gt;) shows you’ve installed the packages for your DBMS, lxml (if you want to use the Local Query Tool), Java (if you want to create DarwinCore Archives) and the Graphviz dot (if you decided so).&lt;br /&gt;
# &amp;lt;small&amp;gt;Status of writeable directories&amp;lt;/small&amp;gt; shows a green &amp;lt;small&amp;gt;writeable&amp;lt;/small&amp;gt; for all four directories. If not, the path to problematic file will be given – please grant write access to Python.&lt;br /&gt;
&lt;br /&gt;
If you want to connect BioCASe to a variety of different database management systems, create DarwinCore archives and use the QueryTool, the libraries test pages should look like this:&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesDone.png|650px]]&lt;br /&gt;
&lt;br /&gt;
== Updating an existing BioCASe Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Updating a BioCASe Docker installation ===&lt;br /&gt;
This is very simple with the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] you downloaded for installing BioCASe. Just go to the folder where you stored the file and run &#039;&#039;make update&#039;&#039;. This will stop and remove the BioCASe container, download the latest BioCASe image and create/start a new BioCASe container. Since the configuration files are not stored within the container, all your data sources will be preserved.&lt;br /&gt;
&lt;br /&gt;
=== Updating a regular BioCASe installation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Important Note&amp;lt;/u&amp;gt;&#039;&#039;&#039;: If you have a running BioCASe installation, you shouldn’t touch it until you’ve successfully installed a new version. So keep the old installation instead of replacing it!&lt;br /&gt;
&lt;br /&gt;
==== Updating from version 2.5 or later ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# Change directory to the new installation and run setup script. When asked whether to import the configuration from an old installation, answer yes. The setup script will now import the configuration of the old installation, including the data sources.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;br /&gt;
&lt;br /&gt;
==== Updating from older versions &amp;lt; 2.5 ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version; moreover, you will need the configuration files later.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# [[Installation#Running_the_Setup_Script|Run the setup script]]. When asked whether to import the configuration from an old installation, just press Return (defaults to no). Make sure to provide the the same base URL that was used by the old installation (for example &#039;&#039;/biocase&#039;&#039;).&lt;br /&gt;
# [[Installation#Changing_the_Default_Password|Change the default password]] of the new installation to the one you used in the old installation.&lt;br /&gt;
# Open the file &#039;&#039;config/config.ini&#039;&#039; of your old installation in a text editor. Open the config tool of the new installation and navigate to the System Administration page. Compare the settings in the section &amp;lt;small&amp;gt;Server configuration&amp;lt;/small&amp;gt; with the values you can find in the old configuration file and change them, if necessary (leave values unchanged if you don&#039;t find them in the old file). Press &amp;lt;small&amp;gt;Update config&amp;lt;/small&amp;gt;.&lt;br /&gt;
# Last, copy the configuration of the BioCASe web services: Open the folder &#039;&#039;config/datasources&#039;&#039; of your old installation and copy all subfolders to &#039;&#039;config/datasources&#039;&#039; of your new installation.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1209</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1209"/>
		<updated>2025-08-05T11:17:41Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Version 3.8.8 [2025-08-04] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.8 [2025-08-05] ===&lt;br /&gt;
* Usage of cgi-traceback module removed (dropped in Python v3.13)&lt;br /&gt;
* Legcacy-cgi included in BPS (dropped in Python v3.13)&lt;br /&gt;
* Default webroot changed to &amp;quot;/&amp;quot; in Docker image&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.7 [2025-03-06] ===&lt;br /&gt;
* Code repo moved to git: https://git.bgbm.org/biocase/bps&lt;br /&gt;
* Update hint now uses link to new Git repo instead of Subversion&lt;br /&gt;
* Use alternative DB connector pymysql if importing MySQLdb fails (apparently on latest Ubuntu distributions). Thanks to Kjell-Åke Lundblad from Nordic Genetic Resource Center for this!&lt;br /&gt;
* Miscellaneous optimisations in Docker image (multistage build &amp;amp; chained RUN statements for smaller image size, separate Apache config file, no root user) thanks to Petr Novotný from Prague university!&lt;br /&gt;
&lt;br /&gt;
===  Version 3.8.6 [2024-12-12] ===&lt;br /&gt;
* Timeout added for the request to retrieve latest version from subversion repository&lt;br /&gt;
* Archiving page: List schemas in dropdown box in descending order, so that ABCD 2.1 shows before 2.06 before 1.2&lt;br /&gt;
* QueryTool: Changed default schema from ABCD 2.1 to ABCD 2.06, since this is used more commonly&lt;br /&gt;
* Fix for DwC archives: occurrenceStatus and occurrencID had been swapped in descriptor file meta.xml&lt;br /&gt;
* DwC archive transformation: BasisOfRecord=&amp;quot;AbsenceObservation&amp;quot; will be translated into &amp;quot;HumanObservation&amp;quot;, since AbsenceObservation is not accepted by GBIF.&lt;br /&gt;
* Dockerfile adapted to latest Debian version and Python 3.13&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.5 [2023-11-30] ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1208</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1208"/>
		<updated>2025-08-04T10:08:15Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Current Version 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.8 [2025-08-04] ===&lt;br /&gt;
* Usage of cgi-traceback module removed (dropped in Python v3.13)&lt;br /&gt;
* Legcacy-cgi ncluded in BPS (dropped in Python v3.13)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.7 [2025-03-06] ===&lt;br /&gt;
* Code repo moved to git: https://git.bgbm.org/biocase/bps&lt;br /&gt;
* Update hint now uses link to new Git repo instead of Subversion&lt;br /&gt;
* Use alternative DB connector pymysql if importing MySQLdb fails (apparently on latest Ubuntu distributions). Thanks to Kjell-Åke Lundblad from Nordic Genetic Resource Center for this!&lt;br /&gt;
* Miscellaneous optimisations in Docker image (multistage build &amp;amp; chained RUN statements for smaller image size, separate Apache config file, no root user) thanks to Petr Novotný from Prague university!&lt;br /&gt;
&lt;br /&gt;
===  Version 3.8.6 [2024-12-12] ===&lt;br /&gt;
* Timeout added for the request to retrieve latest version from subversion repository&lt;br /&gt;
* Archiving page: List schemas in dropdown box in descending order, so that ABCD 2.1 shows before 2.06 before 1.2&lt;br /&gt;
* QueryTool: Changed default schema from ABCD 2.1 to ABCD 2.06, since this is used more commonly&lt;br /&gt;
* Fix for DwC archives: occurrenceStatus and occurrencID had been swapped in descriptor file meta.xml&lt;br /&gt;
* DwC archive transformation: BasisOfRecord=&amp;quot;AbsenceObservation&amp;quot; will be translated into &amp;quot;HumanObservation&amp;quot;, since AbsenceObservation is not accepted by GBIF.&lt;br /&gt;
* Dockerfile adapted to latest Debian version and Python 3.13&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.5 [2023-11-30] ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1207</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1207"/>
		<updated>2025-03-10T08:48:31Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Installing BioCASe from a Docker image */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This part of the wiki explains how to install the BioCASe Provider Software. Depending on your skills, it should take between 15 and 60 minutes. If you’re a beginner, please read the [[BeginnersGuide|Beginner’s Guide]] first.&lt;br /&gt;
&lt;br /&gt;
== Requirements and Considerations ==&lt;br /&gt;
Before installing, please make sure that the system you’re intending to install the BPS on meets the following requirements (If you find out one of these items is not met, please ask your system administrator for help, read the [[FAQ]] or get in [[Special:Contact|contact with the BioCASe Team]].):&lt;br /&gt;
&lt;br /&gt;
# You have administrative privileges on this machine, i.e. the user rights to install new software packages.&lt;br /&gt;
# It is accessible from outside your institution. This means it either needs to be outside any institutional firewall or, more likely, the HTTP port is open for an existing firewall.&lt;br /&gt;
# A direct connection can be established from this machine to the database to be published – either because there’s no firewall in between, or the port used by the DBMS is open (e. g. 3306 for MySQL).&lt;br /&gt;
&lt;br /&gt;
In addition to the regular installation, you can install BioCASe from a Docker image. Docker is an operating-system-level virtualization software that allows easy software deployment in so-called containers. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide]. &#039;&#039;&#039;If you&#039;re famliar with Docker, we&#039;d suggest to use the Docker path for installing BioCASe&#039;&#039;&#039; - read more in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]] below.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Installing BioCASe from a Docker image ==&lt;br /&gt;
&lt;br /&gt;
Good choice! Installing BioCASe from a Docker image is much easer than installing the required components step-by-step. In addition, it&#039;s easier to update an existing installation. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide] first.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; BioCASe requires Docker version 17 or later. If you already have Docker installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
&lt;br /&gt;
For installing BioCASe from the Docker image, please follow these steps:&lt;br /&gt;
&lt;br /&gt;
# If you&#039;re not using Linux, install the &#039;&#039;make&#039;&#039; tool from https://gnuwin32.sourceforge.net/packages/make.htm.&lt;br /&gt;
# Install Docker Community Edition (Docker CE). For detailed instructions, see [https://docs.docker.com/install/ About Docker CE] and choose the tutorial for your platform. To make sure Docker is properly installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
# Download the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] that contains the commands for installing and updating BioCASe. Use &amp;quot;Save as...&amp;quot; to store it to your home folder on the server machine.&lt;br /&gt;
# Open a terminal window and change the work directory to the location you&#039;ve just saved the Makefile to. Then type in &#039;&#039;make install&#039;&#039; and press enter. This should download the latest BioCASe image, create a BioCASe container and run it.&lt;br /&gt;
&lt;br /&gt;
Per default, Docker will use port 80 for BioCASe. If this port is already used by another application on your server, you can instruct Docker to use another port. For using port 8181, for example, type in &#039;&#039;make install PORT=8181&#039;&#039; instead:&lt;br /&gt;
&lt;br /&gt;
[[File:DockerInstall.png|650px]]&lt;br /&gt;
&lt;br /&gt;
Voilà, that&#039;s it! To check your BioCASe installation, use your Browser to go to &#039;&#039;http://&amp;lt;dockerhost&amp;gt;&#039;&#039; (or &#039;&#039;http://&amp;lt;dockerhost&amp;gt;:8181&#039;&#039; if you used port 8181). Don&#039;t forget to [[Installation#Changing_the_Default_Password | change the default password]].&lt;br /&gt;
&lt;br /&gt;
You can also use the Makefile for stopping and starting the BioCASe container (for example, if you restart your server each night automatically) - just type &#039;&#039;make stop&#039;&#039; and &#039;&#039;make start&#039;&#039;. For removing the container, use &#039;&#039;make remove&#039;&#039;, for updating your BioCASe installation &#039;&#039;make update&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; The configuration and the log files of your BioCASe installation, as well as any XML and DwC archives created, will be stored in Docker hosted volumes. That means they are stored outside of the BioCASe container and will be preserved, even when the container is removed (actually, that&#039;s what happens if you update your installation). Docker hosted volumes are stored in the &#039;&#039;volumes&#039;&#039; folder of your docker installation, e.g. /var/lib/docker/volumes. If you want to backup the configuration of your BioCASe installation, just backup the folder /var/lib/docker/volumes/bps_config. To learn more about docker hosted volumes, please refer to the [https://docs.docker.com/storage/volumes/ Docker guide].&lt;br /&gt;
&lt;br /&gt;
== Regular BioCASe Installation ==&lt;br /&gt;
This is the path to choose if you haven&#039;t heard of [https://www.docker.com/ Docker] yet. If you have experience with this virtualisation software, we&#039;d suggest to install BioCASe from the Docker image (instructions in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]]).&lt;br /&gt;
&lt;br /&gt;
BioCASe runs on both Windows and Linux machines. Two thoughts to consider for you:&lt;br /&gt;
* If you want to use ODBC to connect to your database (for example to an Access database), you should make sure that an ODBC driver is available for the OS of your choice. For an Access database, for example, such a ODBC driver is available only for Windows - so you should go for Windows.&lt;br /&gt;
* If you don&#039;t wanna use ODBC, because you plan to connect to a wide-spread DB system such as MySQL, Postgres or MS SQL Server, we recommend Linux (Debian).&lt;br /&gt;
&lt;br /&gt;
=== Installing Apache/IIS and Python ===&lt;br /&gt;
If you’re using a Linux system, you probably don’t need to install either, since Apache and Python are usually preinstalled. Same holds true for MacOS, but you should have a look at one of the articles on the web to find out about the file locations.&lt;br /&gt;
&lt;br /&gt;
Even though the BPS runs with both Apache and Internet Information Server (IIS), we recommend using Apache, which is much easier to configure. However, if you’re already using IIS, you might want to stick with that.&lt;br /&gt;
&lt;br /&gt;
The BPS requires Python 3.7+ to run, it doesn&#039;t work with Python 2, which ended its life cycle in 2020 (same is true for Python 3 versions &amp;lt; 3.7). On most Linux systems, Python 3 will be pre-installed. If not, you should be able to install Python using &#039;&#039;apt-get update&#039;&#039; and &#039;&#039;apt-get install python&#039;&#039;. (By the way: You can install several different Python versions on the same machine without any conflicts.)&lt;br /&gt;
&lt;br /&gt;
If you’re installing on a Windows Vista (poor you) or Windows 7 machine, we recommend not to install Apache in the default program files folder, since there is some magic spell on that which can get you into trouble when changing Apache’s configuration files. Just choose another path (Apache Software Foundation?) to spare that hassle.&lt;br /&gt;
&lt;br /&gt;
Once you’ve successfully installed Apache and Python, you can proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
=== Downloading and unpacking the Provider Software ===&lt;br /&gt;
You can find the latest release of BioCASe on our [https://git.bgbm.org/biocase/bps/-/releases/permalink/latest Git page]. There are two archives available for download:&lt;br /&gt;
* The [https://git.bgbm.org/biocase/bps/-/archive/3.8.6/bps-3.8.6.zip default package (recommended)] contains the full installation and allows the generation of DarwinCore archives. For this feature, the [https://github.com/pentaho/pentaho-kettle Kettle libraries] are included in the download.&lt;br /&gt;
* The [https://www.biocase.org/products/provider_software/files/bps-3.8.6-minimal.zip minimal package] doesn&#039;t contain the Kettle libraries, hence it&#039;s not possible to create DarwinCore archives with such an installation. Choose this download only if you have a good reason to do so.&lt;br /&gt;
&lt;br /&gt;
Download the file to your server and unpack it to the desired location of your file system. It contains the BioCASe Provider Software in a folder that contains the version number, e.g. &#039;&#039;bps-3.8.0&#039;&#039;. We recommend to rename it to something that doesn&#039;t include the version number, so you don&#039;t need to touch your web server&#039;s configuration during future updates.&lt;br /&gt;
&lt;br /&gt;
For the remainder of this guide, we will assume you’ve installed the BPS into a folder named &#039;&#039;biocase&#039;&#039;, which should look like this by now:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseFolder.png|650px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the Setup Script ===&lt;br /&gt;
The setup script will initiate the configuration files with values you provide and point the script files to your Python installation (you can re-run the setup script in case that location changes). If you want to modify any of settings you made during the setup, you can change the values in the configuration tool later.&lt;br /&gt;
&lt;br /&gt;
In order to run the script, open a terminal window (or “command prompt” in Windows). Change the working directory to the folder you’ve downloaded the BPS to (&#039;&#039;biocase&#039;&#039;) and type in:&amp;lt;pre&amp;gt;python setup.py&amp;lt;/pre&amp;gt; In case Python is not found, you’ll have to add the full path name to the Python executable. Make sure the Python version given in the fifth line of the output is the one you desire (otherwise add the path to the correct executable):&lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptStart.png|550px]]&lt;br /&gt;
&lt;br /&gt;
The questions asked by the setup script do have defaults. If you want to keep them, just press &amp;lt;small&amp;gt;Return&amp;lt;/small&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Webserver domain:&amp;lt;/strong&amp;gt; This is the domain name of the web server you’re installing BioCASe on, e.g. &#039;&#039;http://www.myinstitution.org&#039;&#039;.  You can keep the default &#039;&#039;localhost&#039;&#039; as long as you’re configuring and testing the installation locally; for production you’ll need to change that into the correct domain name (or IP address) later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Base URL:&amp;lt;/strong&amp;gt; This will become the second part of the URL your installation will use. If you keep the default biocase, your installation will be accessible later at &#039;&#039;www.myinstitution.org/biocase&#039;&#039;, for example.&lt;br /&gt;
&lt;br /&gt;
After answering these two questions, the script will update your files. At the end of the output you can find the lines you&#039;ll need later to create the link between BioCASe and your web server, so do not close the window! &lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptDone.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Linking BioCASe and Your Web Server ===&lt;br /&gt;
&lt;br /&gt;
The public part of the provider software is stored in the &#039;&#039;www&#039;&#039; subfolder of your BioCASe installation and must be configured in your web server as a public folder. You should always make this folder public using a virtual directory: This means that you should never install BioCASe under the default root folder of your web server. Doing so can compromise your server security and will allow people to see your configuration files (which include passwords). So since we installed BioCASe in &#039;&#039;c:\biocase&#039;&#039;, the folder that must be published with a virtual directory is &#039;&#039;c:\biocase\www&#039;&#039; and will be accessible later through &#039;&#039;http://www.myinstitution.org/biocase&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Apache ====&lt;br /&gt;
If you use Apache, adding the BioCASe folder to your web server environment is as simple as copying the lines printed at the end of the setup script to the end of the Apache configuration file &#039;&#039;httpd.conf&#039;&#039;. This can typically be found in the &#039;&#039;conf&#039;&#039; folder of your Apache installation. If you’re adding BioCASe to an already productive web server, please ask the server admin before doing any changes!&lt;br /&gt;
&lt;br /&gt;
[[image:instHttpdConf.png|550px]] &lt;br /&gt;
&lt;br /&gt;
Save the file and restart Apache for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
==== Internet Information Server ====&lt;br /&gt;
&lt;br /&gt;
If you use Internet Information Server, you need to create a virtual directory for the folder &#039;&#039;c:\biocase\www&#039;&#039; using the IIS Server Manager. Grant all rights for this directory (Read, Write, Script Execution, Directory listing). You should also add &#039;&#039;index.html&#039;&#039; to the list of default documents (&amp;lt;small&amp;gt;Virtual Directory &amp;gt; Properties &amp;gt; Documents &amp;gt; Default&amp;lt;/small&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
In order to associate Python scripts with Python in IIS 5/6, you need to use the &amp;lt;small&amp;gt;Configure&amp;lt;/small&amp;gt; button on the virtual directory tab and associate the file extensions .cgi and .py with Python (see screenshot below). In IIS 7, you can open this dialog by choosing &amp;lt;small&amp;gt;Add Script Map&amp;lt;/small&amp;gt;. Note the placeholders &#039;&#039;%s %s&#039;&#039; after the Python executable!&lt;br /&gt;
&lt;br /&gt;
[[File:instAddScriptMap.png|330px]]&lt;br /&gt;
&lt;br /&gt;
If you run into problems configuring IIS, you should have a look at the tutorials available on the web, for example&lt;br /&gt;
* http://haishibai.blogspot.de/2011/02/setting-up-python-on-iis-7_01.html&lt;br /&gt;
* http://support.microsoft.com/kb/276494&lt;br /&gt;
&lt;br /&gt;
==== Testing the Link ====&lt;br /&gt;
&lt;br /&gt;
Once you’re done, you can test your BioCASe Installation by opening a browser and typing in &#039;&#039;http://localhost/biocase&#039;&#039; (replace &#039;&#039;localhost&#039;&#039; with the domain name of the machine you installed BioCASe on, if you’re not working locally). You should then see the start page of the BPS:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseStartpage.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Installing Additional Python Packages/Java/Graphviz ===&lt;br /&gt;
&lt;br /&gt;
Before you can start configuring your installation, you need to install additional packages, depending on the management system used for the database to be published and the functions of the BPS you intend to use.&lt;br /&gt;
&lt;br /&gt;
On the BPS start page, click on &amp;lt;small&amp;gt;Utilities&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;library test&amp;lt;/small&amp;gt; in order to navigate to the library test page that shows the status of installed libraries. On a fresh BPS installation, only the BioCASe libraries should be installed, since they&#039;re part of the archive file you’ve downloaded (or the Subversion repository you checked out from):&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesVanilla.png|550px]]&lt;br /&gt;
&lt;br /&gt;
If you plan to use the Local Query Tool (a small portal for querying and browsing your BioCASe webservice), you need to install the lxml library. You can do this easily by running the Python Package Installer (PIP): &#039;&#039;pip install lxml&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For each DBMS you plan to use with BioCASe (i.e. you have a database you want to publish with BioCASe), you’ll have to install the corresponding package. So if your collection is stored in a MySQL database, you&#039;ll need the MySQLdb library; the table shows you the command to run for installing it using pip: &#039;&#039;pip install mysqlclient&#039;&#039;. Once pip has installed the package, reload the libraries test page. The according list entry should turn from an orange &#039;&#039;not installed&#039;&#039; into a green version number. Redo this process for all DBMS you want to connect to.&lt;br /&gt;
&lt;br /&gt;
The Graphviz library listed under optional external binaries is used by the BPS to create a graph of your database’s data model in the table setup (you will learn in the [[DatasourceSetup#Setting_up_the_Database_Structure|Table Setup]] about this). If the data model is very simple (i.e., not more than 3 or 4 tables), you probably can spare the effort of installing Graphviz. Otherwise we recommend installing it: Simply click on the Download link and install the package using an installer file or a package manager on Linux.&lt;br /&gt;
&lt;br /&gt;
If you want to create DarwinCore Archives for your web services, you also need to install a Java Runtime Environment (JRE). BioCASe requires Java 1.8 or later for creating DarwinCore archives, so please check the version listed on the Testlibs page if it&#039;s already installed on the server.&lt;br /&gt;
&lt;br /&gt;
=== Changing the Default Password ===&lt;br /&gt;
&lt;br /&gt;
The configuration tool is a browser interface that allows you to configure almost every aspect of the BPS. As a last step of the setup, you should change the password.&lt;br /&gt;
&lt;br /&gt;
Go back to the Start page of the BPS (by clicking &amp;lt;small&amp;gt;Start&amp;lt;/small&amp;gt; at the top of the page, or by retyping &#039;&#039;http://localhost/biocase&#039;&#039; if the server is running on your computer), choose &amp;lt;small&amp;gt;Config Tool&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;System Administration&amp;lt;/small&amp;gt;. You will then be prompted for a password. Type in the default &#039;&#039;ACDC&#039;&#039;, then click &amp;lt;small&amp;gt;Submit&amp;lt;/small&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The top of the configuration page you’ll be directed to should look similar to this:&lt;br /&gt;
&lt;br /&gt;
[[image:instConfigTool.png|500px]]&lt;br /&gt;
&lt;br /&gt;
In the first two lines, you’ll see the values you entered during the setup script (in this case, the defaults &#039;&#039;localhost&#039;&#039; and &#039;&#039;biocase&#039;&#039;). In the fourth line, enter a new password. Please be careful when typing (if you forget the password some day, you can reset it by directly editing the configuration file). Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the new password to the configuration file.&lt;br /&gt;
&lt;br /&gt;
In case you’ve installed Graphviz, you need to tell the BPS the location of the binaries, since it is not a Python package that will be registered automatically. In order to do so, locate the Graphviz installation on your local disk and enter the path to the binary executable into the text box labelled &amp;lt;small&amp;gt;Path to Graphviz executable&amp;lt;/small&amp;gt;. On Linux machines it might look similar to the default (&#039;&#039;/usr/local/bin/dot&#039;&#039;), on Windows machines it will be probably something like &#039;&#039;C:/Program Files/Graphviz 2.44.1/bin/&#039;&#039;. Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the path.&lt;br /&gt;
&lt;br /&gt;
=== Checking Your Installation ===&lt;br /&gt;
&lt;br /&gt;
Before you proceed to the configuration, you should make sure everything is installed correctly:&lt;br /&gt;
&lt;br /&gt;
# Typing in &#039;&#039;http://localhost/biocase&#039;&#039; (or the appropriate values of your installation) takes you to the entry page of the provider software (as shown in the section [[#Linking_BioCASe_and_Your_Web_Server|Linking BioCASe and Your Web Server]]).&lt;br /&gt;
# The libraries test page (&amp;lt;small&amp;gt;Utilities &amp;gt; library test&amp;lt;/small&amp;gt;) shows you’ve installed the packages for your DBMS, lxml (if you want to use the Local Query Tool), Java (if you want to create DarwinCore Archives) and the Graphviz dot (if you decided so).&lt;br /&gt;
# &amp;lt;small&amp;gt;Status of writeable directories&amp;lt;/small&amp;gt; shows a green &amp;lt;small&amp;gt;writeable&amp;lt;/small&amp;gt; for all four directories. If not, the path to problematic file will be given – please grant write access to Python.&lt;br /&gt;
&lt;br /&gt;
If you want to connect BioCASe to a variety of different database management systems, create DarwinCore archives and use the QueryTool, the libraries test pages should look like this:&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesDone.png|650px]]&lt;br /&gt;
&lt;br /&gt;
== Updating an existing BioCASe Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Updating a BioCASe Docker installation ===&lt;br /&gt;
This is very simple with the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] you downloaded for installing BioCASe. Just go to the folder where you stored the file and run &#039;&#039;make update&#039;&#039;. This will stop and remove the BioCASe container, download the latest BioCASe image and create/start a new BioCASe container. Since the configuration files are not stored within the container, all your data sources will be preserved.&lt;br /&gt;
&lt;br /&gt;
=== Updating a regular BioCASe installation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Important Note&amp;lt;/u&amp;gt;&#039;&#039;&#039;: If you have a running BioCASe installation, you shouldn’t touch it until you’ve successfully installed a new version. So keep the old installation instead of replacing it!&lt;br /&gt;
&lt;br /&gt;
==== Updating from version 2.5 or later ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# Change directory to the new installation and run setup script. When asked whether to import the configuration from an old installation, answer yes. The setup script will now import the configuration of the old installation, including the data sources.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;br /&gt;
&lt;br /&gt;
==== Updating from older versions &amp;lt; 2.5 ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version; moreover, you will need the configuration files later.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# [[Installation#Running_the_Setup_Script|Run the setup script]]. When asked whether to import the configuration from an old installation, just press Return (defaults to no). Make sure to provide the the same base URL that was used by the old installation (for example &#039;&#039;/biocase&#039;&#039;).&lt;br /&gt;
# [[Installation#Changing_the_Default_Password|Change the default password]] of the new installation to the one you used in the old installation.&lt;br /&gt;
# Open the file &#039;&#039;config/config.ini&#039;&#039; of your old installation in a text editor. Open the config tool of the new installation and navigate to the System Administration page. Compare the settings in the section &amp;lt;small&amp;gt;Server configuration&amp;lt;/small&amp;gt; with the values you can find in the old configuration file and change them, if necessary (leave values unchanged if you don&#039;t find them in the old file). Press &amp;lt;small&amp;gt;Update config&amp;lt;/small&amp;gt;.&lt;br /&gt;
# Last, copy the configuration of the BioCASe web services: Open the folder &#039;&#039;config/datasources&#039;&#039; of your old installation and copy all subfolders to &#039;&#039;config/datasources&#039;&#039; of your new installation.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1206</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1206"/>
		<updated>2025-03-10T08:48:11Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Installing BioCASe from a Docker image */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This part of the wiki explains how to install the BioCASe Provider Software. Depending on your skills, it should take between 15 and 60 minutes. If you’re a beginner, please read the [[BeginnersGuide|Beginner’s Guide]] first.&lt;br /&gt;
&lt;br /&gt;
== Requirements and Considerations ==&lt;br /&gt;
Before installing, please make sure that the system you’re intending to install the BPS on meets the following requirements (If you find out one of these items is not met, please ask your system administrator for help, read the [[FAQ]] or get in [[Special:Contact|contact with the BioCASe Team]].):&lt;br /&gt;
&lt;br /&gt;
# You have administrative privileges on this machine, i.e. the user rights to install new software packages.&lt;br /&gt;
# It is accessible from outside your institution. This means it either needs to be outside any institutional firewall or, more likely, the HTTP port is open for an existing firewall.&lt;br /&gt;
# A direct connection can be established from this machine to the database to be published – either because there’s no firewall in between, or the port used by the DBMS is open (e. g. 3306 for MySQL).&lt;br /&gt;
&lt;br /&gt;
In addition to the regular installation, you can install BioCASe from a Docker image. Docker is an operating-system-level virtualization software that allows easy software deployment in so-called containers. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide]. &#039;&#039;&#039;If you&#039;re famliar with Docker, we&#039;d suggest to use the Docker path for installing BioCASe&#039;&#039;&#039; - read more in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]] below.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Installing BioCASe from a Docker image ==&lt;br /&gt;
&lt;br /&gt;
Good choice! Installing BioCASe from a Docker image is much easer than installing the required components step-by-step. In addition, it&#039;s easier to update an existing installation. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide] first.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; BioCASe requires Docker version 17 or later. If you already have Docker installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
&lt;br /&gt;
For installing BioCASe from the Docker image, please follow these steps:&lt;br /&gt;
&lt;br /&gt;
# If you&#039;re not using Linux, install the &#039;&#039;make&#039;&#039; tool from https://gnuwin32.sourceforge.net/packages/make.htm.&lt;br /&gt;
# Install Docker Community Edition (Docker CE). For detailed instructions, see [https://docs.docker.com/install/ About Docker CE] and choose the tutorial for your platform. To make sure Docker is properly installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
# Download the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] that contains the commands for installing and updating BioCASe. Use &amp;quot;Save as...&amp;quot; to store it to your home folder on the server machine.&lt;br /&gt;
# Open a terminal window and change the work directory to the location you&#039;ve just saved the Makefile to. Then type in &#039;&#039;make install&#039;&#039; and press enter. This should download the latest BioCASe image, create a BioCASe container and run it.&lt;br /&gt;
&lt;br /&gt;
Per default, Docker will use port 80 for BioCASe. If this port is already used by another application on your server, you can instruct Docker to use another port. For using port 8181, for example, type in &#039;&#039;make install PORT=8181&#039;&#039; instead:&lt;br /&gt;
&lt;br /&gt;
[[File:DockerInstall.png|650px]]&lt;br /&gt;
&lt;br /&gt;
Voilà, that&#039;s it! To check your BioCASe installation, use your Browser to go to &#039;&#039;http://&amp;lt;dockerhost&amp;gt;&#039;&#039; (or &#039;&#039;http://&amp;lt;dockerhost&amp;gt;:8181&#039; if you used port 8181). Don&#039;t forget to [[Installation#Changing_the_Default_Password | change the default password]].&lt;br /&gt;
&lt;br /&gt;
You can also use the Makefile for stopping and starting the BioCASe container (for example, if you restart your server each night automatically) - just type &#039;&#039;make stop&#039;&#039; and &#039;&#039;make start&#039;&#039;. For removing the container, use &#039;&#039;make remove&#039;&#039;, for updating your BioCASe installation &#039;&#039;make update&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; The configuration and the log files of your BioCASe installation, as well as any XML and DwC archives created, will be stored in Docker hosted volumes. That means they are stored outside of the BioCASe container and will be preserved, even when the container is removed (actually, that&#039;s what happens if you update your installation). Docker hosted volumes are stored in the &#039;&#039;volumes&#039;&#039; folder of your docker installation, e.g. /var/lib/docker/volumes. If you want to backup the configuration of your BioCASe installation, just backup the folder /var/lib/docker/volumes/bps_config. To learn more about docker hosted volumes, please refer to the [https://docs.docker.com/storage/volumes/ Docker guide].&lt;br /&gt;
&lt;br /&gt;
== Regular BioCASe Installation ==&lt;br /&gt;
This is the path to choose if you haven&#039;t heard of [https://www.docker.com/ Docker] yet. If you have experience with this virtualisation software, we&#039;d suggest to install BioCASe from the Docker image (instructions in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]]).&lt;br /&gt;
&lt;br /&gt;
BioCASe runs on both Windows and Linux machines. Two thoughts to consider for you:&lt;br /&gt;
* If you want to use ODBC to connect to your database (for example to an Access database), you should make sure that an ODBC driver is available for the OS of your choice. For an Access database, for example, such a ODBC driver is available only for Windows - so you should go for Windows.&lt;br /&gt;
* If you don&#039;t wanna use ODBC, because you plan to connect to a wide-spread DB system such as MySQL, Postgres or MS SQL Server, we recommend Linux (Debian).&lt;br /&gt;
&lt;br /&gt;
=== Installing Apache/IIS and Python ===&lt;br /&gt;
If you’re using a Linux system, you probably don’t need to install either, since Apache and Python are usually preinstalled. Same holds true for MacOS, but you should have a look at one of the articles on the web to find out about the file locations.&lt;br /&gt;
&lt;br /&gt;
Even though the BPS runs with both Apache and Internet Information Server (IIS), we recommend using Apache, which is much easier to configure. However, if you’re already using IIS, you might want to stick with that.&lt;br /&gt;
&lt;br /&gt;
The BPS requires Python 3.7+ to run, it doesn&#039;t work with Python 2, which ended its life cycle in 2020 (same is true for Python 3 versions &amp;lt; 3.7). On most Linux systems, Python 3 will be pre-installed. If not, you should be able to install Python using &#039;&#039;apt-get update&#039;&#039; and &#039;&#039;apt-get install python&#039;&#039;. (By the way: You can install several different Python versions on the same machine without any conflicts.)&lt;br /&gt;
&lt;br /&gt;
If you’re installing on a Windows Vista (poor you) or Windows 7 machine, we recommend not to install Apache in the default program files folder, since there is some magic spell on that which can get you into trouble when changing Apache’s configuration files. Just choose another path (Apache Software Foundation?) to spare that hassle.&lt;br /&gt;
&lt;br /&gt;
Once you’ve successfully installed Apache and Python, you can proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
=== Downloading and unpacking the Provider Software ===&lt;br /&gt;
You can find the latest release of BioCASe on our [https://git.bgbm.org/biocase/bps/-/releases/permalink/latest Git page]. There are two archives available for download:&lt;br /&gt;
* The [https://git.bgbm.org/biocase/bps/-/archive/3.8.6/bps-3.8.6.zip default package (recommended)] contains the full installation and allows the generation of DarwinCore archives. For this feature, the [https://github.com/pentaho/pentaho-kettle Kettle libraries] are included in the download.&lt;br /&gt;
* The [https://www.biocase.org/products/provider_software/files/bps-3.8.6-minimal.zip minimal package] doesn&#039;t contain the Kettle libraries, hence it&#039;s not possible to create DarwinCore archives with such an installation. Choose this download only if you have a good reason to do so.&lt;br /&gt;
&lt;br /&gt;
Download the file to your server and unpack it to the desired location of your file system. It contains the BioCASe Provider Software in a folder that contains the version number, e.g. &#039;&#039;bps-3.8.0&#039;&#039;. We recommend to rename it to something that doesn&#039;t include the version number, so you don&#039;t need to touch your web server&#039;s configuration during future updates.&lt;br /&gt;
&lt;br /&gt;
For the remainder of this guide, we will assume you’ve installed the BPS into a folder named &#039;&#039;biocase&#039;&#039;, which should look like this by now:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseFolder.png|650px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the Setup Script ===&lt;br /&gt;
The setup script will initiate the configuration files with values you provide and point the script files to your Python installation (you can re-run the setup script in case that location changes). If you want to modify any of settings you made during the setup, you can change the values in the configuration tool later.&lt;br /&gt;
&lt;br /&gt;
In order to run the script, open a terminal window (or “command prompt” in Windows). Change the working directory to the folder you’ve downloaded the BPS to (&#039;&#039;biocase&#039;&#039;) and type in:&amp;lt;pre&amp;gt;python setup.py&amp;lt;/pre&amp;gt; In case Python is not found, you’ll have to add the full path name to the Python executable. Make sure the Python version given in the fifth line of the output is the one you desire (otherwise add the path to the correct executable):&lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptStart.png|550px]]&lt;br /&gt;
&lt;br /&gt;
The questions asked by the setup script do have defaults. If you want to keep them, just press &amp;lt;small&amp;gt;Return&amp;lt;/small&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Webserver domain:&amp;lt;/strong&amp;gt; This is the domain name of the web server you’re installing BioCASe on, e.g. &#039;&#039;http://www.myinstitution.org&#039;&#039;.  You can keep the default &#039;&#039;localhost&#039;&#039; as long as you’re configuring and testing the installation locally; for production you’ll need to change that into the correct domain name (or IP address) later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Base URL:&amp;lt;/strong&amp;gt; This will become the second part of the URL your installation will use. If you keep the default biocase, your installation will be accessible later at &#039;&#039;www.myinstitution.org/biocase&#039;&#039;, for example.&lt;br /&gt;
&lt;br /&gt;
After answering these two questions, the script will update your files. At the end of the output you can find the lines you&#039;ll need later to create the link between BioCASe and your web server, so do not close the window! &lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptDone.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Linking BioCASe and Your Web Server ===&lt;br /&gt;
&lt;br /&gt;
The public part of the provider software is stored in the &#039;&#039;www&#039;&#039; subfolder of your BioCASe installation and must be configured in your web server as a public folder. You should always make this folder public using a virtual directory: This means that you should never install BioCASe under the default root folder of your web server. Doing so can compromise your server security and will allow people to see your configuration files (which include passwords). So since we installed BioCASe in &#039;&#039;c:\biocase&#039;&#039;, the folder that must be published with a virtual directory is &#039;&#039;c:\biocase\www&#039;&#039; and will be accessible later through &#039;&#039;http://www.myinstitution.org/biocase&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Apache ====&lt;br /&gt;
If you use Apache, adding the BioCASe folder to your web server environment is as simple as copying the lines printed at the end of the setup script to the end of the Apache configuration file &#039;&#039;httpd.conf&#039;&#039;. This can typically be found in the &#039;&#039;conf&#039;&#039; folder of your Apache installation. If you’re adding BioCASe to an already productive web server, please ask the server admin before doing any changes!&lt;br /&gt;
&lt;br /&gt;
[[image:instHttpdConf.png|550px]] &lt;br /&gt;
&lt;br /&gt;
Save the file and restart Apache for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
==== Internet Information Server ====&lt;br /&gt;
&lt;br /&gt;
If you use Internet Information Server, you need to create a virtual directory for the folder &#039;&#039;c:\biocase\www&#039;&#039; using the IIS Server Manager. Grant all rights for this directory (Read, Write, Script Execution, Directory listing). You should also add &#039;&#039;index.html&#039;&#039; to the list of default documents (&amp;lt;small&amp;gt;Virtual Directory &amp;gt; Properties &amp;gt; Documents &amp;gt; Default&amp;lt;/small&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
In order to associate Python scripts with Python in IIS 5/6, you need to use the &amp;lt;small&amp;gt;Configure&amp;lt;/small&amp;gt; button on the virtual directory tab and associate the file extensions .cgi and .py with Python (see screenshot below). In IIS 7, you can open this dialog by choosing &amp;lt;small&amp;gt;Add Script Map&amp;lt;/small&amp;gt;. Note the placeholders &#039;&#039;%s %s&#039;&#039; after the Python executable!&lt;br /&gt;
&lt;br /&gt;
[[File:instAddScriptMap.png|330px]]&lt;br /&gt;
&lt;br /&gt;
If you run into problems configuring IIS, you should have a look at the tutorials available on the web, for example&lt;br /&gt;
* http://haishibai.blogspot.de/2011/02/setting-up-python-on-iis-7_01.html&lt;br /&gt;
* http://support.microsoft.com/kb/276494&lt;br /&gt;
&lt;br /&gt;
==== Testing the Link ====&lt;br /&gt;
&lt;br /&gt;
Once you’re done, you can test your BioCASe Installation by opening a browser and typing in &#039;&#039;http://localhost/biocase&#039;&#039; (replace &#039;&#039;localhost&#039;&#039; with the domain name of the machine you installed BioCASe on, if you’re not working locally). You should then see the start page of the BPS:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseStartpage.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Installing Additional Python Packages/Java/Graphviz ===&lt;br /&gt;
&lt;br /&gt;
Before you can start configuring your installation, you need to install additional packages, depending on the management system used for the database to be published and the functions of the BPS you intend to use.&lt;br /&gt;
&lt;br /&gt;
On the BPS start page, click on &amp;lt;small&amp;gt;Utilities&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;library test&amp;lt;/small&amp;gt; in order to navigate to the library test page that shows the status of installed libraries. On a fresh BPS installation, only the BioCASe libraries should be installed, since they&#039;re part of the archive file you’ve downloaded (or the Subversion repository you checked out from):&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesVanilla.png|550px]]&lt;br /&gt;
&lt;br /&gt;
If you plan to use the Local Query Tool (a small portal for querying and browsing your BioCASe webservice), you need to install the lxml library. You can do this easily by running the Python Package Installer (PIP): &#039;&#039;pip install lxml&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For each DBMS you plan to use with BioCASe (i.e. you have a database you want to publish with BioCASe), you’ll have to install the corresponding package. So if your collection is stored in a MySQL database, you&#039;ll need the MySQLdb library; the table shows you the command to run for installing it using pip: &#039;&#039;pip install mysqlclient&#039;&#039;. Once pip has installed the package, reload the libraries test page. The according list entry should turn from an orange &#039;&#039;not installed&#039;&#039; into a green version number. Redo this process for all DBMS you want to connect to.&lt;br /&gt;
&lt;br /&gt;
The Graphviz library listed under optional external binaries is used by the BPS to create a graph of your database’s data model in the table setup (you will learn in the [[DatasourceSetup#Setting_up_the_Database_Structure|Table Setup]] about this). If the data model is very simple (i.e., not more than 3 or 4 tables), you probably can spare the effort of installing Graphviz. Otherwise we recommend installing it: Simply click on the Download link and install the package using an installer file or a package manager on Linux.&lt;br /&gt;
&lt;br /&gt;
If you want to create DarwinCore Archives for your web services, you also need to install a Java Runtime Environment (JRE). BioCASe requires Java 1.8 or later for creating DarwinCore archives, so please check the version listed on the Testlibs page if it&#039;s already installed on the server.&lt;br /&gt;
&lt;br /&gt;
=== Changing the Default Password ===&lt;br /&gt;
&lt;br /&gt;
The configuration tool is a browser interface that allows you to configure almost every aspect of the BPS. As a last step of the setup, you should change the password.&lt;br /&gt;
&lt;br /&gt;
Go back to the Start page of the BPS (by clicking &amp;lt;small&amp;gt;Start&amp;lt;/small&amp;gt; at the top of the page, or by retyping &#039;&#039;http://localhost/biocase&#039;&#039; if the server is running on your computer), choose &amp;lt;small&amp;gt;Config Tool&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;System Administration&amp;lt;/small&amp;gt;. You will then be prompted for a password. Type in the default &#039;&#039;ACDC&#039;&#039;, then click &amp;lt;small&amp;gt;Submit&amp;lt;/small&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The top of the configuration page you’ll be directed to should look similar to this:&lt;br /&gt;
&lt;br /&gt;
[[image:instConfigTool.png|500px]]&lt;br /&gt;
&lt;br /&gt;
In the first two lines, you’ll see the values you entered during the setup script (in this case, the defaults &#039;&#039;localhost&#039;&#039; and &#039;&#039;biocase&#039;&#039;). In the fourth line, enter a new password. Please be careful when typing (if you forget the password some day, you can reset it by directly editing the configuration file). Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the new password to the configuration file.&lt;br /&gt;
&lt;br /&gt;
In case you’ve installed Graphviz, you need to tell the BPS the location of the binaries, since it is not a Python package that will be registered automatically. In order to do so, locate the Graphviz installation on your local disk and enter the path to the binary executable into the text box labelled &amp;lt;small&amp;gt;Path to Graphviz executable&amp;lt;/small&amp;gt;. On Linux machines it might look similar to the default (&#039;&#039;/usr/local/bin/dot&#039;&#039;), on Windows machines it will be probably something like &#039;&#039;C:/Program Files/Graphviz 2.44.1/bin/&#039;&#039;. Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the path.&lt;br /&gt;
&lt;br /&gt;
=== Checking Your Installation ===&lt;br /&gt;
&lt;br /&gt;
Before you proceed to the configuration, you should make sure everything is installed correctly:&lt;br /&gt;
&lt;br /&gt;
# Typing in &#039;&#039;http://localhost/biocase&#039;&#039; (or the appropriate values of your installation) takes you to the entry page of the provider software (as shown in the section [[#Linking_BioCASe_and_Your_Web_Server|Linking BioCASe and Your Web Server]]).&lt;br /&gt;
# The libraries test page (&amp;lt;small&amp;gt;Utilities &amp;gt; library test&amp;lt;/small&amp;gt;) shows you’ve installed the packages for your DBMS, lxml (if you want to use the Local Query Tool), Java (if you want to create DarwinCore Archives) and the Graphviz dot (if you decided so).&lt;br /&gt;
# &amp;lt;small&amp;gt;Status of writeable directories&amp;lt;/small&amp;gt; shows a green &amp;lt;small&amp;gt;writeable&amp;lt;/small&amp;gt; for all four directories. If not, the path to problematic file will be given – please grant write access to Python.&lt;br /&gt;
&lt;br /&gt;
If you want to connect BioCASe to a variety of different database management systems, create DarwinCore archives and use the QueryTool, the libraries test pages should look like this:&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesDone.png|650px]]&lt;br /&gt;
&lt;br /&gt;
== Updating an existing BioCASe Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Updating a BioCASe Docker installation ===&lt;br /&gt;
This is very simple with the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] you downloaded for installing BioCASe. Just go to the folder where you stored the file and run &#039;&#039;make update&#039;&#039;. This will stop and remove the BioCASe container, download the latest BioCASe image and create/start a new BioCASe container. Since the configuration files are not stored within the container, all your data sources will be preserved.&lt;br /&gt;
&lt;br /&gt;
=== Updating a regular BioCASe installation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Important Note&amp;lt;/u&amp;gt;&#039;&#039;&#039;: If you have a running BioCASe installation, you shouldn’t touch it until you’ve successfully installed a new version. So keep the old installation instead of replacing it!&lt;br /&gt;
&lt;br /&gt;
==== Updating from version 2.5 or later ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# Change directory to the new installation and run setup script. When asked whether to import the configuration from an old installation, answer yes. The setup script will now import the configuration of the old installation, including the data sources.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;br /&gt;
&lt;br /&gt;
==== Updating from older versions &amp;lt; 2.5 ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version; moreover, you will need the configuration files later.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# [[Installation#Running_the_Setup_Script|Run the setup script]]. When asked whether to import the configuration from an old installation, just press Return (defaults to no). Make sure to provide the the same base URL that was used by the old installation (for example &#039;&#039;/biocase&#039;&#039;).&lt;br /&gt;
# [[Installation#Changing_the_Default_Password|Change the default password]] of the new installation to the one you used in the old installation.&lt;br /&gt;
# Open the file &#039;&#039;config/config.ini&#039;&#039; of your old installation in a text editor. Open the config tool of the new installation and navigate to the System Administration page. Compare the settings in the section &amp;lt;small&amp;gt;Server configuration&amp;lt;/small&amp;gt; with the values you can find in the old configuration file and change them, if necessary (leave values unchanged if you don&#039;t find them in the old file). Press &amp;lt;small&amp;gt;Update config&amp;lt;/small&amp;gt;.&lt;br /&gt;
# Last, copy the configuration of the BioCASe web services: Open the folder &#039;&#039;config/datasources&#039;&#039; of your old installation and copy all subfolders to &#039;&#039;config/datasources&#039;&#039; of your new installation.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1205</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1205"/>
		<updated>2025-03-10T08:46:05Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Installing BioCASe from a Docker image */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This part of the wiki explains how to install the BioCASe Provider Software. Depending on your skills, it should take between 15 and 60 minutes. If you’re a beginner, please read the [[BeginnersGuide|Beginner’s Guide]] first.&lt;br /&gt;
&lt;br /&gt;
== Requirements and Considerations ==&lt;br /&gt;
Before installing, please make sure that the system you’re intending to install the BPS on meets the following requirements (If you find out one of these items is not met, please ask your system administrator for help, read the [[FAQ]] or get in [[Special:Contact|contact with the BioCASe Team]].):&lt;br /&gt;
&lt;br /&gt;
# You have administrative privileges on this machine, i.e. the user rights to install new software packages.&lt;br /&gt;
# It is accessible from outside your institution. This means it either needs to be outside any institutional firewall or, more likely, the HTTP port is open for an existing firewall.&lt;br /&gt;
# A direct connection can be established from this machine to the database to be published – either because there’s no firewall in between, or the port used by the DBMS is open (e. g. 3306 for MySQL).&lt;br /&gt;
&lt;br /&gt;
In addition to the regular installation, you can install BioCASe from a Docker image. Docker is an operating-system-level virtualization software that allows easy software deployment in so-called containers. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide]. &#039;&#039;&#039;If you&#039;re famliar with Docker, we&#039;d suggest to use the Docker path for installing BioCASe&#039;&#039;&#039; - read more in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]] below.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Installing BioCASe from a Docker image ==&lt;br /&gt;
&lt;br /&gt;
Good choice! Installing BioCASe from a Docker image is much easer than installing the required components step-by-step. In addition, it&#039;s easier to update an existing installation. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide] first.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; BioCASe requires Docker version 17 or later. If you already have Docker installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
&lt;br /&gt;
For installing BioCASe from the Docker image, please follow these steps:&lt;br /&gt;
&lt;br /&gt;
# If you&#039;re not using Linux, install the &#039;&#039;make&#039;&#039; tool from https://gnuwin32.sourceforge.net/packages/make.htm.&lt;br /&gt;
# Install Docker Community Edition (Docker CE). For detailed instructions, see [https://docs.docker.com/install/ About Docker CE] and choose the tutorial for your platform. To make sure Docker is properly installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
# Download the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] that contains the commands for installing and updating BioCASe. Use &amp;quot;Save as...&amp;quot; to store it to your home folder on the server machine.&lt;br /&gt;
# Open a terminal window and change the work directory to the location you&#039;ve just saved the Makefile to. Then type in &#039;&#039;make install&#039;&#039; and press enter. This should download the latest BioCASe image, create a BioCASe container and run it.&lt;br /&gt;
&lt;br /&gt;
Per default, Docker will use port 80 for BioCASe. If this port is already used by another application on your server, you can instruct Docker to use another port. For using port 8181, for example, type in &#039;&#039;make install PORT=8181&#039;&#039; instead:&lt;br /&gt;
&lt;br /&gt;
[[File:DockerInstall.png|650px]]&lt;br /&gt;
&lt;br /&gt;
Voilà, that&#039;s it! To check your BioCASe installation, use your Browser to go to &#039;&#039;http://&amp;lt;dockerhost&amp;gt;/&#039;&#039;. Don&#039;t forget to [[Installation#Changing_the_Default_Password | change the default password]].&lt;br /&gt;
&lt;br /&gt;
You can also use the Makefile for stopping and starting the BioCASe container (for example, if you restart your server each night automatically) - just type &#039;&#039;make stop&#039;&#039; and &#039;&#039;make start&#039;&#039;. For removing the container, use &#039;&#039;make remove&#039;&#039;, for updating your BioCASe installation &#039;&#039;make update&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; The configuration and the log files of your BioCASe installation, as well as any XML and DwC archives created, will be stored in Docker hosted volumes. That means they are stored outside of the BioCASe container and will be preserved, even when the container is removed (actually, that&#039;s what happens if you update your installation). Docker hosted volumes are stored in the &#039;&#039;volumes&#039;&#039; folder of your docker installation, e.g. /var/lib/docker/volumes. If you want to backup the configuration of your BioCASe installation, just backup the folder /var/lib/docker/volumes/bps_config. To learn more about docker hosted volumes, please refer to the [https://docs.docker.com/storage/volumes/ Docker guide].&lt;br /&gt;
&lt;br /&gt;
== Regular BioCASe Installation ==&lt;br /&gt;
This is the path to choose if you haven&#039;t heard of [https://www.docker.com/ Docker] yet. If you have experience with this virtualisation software, we&#039;d suggest to install BioCASe from the Docker image (instructions in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]]).&lt;br /&gt;
&lt;br /&gt;
BioCASe runs on both Windows and Linux machines. Two thoughts to consider for you:&lt;br /&gt;
* If you want to use ODBC to connect to your database (for example to an Access database), you should make sure that an ODBC driver is available for the OS of your choice. For an Access database, for example, such a ODBC driver is available only for Windows - so you should go for Windows.&lt;br /&gt;
* If you don&#039;t wanna use ODBC, because you plan to connect to a wide-spread DB system such as MySQL, Postgres or MS SQL Server, we recommend Linux (Debian).&lt;br /&gt;
&lt;br /&gt;
=== Installing Apache/IIS and Python ===&lt;br /&gt;
If you’re using a Linux system, you probably don’t need to install either, since Apache and Python are usually preinstalled. Same holds true for MacOS, but you should have a look at one of the articles on the web to find out about the file locations.&lt;br /&gt;
&lt;br /&gt;
Even though the BPS runs with both Apache and Internet Information Server (IIS), we recommend using Apache, which is much easier to configure. However, if you’re already using IIS, you might want to stick with that.&lt;br /&gt;
&lt;br /&gt;
The BPS requires Python 3.7+ to run, it doesn&#039;t work with Python 2, which ended its life cycle in 2020 (same is true for Python 3 versions &amp;lt; 3.7). On most Linux systems, Python 3 will be pre-installed. If not, you should be able to install Python using &#039;&#039;apt-get update&#039;&#039; and &#039;&#039;apt-get install python&#039;&#039;. (By the way: You can install several different Python versions on the same machine without any conflicts.)&lt;br /&gt;
&lt;br /&gt;
If you’re installing on a Windows Vista (poor you) or Windows 7 machine, we recommend not to install Apache in the default program files folder, since there is some magic spell on that which can get you into trouble when changing Apache’s configuration files. Just choose another path (Apache Software Foundation?) to spare that hassle.&lt;br /&gt;
&lt;br /&gt;
Once you’ve successfully installed Apache and Python, you can proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
=== Downloading and unpacking the Provider Software ===&lt;br /&gt;
You can find the latest release of BioCASe on our [https://git.bgbm.org/biocase/bps/-/releases/permalink/latest Git page]. There are two archives available for download:&lt;br /&gt;
* The [https://git.bgbm.org/biocase/bps/-/archive/3.8.6/bps-3.8.6.zip default package (recommended)] contains the full installation and allows the generation of DarwinCore archives. For this feature, the [https://github.com/pentaho/pentaho-kettle Kettle libraries] are included in the download.&lt;br /&gt;
* The [https://www.biocase.org/products/provider_software/files/bps-3.8.6-minimal.zip minimal package] doesn&#039;t contain the Kettle libraries, hence it&#039;s not possible to create DarwinCore archives with such an installation. Choose this download only if you have a good reason to do so.&lt;br /&gt;
&lt;br /&gt;
Download the file to your server and unpack it to the desired location of your file system. It contains the BioCASe Provider Software in a folder that contains the version number, e.g. &#039;&#039;bps-3.8.0&#039;&#039;. We recommend to rename it to something that doesn&#039;t include the version number, so you don&#039;t need to touch your web server&#039;s configuration during future updates.&lt;br /&gt;
&lt;br /&gt;
For the remainder of this guide, we will assume you’ve installed the BPS into a folder named &#039;&#039;biocase&#039;&#039;, which should look like this by now:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseFolder.png|650px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the Setup Script ===&lt;br /&gt;
The setup script will initiate the configuration files with values you provide and point the script files to your Python installation (you can re-run the setup script in case that location changes). If you want to modify any of settings you made during the setup, you can change the values in the configuration tool later.&lt;br /&gt;
&lt;br /&gt;
In order to run the script, open a terminal window (or “command prompt” in Windows). Change the working directory to the folder you’ve downloaded the BPS to (&#039;&#039;biocase&#039;&#039;) and type in:&amp;lt;pre&amp;gt;python setup.py&amp;lt;/pre&amp;gt; In case Python is not found, you’ll have to add the full path name to the Python executable. Make sure the Python version given in the fifth line of the output is the one you desire (otherwise add the path to the correct executable):&lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptStart.png|550px]]&lt;br /&gt;
&lt;br /&gt;
The questions asked by the setup script do have defaults. If you want to keep them, just press &amp;lt;small&amp;gt;Return&amp;lt;/small&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Webserver domain:&amp;lt;/strong&amp;gt; This is the domain name of the web server you’re installing BioCASe on, e.g. &#039;&#039;http://www.myinstitution.org&#039;&#039;.  You can keep the default &#039;&#039;localhost&#039;&#039; as long as you’re configuring and testing the installation locally; for production you’ll need to change that into the correct domain name (or IP address) later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Base URL:&amp;lt;/strong&amp;gt; This will become the second part of the URL your installation will use. If you keep the default biocase, your installation will be accessible later at &#039;&#039;www.myinstitution.org/biocase&#039;&#039;, for example.&lt;br /&gt;
&lt;br /&gt;
After answering these two questions, the script will update your files. At the end of the output you can find the lines you&#039;ll need later to create the link between BioCASe and your web server, so do not close the window! &lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptDone.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Linking BioCASe and Your Web Server ===&lt;br /&gt;
&lt;br /&gt;
The public part of the provider software is stored in the &#039;&#039;www&#039;&#039; subfolder of your BioCASe installation and must be configured in your web server as a public folder. You should always make this folder public using a virtual directory: This means that you should never install BioCASe under the default root folder of your web server. Doing so can compromise your server security and will allow people to see your configuration files (which include passwords). So since we installed BioCASe in &#039;&#039;c:\biocase&#039;&#039;, the folder that must be published with a virtual directory is &#039;&#039;c:\biocase\www&#039;&#039; and will be accessible later through &#039;&#039;http://www.myinstitution.org/biocase&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Apache ====&lt;br /&gt;
If you use Apache, adding the BioCASe folder to your web server environment is as simple as copying the lines printed at the end of the setup script to the end of the Apache configuration file &#039;&#039;httpd.conf&#039;&#039;. This can typically be found in the &#039;&#039;conf&#039;&#039; folder of your Apache installation. If you’re adding BioCASe to an already productive web server, please ask the server admin before doing any changes!&lt;br /&gt;
&lt;br /&gt;
[[image:instHttpdConf.png|550px]] &lt;br /&gt;
&lt;br /&gt;
Save the file and restart Apache for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
==== Internet Information Server ====&lt;br /&gt;
&lt;br /&gt;
If you use Internet Information Server, you need to create a virtual directory for the folder &#039;&#039;c:\biocase\www&#039;&#039; using the IIS Server Manager. Grant all rights for this directory (Read, Write, Script Execution, Directory listing). You should also add &#039;&#039;index.html&#039;&#039; to the list of default documents (&amp;lt;small&amp;gt;Virtual Directory &amp;gt; Properties &amp;gt; Documents &amp;gt; Default&amp;lt;/small&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
In order to associate Python scripts with Python in IIS 5/6, you need to use the &amp;lt;small&amp;gt;Configure&amp;lt;/small&amp;gt; button on the virtual directory tab and associate the file extensions .cgi and .py with Python (see screenshot below). In IIS 7, you can open this dialog by choosing &amp;lt;small&amp;gt;Add Script Map&amp;lt;/small&amp;gt;. Note the placeholders &#039;&#039;%s %s&#039;&#039; after the Python executable!&lt;br /&gt;
&lt;br /&gt;
[[File:instAddScriptMap.png|330px]]&lt;br /&gt;
&lt;br /&gt;
If you run into problems configuring IIS, you should have a look at the tutorials available on the web, for example&lt;br /&gt;
* http://haishibai.blogspot.de/2011/02/setting-up-python-on-iis-7_01.html&lt;br /&gt;
* http://support.microsoft.com/kb/276494&lt;br /&gt;
&lt;br /&gt;
==== Testing the Link ====&lt;br /&gt;
&lt;br /&gt;
Once you’re done, you can test your BioCASe Installation by opening a browser and typing in &#039;&#039;http://localhost/biocase&#039;&#039; (replace &#039;&#039;localhost&#039;&#039; with the domain name of the machine you installed BioCASe on, if you’re not working locally). You should then see the start page of the BPS:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseStartpage.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Installing Additional Python Packages/Java/Graphviz ===&lt;br /&gt;
&lt;br /&gt;
Before you can start configuring your installation, you need to install additional packages, depending on the management system used for the database to be published and the functions of the BPS you intend to use.&lt;br /&gt;
&lt;br /&gt;
On the BPS start page, click on &amp;lt;small&amp;gt;Utilities&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;library test&amp;lt;/small&amp;gt; in order to navigate to the library test page that shows the status of installed libraries. On a fresh BPS installation, only the BioCASe libraries should be installed, since they&#039;re part of the archive file you’ve downloaded (or the Subversion repository you checked out from):&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesVanilla.png|550px]]&lt;br /&gt;
&lt;br /&gt;
If you plan to use the Local Query Tool (a small portal for querying and browsing your BioCASe webservice), you need to install the lxml library. You can do this easily by running the Python Package Installer (PIP): &#039;&#039;pip install lxml&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For each DBMS you plan to use with BioCASe (i.e. you have a database you want to publish with BioCASe), you’ll have to install the corresponding package. So if your collection is stored in a MySQL database, you&#039;ll need the MySQLdb library; the table shows you the command to run for installing it using pip: &#039;&#039;pip install mysqlclient&#039;&#039;. Once pip has installed the package, reload the libraries test page. The according list entry should turn from an orange &#039;&#039;not installed&#039;&#039; into a green version number. Redo this process for all DBMS you want to connect to.&lt;br /&gt;
&lt;br /&gt;
The Graphviz library listed under optional external binaries is used by the BPS to create a graph of your database’s data model in the table setup (you will learn in the [[DatasourceSetup#Setting_up_the_Database_Structure|Table Setup]] about this). If the data model is very simple (i.e., not more than 3 or 4 tables), you probably can spare the effort of installing Graphviz. Otherwise we recommend installing it: Simply click on the Download link and install the package using an installer file or a package manager on Linux.&lt;br /&gt;
&lt;br /&gt;
If you want to create DarwinCore Archives for your web services, you also need to install a Java Runtime Environment (JRE). BioCASe requires Java 1.8 or later for creating DarwinCore archives, so please check the version listed on the Testlibs page if it&#039;s already installed on the server.&lt;br /&gt;
&lt;br /&gt;
=== Changing the Default Password ===&lt;br /&gt;
&lt;br /&gt;
The configuration tool is a browser interface that allows you to configure almost every aspect of the BPS. As a last step of the setup, you should change the password.&lt;br /&gt;
&lt;br /&gt;
Go back to the Start page of the BPS (by clicking &amp;lt;small&amp;gt;Start&amp;lt;/small&amp;gt; at the top of the page, or by retyping &#039;&#039;http://localhost/biocase&#039;&#039; if the server is running on your computer), choose &amp;lt;small&amp;gt;Config Tool&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;System Administration&amp;lt;/small&amp;gt;. You will then be prompted for a password. Type in the default &#039;&#039;ACDC&#039;&#039;, then click &amp;lt;small&amp;gt;Submit&amp;lt;/small&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The top of the configuration page you’ll be directed to should look similar to this:&lt;br /&gt;
&lt;br /&gt;
[[image:instConfigTool.png|500px]]&lt;br /&gt;
&lt;br /&gt;
In the first two lines, you’ll see the values you entered during the setup script (in this case, the defaults &#039;&#039;localhost&#039;&#039; and &#039;&#039;biocase&#039;&#039;). In the fourth line, enter a new password. Please be careful when typing (if you forget the password some day, you can reset it by directly editing the configuration file). Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the new password to the configuration file.&lt;br /&gt;
&lt;br /&gt;
In case you’ve installed Graphviz, you need to tell the BPS the location of the binaries, since it is not a Python package that will be registered automatically. In order to do so, locate the Graphviz installation on your local disk and enter the path to the binary executable into the text box labelled &amp;lt;small&amp;gt;Path to Graphviz executable&amp;lt;/small&amp;gt;. On Linux machines it might look similar to the default (&#039;&#039;/usr/local/bin/dot&#039;&#039;), on Windows machines it will be probably something like &#039;&#039;C:/Program Files/Graphviz 2.44.1/bin/&#039;&#039;. Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the path.&lt;br /&gt;
&lt;br /&gt;
=== Checking Your Installation ===&lt;br /&gt;
&lt;br /&gt;
Before you proceed to the configuration, you should make sure everything is installed correctly:&lt;br /&gt;
&lt;br /&gt;
# Typing in &#039;&#039;http://localhost/biocase&#039;&#039; (or the appropriate values of your installation) takes you to the entry page of the provider software (as shown in the section [[#Linking_BioCASe_and_Your_Web_Server|Linking BioCASe and Your Web Server]]).&lt;br /&gt;
# The libraries test page (&amp;lt;small&amp;gt;Utilities &amp;gt; library test&amp;lt;/small&amp;gt;) shows you’ve installed the packages for your DBMS, lxml (if you want to use the Local Query Tool), Java (if you want to create DarwinCore Archives) and the Graphviz dot (if you decided so).&lt;br /&gt;
# &amp;lt;small&amp;gt;Status of writeable directories&amp;lt;/small&amp;gt; shows a green &amp;lt;small&amp;gt;writeable&amp;lt;/small&amp;gt; for all four directories. If not, the path to problematic file will be given – please grant write access to Python.&lt;br /&gt;
&lt;br /&gt;
If you want to connect BioCASe to a variety of different database management systems, create DarwinCore archives and use the QueryTool, the libraries test pages should look like this:&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesDone.png|650px]]&lt;br /&gt;
&lt;br /&gt;
== Updating an existing BioCASe Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Updating a BioCASe Docker installation ===&lt;br /&gt;
This is very simple with the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] you downloaded for installing BioCASe. Just go to the folder where you stored the file and run &#039;&#039;make update&#039;&#039;. This will stop and remove the BioCASe container, download the latest BioCASe image and create/start a new BioCASe container. Since the configuration files are not stored within the container, all your data sources will be preserved.&lt;br /&gt;
&lt;br /&gt;
=== Updating a regular BioCASe installation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Important Note&amp;lt;/u&amp;gt;&#039;&#039;&#039;: If you have a running BioCASe installation, you shouldn’t touch it until you’ve successfully installed a new version. So keep the old installation instead of replacing it!&lt;br /&gt;
&lt;br /&gt;
==== Updating from version 2.5 or later ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# Change directory to the new installation and run setup script. When asked whether to import the configuration from an old installation, answer yes. The setup script will now import the configuration of the old installation, including the data sources.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;br /&gt;
&lt;br /&gt;
==== Updating from older versions &amp;lt; 2.5 ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version; moreover, you will need the configuration files later.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# [[Installation#Running_the_Setup_Script|Run the setup script]]. When asked whether to import the configuration from an old installation, just press Return (defaults to no). Make sure to provide the the same base URL that was used by the old installation (for example &#039;&#039;/biocase&#039;&#039;).&lt;br /&gt;
# [[Installation#Changing_the_Default_Password|Change the default password]] of the new installation to the one you used in the old installation.&lt;br /&gt;
# Open the file &#039;&#039;config/config.ini&#039;&#039; of your old installation in a text editor. Open the config tool of the new installation and navigate to the System Administration page. Compare the settings in the section &amp;lt;small&amp;gt;Server configuration&amp;lt;/small&amp;gt; with the values you can find in the old configuration file and change them, if necessary (leave values unchanged if you don&#039;t find them in the old file). Press &amp;lt;small&amp;gt;Update config&amp;lt;/small&amp;gt;.&lt;br /&gt;
# Last, copy the configuration of the BioCASe web services: Open the folder &#039;&#039;config/datasources&#039;&#039; of your old installation and copy all subfolders to &#039;&#039;config/datasources&#039;&#039; of your new installation.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1204</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1204"/>
		<updated>2025-03-06T10:04:55Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Version 3.8.7 [Upcoming] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.7 [2025-03-06] ===&lt;br /&gt;
* Code repo moved to git: https://git.bgbm.org/biocase/bps&lt;br /&gt;
* Update hint now uses link to new Git repo instead of Subversion&lt;br /&gt;
* Use alternative DB connector pymysql if importing MySQLdb fails (apparently on latest Ubuntu distributions). Thanks to Kjell-Åke Lundblad from Nordic Genetic Resource Center for this!&lt;br /&gt;
* Miscellaneous optimisations in Docker image (multistage build &amp;amp; chained RUN statements for smaller image size, separate Apache config file, no root user) thanks to Petr Novotný from Prague university!&lt;br /&gt;
&lt;br /&gt;
===  Version 3.8.6 [2024-12-12] ===&lt;br /&gt;
* Timeout added for the request to retrieve latest version from subversion repository&lt;br /&gt;
* Archiving page: List schemas in dropdown box in descending order, so that ABCD 2.1 shows before 2.06 before 1.2&lt;br /&gt;
* QueryTool: Changed default schema from ABCD 2.1 to ABCD 2.06, since this is used more commonly&lt;br /&gt;
* Fix for DwC archives: occurrenceStatus and occurrencID had been swapped in descriptor file meta.xml&lt;br /&gt;
* DwC archive transformation: BasisOfRecord=&amp;quot;AbsenceObservation&amp;quot; will be translated into &amp;quot;HumanObservation&amp;quot;, since AbsenceObservation is not accepted by GBIF.&lt;br /&gt;
* Dockerfile adapted to latest Debian version and Python 3.13&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.5 [2023-11-30] ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1203</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1203"/>
		<updated>2025-03-05T10:23:25Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Version 3.8.7 [2025-03-04] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.7 [Upcoming] ===&lt;br /&gt;
* Code repo moved to git: https://git.bgbm.org/biocase/bps&lt;br /&gt;
* Update hint now uses link to new Git repo instead of Subversion&lt;br /&gt;
* Use alternative DB connector pymysql if importing MySQLdb fails (apparently on latest Ubuntu distributions). Thanks to Kjell-Åke Lundblad from Nordic Genetic Resource Center for this!&lt;br /&gt;
* Miscellaneous optimisations in Docker image (multistage build &amp;amp; chained RUN statements for smaller image size, separate Apache config file, no root user) thanks to Petr Novotný from Prague university!&lt;br /&gt;
&lt;br /&gt;
===  Version 3.8.6 [2024-12-12] ===&lt;br /&gt;
* Timeout added for the request to retrieve latest version from subversion repository&lt;br /&gt;
* Archiving page: List schemas in dropdown box in descending order, so that ABCD 2.1 shows before 2.06 before 1.2&lt;br /&gt;
* QueryTool: Changed default schema from ABCD 2.1 to ABCD 2.06, since this is used more commonly&lt;br /&gt;
* Fix for DwC archives: occurrenceStatus and occurrencID had been swapped in descriptor file meta.xml&lt;br /&gt;
* DwC archive transformation: BasisOfRecord=&amp;quot;AbsenceObservation&amp;quot; will be translated into &amp;quot;HumanObservation&amp;quot;, since AbsenceObservation is not accepted by GBIF.&lt;br /&gt;
* Dockerfile adapted to latest Debian version and Python 3.13&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.5 [2023-11-30] ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1202</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1202"/>
		<updated>2025-03-04T14:03:28Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Upcoming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.7 [2025-03-04] ===&lt;br /&gt;
* Code repo moved to git: https://git.bgbm.org/biocase/bps&lt;br /&gt;
* Update hint now uses link to new Git repo instead of Subversion&lt;br /&gt;
* Use alternative DB connector pymysql if importing MySQLdb fails (apparently on latest Ubuntu distributions). Thanks to Kjell-Åke Lundblad from Nordic Genetic Resource Center for this!&lt;br /&gt;
* Miscellaneous optimisations in Docker image (multistage build &amp;amp; chained RUN statements for smaller image size, separate Apache config file, no root user) thanks to Petr Novotný from Prague university!&lt;br /&gt;
&lt;br /&gt;
===  Version 3.8.6 [2024-12-12] ===&lt;br /&gt;
* Timeout added for the request to retrieve latest version from subversion repository&lt;br /&gt;
* Archiving page: List schemas in dropdown box in descending order, so that ABCD 2.1 shows before 2.06 before 1.2&lt;br /&gt;
* QueryTool: Changed default schema from ABCD 2.1 to ABCD 2.06, since this is used more commonly&lt;br /&gt;
* Fix for DwC archives: occurrenceStatus and occurrencID had been swapped in descriptor file meta.xml&lt;br /&gt;
* DwC archive transformation: BasisOfRecord=&amp;quot;AbsenceObservation&amp;quot; will be translated into &amp;quot;HumanObservation&amp;quot;, since AbsenceObservation is not accepted by GBIF.&lt;br /&gt;
* Dockerfile adapted to latest Debian version and Python 3.13&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.5 [2023-11-30] ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1201</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1201"/>
		<updated>2025-03-04T12:16:42Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Upcoming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Upcoming ===&lt;br /&gt;
* Code repo moved to git: https://git.bgbm.org/biocase/bps&lt;br /&gt;
* Update hint now uses link to new Git repo instead of Subversion&lt;br /&gt;
* Use alternative DB connector pymysql if importing MySQLdb fails (apparently on latest Ubuntu distributions). Thanks to Kjell-Åke Lundblad from Nordic Genetic Resource Center for this!&lt;br /&gt;
* Miscellaneous optimisations in Docker image (multistage build &amp;amp; chained RUN statements for smaller image size, separate Apache config file, no root user) thanks to Petr Novotný from Prague university!&lt;br /&gt;
&lt;br /&gt;
===  Version 3.8.6 [2024-12-12] ===&lt;br /&gt;
* Timeout added for the request to retrieve latest version from subversion repository&lt;br /&gt;
* Archiving page: List schemas in dropdown box in descending order, so that ABCD 2.1 shows before 2.06 before 1.2&lt;br /&gt;
* QueryTool: Changed default schema from ABCD 2.1 to ABCD 2.06, since this is used more commonly&lt;br /&gt;
* Fix for DwC archives: occurrenceStatus and occurrencID had been swapped in descriptor file meta.xml&lt;br /&gt;
* DwC archive transformation: BasisOfRecord=&amp;quot;AbsenceObservation&amp;quot; will be translated into &amp;quot;HumanObservation&amp;quot;, since AbsenceObservation is not accepted by GBIF.&lt;br /&gt;
* Dockerfile adapted to latest Debian version and Python 3.13&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.5 [2023-11-30] ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1200</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1200"/>
		<updated>2025-02-13T12:07:19Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Upcoming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Upcoming ===&lt;br /&gt;
* Update hint now uses link to new Git repo instead of Subversion&lt;br /&gt;
* Use alternative DB connector pymysql if importing MySQLdb fails (apparently on latest Ubuntu distributions). Thanks to Kjell-Åke Lundblad from Nordic Genetic Resource Center for this!&lt;br /&gt;
&lt;br /&gt;
===  Version 3.8.6 [2024-12-12] ===&lt;br /&gt;
* Timeout added for the request to retrieve latest version from subversion repository&lt;br /&gt;
* Archiving page: List schemas in dropdown box in descending order, so that ABCD 2.1 shows before 2.06 before 1.2&lt;br /&gt;
* QueryTool: Changed default schema from ABCD 2.1 to ABCD 2.06, since this is used more commonly&lt;br /&gt;
* Fix for DwC archives: occurrenceStatus and occurrencID had been swapped in descriptor file meta.xml&lt;br /&gt;
* DwC archive transformation: BasisOfRecord=&amp;quot;AbsenceObservation&amp;quot; will be translated into &amp;quot;HumanObservation&amp;quot;, since AbsenceObservation is not accepted by GBIF.&lt;br /&gt;
* Dockerfile adapted to latest Debian version and Python 3.13&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.5 [2023-11-30] ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1199</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1199"/>
		<updated>2025-02-11T15:06:51Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Downloading and unpacking the Provider Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This part of the wiki explains how to install the BioCASe Provider Software. Depending on your skills, it should take between 15 and 60 minutes. If you’re a beginner, please read the [[BeginnersGuide|Beginner’s Guide]] first.&lt;br /&gt;
&lt;br /&gt;
== Requirements and Considerations ==&lt;br /&gt;
Before installing, please make sure that the system you’re intending to install the BPS on meets the following requirements (If you find out one of these items is not met, please ask your system administrator for help, read the [[FAQ]] or get in [[Special:Contact|contact with the BioCASe Team]].):&lt;br /&gt;
&lt;br /&gt;
# You have administrative privileges on this machine, i.e. the user rights to install new software packages.&lt;br /&gt;
# It is accessible from outside your institution. This means it either needs to be outside any institutional firewall or, more likely, the HTTP port is open for an existing firewall.&lt;br /&gt;
# A direct connection can be established from this machine to the database to be published – either because there’s no firewall in between, or the port used by the DBMS is open (e. g. 3306 for MySQL).&lt;br /&gt;
&lt;br /&gt;
In addition to the regular installation, you can install BioCASe from a Docker image. Docker is an operating-system-level virtualization software that allows easy software deployment in so-called containers. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide]. &#039;&#039;&#039;If you&#039;re famliar with Docker, we&#039;d suggest to use the Docker path for installing BioCASe&#039;&#039;&#039; - read more in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]] below.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Installing BioCASe from a Docker image ==&lt;br /&gt;
&lt;br /&gt;
Good choice! Installing BioCASe from a Docker image is much easer than installing the required components step-by-step. In addition, it&#039;s easier to update an existing installation. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide] first.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; BioCASe requires Docker version 17 or later. If you already have Docker installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
&lt;br /&gt;
For installing BioCASe from the Docker image, please follow these steps:&lt;br /&gt;
&lt;br /&gt;
# If you&#039;re not using Linux, install the &#039;&#039;make&#039;&#039; tool from https://gnuwin32.sourceforge.net/packages/make.htm.&lt;br /&gt;
# Install Docker Community Edition (Docker CE). For detailed instructions, see [https://docs.docker.com/install/ About Docker CE] and choose the tutorial for your platform. To make sure Docker is properly installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
# Download the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] that contains the commands for installing and updating BioCASe. Use &amp;quot;Save as...&amp;quot; to store it to your home folder on the server machine.&lt;br /&gt;
# Open a terminal window and change the work directory to the location you&#039;ve just saved the Makefile to. Then type in &#039;&#039;make install&#039;&#039; and press enter. This should download the latest BioCASe image, create a BioCASe container and run it.&lt;br /&gt;
&lt;br /&gt;
Per default, Docker will use port 80 for BioCASe. If this port is already used by another application on your server, you can instruct Docker to use another port. For using port 8181, for example, type in &#039;&#039;make install PORT=8181&#039;&#039; instead:&lt;br /&gt;
&lt;br /&gt;
[[File:DockerInstall.png|650px]]&lt;br /&gt;
&lt;br /&gt;
Voilà, that&#039;s it! To check your BioCASe installation, use your Browser to go to &#039;&#039;http://localhost/biocase&#039;&#039;. Don&#039;t forget to [[Installation#Changing_the_Default_Password | change the default password]].&lt;br /&gt;
&lt;br /&gt;
You can also use the Makefile for stopping and starting the BioCASe container (for example, if you restart your server each night automatically) - just type &#039;&#039;make stop&#039;&#039; and &#039;&#039;make start&#039;&#039;. For removing the container, use &#039;&#039;make remove&#039;&#039;, for updating your BioCASe installation &#039;&#039;make update&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; The configuration and the log files of your BioCASe installation, as well as any XML and DwC archives created, will be stored in Docker hosted volumes. That means they are stored outside of the BioCASe container and will be preserved, even when the container is removed (actually, that&#039;s what happens if you update your installation). Docker hosted volumes are stored in the &#039;&#039;volumes&#039;&#039; folder of your docker installation, e.g. /var/lib/docker/volumes. If you want to backup the configuration of your BioCASe installation, just backup the folder /var/lib/docker/volumes/bps_config. To learn more about docker hosted volumes, please refer to the [https://docs.docker.com/storage/volumes/ Docker guide].&lt;br /&gt;
&lt;br /&gt;
== Regular BioCASe Installation ==&lt;br /&gt;
This is the path to choose if you haven&#039;t heard of [https://www.docker.com/ Docker] yet. If you have experience with this virtualisation software, we&#039;d suggest to install BioCASe from the Docker image (instructions in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]]).&lt;br /&gt;
&lt;br /&gt;
BioCASe runs on both Windows and Linux machines. Two thoughts to consider for you:&lt;br /&gt;
* If you want to use ODBC to connect to your database (for example to an Access database), you should make sure that an ODBC driver is available for the OS of your choice. For an Access database, for example, such a ODBC driver is available only for Windows - so you should go for Windows.&lt;br /&gt;
* If you don&#039;t wanna use ODBC, because you plan to connect to a wide-spread DB system such as MySQL, Postgres or MS SQL Server, we recommend Linux (Debian).&lt;br /&gt;
&lt;br /&gt;
=== Installing Apache/IIS and Python ===&lt;br /&gt;
If you’re using a Linux system, you probably don’t need to install either, since Apache and Python are usually preinstalled. Same holds true for MacOS, but you should have a look at one of the articles on the web to find out about the file locations.&lt;br /&gt;
&lt;br /&gt;
Even though the BPS runs with both Apache and Internet Information Server (IIS), we recommend using Apache, which is much easier to configure. However, if you’re already using IIS, you might want to stick with that.&lt;br /&gt;
&lt;br /&gt;
The BPS requires Python 3.7+ to run, it doesn&#039;t work with Python 2, which ended its life cycle in 2020 (same is true for Python 3 versions &amp;lt; 3.7). On most Linux systems, Python 3 will be pre-installed. If not, you should be able to install Python using &#039;&#039;apt-get update&#039;&#039; and &#039;&#039;apt-get install python&#039;&#039;. (By the way: You can install several different Python versions on the same machine without any conflicts.)&lt;br /&gt;
&lt;br /&gt;
If you’re installing on a Windows Vista (poor you) or Windows 7 machine, we recommend not to install Apache in the default program files folder, since there is some magic spell on that which can get you into trouble when changing Apache’s configuration files. Just choose another path (Apache Software Foundation?) to spare that hassle.&lt;br /&gt;
&lt;br /&gt;
Once you’ve successfully installed Apache and Python, you can proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
=== Downloading and unpacking the Provider Software ===&lt;br /&gt;
You can find the latest release of BioCASe on our [https://git.bgbm.org/biocase/bps/-/releases/permalink/latest Git page]. There are two archives available for download:&lt;br /&gt;
* The [https://git.bgbm.org/biocase/bps/-/archive/3.8.6/bps-3.8.6.zip default package (recommended)] contains the full installation and allows the generation of DarwinCore archives. For this feature, the [https://github.com/pentaho/pentaho-kettle Kettle libraries] are included in the download.&lt;br /&gt;
* The [https://www.biocase.org/products/provider_software/files/bps-3.8.6-minimal.zip minimal package] doesn&#039;t contain the Kettle libraries, hence it&#039;s not possible to create DarwinCore archives with such an installation. Choose this download only if you have a good reason to do so.&lt;br /&gt;
&lt;br /&gt;
Download the file to your server and unpack it to the desired location of your file system. It contains the BioCASe Provider Software in a folder that contains the version number, e.g. &#039;&#039;bps-3.8.0&#039;&#039;. We recommend to rename it to something that doesn&#039;t include the version number, so you don&#039;t need to touch your web server&#039;s configuration during future updates.&lt;br /&gt;
&lt;br /&gt;
For the remainder of this guide, we will assume you’ve installed the BPS into a folder named &#039;&#039;biocase&#039;&#039;, which should look like this by now:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseFolder.png|650px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the Setup Script ===&lt;br /&gt;
The setup script will initiate the configuration files with values you provide and point the script files to your Python installation (you can re-run the setup script in case that location changes). If you want to modify any of settings you made during the setup, you can change the values in the configuration tool later.&lt;br /&gt;
&lt;br /&gt;
In order to run the script, open a terminal window (or “command prompt” in Windows). Change the working directory to the folder you’ve downloaded the BPS to (&#039;&#039;biocase&#039;&#039;) and type in:&amp;lt;pre&amp;gt;python setup.py&amp;lt;/pre&amp;gt; In case Python is not found, you’ll have to add the full path name to the Python executable. Make sure the Python version given in the fifth line of the output is the one you desire (otherwise add the path to the correct executable):&lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptStart.png|550px]]&lt;br /&gt;
&lt;br /&gt;
The questions asked by the setup script do have defaults. If you want to keep them, just press &amp;lt;small&amp;gt;Return&amp;lt;/small&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Webserver domain:&amp;lt;/strong&amp;gt; This is the domain name of the web server you’re installing BioCASe on, e.g. &#039;&#039;http://www.myinstitution.org&#039;&#039;.  You can keep the default &#039;&#039;localhost&#039;&#039; as long as you’re configuring and testing the installation locally; for production you’ll need to change that into the correct domain name (or IP address) later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Base URL:&amp;lt;/strong&amp;gt; This will become the second part of the URL your installation will use. If you keep the default biocase, your installation will be accessible later at &#039;&#039;www.myinstitution.org/biocase&#039;&#039;, for example.&lt;br /&gt;
&lt;br /&gt;
After answering these two questions, the script will update your files. At the end of the output you can find the lines you&#039;ll need later to create the link between BioCASe and your web server, so do not close the window! &lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptDone.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Linking BioCASe and Your Web Server ===&lt;br /&gt;
&lt;br /&gt;
The public part of the provider software is stored in the &#039;&#039;www&#039;&#039; subfolder of your BioCASe installation and must be configured in your web server as a public folder. You should always make this folder public using a virtual directory: This means that you should never install BioCASe under the default root folder of your web server. Doing so can compromise your server security and will allow people to see your configuration files (which include passwords). So since we installed BioCASe in &#039;&#039;c:\biocase&#039;&#039;, the folder that must be published with a virtual directory is &#039;&#039;c:\biocase\www&#039;&#039; and will be accessible later through &#039;&#039;http://www.myinstitution.org/biocase&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Apache ====&lt;br /&gt;
If you use Apache, adding the BioCASe folder to your web server environment is as simple as copying the lines printed at the end of the setup script to the end of the Apache configuration file &#039;&#039;httpd.conf&#039;&#039;. This can typically be found in the &#039;&#039;conf&#039;&#039; folder of your Apache installation. If you’re adding BioCASe to an already productive web server, please ask the server admin before doing any changes!&lt;br /&gt;
&lt;br /&gt;
[[image:instHttpdConf.png|550px]] &lt;br /&gt;
&lt;br /&gt;
Save the file and restart Apache for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
==== Internet Information Server ====&lt;br /&gt;
&lt;br /&gt;
If you use Internet Information Server, you need to create a virtual directory for the folder &#039;&#039;c:\biocase\www&#039;&#039; using the IIS Server Manager. Grant all rights for this directory (Read, Write, Script Execution, Directory listing). You should also add &#039;&#039;index.html&#039;&#039; to the list of default documents (&amp;lt;small&amp;gt;Virtual Directory &amp;gt; Properties &amp;gt; Documents &amp;gt; Default&amp;lt;/small&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
In order to associate Python scripts with Python in IIS 5/6, you need to use the &amp;lt;small&amp;gt;Configure&amp;lt;/small&amp;gt; button on the virtual directory tab and associate the file extensions .cgi and .py with Python (see screenshot below). In IIS 7, you can open this dialog by choosing &amp;lt;small&amp;gt;Add Script Map&amp;lt;/small&amp;gt;. Note the placeholders &#039;&#039;%s %s&#039;&#039; after the Python executable!&lt;br /&gt;
&lt;br /&gt;
[[File:instAddScriptMap.png|330px]]&lt;br /&gt;
&lt;br /&gt;
If you run into problems configuring IIS, you should have a look at the tutorials available on the web, for example&lt;br /&gt;
* http://haishibai.blogspot.de/2011/02/setting-up-python-on-iis-7_01.html&lt;br /&gt;
* http://support.microsoft.com/kb/276494&lt;br /&gt;
&lt;br /&gt;
==== Testing the Link ====&lt;br /&gt;
&lt;br /&gt;
Once you’re done, you can test your BioCASe Installation by opening a browser and typing in &#039;&#039;http://localhost/biocase&#039;&#039; (replace &#039;&#039;localhost&#039;&#039; with the domain name of the machine you installed BioCASe on, if you’re not working locally). You should then see the start page of the BPS:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseStartpage.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Installing Additional Python Packages/Java/Graphviz ===&lt;br /&gt;
&lt;br /&gt;
Before you can start configuring your installation, you need to install additional packages, depending on the management system used for the database to be published and the functions of the BPS you intend to use.&lt;br /&gt;
&lt;br /&gt;
On the BPS start page, click on &amp;lt;small&amp;gt;Utilities&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;library test&amp;lt;/small&amp;gt; in order to navigate to the library test page that shows the status of installed libraries. On a fresh BPS installation, only the BioCASe libraries should be installed, since they&#039;re part of the archive file you’ve downloaded (or the Subversion repository you checked out from):&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesVanilla.png|550px]]&lt;br /&gt;
&lt;br /&gt;
If you plan to use the Local Query Tool (a small portal for querying and browsing your BioCASe webservice), you need to install the lxml library. You can do this easily by running the Python Package Installer (PIP): &#039;&#039;pip install lxml&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For each DBMS you plan to use with BioCASe (i.e. you have a database you want to publish with BioCASe), you’ll have to install the corresponding package. So if your collection is stored in a MySQL database, you&#039;ll need the MySQLdb library; the table shows you the command to run for installing it using pip: &#039;&#039;pip install mysqlclient&#039;&#039;. Once pip has installed the package, reload the libraries test page. The according list entry should turn from an orange &#039;&#039;not installed&#039;&#039; into a green version number. Redo this process for all DBMS you want to connect to.&lt;br /&gt;
&lt;br /&gt;
The Graphviz library listed under optional external binaries is used by the BPS to create a graph of your database’s data model in the table setup (you will learn in the [[DatasourceSetup#Setting_up_the_Database_Structure|Table Setup]] about this). If the data model is very simple (i.e., not more than 3 or 4 tables), you probably can spare the effort of installing Graphviz. Otherwise we recommend installing it: Simply click on the Download link and install the package using an installer file or a package manager on Linux.&lt;br /&gt;
&lt;br /&gt;
If you want to create DarwinCore Archives for your web services, you also need to install a Java Runtime Environment (JRE). BioCASe requires Java 1.8 or later for creating DarwinCore archives, so please check the version listed on the Testlibs page if it&#039;s already installed on the server.&lt;br /&gt;
&lt;br /&gt;
=== Changing the Default Password ===&lt;br /&gt;
&lt;br /&gt;
The configuration tool is a browser interface that allows you to configure almost every aspect of the BPS. As a last step of the setup, you should change the password.&lt;br /&gt;
&lt;br /&gt;
Go back to the Start page of the BPS (by clicking &amp;lt;small&amp;gt;Start&amp;lt;/small&amp;gt; at the top of the page, or by retyping &#039;&#039;http://localhost/biocase&#039;&#039; if the server is running on your computer), choose &amp;lt;small&amp;gt;Config Tool&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;System Administration&amp;lt;/small&amp;gt;. You will then be prompted for a password. Type in the default &#039;&#039;ACDC&#039;&#039;, then click &amp;lt;small&amp;gt;Submit&amp;lt;/small&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The top of the configuration page you’ll be directed to should look similar to this:&lt;br /&gt;
&lt;br /&gt;
[[image:instConfigTool.png|500px]]&lt;br /&gt;
&lt;br /&gt;
In the first two lines, you’ll see the values you entered during the setup script (in this case, the defaults &#039;&#039;localhost&#039;&#039; and &#039;&#039;biocase&#039;&#039;). In the fourth line, enter a new password. Please be careful when typing (if you forget the password some day, you can reset it by directly editing the configuration file). Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the new password to the configuration file.&lt;br /&gt;
&lt;br /&gt;
In case you’ve installed Graphviz, you need to tell the BPS the location of the binaries, since it is not a Python package that will be registered automatically. In order to do so, locate the Graphviz installation on your local disk and enter the path to the binary executable into the text box labelled &amp;lt;small&amp;gt;Path to Graphviz executable&amp;lt;/small&amp;gt;. On Linux machines it might look similar to the default (&#039;&#039;/usr/local/bin/dot&#039;&#039;), on Windows machines it will be probably something like &#039;&#039;C:/Program Files/Graphviz 2.44.1/bin/&#039;&#039;. Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the path.&lt;br /&gt;
&lt;br /&gt;
=== Checking Your Installation ===&lt;br /&gt;
&lt;br /&gt;
Before you proceed to the configuration, you should make sure everything is installed correctly:&lt;br /&gt;
&lt;br /&gt;
# Typing in &#039;&#039;http://localhost/biocase&#039;&#039; (or the appropriate values of your installation) takes you to the entry page of the provider software (as shown in the section [[#Linking_BioCASe_and_Your_Web_Server|Linking BioCASe and Your Web Server]]).&lt;br /&gt;
# The libraries test page (&amp;lt;small&amp;gt;Utilities &amp;gt; library test&amp;lt;/small&amp;gt;) shows you’ve installed the packages for your DBMS, lxml (if you want to use the Local Query Tool), Java (if you want to create DarwinCore Archives) and the Graphviz dot (if you decided so).&lt;br /&gt;
# &amp;lt;small&amp;gt;Status of writeable directories&amp;lt;/small&amp;gt; shows a green &amp;lt;small&amp;gt;writeable&amp;lt;/small&amp;gt; for all four directories. If not, the path to problematic file will be given – please grant write access to Python.&lt;br /&gt;
&lt;br /&gt;
If you want to connect BioCASe to a variety of different database management systems, create DarwinCore archives and use the QueryTool, the libraries test pages should look like this:&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesDone.png|650px]]&lt;br /&gt;
&lt;br /&gt;
== Updating an existing BioCASe Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Updating a BioCASe Docker installation ===&lt;br /&gt;
This is very simple with the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] you downloaded for installing BioCASe. Just go to the folder where you stored the file and run &#039;&#039;make update&#039;&#039;. This will stop and remove the BioCASe container, download the latest BioCASe image and create/start a new BioCASe container. Since the configuration files are not stored within the container, all your data sources will be preserved.&lt;br /&gt;
&lt;br /&gt;
=== Updating a regular BioCASe installation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Important Note&amp;lt;/u&amp;gt;&#039;&#039;&#039;: If you have a running BioCASe installation, you shouldn’t touch it until you’ve successfully installed a new version. So keep the old installation instead of replacing it!&lt;br /&gt;
&lt;br /&gt;
==== Updating from version 2.5 or later ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# Change directory to the new installation and run setup script. When asked whether to import the configuration from an old installation, answer yes. The setup script will now import the configuration of the old installation, including the data sources.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;br /&gt;
&lt;br /&gt;
==== Updating from older versions &amp;lt; 2.5 ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version; moreover, you will need the configuration files later.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# [[Installation#Running_the_Setup_Script|Run the setup script]]. When asked whether to import the configuration from an old installation, just press Return (defaults to no). Make sure to provide the the same base URL that was used by the old installation (for example &#039;&#039;/biocase&#039;&#039;).&lt;br /&gt;
# [[Installation#Changing_the_Default_Password|Change the default password]] of the new installation to the one you used in the old installation.&lt;br /&gt;
# Open the file &#039;&#039;config/config.ini&#039;&#039; of your old installation in a text editor. Open the config tool of the new installation and navigate to the System Administration page. Compare the settings in the section &amp;lt;small&amp;gt;Server configuration&amp;lt;/small&amp;gt; with the values you can find in the old configuration file and change them, if necessary (leave values unchanged if you don&#039;t find them in the old file). Press &amp;lt;small&amp;gt;Update config&amp;lt;/small&amp;gt;.&lt;br /&gt;
# Last, copy the configuration of the BioCASe web services: Open the folder &#039;&#039;config/datasources&#039;&#039; of your old installation and copy all subfolders to &#039;&#039;config/datasources&#039;&#039; of your new installation.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1198</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1198"/>
		<updated>2025-02-11T15:05:05Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Downloading and unpacking the Provider Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This part of the wiki explains how to install the BioCASe Provider Software. Depending on your skills, it should take between 15 and 60 minutes. If you’re a beginner, please read the [[BeginnersGuide|Beginner’s Guide]] first.&lt;br /&gt;
&lt;br /&gt;
== Requirements and Considerations ==&lt;br /&gt;
Before installing, please make sure that the system you’re intending to install the BPS on meets the following requirements (If you find out one of these items is not met, please ask your system administrator for help, read the [[FAQ]] or get in [[Special:Contact|contact with the BioCASe Team]].):&lt;br /&gt;
&lt;br /&gt;
# You have administrative privileges on this machine, i.e. the user rights to install new software packages.&lt;br /&gt;
# It is accessible from outside your institution. This means it either needs to be outside any institutional firewall or, more likely, the HTTP port is open for an existing firewall.&lt;br /&gt;
# A direct connection can be established from this machine to the database to be published – either because there’s no firewall in between, or the port used by the DBMS is open (e. g. 3306 for MySQL).&lt;br /&gt;
&lt;br /&gt;
In addition to the regular installation, you can install BioCASe from a Docker image. Docker is an operating-system-level virtualization software that allows easy software deployment in so-called containers. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide]. &#039;&#039;&#039;If you&#039;re famliar with Docker, we&#039;d suggest to use the Docker path for installing BioCASe&#039;&#039;&#039; - read more in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]] below.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Installing BioCASe from a Docker image ==&lt;br /&gt;
&lt;br /&gt;
Good choice! Installing BioCASe from a Docker image is much easer than installing the required components step-by-step. In addition, it&#039;s easier to update an existing installation. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide] first.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; BioCASe requires Docker version 17 or later. If you already have Docker installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
&lt;br /&gt;
For installing BioCASe from the Docker image, please follow these steps:&lt;br /&gt;
&lt;br /&gt;
# If you&#039;re not using Linux, install the &#039;&#039;make&#039;&#039; tool from https://gnuwin32.sourceforge.net/packages/make.htm.&lt;br /&gt;
# Install Docker Community Edition (Docker CE). For detailed instructions, see [https://docs.docker.com/install/ About Docker CE] and choose the tutorial for your platform. To make sure Docker is properly installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
# Download the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] that contains the commands for installing and updating BioCASe. Use &amp;quot;Save as...&amp;quot; to store it to your home folder on the server machine.&lt;br /&gt;
# Open a terminal window and change the work directory to the location you&#039;ve just saved the Makefile to. Then type in &#039;&#039;make install&#039;&#039; and press enter. This should download the latest BioCASe image, create a BioCASe container and run it.&lt;br /&gt;
&lt;br /&gt;
Per default, Docker will use port 80 for BioCASe. If this port is already used by another application on your server, you can instruct Docker to use another port. For using port 8181, for example, type in &#039;&#039;make install PORT=8181&#039;&#039; instead:&lt;br /&gt;
&lt;br /&gt;
[[File:DockerInstall.png|650px]]&lt;br /&gt;
&lt;br /&gt;
Voilà, that&#039;s it! To check your BioCASe installation, use your Browser to go to &#039;&#039;http://localhost/biocase&#039;&#039;. Don&#039;t forget to [[Installation#Changing_the_Default_Password | change the default password]].&lt;br /&gt;
&lt;br /&gt;
You can also use the Makefile for stopping and starting the BioCASe container (for example, if you restart your server each night automatically) - just type &#039;&#039;make stop&#039;&#039; and &#039;&#039;make start&#039;&#039;. For removing the container, use &#039;&#039;make remove&#039;&#039;, for updating your BioCASe installation &#039;&#039;make update&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; The configuration and the log files of your BioCASe installation, as well as any XML and DwC archives created, will be stored in Docker hosted volumes. That means they are stored outside of the BioCASe container and will be preserved, even when the container is removed (actually, that&#039;s what happens if you update your installation). Docker hosted volumes are stored in the &#039;&#039;volumes&#039;&#039; folder of your docker installation, e.g. /var/lib/docker/volumes. If you want to backup the configuration of your BioCASe installation, just backup the folder /var/lib/docker/volumes/bps_config. To learn more about docker hosted volumes, please refer to the [https://docs.docker.com/storage/volumes/ Docker guide].&lt;br /&gt;
&lt;br /&gt;
== Regular BioCASe Installation ==&lt;br /&gt;
This is the path to choose if you haven&#039;t heard of [https://www.docker.com/ Docker] yet. If you have experience with this virtualisation software, we&#039;d suggest to install BioCASe from the Docker image (instructions in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]]).&lt;br /&gt;
&lt;br /&gt;
BioCASe runs on both Windows and Linux machines. Two thoughts to consider for you:&lt;br /&gt;
* If you want to use ODBC to connect to your database (for example to an Access database), you should make sure that an ODBC driver is available for the OS of your choice. For an Access database, for example, such a ODBC driver is available only for Windows - so you should go for Windows.&lt;br /&gt;
* If you don&#039;t wanna use ODBC, because you plan to connect to a wide-spread DB system such as MySQL, Postgres or MS SQL Server, we recommend Linux (Debian).&lt;br /&gt;
&lt;br /&gt;
=== Installing Apache/IIS and Python ===&lt;br /&gt;
If you’re using a Linux system, you probably don’t need to install either, since Apache and Python are usually preinstalled. Same holds true for MacOS, but you should have a look at one of the articles on the web to find out about the file locations.&lt;br /&gt;
&lt;br /&gt;
Even though the BPS runs with both Apache and Internet Information Server (IIS), we recommend using Apache, which is much easier to configure. However, if you’re already using IIS, you might want to stick with that.&lt;br /&gt;
&lt;br /&gt;
The BPS requires Python 3.7+ to run, it doesn&#039;t work with Python 2, which ended its life cycle in 2020 (same is true for Python 3 versions &amp;lt; 3.7). On most Linux systems, Python 3 will be pre-installed. If not, you should be able to install Python using &#039;&#039;apt-get update&#039;&#039; and &#039;&#039;apt-get install python&#039;&#039;. (By the way: You can install several different Python versions on the same machine without any conflicts.)&lt;br /&gt;
&lt;br /&gt;
If you’re installing on a Windows Vista (poor you) or Windows 7 machine, we recommend not to install Apache in the default program files folder, since there is some magic spell on that which can get you into trouble when changing Apache’s configuration files. Just choose another path (Apache Software Foundation?) to spare that hassle.&lt;br /&gt;
&lt;br /&gt;
Once you’ve successfully installed Apache and Python, you can proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
=== Downloading and unpacking the Provider Software ===&lt;br /&gt;
You can find the latest release of BioCASe on our [https://git.bgbm.org/biocase/bps/-/releases/permalink/latest Git page]. There are two archives available for download:&lt;br /&gt;
* The [https://git.bgbm.org/biocase/bps/-/archive/3.8.6/bps-3.8.6.zip default package (recommended)] contains the full installation and allows the generation of DarwinCore archives. For this feature, the [https://github.com/pentaho/pentaho-kettle Kettle libraries] are included in the download.&lt;br /&gt;
* The [https://www.biocase.org/products/provider_software/files/bps-3.8.6-minimal.zip minimal package] doesn&#039;t contain the Kettle libraries, hence it&#039;s not possible to create DarwinCore archives with such an installation. Choose this download only if you have a good reason to do so.&lt;br /&gt;
&lt;br /&gt;
Download the file to your server and unpack it to the desired location of your file system. It contains the BioCASe Provider Software in a folder that contains the version number, e.g. &#039;&#039;bps-3.8.6&#039;&#039;. We recommend to rename it to something that doesn&#039;t include the version number, so you don&#039;t need to touch your web server&#039;s configuration during future updates.&lt;br /&gt;
&lt;br /&gt;
For the remainder of this guide, we will assume you’ve installed the BPS into a folder named &#039;&#039;biocase&#039;&#039;, which should look like this by now:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseFolder.png|650px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the Setup Script ===&lt;br /&gt;
The setup script will initiate the configuration files with values you provide and point the script files to your Python installation (you can re-run the setup script in case that location changes). If you want to modify any of settings you made during the setup, you can change the values in the configuration tool later.&lt;br /&gt;
&lt;br /&gt;
In order to run the script, open a terminal window (or “command prompt” in Windows). Change the working directory to the folder you’ve downloaded the BPS to (&#039;&#039;biocase&#039;&#039;) and type in:&amp;lt;pre&amp;gt;python setup.py&amp;lt;/pre&amp;gt; In case Python is not found, you’ll have to add the full path name to the Python executable. Make sure the Python version given in the fifth line of the output is the one you desire (otherwise add the path to the correct executable):&lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptStart.png|550px]]&lt;br /&gt;
&lt;br /&gt;
The questions asked by the setup script do have defaults. If you want to keep them, just press &amp;lt;small&amp;gt;Return&amp;lt;/small&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Webserver domain:&amp;lt;/strong&amp;gt; This is the domain name of the web server you’re installing BioCASe on, e.g. &#039;&#039;http://www.myinstitution.org&#039;&#039;.  You can keep the default &#039;&#039;localhost&#039;&#039; as long as you’re configuring and testing the installation locally; for production you’ll need to change that into the correct domain name (or IP address) later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Base URL:&amp;lt;/strong&amp;gt; This will become the second part of the URL your installation will use. If you keep the default biocase, your installation will be accessible later at &#039;&#039;www.myinstitution.org/biocase&#039;&#039;, for example.&lt;br /&gt;
&lt;br /&gt;
After answering these two questions, the script will update your files. At the end of the output you can find the lines you&#039;ll need later to create the link between BioCASe and your web server, so do not close the window! &lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptDone.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Linking BioCASe and Your Web Server ===&lt;br /&gt;
&lt;br /&gt;
The public part of the provider software is stored in the &#039;&#039;www&#039;&#039; subfolder of your BioCASe installation and must be configured in your web server as a public folder. You should always make this folder public using a virtual directory: This means that you should never install BioCASe under the default root folder of your web server. Doing so can compromise your server security and will allow people to see your configuration files (which include passwords). So since we installed BioCASe in &#039;&#039;c:\biocase&#039;&#039;, the folder that must be published with a virtual directory is &#039;&#039;c:\biocase\www&#039;&#039; and will be accessible later through &#039;&#039;http://www.myinstitution.org/biocase&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Apache ====&lt;br /&gt;
If you use Apache, adding the BioCASe folder to your web server environment is as simple as copying the lines printed at the end of the setup script to the end of the Apache configuration file &#039;&#039;httpd.conf&#039;&#039;. This can typically be found in the &#039;&#039;conf&#039;&#039; folder of your Apache installation. If you’re adding BioCASe to an already productive web server, please ask the server admin before doing any changes!&lt;br /&gt;
&lt;br /&gt;
[[image:instHttpdConf.png|550px]] &lt;br /&gt;
&lt;br /&gt;
Save the file and restart Apache for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
==== Internet Information Server ====&lt;br /&gt;
&lt;br /&gt;
If you use Internet Information Server, you need to create a virtual directory for the folder &#039;&#039;c:\biocase\www&#039;&#039; using the IIS Server Manager. Grant all rights for this directory (Read, Write, Script Execution, Directory listing). You should also add &#039;&#039;index.html&#039;&#039; to the list of default documents (&amp;lt;small&amp;gt;Virtual Directory &amp;gt; Properties &amp;gt; Documents &amp;gt; Default&amp;lt;/small&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
In order to associate Python scripts with Python in IIS 5/6, you need to use the &amp;lt;small&amp;gt;Configure&amp;lt;/small&amp;gt; button on the virtual directory tab and associate the file extensions .cgi and .py with Python (see screenshot below). In IIS 7, you can open this dialog by choosing &amp;lt;small&amp;gt;Add Script Map&amp;lt;/small&amp;gt;. Note the placeholders &#039;&#039;%s %s&#039;&#039; after the Python executable!&lt;br /&gt;
&lt;br /&gt;
[[File:instAddScriptMap.png|330px]]&lt;br /&gt;
&lt;br /&gt;
If you run into problems configuring IIS, you should have a look at the tutorials available on the web, for example&lt;br /&gt;
* http://haishibai.blogspot.de/2011/02/setting-up-python-on-iis-7_01.html&lt;br /&gt;
* http://support.microsoft.com/kb/276494&lt;br /&gt;
&lt;br /&gt;
==== Testing the Link ====&lt;br /&gt;
&lt;br /&gt;
Once you’re done, you can test your BioCASe Installation by opening a browser and typing in &#039;&#039;http://localhost/biocase&#039;&#039; (replace &#039;&#039;localhost&#039;&#039; with the domain name of the machine you installed BioCASe on, if you’re not working locally). You should then see the start page of the BPS:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseStartpage.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Installing Additional Python Packages/Java/Graphviz ===&lt;br /&gt;
&lt;br /&gt;
Before you can start configuring your installation, you need to install additional packages, depending on the management system used for the database to be published and the functions of the BPS you intend to use.&lt;br /&gt;
&lt;br /&gt;
On the BPS start page, click on &amp;lt;small&amp;gt;Utilities&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;library test&amp;lt;/small&amp;gt; in order to navigate to the library test page that shows the status of installed libraries. On a fresh BPS installation, only the BioCASe libraries should be installed, since they&#039;re part of the archive file you’ve downloaded (or the Subversion repository you checked out from):&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesVanilla.png|550px]]&lt;br /&gt;
&lt;br /&gt;
If you plan to use the Local Query Tool (a small portal for querying and browsing your BioCASe webservice), you need to install the lxml library. You can do this easily by running the Python Package Installer (PIP): &#039;&#039;pip install lxml&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For each DBMS you plan to use with BioCASe (i.e. you have a database you want to publish with BioCASe), you’ll have to install the corresponding package. So if your collection is stored in a MySQL database, you&#039;ll need the MySQLdb library; the table shows you the command to run for installing it using pip: &#039;&#039;pip install mysqlclient&#039;&#039;. Once pip has installed the package, reload the libraries test page. The according list entry should turn from an orange &#039;&#039;not installed&#039;&#039; into a green version number. Redo this process for all DBMS you want to connect to.&lt;br /&gt;
&lt;br /&gt;
The Graphviz library listed under optional external binaries is used by the BPS to create a graph of your database’s data model in the table setup (you will learn in the [[DatasourceSetup#Setting_up_the_Database_Structure|Table Setup]] about this). If the data model is very simple (i.e., not more than 3 or 4 tables), you probably can spare the effort of installing Graphviz. Otherwise we recommend installing it: Simply click on the Download link and install the package using an installer file or a package manager on Linux.&lt;br /&gt;
&lt;br /&gt;
If you want to create DarwinCore Archives for your web services, you also need to install a Java Runtime Environment (JRE). BioCASe requires Java 1.8 or later for creating DarwinCore archives, so please check the version listed on the Testlibs page if it&#039;s already installed on the server.&lt;br /&gt;
&lt;br /&gt;
=== Changing the Default Password ===&lt;br /&gt;
&lt;br /&gt;
The configuration tool is a browser interface that allows you to configure almost every aspect of the BPS. As a last step of the setup, you should change the password.&lt;br /&gt;
&lt;br /&gt;
Go back to the Start page of the BPS (by clicking &amp;lt;small&amp;gt;Start&amp;lt;/small&amp;gt; at the top of the page, or by retyping &#039;&#039;http://localhost/biocase&#039;&#039; if the server is running on your computer), choose &amp;lt;small&amp;gt;Config Tool&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;System Administration&amp;lt;/small&amp;gt;. You will then be prompted for a password. Type in the default &#039;&#039;ACDC&#039;&#039;, then click &amp;lt;small&amp;gt;Submit&amp;lt;/small&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The top of the configuration page you’ll be directed to should look similar to this:&lt;br /&gt;
&lt;br /&gt;
[[image:instConfigTool.png|500px]]&lt;br /&gt;
&lt;br /&gt;
In the first two lines, you’ll see the values you entered during the setup script (in this case, the defaults &#039;&#039;localhost&#039;&#039; and &#039;&#039;biocase&#039;&#039;). In the fourth line, enter a new password. Please be careful when typing (if you forget the password some day, you can reset it by directly editing the configuration file). Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the new password to the configuration file.&lt;br /&gt;
&lt;br /&gt;
In case you’ve installed Graphviz, you need to tell the BPS the location of the binaries, since it is not a Python package that will be registered automatically. In order to do so, locate the Graphviz installation on your local disk and enter the path to the binary executable into the text box labelled &amp;lt;small&amp;gt;Path to Graphviz executable&amp;lt;/small&amp;gt;. On Linux machines it might look similar to the default (&#039;&#039;/usr/local/bin/dot&#039;&#039;), on Windows machines it will be probably something like &#039;&#039;C:/Program Files/Graphviz 2.44.1/bin/&#039;&#039;. Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the path.&lt;br /&gt;
&lt;br /&gt;
=== Checking Your Installation ===&lt;br /&gt;
&lt;br /&gt;
Before you proceed to the configuration, you should make sure everything is installed correctly:&lt;br /&gt;
&lt;br /&gt;
# Typing in &#039;&#039;http://localhost/biocase&#039;&#039; (or the appropriate values of your installation) takes you to the entry page of the provider software (as shown in the section [[#Linking_BioCASe_and_Your_Web_Server|Linking BioCASe and Your Web Server]]).&lt;br /&gt;
# The libraries test page (&amp;lt;small&amp;gt;Utilities &amp;gt; library test&amp;lt;/small&amp;gt;) shows you’ve installed the packages for your DBMS, lxml (if you want to use the Local Query Tool), Java (if you want to create DarwinCore Archives) and the Graphviz dot (if you decided so).&lt;br /&gt;
# &amp;lt;small&amp;gt;Status of writeable directories&amp;lt;/small&amp;gt; shows a green &amp;lt;small&amp;gt;writeable&amp;lt;/small&amp;gt; for all four directories. If not, the path to problematic file will be given – please grant write access to Python.&lt;br /&gt;
&lt;br /&gt;
If you want to connect BioCASe to a variety of different database management systems, create DarwinCore archives and use the QueryTool, the libraries test pages should look like this:&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesDone.png|650px]]&lt;br /&gt;
&lt;br /&gt;
== Updating an existing BioCASe Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Updating a BioCASe Docker installation ===&lt;br /&gt;
This is very simple with the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] you downloaded for installing BioCASe. Just go to the folder where you stored the file and run &#039;&#039;make update&#039;&#039;. This will stop and remove the BioCASe container, download the latest BioCASe image and create/start a new BioCASe container. Since the configuration files are not stored within the container, all your data sources will be preserved.&lt;br /&gt;
&lt;br /&gt;
=== Updating a regular BioCASe installation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Important Note&amp;lt;/u&amp;gt;&#039;&#039;&#039;: If you have a running BioCASe installation, you shouldn’t touch it until you’ve successfully installed a new version. So keep the old installation instead of replacing it!&lt;br /&gt;
&lt;br /&gt;
==== Updating from version 2.5 or later ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# Change directory to the new installation and run setup script. When asked whether to import the configuration from an old installation, answer yes. The setup script will now import the configuration of the old installation, including the data sources.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;br /&gt;
&lt;br /&gt;
==== Updating from older versions &amp;lt; 2.5 ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version; moreover, you will need the configuration files later.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# [[Installation#Running_the_Setup_Script|Run the setup script]]. When asked whether to import the configuration from an old installation, just press Return (defaults to no). Make sure to provide the the same base URL that was used by the old installation (for example &#039;&#039;/biocase&#039;&#039;).&lt;br /&gt;
# [[Installation#Changing_the_Default_Password|Change the default password]] of the new installation to the one you used in the old installation.&lt;br /&gt;
# Open the file &#039;&#039;config/config.ini&#039;&#039; of your old installation in a text editor. Open the config tool of the new installation and navigate to the System Administration page. Compare the settings in the section &amp;lt;small&amp;gt;Server configuration&amp;lt;/small&amp;gt; with the values you can find in the old configuration file and change them, if necessary (leave values unchanged if you don&#039;t find them in the old file). Press &amp;lt;small&amp;gt;Update config&amp;lt;/small&amp;gt;.&lt;br /&gt;
# Last, copy the configuration of the BioCASe web services: Open the folder &#039;&#039;config/datasources&#039;&#039; of your old installation and copy all subfolders to &#039;&#039;config/datasources&#039;&#039; of your new installation.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1197</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1197"/>
		<updated>2025-02-11T15:03:55Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Downloading and unpacking the Provider Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This part of the wiki explains how to install the BioCASe Provider Software. Depending on your skills, it should take between 15 and 60 minutes. If you’re a beginner, please read the [[BeginnersGuide|Beginner’s Guide]] first.&lt;br /&gt;
&lt;br /&gt;
== Requirements and Considerations ==&lt;br /&gt;
Before installing, please make sure that the system you’re intending to install the BPS on meets the following requirements (If you find out one of these items is not met, please ask your system administrator for help, read the [[FAQ]] or get in [[Special:Contact|contact with the BioCASe Team]].):&lt;br /&gt;
&lt;br /&gt;
# You have administrative privileges on this machine, i.e. the user rights to install new software packages.&lt;br /&gt;
# It is accessible from outside your institution. This means it either needs to be outside any institutional firewall or, more likely, the HTTP port is open for an existing firewall.&lt;br /&gt;
# A direct connection can be established from this machine to the database to be published – either because there’s no firewall in between, or the port used by the DBMS is open (e. g. 3306 for MySQL).&lt;br /&gt;
&lt;br /&gt;
In addition to the regular installation, you can install BioCASe from a Docker image. Docker is an operating-system-level virtualization software that allows easy software deployment in so-called containers. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide]. &#039;&#039;&#039;If you&#039;re famliar with Docker, we&#039;d suggest to use the Docker path for installing BioCASe&#039;&#039;&#039; - read more in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]] below.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Installing BioCASe from a Docker image ==&lt;br /&gt;
&lt;br /&gt;
Good choice! Installing BioCASe from a Docker image is much easer than installing the required components step-by-step. In addition, it&#039;s easier to update an existing installation. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide] first.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; BioCASe requires Docker version 17 or later. If you already have Docker installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
&lt;br /&gt;
For installing BioCASe from the Docker image, please follow these steps:&lt;br /&gt;
&lt;br /&gt;
# If you&#039;re not using Linux, install the &#039;&#039;make&#039;&#039; tool from https://gnuwin32.sourceforge.net/packages/make.htm.&lt;br /&gt;
# Install Docker Community Edition (Docker CE). For detailed instructions, see [https://docs.docker.com/install/ About Docker CE] and choose the tutorial for your platform. To make sure Docker is properly installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
# Download the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] that contains the commands for installing and updating BioCASe. Use &amp;quot;Save as...&amp;quot; to store it to your home folder on the server machine.&lt;br /&gt;
# Open a terminal window and change the work directory to the location you&#039;ve just saved the Makefile to. Then type in &#039;&#039;make install&#039;&#039; and press enter. This should download the latest BioCASe image, create a BioCASe container and run it.&lt;br /&gt;
&lt;br /&gt;
Per default, Docker will use port 80 for BioCASe. If this port is already used by another application on your server, you can instruct Docker to use another port. For using port 8181, for example, type in &#039;&#039;make install PORT=8181&#039;&#039; instead:&lt;br /&gt;
&lt;br /&gt;
[[File:DockerInstall.png|650px]]&lt;br /&gt;
&lt;br /&gt;
Voilà, that&#039;s it! To check your BioCASe installation, use your Browser to go to &#039;&#039;http://localhost/biocase&#039;&#039;. Don&#039;t forget to [[Installation#Changing_the_Default_Password | change the default password]].&lt;br /&gt;
&lt;br /&gt;
You can also use the Makefile for stopping and starting the BioCASe container (for example, if you restart your server each night automatically) - just type &#039;&#039;make stop&#039;&#039; and &#039;&#039;make start&#039;&#039;. For removing the container, use &#039;&#039;make remove&#039;&#039;, for updating your BioCASe installation &#039;&#039;make update&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; The configuration and the log files of your BioCASe installation, as well as any XML and DwC archives created, will be stored in Docker hosted volumes. That means they are stored outside of the BioCASe container and will be preserved, even when the container is removed (actually, that&#039;s what happens if you update your installation). Docker hosted volumes are stored in the &#039;&#039;volumes&#039;&#039; folder of your docker installation, e.g. /var/lib/docker/volumes. If you want to backup the configuration of your BioCASe installation, just backup the folder /var/lib/docker/volumes/bps_config. To learn more about docker hosted volumes, please refer to the [https://docs.docker.com/storage/volumes/ Docker guide].&lt;br /&gt;
&lt;br /&gt;
== Regular BioCASe Installation ==&lt;br /&gt;
This is the path to choose if you haven&#039;t heard of [https://www.docker.com/ Docker] yet. If you have experience with this virtualisation software, we&#039;d suggest to install BioCASe from the Docker image (instructions in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]]).&lt;br /&gt;
&lt;br /&gt;
BioCASe runs on both Windows and Linux machines. Two thoughts to consider for you:&lt;br /&gt;
* If you want to use ODBC to connect to your database (for example to an Access database), you should make sure that an ODBC driver is available for the OS of your choice. For an Access database, for example, such a ODBC driver is available only for Windows - so you should go for Windows.&lt;br /&gt;
* If you don&#039;t wanna use ODBC, because you plan to connect to a wide-spread DB system such as MySQL, Postgres or MS SQL Server, we recommend Linux (Debian).&lt;br /&gt;
&lt;br /&gt;
=== Installing Apache/IIS and Python ===&lt;br /&gt;
If you’re using a Linux system, you probably don’t need to install either, since Apache and Python are usually preinstalled. Same holds true for MacOS, but you should have a look at one of the articles on the web to find out about the file locations.&lt;br /&gt;
&lt;br /&gt;
Even though the BPS runs with both Apache and Internet Information Server (IIS), we recommend using Apache, which is much easier to configure. However, if you’re already using IIS, you might want to stick with that.&lt;br /&gt;
&lt;br /&gt;
The BPS requires Python 3.7+ to run, it doesn&#039;t work with Python 2, which ended its life cycle in 2020 (same is true for Python 3 versions &amp;lt; 3.7). On most Linux systems, Python 3 will be pre-installed. If not, you should be able to install Python using &#039;&#039;apt-get update&#039;&#039; and &#039;&#039;apt-get install python&#039;&#039;. (By the way: You can install several different Python versions on the same machine without any conflicts.)&lt;br /&gt;
&lt;br /&gt;
If you’re installing on a Windows Vista (poor you) or Windows 7 machine, we recommend not to install Apache in the default program files folder, since there is some magic spell on that which can get you into trouble when changing Apache’s configuration files. Just choose another path (Apache Software Foundation?) to spare that hassle.&lt;br /&gt;
&lt;br /&gt;
Once you’ve successfully installed Apache and Python, you can proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
=== Downloading and unpacking the Provider Software ===&lt;br /&gt;
You can find the latest release of BioCASe on our [https://git.bgbm.org/biocase/bps/-/releases/permalink/latest Git page]. There are two archives available for download:&lt;br /&gt;
* The [https://git.bgbm.org/biocase/bps/-/archive/3.8.6/bps-3.8.6.zip default package (recommended)] contains the full installation and allows the generation of DarwinCore archives. For this feature, the [https://github.com/pentaho/pentaho-kettle Kettle libraries] are included in the download.&lt;br /&gt;
* The [https://www.biocase.org/products/provider_software/files/bps-3.8.6-minimal.zip minimal package] doesn&#039;t contain the Kettle libraries, hence it&#039;s not possible to create DarwinCore archives with such an installation. Choose this download only if you have a good reason to do so.&lt;br /&gt;
&lt;br /&gt;
Download the file to your server and unpack it to the desired location of your file system e.g. &#039;&#039;/opt&#039;&#039; on Linux). It contains the BioCASe Provider Software in a folder that contains the version number, e.g. &#039;&#039;bps-3.8.6&#039;&#039;. We recommend to rename it to something that doesn&#039;t include the version number, so you don&#039;t need to touch your web server&#039;s configuration during future updates.&lt;br /&gt;
&lt;br /&gt;
For the remainder of this guide, we will assume you’ve installed the BPS into a folder named &#039;&#039;biocase&#039;&#039;, which should look like this by now:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseFolder.png|650px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the Setup Script ===&lt;br /&gt;
The setup script will initiate the configuration files with values you provide and point the script files to your Python installation (you can re-run the setup script in case that location changes). If you want to modify any of settings you made during the setup, you can change the values in the configuration tool later.&lt;br /&gt;
&lt;br /&gt;
In order to run the script, open a terminal window (or “command prompt” in Windows). Change the working directory to the folder you’ve downloaded the BPS to (&#039;&#039;biocase&#039;&#039;) and type in:&amp;lt;pre&amp;gt;python setup.py&amp;lt;/pre&amp;gt; In case Python is not found, you’ll have to add the full path name to the Python executable. Make sure the Python version given in the fifth line of the output is the one you desire (otherwise add the path to the correct executable):&lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptStart.png|550px]]&lt;br /&gt;
&lt;br /&gt;
The questions asked by the setup script do have defaults. If you want to keep them, just press &amp;lt;small&amp;gt;Return&amp;lt;/small&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Webserver domain:&amp;lt;/strong&amp;gt; This is the domain name of the web server you’re installing BioCASe on, e.g. &#039;&#039;http://www.myinstitution.org&#039;&#039;.  You can keep the default &#039;&#039;localhost&#039;&#039; as long as you’re configuring and testing the installation locally; for production you’ll need to change that into the correct domain name (or IP address) later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Base URL:&amp;lt;/strong&amp;gt; This will become the second part of the URL your installation will use. If you keep the default biocase, your installation will be accessible later at &#039;&#039;www.myinstitution.org/biocase&#039;&#039;, for example.&lt;br /&gt;
&lt;br /&gt;
After answering these two questions, the script will update your files. At the end of the output you can find the lines you&#039;ll need later to create the link between BioCASe and your web server, so do not close the window! &lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptDone.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Linking BioCASe and Your Web Server ===&lt;br /&gt;
&lt;br /&gt;
The public part of the provider software is stored in the &#039;&#039;www&#039;&#039; subfolder of your BioCASe installation and must be configured in your web server as a public folder. You should always make this folder public using a virtual directory: This means that you should never install BioCASe under the default root folder of your web server. Doing so can compromise your server security and will allow people to see your configuration files (which include passwords). So since we installed BioCASe in &#039;&#039;c:\biocase&#039;&#039;, the folder that must be published with a virtual directory is &#039;&#039;c:\biocase\www&#039;&#039; and will be accessible later through &#039;&#039;http://www.myinstitution.org/biocase&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Apache ====&lt;br /&gt;
If you use Apache, adding the BioCASe folder to your web server environment is as simple as copying the lines printed at the end of the setup script to the end of the Apache configuration file &#039;&#039;httpd.conf&#039;&#039;. This can typically be found in the &#039;&#039;conf&#039;&#039; folder of your Apache installation. If you’re adding BioCASe to an already productive web server, please ask the server admin before doing any changes!&lt;br /&gt;
&lt;br /&gt;
[[image:instHttpdConf.png|550px]] &lt;br /&gt;
&lt;br /&gt;
Save the file and restart Apache for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
==== Internet Information Server ====&lt;br /&gt;
&lt;br /&gt;
If you use Internet Information Server, you need to create a virtual directory for the folder &#039;&#039;c:\biocase\www&#039;&#039; using the IIS Server Manager. Grant all rights for this directory (Read, Write, Script Execution, Directory listing). You should also add &#039;&#039;index.html&#039;&#039; to the list of default documents (&amp;lt;small&amp;gt;Virtual Directory &amp;gt; Properties &amp;gt; Documents &amp;gt; Default&amp;lt;/small&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
In order to associate Python scripts with Python in IIS 5/6, you need to use the &amp;lt;small&amp;gt;Configure&amp;lt;/small&amp;gt; button on the virtual directory tab and associate the file extensions .cgi and .py with Python (see screenshot below). In IIS 7, you can open this dialog by choosing &amp;lt;small&amp;gt;Add Script Map&amp;lt;/small&amp;gt;. Note the placeholders &#039;&#039;%s %s&#039;&#039; after the Python executable!&lt;br /&gt;
&lt;br /&gt;
[[File:instAddScriptMap.png|330px]]&lt;br /&gt;
&lt;br /&gt;
If you run into problems configuring IIS, you should have a look at the tutorials available on the web, for example&lt;br /&gt;
* http://haishibai.blogspot.de/2011/02/setting-up-python-on-iis-7_01.html&lt;br /&gt;
* http://support.microsoft.com/kb/276494&lt;br /&gt;
&lt;br /&gt;
==== Testing the Link ====&lt;br /&gt;
&lt;br /&gt;
Once you’re done, you can test your BioCASe Installation by opening a browser and typing in &#039;&#039;http://localhost/biocase&#039;&#039; (replace &#039;&#039;localhost&#039;&#039; with the domain name of the machine you installed BioCASe on, if you’re not working locally). You should then see the start page of the BPS:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseStartpage.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Installing Additional Python Packages/Java/Graphviz ===&lt;br /&gt;
&lt;br /&gt;
Before you can start configuring your installation, you need to install additional packages, depending on the management system used for the database to be published and the functions of the BPS you intend to use.&lt;br /&gt;
&lt;br /&gt;
On the BPS start page, click on &amp;lt;small&amp;gt;Utilities&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;library test&amp;lt;/small&amp;gt; in order to navigate to the library test page that shows the status of installed libraries. On a fresh BPS installation, only the BioCASe libraries should be installed, since they&#039;re part of the archive file you’ve downloaded (or the Subversion repository you checked out from):&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesVanilla.png|550px]]&lt;br /&gt;
&lt;br /&gt;
If you plan to use the Local Query Tool (a small portal for querying and browsing your BioCASe webservice), you need to install the lxml library. You can do this easily by running the Python Package Installer (PIP): &#039;&#039;pip install lxml&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For each DBMS you plan to use with BioCASe (i.e. you have a database you want to publish with BioCASe), you’ll have to install the corresponding package. So if your collection is stored in a MySQL database, you&#039;ll need the MySQLdb library; the table shows you the command to run for installing it using pip: &#039;&#039;pip install mysqlclient&#039;&#039;. Once pip has installed the package, reload the libraries test page. The according list entry should turn from an orange &#039;&#039;not installed&#039;&#039; into a green version number. Redo this process for all DBMS you want to connect to.&lt;br /&gt;
&lt;br /&gt;
The Graphviz library listed under optional external binaries is used by the BPS to create a graph of your database’s data model in the table setup (you will learn in the [[DatasourceSetup#Setting_up_the_Database_Structure|Table Setup]] about this). If the data model is very simple (i.e., not more than 3 or 4 tables), you probably can spare the effort of installing Graphviz. Otherwise we recommend installing it: Simply click on the Download link and install the package using an installer file or a package manager on Linux.&lt;br /&gt;
&lt;br /&gt;
If you want to create DarwinCore Archives for your web services, you also need to install a Java Runtime Environment (JRE). BioCASe requires Java 1.8 or later for creating DarwinCore archives, so please check the version listed on the Testlibs page if it&#039;s already installed on the server.&lt;br /&gt;
&lt;br /&gt;
=== Changing the Default Password ===&lt;br /&gt;
&lt;br /&gt;
The configuration tool is a browser interface that allows you to configure almost every aspect of the BPS. As a last step of the setup, you should change the password.&lt;br /&gt;
&lt;br /&gt;
Go back to the Start page of the BPS (by clicking &amp;lt;small&amp;gt;Start&amp;lt;/small&amp;gt; at the top of the page, or by retyping &#039;&#039;http://localhost/biocase&#039;&#039; if the server is running on your computer), choose &amp;lt;small&amp;gt;Config Tool&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;System Administration&amp;lt;/small&amp;gt;. You will then be prompted for a password. Type in the default &#039;&#039;ACDC&#039;&#039;, then click &amp;lt;small&amp;gt;Submit&amp;lt;/small&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The top of the configuration page you’ll be directed to should look similar to this:&lt;br /&gt;
&lt;br /&gt;
[[image:instConfigTool.png|500px]]&lt;br /&gt;
&lt;br /&gt;
In the first two lines, you’ll see the values you entered during the setup script (in this case, the defaults &#039;&#039;localhost&#039;&#039; and &#039;&#039;biocase&#039;&#039;). In the fourth line, enter a new password. Please be careful when typing (if you forget the password some day, you can reset it by directly editing the configuration file). Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the new password to the configuration file.&lt;br /&gt;
&lt;br /&gt;
In case you’ve installed Graphviz, you need to tell the BPS the location of the binaries, since it is not a Python package that will be registered automatically. In order to do so, locate the Graphviz installation on your local disk and enter the path to the binary executable into the text box labelled &amp;lt;small&amp;gt;Path to Graphviz executable&amp;lt;/small&amp;gt;. On Linux machines it might look similar to the default (&#039;&#039;/usr/local/bin/dot&#039;&#039;), on Windows machines it will be probably something like &#039;&#039;C:/Program Files/Graphviz 2.44.1/bin/&#039;&#039;. Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the path.&lt;br /&gt;
&lt;br /&gt;
=== Checking Your Installation ===&lt;br /&gt;
&lt;br /&gt;
Before you proceed to the configuration, you should make sure everything is installed correctly:&lt;br /&gt;
&lt;br /&gt;
# Typing in &#039;&#039;http://localhost/biocase&#039;&#039; (or the appropriate values of your installation) takes you to the entry page of the provider software (as shown in the section [[#Linking_BioCASe_and_Your_Web_Server|Linking BioCASe and Your Web Server]]).&lt;br /&gt;
# The libraries test page (&amp;lt;small&amp;gt;Utilities &amp;gt; library test&amp;lt;/small&amp;gt;) shows you’ve installed the packages for your DBMS, lxml (if you want to use the Local Query Tool), Java (if you want to create DarwinCore Archives) and the Graphviz dot (if you decided so).&lt;br /&gt;
# &amp;lt;small&amp;gt;Status of writeable directories&amp;lt;/small&amp;gt; shows a green &amp;lt;small&amp;gt;writeable&amp;lt;/small&amp;gt; for all four directories. If not, the path to problematic file will be given – please grant write access to Python.&lt;br /&gt;
&lt;br /&gt;
If you want to connect BioCASe to a variety of different database management systems, create DarwinCore archives and use the QueryTool, the libraries test pages should look like this:&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesDone.png|650px]]&lt;br /&gt;
&lt;br /&gt;
== Updating an existing BioCASe Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Updating a BioCASe Docker installation ===&lt;br /&gt;
This is very simple with the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] you downloaded for installing BioCASe. Just go to the folder where you stored the file and run &#039;&#039;make update&#039;&#039;. This will stop and remove the BioCASe container, download the latest BioCASe image and create/start a new BioCASe container. Since the configuration files are not stored within the container, all your data sources will be preserved.&lt;br /&gt;
&lt;br /&gt;
=== Updating a regular BioCASe installation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Important Note&amp;lt;/u&amp;gt;&#039;&#039;&#039;: If you have a running BioCASe installation, you shouldn’t touch it until you’ve successfully installed a new version. So keep the old installation instead of replacing it!&lt;br /&gt;
&lt;br /&gt;
==== Updating from version 2.5 or later ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# Change directory to the new installation and run setup script. When asked whether to import the configuration from an old installation, answer yes. The setup script will now import the configuration of the old installation, including the data sources.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;br /&gt;
&lt;br /&gt;
==== Updating from older versions &amp;lt; 2.5 ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version; moreover, you will need the configuration files later.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# [[Installation#Running_the_Setup_Script|Run the setup script]]. When asked whether to import the configuration from an old installation, just press Return (defaults to no). Make sure to provide the the same base URL that was used by the old installation (for example &#039;&#039;/biocase&#039;&#039;).&lt;br /&gt;
# [[Installation#Changing_the_Default_Password|Change the default password]] of the new installation to the one you used in the old installation.&lt;br /&gt;
# Open the file &#039;&#039;config/config.ini&#039;&#039; of your old installation in a text editor. Open the config tool of the new installation and navigate to the System Administration page. Compare the settings in the section &amp;lt;small&amp;gt;Server configuration&amp;lt;/small&amp;gt; with the values you can find in the old configuration file and change them, if necessary (leave values unchanged if you don&#039;t find them in the old file). Press &amp;lt;small&amp;gt;Update config&amp;lt;/small&amp;gt;.&lt;br /&gt;
# Last, copy the configuration of the BioCASe web services: Open the folder &#039;&#039;config/datasources&#039;&#039; of your old installation and copy all subfolders to &#039;&#039;config/datasources&#039;&#039; of your new installation.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1196</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1196"/>
		<updated>2025-02-11T15:02:59Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Downloading and unpacking the Provider Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This part of the wiki explains how to install the BioCASe Provider Software. Depending on your skills, it should take between 15 and 60 minutes. If you’re a beginner, please read the [[BeginnersGuide|Beginner’s Guide]] first.&lt;br /&gt;
&lt;br /&gt;
== Requirements and Considerations ==&lt;br /&gt;
Before installing, please make sure that the system you’re intending to install the BPS on meets the following requirements (If you find out one of these items is not met, please ask your system administrator for help, read the [[FAQ]] or get in [[Special:Contact|contact with the BioCASe Team]].):&lt;br /&gt;
&lt;br /&gt;
# You have administrative privileges on this machine, i.e. the user rights to install new software packages.&lt;br /&gt;
# It is accessible from outside your institution. This means it either needs to be outside any institutional firewall or, more likely, the HTTP port is open for an existing firewall.&lt;br /&gt;
# A direct connection can be established from this machine to the database to be published – either because there’s no firewall in between, or the port used by the DBMS is open (e. g. 3306 for MySQL).&lt;br /&gt;
&lt;br /&gt;
In addition to the regular installation, you can install BioCASe from a Docker image. Docker is an operating-system-level virtualization software that allows easy software deployment in so-called containers. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide]. &#039;&#039;&#039;If you&#039;re famliar with Docker, we&#039;d suggest to use the Docker path for installing BioCASe&#039;&#039;&#039; - read more in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]] below.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Installing BioCASe from a Docker image ==&lt;br /&gt;
&lt;br /&gt;
Good choice! Installing BioCASe from a Docker image is much easer than installing the required components step-by-step. In addition, it&#039;s easier to update an existing installation. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide] first.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; BioCASe requires Docker version 17 or later. If you already have Docker installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
&lt;br /&gt;
For installing BioCASe from the Docker image, please follow these steps:&lt;br /&gt;
&lt;br /&gt;
# If you&#039;re not using Linux, install the &#039;&#039;make&#039;&#039; tool from https://gnuwin32.sourceforge.net/packages/make.htm.&lt;br /&gt;
# Install Docker Community Edition (Docker CE). For detailed instructions, see [https://docs.docker.com/install/ About Docker CE] and choose the tutorial for your platform. To make sure Docker is properly installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
# Download the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] that contains the commands for installing and updating BioCASe. Use &amp;quot;Save as...&amp;quot; to store it to your home folder on the server machine.&lt;br /&gt;
# Open a terminal window and change the work directory to the location you&#039;ve just saved the Makefile to. Then type in &#039;&#039;make install&#039;&#039; and press enter. This should download the latest BioCASe image, create a BioCASe container and run it.&lt;br /&gt;
&lt;br /&gt;
Per default, Docker will use port 80 for BioCASe. If this port is already used by another application on your server, you can instruct Docker to use another port. For using port 8181, for example, type in &#039;&#039;make install PORT=8181&#039;&#039; instead:&lt;br /&gt;
&lt;br /&gt;
[[File:DockerInstall.png|650px]]&lt;br /&gt;
&lt;br /&gt;
Voilà, that&#039;s it! To check your BioCASe installation, use your Browser to go to &#039;&#039;http://localhost/biocase&#039;&#039;. Don&#039;t forget to [[Installation#Changing_the_Default_Password | change the default password]].&lt;br /&gt;
&lt;br /&gt;
You can also use the Makefile for stopping and starting the BioCASe container (for example, if you restart your server each night automatically) - just type &#039;&#039;make stop&#039;&#039; and &#039;&#039;make start&#039;&#039;. For removing the container, use &#039;&#039;make remove&#039;&#039;, for updating your BioCASe installation &#039;&#039;make update&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; The configuration and the log files of your BioCASe installation, as well as any XML and DwC archives created, will be stored in Docker hosted volumes. That means they are stored outside of the BioCASe container and will be preserved, even when the container is removed (actually, that&#039;s what happens if you update your installation). Docker hosted volumes are stored in the &#039;&#039;volumes&#039;&#039; folder of your docker installation, e.g. /var/lib/docker/volumes. If you want to backup the configuration of your BioCASe installation, just backup the folder /var/lib/docker/volumes/bps_config. To learn more about docker hosted volumes, please refer to the [https://docs.docker.com/storage/volumes/ Docker guide].&lt;br /&gt;
&lt;br /&gt;
== Regular BioCASe Installation ==&lt;br /&gt;
This is the path to choose if you haven&#039;t heard of [https://www.docker.com/ Docker] yet. If you have experience with this virtualisation software, we&#039;d suggest to install BioCASe from the Docker image (instructions in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]]).&lt;br /&gt;
&lt;br /&gt;
BioCASe runs on both Windows and Linux machines. Two thoughts to consider for you:&lt;br /&gt;
* If you want to use ODBC to connect to your database (for example to an Access database), you should make sure that an ODBC driver is available for the OS of your choice. For an Access database, for example, such a ODBC driver is available only for Windows - so you should go for Windows.&lt;br /&gt;
* If you don&#039;t wanna use ODBC, because you plan to connect to a wide-spread DB system such as MySQL, Postgres or MS SQL Server, we recommend Linux (Debian).&lt;br /&gt;
&lt;br /&gt;
=== Installing Apache/IIS and Python ===&lt;br /&gt;
If you’re using a Linux system, you probably don’t need to install either, since Apache and Python are usually preinstalled. Same holds true for MacOS, but you should have a look at one of the articles on the web to find out about the file locations.&lt;br /&gt;
&lt;br /&gt;
Even though the BPS runs with both Apache and Internet Information Server (IIS), we recommend using Apache, which is much easier to configure. However, if you’re already using IIS, you might want to stick with that.&lt;br /&gt;
&lt;br /&gt;
The BPS requires Python 3.7+ to run, it doesn&#039;t work with Python 2, which ended its life cycle in 2020 (same is true for Python 3 versions &amp;lt; 3.7). On most Linux systems, Python 3 will be pre-installed. If not, you should be able to install Python using &#039;&#039;apt-get update&#039;&#039; and &#039;&#039;apt-get install python&#039;&#039;. (By the way: You can install several different Python versions on the same machine without any conflicts.)&lt;br /&gt;
&lt;br /&gt;
If you’re installing on a Windows Vista (poor you) or Windows 7 machine, we recommend not to install Apache in the default program files folder, since there is some magic spell on that which can get you into trouble when changing Apache’s configuration files. Just choose another path (Apache Software Foundation?) to spare that hassle.&lt;br /&gt;
&lt;br /&gt;
Once you’ve successfully installed Apache and Python, you can proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
=== Downloading and unpacking the Provider Software ===&lt;br /&gt;
You can find the latest release of BioCASe on our [https://git.bgbm.org/biocase/bps/-/releases/permalink/latest Git page]. There are two archives available for download:&lt;br /&gt;
* The [https://git.bgbm.org/biocase/bps/-/archive/3.8.6/bps-3.8.6.zip default package (recommended)] contains the full installation and allows the generation of DarwinCore archives. For this feature, the [Kettle libraries] are included in the download.&lt;br /&gt;
* The [https://www.biocase.org/products/provider_software/files/bps-3.8.6-minimal.zip minimal package] doesn&#039;t contain the [https://github.com/pentaho/pentaho-kettle Kettle libraries], hence it&#039;s not possible to create DarwinCore archives with such an installation. Choose this download only if you have a good reason to do so.&lt;br /&gt;
&lt;br /&gt;
Download the file to your server and unpack it to the desired location of your file system e.g. &#039;&#039;/opt&#039;&#039; on Linux). It contains the BioCASe Provider Software in a folder that contains the version number, e.g. &#039;&#039;bps-3.8.6&#039;&#039;. We recommend to rename it to something that doesn&#039;t include the version number, so you don&#039;t need to touch your web server&#039;s configuration during future updates.&lt;br /&gt;
&lt;br /&gt;
For the remainder of this guide, we will assume you’ve installed the BPS into a folder named &#039;&#039;biocase&#039;&#039;, which should look like this by now:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseFolder.png|650px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the Setup Script ===&lt;br /&gt;
The setup script will initiate the configuration files with values you provide and point the script files to your Python installation (you can re-run the setup script in case that location changes). If you want to modify any of settings you made during the setup, you can change the values in the configuration tool later.&lt;br /&gt;
&lt;br /&gt;
In order to run the script, open a terminal window (or “command prompt” in Windows). Change the working directory to the folder you’ve downloaded the BPS to (&#039;&#039;biocase&#039;&#039;) and type in:&amp;lt;pre&amp;gt;python setup.py&amp;lt;/pre&amp;gt; In case Python is not found, you’ll have to add the full path name to the Python executable. Make sure the Python version given in the fifth line of the output is the one you desire (otherwise add the path to the correct executable):&lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptStart.png|550px]]&lt;br /&gt;
&lt;br /&gt;
The questions asked by the setup script do have defaults. If you want to keep them, just press &amp;lt;small&amp;gt;Return&amp;lt;/small&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Webserver domain:&amp;lt;/strong&amp;gt; This is the domain name of the web server you’re installing BioCASe on, e.g. &#039;&#039;http://www.myinstitution.org&#039;&#039;.  You can keep the default &#039;&#039;localhost&#039;&#039; as long as you’re configuring and testing the installation locally; for production you’ll need to change that into the correct domain name (or IP address) later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Base URL:&amp;lt;/strong&amp;gt; This will become the second part of the URL your installation will use. If you keep the default biocase, your installation will be accessible later at &#039;&#039;www.myinstitution.org/biocase&#039;&#039;, for example.&lt;br /&gt;
&lt;br /&gt;
After answering these two questions, the script will update your files. At the end of the output you can find the lines you&#039;ll need later to create the link between BioCASe and your web server, so do not close the window! &lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptDone.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Linking BioCASe and Your Web Server ===&lt;br /&gt;
&lt;br /&gt;
The public part of the provider software is stored in the &#039;&#039;www&#039;&#039; subfolder of your BioCASe installation and must be configured in your web server as a public folder. You should always make this folder public using a virtual directory: This means that you should never install BioCASe under the default root folder of your web server. Doing so can compromise your server security and will allow people to see your configuration files (which include passwords). So since we installed BioCASe in &#039;&#039;c:\biocase&#039;&#039;, the folder that must be published with a virtual directory is &#039;&#039;c:\biocase\www&#039;&#039; and will be accessible later through &#039;&#039;http://www.myinstitution.org/biocase&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Apache ====&lt;br /&gt;
If you use Apache, adding the BioCASe folder to your web server environment is as simple as copying the lines printed at the end of the setup script to the end of the Apache configuration file &#039;&#039;httpd.conf&#039;&#039;. This can typically be found in the &#039;&#039;conf&#039;&#039; folder of your Apache installation. If you’re adding BioCASe to an already productive web server, please ask the server admin before doing any changes!&lt;br /&gt;
&lt;br /&gt;
[[image:instHttpdConf.png|550px]] &lt;br /&gt;
&lt;br /&gt;
Save the file and restart Apache for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
==== Internet Information Server ====&lt;br /&gt;
&lt;br /&gt;
If you use Internet Information Server, you need to create a virtual directory for the folder &#039;&#039;c:\biocase\www&#039;&#039; using the IIS Server Manager. Grant all rights for this directory (Read, Write, Script Execution, Directory listing). You should also add &#039;&#039;index.html&#039;&#039; to the list of default documents (&amp;lt;small&amp;gt;Virtual Directory &amp;gt; Properties &amp;gt; Documents &amp;gt; Default&amp;lt;/small&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
In order to associate Python scripts with Python in IIS 5/6, you need to use the &amp;lt;small&amp;gt;Configure&amp;lt;/small&amp;gt; button on the virtual directory tab and associate the file extensions .cgi and .py with Python (see screenshot below). In IIS 7, you can open this dialog by choosing &amp;lt;small&amp;gt;Add Script Map&amp;lt;/small&amp;gt;. Note the placeholders &#039;&#039;%s %s&#039;&#039; after the Python executable!&lt;br /&gt;
&lt;br /&gt;
[[File:instAddScriptMap.png|330px]]&lt;br /&gt;
&lt;br /&gt;
If you run into problems configuring IIS, you should have a look at the tutorials available on the web, for example&lt;br /&gt;
* http://haishibai.blogspot.de/2011/02/setting-up-python-on-iis-7_01.html&lt;br /&gt;
* http://support.microsoft.com/kb/276494&lt;br /&gt;
&lt;br /&gt;
==== Testing the Link ====&lt;br /&gt;
&lt;br /&gt;
Once you’re done, you can test your BioCASe Installation by opening a browser and typing in &#039;&#039;http://localhost/biocase&#039;&#039; (replace &#039;&#039;localhost&#039;&#039; with the domain name of the machine you installed BioCASe on, if you’re not working locally). You should then see the start page of the BPS:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseStartpage.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Installing Additional Python Packages/Java/Graphviz ===&lt;br /&gt;
&lt;br /&gt;
Before you can start configuring your installation, you need to install additional packages, depending on the management system used for the database to be published and the functions of the BPS you intend to use.&lt;br /&gt;
&lt;br /&gt;
On the BPS start page, click on &amp;lt;small&amp;gt;Utilities&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;library test&amp;lt;/small&amp;gt; in order to navigate to the library test page that shows the status of installed libraries. On a fresh BPS installation, only the BioCASe libraries should be installed, since they&#039;re part of the archive file you’ve downloaded (or the Subversion repository you checked out from):&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesVanilla.png|550px]]&lt;br /&gt;
&lt;br /&gt;
If you plan to use the Local Query Tool (a small portal for querying and browsing your BioCASe webservice), you need to install the lxml library. You can do this easily by running the Python Package Installer (PIP): &#039;&#039;pip install lxml&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For each DBMS you plan to use with BioCASe (i.e. you have a database you want to publish with BioCASe), you’ll have to install the corresponding package. So if your collection is stored in a MySQL database, you&#039;ll need the MySQLdb library; the table shows you the command to run for installing it using pip: &#039;&#039;pip install mysqlclient&#039;&#039;. Once pip has installed the package, reload the libraries test page. The according list entry should turn from an orange &#039;&#039;not installed&#039;&#039; into a green version number. Redo this process for all DBMS you want to connect to.&lt;br /&gt;
&lt;br /&gt;
The Graphviz library listed under optional external binaries is used by the BPS to create a graph of your database’s data model in the table setup (you will learn in the [[DatasourceSetup#Setting_up_the_Database_Structure|Table Setup]] about this). If the data model is very simple (i.e., not more than 3 or 4 tables), you probably can spare the effort of installing Graphviz. Otherwise we recommend installing it: Simply click on the Download link and install the package using an installer file or a package manager on Linux.&lt;br /&gt;
&lt;br /&gt;
If you want to create DarwinCore Archives for your web services, you also need to install a Java Runtime Environment (JRE). BioCASe requires Java 1.8 or later for creating DarwinCore archives, so please check the version listed on the Testlibs page if it&#039;s already installed on the server.&lt;br /&gt;
&lt;br /&gt;
=== Changing the Default Password ===&lt;br /&gt;
&lt;br /&gt;
The configuration tool is a browser interface that allows you to configure almost every aspect of the BPS. As a last step of the setup, you should change the password.&lt;br /&gt;
&lt;br /&gt;
Go back to the Start page of the BPS (by clicking &amp;lt;small&amp;gt;Start&amp;lt;/small&amp;gt; at the top of the page, or by retyping &#039;&#039;http://localhost/biocase&#039;&#039; if the server is running on your computer), choose &amp;lt;small&amp;gt;Config Tool&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;System Administration&amp;lt;/small&amp;gt;. You will then be prompted for a password. Type in the default &#039;&#039;ACDC&#039;&#039;, then click &amp;lt;small&amp;gt;Submit&amp;lt;/small&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The top of the configuration page you’ll be directed to should look similar to this:&lt;br /&gt;
&lt;br /&gt;
[[image:instConfigTool.png|500px]]&lt;br /&gt;
&lt;br /&gt;
In the first two lines, you’ll see the values you entered during the setup script (in this case, the defaults &#039;&#039;localhost&#039;&#039; and &#039;&#039;biocase&#039;&#039;). In the fourth line, enter a new password. Please be careful when typing (if you forget the password some day, you can reset it by directly editing the configuration file). Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the new password to the configuration file.&lt;br /&gt;
&lt;br /&gt;
In case you’ve installed Graphviz, you need to tell the BPS the location of the binaries, since it is not a Python package that will be registered automatically. In order to do so, locate the Graphviz installation on your local disk and enter the path to the binary executable into the text box labelled &amp;lt;small&amp;gt;Path to Graphviz executable&amp;lt;/small&amp;gt;. On Linux machines it might look similar to the default (&#039;&#039;/usr/local/bin/dot&#039;&#039;), on Windows machines it will be probably something like &#039;&#039;C:/Program Files/Graphviz 2.44.1/bin/&#039;&#039;. Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the path.&lt;br /&gt;
&lt;br /&gt;
=== Checking Your Installation ===&lt;br /&gt;
&lt;br /&gt;
Before you proceed to the configuration, you should make sure everything is installed correctly:&lt;br /&gt;
&lt;br /&gt;
# Typing in &#039;&#039;http://localhost/biocase&#039;&#039; (or the appropriate values of your installation) takes you to the entry page of the provider software (as shown in the section [[#Linking_BioCASe_and_Your_Web_Server|Linking BioCASe and Your Web Server]]).&lt;br /&gt;
# The libraries test page (&amp;lt;small&amp;gt;Utilities &amp;gt; library test&amp;lt;/small&amp;gt;) shows you’ve installed the packages for your DBMS, lxml (if you want to use the Local Query Tool), Java (if you want to create DarwinCore Archives) and the Graphviz dot (if you decided so).&lt;br /&gt;
# &amp;lt;small&amp;gt;Status of writeable directories&amp;lt;/small&amp;gt; shows a green &amp;lt;small&amp;gt;writeable&amp;lt;/small&amp;gt; for all four directories. If not, the path to problematic file will be given – please grant write access to Python.&lt;br /&gt;
&lt;br /&gt;
If you want to connect BioCASe to a variety of different database management systems, create DarwinCore archives and use the QueryTool, the libraries test pages should look like this:&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesDone.png|650px]]&lt;br /&gt;
&lt;br /&gt;
== Updating an existing BioCASe Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Updating a BioCASe Docker installation ===&lt;br /&gt;
This is very simple with the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] you downloaded for installing BioCASe. Just go to the folder where you stored the file and run &#039;&#039;make update&#039;&#039;. This will stop and remove the BioCASe container, download the latest BioCASe image and create/start a new BioCASe container. Since the configuration files are not stored within the container, all your data sources will be preserved.&lt;br /&gt;
&lt;br /&gt;
=== Updating a regular BioCASe installation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Important Note&amp;lt;/u&amp;gt;&#039;&#039;&#039;: If you have a running BioCASe installation, you shouldn’t touch it until you’ve successfully installed a new version. So keep the old installation instead of replacing it!&lt;br /&gt;
&lt;br /&gt;
==== Updating from version 2.5 or later ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# Change directory to the new installation and run setup script. When asked whether to import the configuration from an old installation, answer yes. The setup script will now import the configuration of the old installation, including the data sources.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;br /&gt;
&lt;br /&gt;
==== Updating from older versions &amp;lt; 2.5 ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version; moreover, you will need the configuration files later.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# [[Installation#Running_the_Setup_Script|Run the setup script]]. When asked whether to import the configuration from an old installation, just press Return (defaults to no). Make sure to provide the the same base URL that was used by the old installation (for example &#039;&#039;/biocase&#039;&#039;).&lt;br /&gt;
# [[Installation#Changing_the_Default_Password|Change the default password]] of the new installation to the one you used in the old installation.&lt;br /&gt;
# Open the file &#039;&#039;config/config.ini&#039;&#039; of your old installation in a text editor. Open the config tool of the new installation and navigate to the System Administration page. Compare the settings in the section &amp;lt;small&amp;gt;Server configuration&amp;lt;/small&amp;gt; with the values you can find in the old configuration file and change them, if necessary (leave values unchanged if you don&#039;t find them in the old file). Press &amp;lt;small&amp;gt;Update config&amp;lt;/small&amp;gt;.&lt;br /&gt;
# Last, copy the configuration of the BioCASe web services: Open the folder &#039;&#039;config/datasources&#039;&#039; of your old installation and copy all subfolders to &#039;&#039;config/datasources&#039;&#039; of your new installation.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1195</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1195"/>
		<updated>2025-02-11T14:57:26Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Downloading the Provider Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This part of the wiki explains how to install the BioCASe Provider Software. Depending on your skills, it should take between 15 and 60 minutes. If you’re a beginner, please read the [[BeginnersGuide|Beginner’s Guide]] first.&lt;br /&gt;
&lt;br /&gt;
== Requirements and Considerations ==&lt;br /&gt;
Before installing, please make sure that the system you’re intending to install the BPS on meets the following requirements (If you find out one of these items is not met, please ask your system administrator for help, read the [[FAQ]] or get in [[Special:Contact|contact with the BioCASe Team]].):&lt;br /&gt;
&lt;br /&gt;
# You have administrative privileges on this machine, i.e. the user rights to install new software packages.&lt;br /&gt;
# It is accessible from outside your institution. This means it either needs to be outside any institutional firewall or, more likely, the HTTP port is open for an existing firewall.&lt;br /&gt;
# A direct connection can be established from this machine to the database to be published – either because there’s no firewall in between, or the port used by the DBMS is open (e. g. 3306 for MySQL).&lt;br /&gt;
&lt;br /&gt;
In addition to the regular installation, you can install BioCASe from a Docker image. Docker is an operating-system-level virtualization software that allows easy software deployment in so-called containers. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide]. &#039;&#039;&#039;If you&#039;re famliar with Docker, we&#039;d suggest to use the Docker path for installing BioCASe&#039;&#039;&#039; - read more in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]] below.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Installing BioCASe from a Docker image ==&lt;br /&gt;
&lt;br /&gt;
Good choice! Installing BioCASe from a Docker image is much easer than installing the required components step-by-step. In addition, it&#039;s easier to update an existing installation. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide] first.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; BioCASe requires Docker version 17 or later. If you already have Docker installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
&lt;br /&gt;
For installing BioCASe from the Docker image, please follow these steps:&lt;br /&gt;
&lt;br /&gt;
# If you&#039;re not using Linux, install the &#039;&#039;make&#039;&#039; tool from https://gnuwin32.sourceforge.net/packages/make.htm.&lt;br /&gt;
# Install Docker Community Edition (Docker CE). For detailed instructions, see [https://docs.docker.com/install/ About Docker CE] and choose the tutorial for your platform. To make sure Docker is properly installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
# Download the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] that contains the commands for installing and updating BioCASe. Use &amp;quot;Save as...&amp;quot; to store it to your home folder on the server machine.&lt;br /&gt;
# Open a terminal window and change the work directory to the location you&#039;ve just saved the Makefile to. Then type in &#039;&#039;make install&#039;&#039; and press enter. This should download the latest BioCASe image, create a BioCASe container and run it.&lt;br /&gt;
&lt;br /&gt;
Per default, Docker will use port 80 for BioCASe. If this port is already used by another application on your server, you can instruct Docker to use another port. For using port 8181, for example, type in &#039;&#039;make install PORT=8181&#039;&#039; instead:&lt;br /&gt;
&lt;br /&gt;
[[File:DockerInstall.png|650px]]&lt;br /&gt;
&lt;br /&gt;
Voilà, that&#039;s it! To check your BioCASe installation, use your Browser to go to &#039;&#039;http://localhost/biocase&#039;&#039;. Don&#039;t forget to [[Installation#Changing_the_Default_Password | change the default password]].&lt;br /&gt;
&lt;br /&gt;
You can also use the Makefile for stopping and starting the BioCASe container (for example, if you restart your server each night automatically) - just type &#039;&#039;make stop&#039;&#039; and &#039;&#039;make start&#039;&#039;. For removing the container, use &#039;&#039;make remove&#039;&#039;, for updating your BioCASe installation &#039;&#039;make update&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; The configuration and the log files of your BioCASe installation, as well as any XML and DwC archives created, will be stored in Docker hosted volumes. That means they are stored outside of the BioCASe container and will be preserved, even when the container is removed (actually, that&#039;s what happens if you update your installation). Docker hosted volumes are stored in the &#039;&#039;volumes&#039;&#039; folder of your docker installation, e.g. /var/lib/docker/volumes. If you want to backup the configuration of your BioCASe installation, just backup the folder /var/lib/docker/volumes/bps_config. To learn more about docker hosted volumes, please refer to the [https://docs.docker.com/storage/volumes/ Docker guide].&lt;br /&gt;
&lt;br /&gt;
== Regular BioCASe Installation ==&lt;br /&gt;
This is the path to choose if you haven&#039;t heard of [https://www.docker.com/ Docker] yet. If you have experience with this virtualisation software, we&#039;d suggest to install BioCASe from the Docker image (instructions in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]]).&lt;br /&gt;
&lt;br /&gt;
BioCASe runs on both Windows and Linux machines. Two thoughts to consider for you:&lt;br /&gt;
* If you want to use ODBC to connect to your database (for example to an Access database), you should make sure that an ODBC driver is available for the OS of your choice. For an Access database, for example, such a ODBC driver is available only for Windows - so you should go for Windows.&lt;br /&gt;
* If you don&#039;t wanna use ODBC, because you plan to connect to a wide-spread DB system such as MySQL, Postgres or MS SQL Server, we recommend Linux (Debian).&lt;br /&gt;
&lt;br /&gt;
=== Installing Apache/IIS and Python ===&lt;br /&gt;
If you’re using a Linux system, you probably don’t need to install either, since Apache and Python are usually preinstalled. Same holds true for MacOS, but you should have a look at one of the articles on the web to find out about the file locations.&lt;br /&gt;
&lt;br /&gt;
Even though the BPS runs with both Apache and Internet Information Server (IIS), we recommend using Apache, which is much easier to configure. However, if you’re already using IIS, you might want to stick with that.&lt;br /&gt;
&lt;br /&gt;
The BPS requires Python 3.7+ to run, it doesn&#039;t work with Python 2, which ended its life cycle in 2020 (same is true for Python 3 versions &amp;lt; 3.7). On most Linux systems, Python 3 will be pre-installed. If not, you should be able to install Python using &#039;&#039;apt-get update&#039;&#039; and &#039;&#039;apt-get install python&#039;&#039;. (By the way: You can install several different Python versions on the same machine without any conflicts.)&lt;br /&gt;
&lt;br /&gt;
If you’re installing on a Windows Vista (poor you) or Windows 7 machine, we recommend not to install Apache in the default program files folder, since there is some magic spell on that which can get you into trouble when changing Apache’s configuration files. Just choose another path (Apache Software Foundation?) to spare that hassle.&lt;br /&gt;
&lt;br /&gt;
Once you’ve successfully installed Apache and Python, you can proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
=== Downloading and unpacking the Provider Software ===&lt;br /&gt;
You can find the latest release of BioCASe on our [http://www.example.com Git page]. There are two archives available for download:&lt;br /&gt;
* The [ default package (recommended)] contains the full installation and allows the generation of DarwinCore archives. For this feature, the [Kettle libraries] are included in the download.&lt;br /&gt;
* The [ minimal package] doesn&#039;t contain the Kettle libraries, hence it&#039;s not possible to create DarwinCore archives with such an installation. Choose this download only if you have a good reason to do so.&lt;br /&gt;
&lt;br /&gt;
Download the file to your server and unpack it to the desired location of your file system e.g. &#039;&#039;/opt&#039;&#039; on Linux). It contains the BioCASe Provider Software in a folder that contains the version number, e.g. &#039;&#039;bps-3.8.6&#039;&#039;. We recommend to rename it to something that doesn&#039;t include the version number, so you don&#039;t need to touch your web server&#039;s configuration during future updates.&lt;br /&gt;
&lt;br /&gt;
For the remainder of this guide, we will assume you’ve installed the BPS into a folder named &#039;&#039;biocase&#039;&#039;, which should look like this by now:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseFolder.png|650px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the Setup Script ===&lt;br /&gt;
The setup script will initiate the configuration files with values you provide and point the script files to your Python installation (you can re-run the setup script in case that location changes). If you want to modify any of settings you made during the setup, you can change the values in the configuration tool later.&lt;br /&gt;
&lt;br /&gt;
In order to run the script, open a terminal window (or “command prompt” in Windows). Change the working directory to the folder you’ve downloaded the BPS to (&#039;&#039;biocase&#039;&#039;) and type in:&amp;lt;pre&amp;gt;python setup.py&amp;lt;/pre&amp;gt; In case Python is not found, you’ll have to add the full path name to the Python executable. Make sure the Python version given in the fifth line of the output is the one you desire (otherwise add the path to the correct executable):&lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptStart.png|550px]]&lt;br /&gt;
&lt;br /&gt;
The questions asked by the setup script do have defaults. If you want to keep them, just press &amp;lt;small&amp;gt;Return&amp;lt;/small&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Webserver domain:&amp;lt;/strong&amp;gt; This is the domain name of the web server you’re installing BioCASe on, e.g. &#039;&#039;http://www.myinstitution.org&#039;&#039;.  You can keep the default &#039;&#039;localhost&#039;&#039; as long as you’re configuring and testing the installation locally; for production you’ll need to change that into the correct domain name (or IP address) later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Base URL:&amp;lt;/strong&amp;gt; This will become the second part of the URL your installation will use. If you keep the default biocase, your installation will be accessible later at &#039;&#039;www.myinstitution.org/biocase&#039;&#039;, for example.&lt;br /&gt;
&lt;br /&gt;
After answering these two questions, the script will update your files. At the end of the output you can find the lines you&#039;ll need later to create the link between BioCASe and your web server, so do not close the window! &lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptDone.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Linking BioCASe and Your Web Server ===&lt;br /&gt;
&lt;br /&gt;
The public part of the provider software is stored in the &#039;&#039;www&#039;&#039; subfolder of your BioCASe installation and must be configured in your web server as a public folder. You should always make this folder public using a virtual directory: This means that you should never install BioCASe under the default root folder of your web server. Doing so can compromise your server security and will allow people to see your configuration files (which include passwords). So since we installed BioCASe in &#039;&#039;c:\biocase&#039;&#039;, the folder that must be published with a virtual directory is &#039;&#039;c:\biocase\www&#039;&#039; and will be accessible later through &#039;&#039;http://www.myinstitution.org/biocase&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Apache ====&lt;br /&gt;
If you use Apache, adding the BioCASe folder to your web server environment is as simple as copying the lines printed at the end of the setup script to the end of the Apache configuration file &#039;&#039;httpd.conf&#039;&#039;. This can typically be found in the &#039;&#039;conf&#039;&#039; folder of your Apache installation. If you’re adding BioCASe to an already productive web server, please ask the server admin before doing any changes!&lt;br /&gt;
&lt;br /&gt;
[[image:instHttpdConf.png|550px]] &lt;br /&gt;
&lt;br /&gt;
Save the file and restart Apache for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
==== Internet Information Server ====&lt;br /&gt;
&lt;br /&gt;
If you use Internet Information Server, you need to create a virtual directory for the folder &#039;&#039;c:\biocase\www&#039;&#039; using the IIS Server Manager. Grant all rights for this directory (Read, Write, Script Execution, Directory listing). You should also add &#039;&#039;index.html&#039;&#039; to the list of default documents (&amp;lt;small&amp;gt;Virtual Directory &amp;gt; Properties &amp;gt; Documents &amp;gt; Default&amp;lt;/small&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
In order to associate Python scripts with Python in IIS 5/6, you need to use the &amp;lt;small&amp;gt;Configure&amp;lt;/small&amp;gt; button on the virtual directory tab and associate the file extensions .cgi and .py with Python (see screenshot below). In IIS 7, you can open this dialog by choosing &amp;lt;small&amp;gt;Add Script Map&amp;lt;/small&amp;gt;. Note the placeholders &#039;&#039;%s %s&#039;&#039; after the Python executable!&lt;br /&gt;
&lt;br /&gt;
[[File:instAddScriptMap.png|330px]]&lt;br /&gt;
&lt;br /&gt;
If you run into problems configuring IIS, you should have a look at the tutorials available on the web, for example&lt;br /&gt;
* http://haishibai.blogspot.de/2011/02/setting-up-python-on-iis-7_01.html&lt;br /&gt;
* http://support.microsoft.com/kb/276494&lt;br /&gt;
&lt;br /&gt;
==== Testing the Link ====&lt;br /&gt;
&lt;br /&gt;
Once you’re done, you can test your BioCASe Installation by opening a browser and typing in &#039;&#039;http://localhost/biocase&#039;&#039; (replace &#039;&#039;localhost&#039;&#039; with the domain name of the machine you installed BioCASe on, if you’re not working locally). You should then see the start page of the BPS:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseStartpage.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Installing Additional Python Packages/Java/Graphviz ===&lt;br /&gt;
&lt;br /&gt;
Before you can start configuring your installation, you need to install additional packages, depending on the management system used for the database to be published and the functions of the BPS you intend to use.&lt;br /&gt;
&lt;br /&gt;
On the BPS start page, click on &amp;lt;small&amp;gt;Utilities&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;library test&amp;lt;/small&amp;gt; in order to navigate to the library test page that shows the status of installed libraries. On a fresh BPS installation, only the BioCASe libraries should be installed, since they&#039;re part of the archive file you’ve downloaded (or the Subversion repository you checked out from):&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesVanilla.png|550px]]&lt;br /&gt;
&lt;br /&gt;
If you plan to use the Local Query Tool (a small portal for querying and browsing your BioCASe webservice), you need to install the lxml library. You can do this easily by running the Python Package Installer (PIP): &#039;&#039;pip install lxml&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For each DBMS you plan to use with BioCASe (i.e. you have a database you want to publish with BioCASe), you’ll have to install the corresponding package. So if your collection is stored in a MySQL database, you&#039;ll need the MySQLdb library; the table shows you the command to run for installing it using pip: &#039;&#039;pip install mysqlclient&#039;&#039;. Once pip has installed the package, reload the libraries test page. The according list entry should turn from an orange &#039;&#039;not installed&#039;&#039; into a green version number. Redo this process for all DBMS you want to connect to.&lt;br /&gt;
&lt;br /&gt;
The Graphviz library listed under optional external binaries is used by the BPS to create a graph of your database’s data model in the table setup (you will learn in the [[DatasourceSetup#Setting_up_the_Database_Structure|Table Setup]] about this). If the data model is very simple (i.e., not more than 3 or 4 tables), you probably can spare the effort of installing Graphviz. Otherwise we recommend installing it: Simply click on the Download link and install the package using an installer file or a package manager on Linux.&lt;br /&gt;
&lt;br /&gt;
If you want to create DarwinCore Archives for your web services, you also need to install a Java Runtime Environment (JRE). BioCASe requires Java 1.8 or later for creating DarwinCore archives, so please check the version listed on the Testlibs page if it&#039;s already installed on the server.&lt;br /&gt;
&lt;br /&gt;
=== Changing the Default Password ===&lt;br /&gt;
&lt;br /&gt;
The configuration tool is a browser interface that allows you to configure almost every aspect of the BPS. As a last step of the setup, you should change the password.&lt;br /&gt;
&lt;br /&gt;
Go back to the Start page of the BPS (by clicking &amp;lt;small&amp;gt;Start&amp;lt;/small&amp;gt; at the top of the page, or by retyping &#039;&#039;http://localhost/biocase&#039;&#039; if the server is running on your computer), choose &amp;lt;small&amp;gt;Config Tool&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;System Administration&amp;lt;/small&amp;gt;. You will then be prompted for a password. Type in the default &#039;&#039;ACDC&#039;&#039;, then click &amp;lt;small&amp;gt;Submit&amp;lt;/small&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The top of the configuration page you’ll be directed to should look similar to this:&lt;br /&gt;
&lt;br /&gt;
[[image:instConfigTool.png|500px]]&lt;br /&gt;
&lt;br /&gt;
In the first two lines, you’ll see the values you entered during the setup script (in this case, the defaults &#039;&#039;localhost&#039;&#039; and &#039;&#039;biocase&#039;&#039;). In the fourth line, enter a new password. Please be careful when typing (if you forget the password some day, you can reset it by directly editing the configuration file). Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the new password to the configuration file.&lt;br /&gt;
&lt;br /&gt;
In case you’ve installed Graphviz, you need to tell the BPS the location of the binaries, since it is not a Python package that will be registered automatically. In order to do so, locate the Graphviz installation on your local disk and enter the path to the binary executable into the text box labelled &amp;lt;small&amp;gt;Path to Graphviz executable&amp;lt;/small&amp;gt;. On Linux machines it might look similar to the default (&#039;&#039;/usr/local/bin/dot&#039;&#039;), on Windows machines it will be probably something like &#039;&#039;C:/Program Files/Graphviz 2.44.1/bin/&#039;&#039;. Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the path.&lt;br /&gt;
&lt;br /&gt;
=== Checking Your Installation ===&lt;br /&gt;
&lt;br /&gt;
Before you proceed to the configuration, you should make sure everything is installed correctly:&lt;br /&gt;
&lt;br /&gt;
# Typing in &#039;&#039;http://localhost/biocase&#039;&#039; (or the appropriate values of your installation) takes you to the entry page of the provider software (as shown in the section [[#Linking_BioCASe_and_Your_Web_Server|Linking BioCASe and Your Web Server]]).&lt;br /&gt;
# The libraries test page (&amp;lt;small&amp;gt;Utilities &amp;gt; library test&amp;lt;/small&amp;gt;) shows you’ve installed the packages for your DBMS, lxml (if you want to use the Local Query Tool), Java (if you want to create DarwinCore Archives) and the Graphviz dot (if you decided so).&lt;br /&gt;
# &amp;lt;small&amp;gt;Status of writeable directories&amp;lt;/small&amp;gt; shows a green &amp;lt;small&amp;gt;writeable&amp;lt;/small&amp;gt; for all four directories. If not, the path to problematic file will be given – please grant write access to Python.&lt;br /&gt;
&lt;br /&gt;
If you want to connect BioCASe to a variety of different database management systems, create DarwinCore archives and use the QueryTool, the libraries test pages should look like this:&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesDone.png|650px]]&lt;br /&gt;
&lt;br /&gt;
== Updating an existing BioCASe Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Updating a BioCASe Docker installation ===&lt;br /&gt;
This is very simple with the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] you downloaded for installing BioCASe. Just go to the folder where you stored the file and run &#039;&#039;make update&#039;&#039;. This will stop and remove the BioCASe container, download the latest BioCASe image and create/start a new BioCASe container. Since the configuration files are not stored within the container, all your data sources will be preserved.&lt;br /&gt;
&lt;br /&gt;
=== Updating a regular BioCASe installation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Important Note&amp;lt;/u&amp;gt;&#039;&#039;&#039;: If you have a running BioCASe installation, you shouldn’t touch it until you’ve successfully installed a new version. So keep the old installation instead of replacing it!&lt;br /&gt;
&lt;br /&gt;
==== Updating from version 2.5 or later ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# Change directory to the new installation and run setup script. When asked whether to import the configuration from an old installation, answer yes. The setup script will now import the configuration of the old installation, including the data sources.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;br /&gt;
&lt;br /&gt;
==== Updating from older versions &amp;lt; 2.5 ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version; moreover, you will need the configuration files later.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# [[Installation#Running_the_Setup_Script|Run the setup script]]. When asked whether to import the configuration from an old installation, just press Return (defaults to no). Make sure to provide the the same base URL that was used by the old installation (for example &#039;&#039;/biocase&#039;&#039;).&lt;br /&gt;
# [[Installation#Changing_the_Default_Password|Change the default password]] of the new installation to the one you used in the old installation.&lt;br /&gt;
# Open the file &#039;&#039;config/config.ini&#039;&#039; of your old installation in a text editor. Open the config tool of the new installation and navigate to the System Administration page. Compare the settings in the section &amp;lt;small&amp;gt;Server configuration&amp;lt;/small&amp;gt; with the values you can find in the old configuration file and change them, if necessary (leave values unchanged if you don&#039;t find them in the old file). Press &amp;lt;small&amp;gt;Update config&amp;lt;/small&amp;gt;.&lt;br /&gt;
# Last, copy the configuration of the BioCASe web services: Open the folder &#039;&#039;config/datasources&#039;&#039; of your old installation and copy all subfolders to &#039;&#039;config/datasources&#039;&#039; of your new installation.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1194</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1194"/>
		<updated>2025-02-11T11:03:16Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Upcoming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Upcoming ===&lt;br /&gt;
* Update hint now uses link to new Git repo instead of Subversion&lt;br /&gt;
&lt;br /&gt;
===  Version 3.8.6 [2024-12-12] ===&lt;br /&gt;
* Timeout added for the request to retrieve latest version from subversion repository&lt;br /&gt;
* Archiving page: List schemas in dropdown box in descending order, so that ABCD 2.1 shows before 2.06 before 1.2&lt;br /&gt;
* QueryTool: Changed default schema from ABCD 2.1 to ABCD 2.06, since this is used more commonly&lt;br /&gt;
* Fix for DwC archives: occurrenceStatus and occurrencID had been swapped in descriptor file meta.xml&lt;br /&gt;
* DwC archive transformation: BasisOfRecord=&amp;quot;AbsenceObservation&amp;quot; will be translated into &amp;quot;HumanObservation&amp;quot;, since AbsenceObservation is not accepted by GBIF.&lt;br /&gt;
* Dockerfile adapted to latest Debian version and Python 3.13&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.5 [2023-11-30] ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1193</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1193"/>
		<updated>2025-01-21T09:11:38Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Current Version 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Upcoming ===&lt;br /&gt;
&lt;br /&gt;
===  Version 3.8.6 [2024-12-12] ===&lt;br /&gt;
* Timeout added for the request to retrieve latest version from subversion repository&lt;br /&gt;
* Archiving page: List schemas in dropdown box in descending order, so that ABCD 2.1 shows before 2.06 before 1.2&lt;br /&gt;
* QueryTool: Changed default schema from ABCD 2.1 to ABCD 2.06, since this is used more commonly&lt;br /&gt;
* Fix for DwC archives: occurrenceStatus and occurrencID had been swapped in descriptor file meta.xml&lt;br /&gt;
* DwC archive transformation: BasisOfRecord=&amp;quot;AbsenceObservation&amp;quot; will be translated into &amp;quot;HumanObservation&amp;quot;, since AbsenceObservation is not accepted by GBIF.&lt;br /&gt;
* Dockerfile adapted to latest Debian version and Python 3.13&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.5 [2023-11-30] ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1192</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1192"/>
		<updated>2024-12-19T14:51:03Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Current Version 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Upcoming ===&lt;br /&gt;
* Dockerfile adapted to latest Debian version and Python 3.13&lt;br /&gt;
&lt;br /&gt;
===  Version 3.8.6 [2024-12-12] ===&lt;br /&gt;
* Timeout added for the request to retrieve latest version from subversion repository&lt;br /&gt;
* Archiving page: List schemas in dropdown box in descending order, so that ABCD 2.1 shows before 2.06 before 1.2&lt;br /&gt;
* QueryTool: Changed default schema from ABCD 2.1 to ABCD 2.06, since this is used more commonly&lt;br /&gt;
* Fix for DwC archives: occurrenceStatus and occurrencID had been swapped in descriptor file meta.xml&lt;br /&gt;
* DwC archive transformation: BasisOfRecord=&amp;quot;AbsenceObservation&amp;quot; will be translated into &amp;quot;HumanObservation&amp;quot;, since AbsenceObservation is not accepted by GBIF.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.5 [2023-11-30] ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1191</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1191"/>
		<updated>2024-12-19T14:50:44Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Version  Version 3.8.6 [2024-12-12] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Well written! &lt;br /&gt;
I’ll immediately clutch your rss feed as I can’t in finding your &lt;br /&gt;
e-mail subscription hyperlink or newsletter service. &lt;br /&gt;
Do you’ve any? Kindly permit me recognize in order that I may just subscribe.&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1190</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1190"/>
		<updated>2024-12-12T08:51:52Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Version  Version 3.8.5 [2023-11-30] [2024-12-12] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
===  Version  Version 3.8.6 [2024-12-12] ===&lt;br /&gt;
* Timeout added for the request to retrieve latest version from subversion repository&lt;br /&gt;
* Archiving page: List schemas in dropdown box in descending order, so that ABCD 2.1 shows before 2.06 before 1.2&lt;br /&gt;
* QueryTool: Changed default schema from ABCD 2.1 to ABCD 2.06, since this is used more commonly&lt;br /&gt;
* Fix for DwC archives: occurrenceStatus and occurrencID had been swapped in descriptor file meta.xml&lt;br /&gt;
* DwC archive transformation: BasisOfRecord=&amp;quot;AbsenceObservation&amp;quot; will be translated into &amp;quot;HumanObservation&amp;quot;, since AbsenceObservation is not accepted by GBIF.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.5 [2023-11-30] ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1189</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1189"/>
		<updated>2024-12-12T08:51:32Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Upcoming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
===  Version  Version 3.8.5 [2023-11-30] [2024-12-12] ===&lt;br /&gt;
* Timeout added for the request to retrieve latest version from subversion repository&lt;br /&gt;
* Archiving page: List schemas in dropdown box in descending order, so that ABCD 2.1 shows before 2.06 before 1.2&lt;br /&gt;
* QueryTool: Changed default schema from ABCD 2.1 to ABCD 2.06, since this is used more commonly&lt;br /&gt;
* Fix for DwC archives: occurrenceStatus and occurrencID had been swapped in descriptor file meta.xml&lt;br /&gt;
* DwC archive transformation: BasisOfRecord=&amp;quot;AbsenceObservation&amp;quot; will be translated into &amp;quot;HumanObservation&amp;quot;, since AbsenceObservation is not accepted by GBIF.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.5 [2023-11-30] ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1188</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1188"/>
		<updated>2024-11-14T15:06:43Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Upcoming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Upcoming ===&lt;br /&gt;
* Timeout added for the request to retrieve latest version from subversion repository&lt;br /&gt;
* Archiving page: List schemas in dropdown box in descending order, so that ABCD 2.1 shows before 2.06 before 1.2&lt;br /&gt;
* QueryTool: Changed default schema from ABCD 2.1 to ABCD 2.06, since this is used more commonly&lt;br /&gt;
* Fix for DwC archives: occurrenceStatus and occurrencID had been swapped in descriptor file meta.xml&lt;br /&gt;
* DwC archive transformation: BasisOfRecord=&amp;quot;AbsenceObservation&amp;quot; will be translated into &amp;quot;HumanObservation&amp;quot;, since AbsenceObservation is not accepted by GBIF.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.5 [2023-11-30] ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1187</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1187"/>
		<updated>2024-11-14T10:40:08Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Upcoming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Upcoming ===&lt;br /&gt;
* Timeout added for the request to retrieve latest version from subversion repository&lt;br /&gt;
* Archiving page: List schemas in dropdown box in descending order, so that ABCD 2.1 shows before 2.06 before 1.2&lt;br /&gt;
* QueryTool: Changed default schema from ABCD 2.1 to ABCD 2.06, since this is used more commonly&lt;br /&gt;
* Fix for DwC archives: occurrenceStatus and occurrencID had been swapped in descriptor file meta.xml&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.5 [2023-11-30] ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1186</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1186"/>
		<updated>2024-11-04T11:51:26Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Upcoming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Upcoming ===&lt;br /&gt;
* Timeout added for the request to retrieve latest version from subversion repository&lt;br /&gt;
* Archiving page: List schemas in dropdown box in descending order, so that ABCD 2.1 shows before 2.06 before 1.2&lt;br /&gt;
* QueryTool: Changed default schema from ABCD 2.1 to ABCD 2.06, since this is used more commonly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.5 [2023-11-30] ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=FAQ&amp;diff=1185</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=FAQ&amp;diff=1185"/>
		<updated>2024-08-15T09:26:44Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
===What is the BioCASe Provider Software and what can I use it for?===&lt;br /&gt;
See the [[BeginnersGuide|Beginner&#039;s Guide]].&lt;br /&gt;
&lt;br /&gt;
===What do I need to use the BioCASe Provider Software?===&lt;br /&gt;
See the requirements in the [[BeginnersGuide|Beginner&#039;s Guide]].&lt;br /&gt;
&lt;br /&gt;
===I’m not sure whether the Provider Software is the right choice for me. How do I find out?===&lt;br /&gt;
Just [[Special:Contact|contact us]] and describe your situation and what you’re planning to use BioCASe for.&lt;br /&gt;
&lt;br /&gt;
===How much is the BioCASe Provider Software?===&lt;br /&gt;
It’s Open Source Software, so you can use it for free.&lt;br /&gt;
&lt;br /&gt;
=== I am not affiliated with any institution. Can I use the Provider Software in spite of that? ===&lt;br /&gt;
Sure, you can also use the Provider Software as a private person.&lt;br /&gt;
&lt;br /&gt;
===Can I use the Provider Software on my operating system?===&lt;br /&gt;
I guess. As long as a web server (such as Apache) and Python are available for your operating system, you can – and they are for most operating systems.&lt;br /&gt;
&lt;br /&gt;
===I cannot meet all of the requirements for installing the BPS. What options do I have?===&lt;br /&gt;
Basically, there are two options: If you still want to use BioCASe (maybe because you owe very rich data and need the comprehensive ABCD schema for publication), you might ask a partner institution already using BioCASe to host your data. In this case, you would send the database (or Excel file) to this institution, where it would be published using the existing BioCASe installation. You would still remain owner of the data and attributed accordingly on the data portals; the partner institution would act merely as a technical host (like a commercial internet host).&lt;br /&gt;
&lt;br /&gt;
Another option would be to use one of the tools offered by GBIF. With the Integrated Publishing Toolkit (IPT, http://www.gbif.org/ipt) you can create a DarwinCore Archive (see http://rs.tdwg.org/dwc/terms/guides/text/index.htm for more on DwC Archives) from your database, which you would send to GBIF for publication. The GBIF Spreadsheet Processor (http://code.google.com/p/gbif-spreadsheet-processor/) is a similar tool intended for smaller occurrence datasets stored in Excel files. The downside for both is that they support only the DarwinCore standard, which is rather limited in comparison to ABCD.&lt;br /&gt;
&lt;br /&gt;
===I have some recommendations/bug report. How can I file it?===&lt;br /&gt;
You can either leave a message on the respective &#039;&#039;Discussion&#039;&#039; page or get directly in [[Special:Contact|contact with us]].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
===After installing BioCASe, I get a &amp;quot;500: Internal Server Error&amp;quot;===&lt;br /&gt;
# Make sure you&#039;ve [[Installation#Running_the_Setup_Script | run the setup script]] after downloading or checking out BioCASe with the right Python version. To check this, open the file &#039;&#039;www/index.cgi&#039;&#039; of your installation in a text editor and check the first line: This is the Python executable used by Python.&lt;br /&gt;
# Empty the folder &#039;&#039;cache&#039;&#039; of your installation - please remove all folders and files you find here.&lt;br /&gt;
# If the problem persists, please contact us!&lt;br /&gt;
&lt;br /&gt;
===When typing in the URL for my new installation (&amp;lt;nowiki&amp;gt;http://localhost/biocase&amp;lt;/nowiki&amp;gt;), I get an empty page or a “URL not found” error. What’s wrong?===&lt;br /&gt;
If you get a blank page, that’s probably because Apache (or the web server you use) is not running. Start it and retry. If you get a “The requested URL /biocase was not found on this server” or similar message, the web server doesn’t find your BioCASe installation. Go to the section [[Installation#Linking_BioCASe_and_Your_Web_Server|Linking BioCASe and Your Web Server]] of the [[Installation|Installation guide]] and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
===When typing in the URL for my new installation (&amp;lt;nowiki&amp;gt;http://localhost/biocase&amp;lt;/nowiki&amp;gt;), I get an “Internal Server Error: The server encountered an internal error or misconfiguration and was unable to complete your request” message.===&lt;br /&gt;
You’re probably using Apache, which cannot find your Python installation. Make sure you’ve installed Python correctly and did run the setup script (see sections [[Installation#Installing_Apache.2FIIS_and_Python|Installing Apache/IIS and Python]] and [[Installation#Running_the_Setup_Script|Running the Setup Script]] in the [[Installation|Installation guide]]). &lt;br /&gt;
&lt;br /&gt;
===I&#039;m using Internet Information Server, and after creating the Virtual Directory for BioCASe, I get a “502.2 - Bad Gateway. The specified CGI application misbehaved by not returning a complete set of HTTP headers” error.===&lt;br /&gt;
This happens when you didn&#039;t correctly associate .cgi and .py files with Python. Make sure you&#039;ve linked both files with Python and that the path contains the placeholders &#039;&#039;%s %s&#039;&#039; (see [[Installation#Internet_Information_Server|Linking IIS]]).&lt;br /&gt;
&lt;br /&gt;
===I cannot find the installation package of the database connectivity module for the DBMS and the Python version I am using.===&lt;br /&gt;
You’re probably using one of the newer Python versions which are not yet supported by the DB package you want to use (that’s the reason Python 2.5 is recommended). Just install an older version (2.5 or 2.6). You can have several Python versions installed on the same machine, so you can keep the newer version for other applications and install the older version for BioCASe.&lt;br /&gt;
&lt;br /&gt;
===I’ve installed the Python package for my DBMS, but it doesn’t show up in the Test libs page. What’s wrong?===&lt;br /&gt;
Python packages are Python version specific and you’ve probably installed the DB package for the wrong Python version. If you have several Python versions installed on your machine, make sure you installed the package for the version that is used by BioCASe.&lt;br /&gt;
&lt;br /&gt;
===I’m using Postgres and installed the psycopg2 lib for that. When connecting, I get a pink error message “A problem occurred in a Python script”; the last line of the error messages reads “psycopg2._psycopg.connection object has no attribute server_version”.===&lt;br /&gt;
This is caused by an outdated psycopg2 version. Please install version 2.0.12 or later of psycopg2.&lt;br /&gt;
&lt;br /&gt;
===I&#039;m trying to use BioCASe with Postgres; for this, I tried to install psycopg on Windows. But it doesn&#039;t work - either the install crashes, or it finishes, but the test libs page still reports psycopg2 as not installed. In the debug log I can find the error message &amp;quot;ImportError: DLL load failed (...)&amp;quot;. What&#039;s wrong?===&lt;br /&gt;
We suspect this is caused by a bug in recent psycopg2 releases (find more [http://psycopg.lighthouseapp.com/projects/62710/tickets/20 here]). On our test installations, we managed to get round this issue by installing pycopg2 with administration rights. Do do this, right-click the installer file and choose &amp;quot;Run as administrator&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===What&#039;s the difference between the DBMS packages odbc_tsql and odbc_tsql_2012 and between pymssql/pymssql_2012, respectively?===&lt;br /&gt;
The dbmods ending in &amp;quot;2012&amp;quot; use the new OFFSET clause that was introduced in MS SQL Server 2012. This will make paging faster and increase performance for larger datasets. They work only with SQL Server 2012 or later, and if you use SQL Server 2012, you should use them for best performance. Dbmods without a trailing &amp;quot;2012&amp;quot; work for both older versions and SQL Server 2012, but will be slower in paging large datasets.&lt;br /&gt;
&lt;br /&gt;
===I have problems installing GraphViz. Do I really need it?===&lt;br /&gt;
If installed, Graphviz will create a graph of the table you&#039;ve configured with their primary/foreign keys and the relations between them on the &#039;&#039;Database Structure&#039;&#039; page. If you have more than just a few tables and lots of relations between them, this can be very useful. If you don&#039;t need this feature, you don&#039;t need to bother installing GraphViz.&lt;br /&gt;
&lt;br /&gt;
===I’ve installed GraphViz, but it doesn’t show up as being installed on the Test libs page.===&lt;br /&gt;
You need to tell BioCASe about the location of the GraphViz files, since it is not a Python package that will be registered automatically. In order to do so, locate the Graphviz installation on your local disk. Go to the System Administration and enter the path to the binary executable into the text box labelled &amp;lt;small&amp;gt;Graphviz dot binary&amp;lt;/small&amp;gt;. On Linux machines it might look similar to the default (&#039;&#039;/usr/local/bin/dot&#039;&#039;), on Windows machines it will be probably something like &#039;&#039;C:\Program Files\Graphviz2.26.3\bin\dot.exe&#039;&#039;. Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the path.&lt;br /&gt;
&lt;br /&gt;
===I want to update my BioCASe installation. How do I do this?===&lt;br /&gt;
See [[Installation#Updating_an_existing_BioCASe_Installation|Updating an existing BioCASe Installation]].&lt;br /&gt;
&lt;br /&gt;
===I&#039;ve updated my installation from a version prior to 2.6. Now, when I enter the DB structure, some of the table and column names are gone, the same happens in the mapping editor.===&lt;br /&gt;
Starting with version 2.6, BioCASe retrieves table and column names from the database for some database management systems (namely MySQL, SQL Server, Postgres, Foxpro, Access and Oracle). In older versions, you had to enter table/column names manually, and when you did the setup with such an early version, you probably didn&#039;t care for upper/lower cases. Since some DB management systems are case-sensitive, BioCASe can&#039;t ignore the differences and won&#039;t find these technically incorrect names in the lists retrieved from the database. The respective drop down boxes will therefore be empty. If that happens, just select the correct names from the drop down lists.&lt;br /&gt;
&lt;br /&gt;
===When I try to create an archive, I get a &amp;quot;Permission denied&amp;quot; error. Why is that?===&lt;br /&gt;
For creating archives, you need to grant write permissions for the folders &#039;&#039;archive&#039;&#039; and &#039;&#039;www/downloads&#039;&#039; of your BioCASe installation to Python. You can check if permissions are set correctly in the test libs page (Start --&amp;gt; Utilities --&amp;gt; Test Libs).&lt;br /&gt;
&lt;br /&gt;
===I&#039;m trying to install BioCASe on Ubuntu (or another Linux). Even though I&#039;ve run the setup script and added the snippet to the Apache configuration file, I see source code when I try out my installation instead of the pages described in the documentation===&lt;br /&gt;
Apparently CGI is not enabled on your machine. Google how to enable CGI for your distribution and follow the instructions you&#039;ll find.&lt;br /&gt;
&lt;br /&gt;
===When trying to run BioCASe after installation, I get an internal server error (500). But the log folder of BioCASe is empty, nothing to find.===&lt;br /&gt;
This is probably because BioCASe - or the web server that runs BioCASe - can&#039;t write to this folder. Make sure that the web server (user &#039;&#039;www-data&#039;&#039; for Apache) has write permissions for this folder.&lt;br /&gt;
&lt;br /&gt;
===I&#039;m running BioCASe in a Docker container and I can&#039;t connect to a local MS SQL Server (on the same machine, but not in a Docker)===&lt;br /&gt;
Do not use host.docker.internal:host-gateway (e.g 172.17.0.1) to connect, but the external LAN IP, often like 192.168.0.x or 10.x.x.x.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
&lt;br /&gt;
===I’ve mapped ABCD2. In the result document, each record of the dataset becomes a single dataset, even though there is just one dataset in the database – what’s wrong?===&lt;br /&gt;
That’s probably because you’ve mapped a metadata element to a table that holds several rows for this dataset, so for each row a different dataset gets created. It doesn’t matter whether the values for that field are effectively different from each other; rows are distinguished from each other only by their primary keys.&lt;br /&gt;
&lt;br /&gt;
===I’ve mapped ABCD2, and in the result datasets I get several units for each record, each with the same UnitID.===&lt;br /&gt;
That happens when you map a non-repeatable element of ABCD to a database column that has several rows for one record. In order to create a valid ABCD document, for each of these values a new unit gets created by the Provider Software. To solve this, remove the multiple values or map them to a repeatable element.&lt;br /&gt;
&lt;br /&gt;
===I&#039;ve mapped ABCD2. When testing the web service, I get a negative number for &amp;quot;RecordsDropped&amp;quot; in the response document. What does that mean?===&lt;br /&gt;
Same problem as above - it means you have an error in your mapping. Most probably you&#039;ve mapped a non-repeatable ABCD concept to a table/column in your database that holds several entries per unit (occurrence) record. The BioCASe Provider Software will duplicate the respective unit records to be able to create valid ABCD documents - which is indicated by a negative number of &amp;quot;records dropped&amp;quot;. Make sure the cardinality of your database relations match the structure (in respects of element repeatability) of ABCD to avoid this problem.&lt;br /&gt;
&lt;br /&gt;
===I&#039;m using pymssql to connect to a SQL Server database. Char(n) and Varchar(n) strings get truncated to 255 characters - what&#039;s wrong?===&lt;br /&gt;
This is known limitation of TDS protocol used by pymssql. Just change the data type for columns storing long string to TEXT or create a view that converts Char/Varchar columns to TEXT columns on the fly to work around this issue.&lt;br /&gt;
&lt;br /&gt;
===I&#039;m using pymssql to connect to a SQL Server database, BioCASe is running on a Linux distribution. When I do a Search or Scan request, I don&#039;t get any results (0 hits), even though there are definitely records in the database.===&lt;br /&gt;
That problem occurs on old versions of pymssql (1.0.2 or earlier) on Linux distributions. Update to version 2.0 or later to solve this. If you still get empty result sets, these posts might be helpful: &lt;br /&gt;
* http://open-up.cybertaxonomy.africamuseum.be/forum_topic/important_if_you_use_biocase_bps_linux_platform_connect_ms_sql_server&lt;br /&gt;
* http://code.google.com/p/pymssql/issues/detail?id=76.&lt;br /&gt;
&lt;br /&gt;
===The database connection status is No Connection, even though I’ve selected the correct DBMS in the connection settings dialog and entered the credentials into the text boxes.===&lt;br /&gt;
Check whether you’ve installed Python package for the DBMS you’re using (test libs page). If you still can’t get a connection, turn on debugging (in the System Administration dialog) and go to the database settings dialog again, press &amp;lt;small&amp;gt;Save&amp;lt;/small&amp;gt; to retry connecting. Then see the log files (in the &#039;&#039;log&#039;&#039; folder of your biocase installation) for more detailed error messages.&lt;br /&gt;
&lt;br /&gt;
===I am using BioCASe on a Windows Server. For some queries with the Local QueryForm, I get an error page that is obviously produced by the web server and not BioCASe. It reads &amp;quot;Error Code: 500 Internal Server Error. The request was rejected by the HTTP filter. Contact the server administrator. (12217)&amp;quot;===&lt;br /&gt;
This happens when BioCASe is run behind a Microsoft ISA Server/Microsoft Forefront Threat Management Gateway. To solve this problem, follow the instructions given in this article: http://support.microsoft.com/kb/837865.&lt;br /&gt;
&lt;br /&gt;
===The information that can be found in the log files folder is too sparse – what can I do?===&lt;br /&gt;
Turn on debugging in the System Administration.&lt;br /&gt;
&lt;br /&gt;
===How do I find out if my BioCASe web service works right?===&lt;br /&gt;
Use the Query Form to send a BioCASe request to your web server and check the result document (see the [[Debugging|Debugging guide]] and the [[SampleABCDDocument|Sample ABCD document]] for more).&lt;br /&gt;
&lt;br /&gt;
===I’ve copied a schema mapping for a datasource from an older installation by placing the cmf_ABCD_2.06.xml in the datasource configuration folder, but when querying the datasource, I get a “schema is not supported by this provider” error.===&lt;br /&gt;
The Provider Software keeps a list of supported schema mappings in the provider setup file. Just open go to the mapping editor for the schema in question, press Save (without having modified anything), then go back to the overview page of the datasource configuration. The Provider Software will then update the list of the supported schemas.&lt;br /&gt;
&lt;br /&gt;
===When using the local Query Form for debugging, I don’t get any results, even though my web service is working. On pressing Submit, I get a timeout after about a minute.===&lt;br /&gt;
That’s probably because the domain configured in the BioCASe System administration is not correct. The default localhost works only if you’re using the query form directly on the server machine. If you’re using them in the browser window of another machine, the domain needs to be configured correctly with the IP address or the full server name (e.g. &#039;&#039;ww3.bgbm.org&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
===I mapped the ABCD concept FullScientificNameString. But when running the Search test (which includes a filter on the scientific name per default), I still get the error message &amp;quot;The requested concept /DataSets/DataSet/Units/Unit/Identifications/Identification/Result/TaxonIdentified/ScientificName/FullScientificNameString is not searchable for this provider! Please do a capabilities request to see all searchable concepts.&amp;quot; What&#039;s wrong?===&lt;br /&gt;
The element &#039;&#039;FullScientificNameString&#039;&#039; exists twice in ABCD 2 (as the whole &#039;&#039;TaxonIdentified&#039;&#039; tree that surrounds it): once for the &#039;&#039;Identification&#039;&#039; object under the path above, and then in the &#039;&#039;Synecology&#039;&#039; branch (/DataSets/DataSet/Units/Unit/Gathering/Synecology). This can be a bit confusing, and probably you&#039;ve accidentally mapped the wrong concept. Change the mapping, and it should work.&lt;br /&gt;
&lt;br /&gt;
===I&#039;m using BioCASe in a Vagrant Virtual Box on MacOS with Synced Folders. When using the Manual Query Form or the Archiving page, I get an &amp;quot;ImportError: No module named wrapper.errorclasses.&amp;quot;===&lt;br /&gt;
We don&#039;t know exactly what causes this, but apparently it happens when BioCASe is run in a Vagrant Virtual Box on MacOS and Vagrant&#039;s synced folder are used. We do have a workaround for this, but it is not easy. Please [[Special:Contact|contact us]] for assistance on this.&lt;br /&gt;
&lt;br /&gt;
===I&#039;m using BioCASe on a Windows server and odbc_tsql to connect to an MS SQL Server. Even though I do get results for a SCAN request, I cannot do a SEARCH (invalid document received).===&lt;br /&gt;
Please check your encoding settings in the DB connection configuration. If it is set to UTF_8, try Latin_1 instead.&lt;br /&gt;
&lt;br /&gt;
== Trouble Shooting ==&lt;br /&gt;
&lt;br /&gt;
===I’ve forgotten the password of my BioCASe installation. What should I do?===&lt;br /&gt;
Just go to the &#039;&#039;config&#039;&#039; folder of your installation and have a look into the file &#039;&#039;config.ini&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===In the mapping editor, I am trying to insert a literal that contains a non ASCII character. When saving, the system directs me to a page that allows me to change the system encoding to UTF-8. Unfortunately, on my installation there is no such file as printed in the &#039;&#039;technical description&#039;&#039;; as a result, I get an enoding error in the Provider Software later on.===&lt;br /&gt;
First of all, read the paragraphs on the disadvantages of mapping literals in the [[ABCD2Mapping#Adding_Mandatory_ABCD_Elements|Beginners Guide]] and consider storing the information in a database table instead of mapping it as literals. Then, just move the data to a table and map the database columns. If, after thinking it over again, you still want to map literals with non-ASCII characters, you need to do the following:&lt;br /&gt;
* Go to your Python installation (for example &#039;&#039;/usr/lib/python2.5&#039;&#039;),&lt;br /&gt;
* Create the file &#039;&#039;sitecustomize.py&#039;&#039; in the subfolder &#039;&#039;/site-packages&#039;&#039;  with the following two lines:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
sys.setdefaultencoding(&#039;utf-8&#039;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Save the file and retry. Maybe you&#039;ll have to restart your machine for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
===I get a nice pink “A problem occurred in a Python script” error. What’s wrong?===&lt;br /&gt;
Probably something happened we didn’t foresee, or you might have just found a bug. Please take a screenshot of the screen and write down what you did to make this happen. Then [[Special:Contact|contact the BioCASe team]].&lt;br /&gt;
&lt;br /&gt;
===I run into problems when installing/configuring the Provider Software. Neither the tutorials nor these FAQ I am looking at now can help me.===&lt;br /&gt;
Just [[Special:Contact|contact us]]; we’ll try our best to help you.&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1184</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1184"/>
		<updated>2024-07-09T07:46:28Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Upcoming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Upcoming ===&lt;br /&gt;
* Timeout added for the request to retrieve latest version from subversion repository&lt;br /&gt;
* Archiving page: List schemas in dropdown box in descending order, so that ABCD 2.1 shows before 2.06 before 1.2&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.5 [2023-11-30] ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1183</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1183"/>
		<updated>2024-06-11T13:55:21Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Installing BioCASe from a Docker image */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This part of the wiki explains how to install the BioCASe Provider Software. Depending on your skills, it should take between 15 and 60 minutes. If you’re a beginner, please read the [[BeginnersGuide|Beginner’s Guide]] first.&lt;br /&gt;
&lt;br /&gt;
== Requirements and Considerations ==&lt;br /&gt;
Before installing, please make sure that the system you’re intending to install the BPS on meets the following requirements (If you find out one of these items is not met, please ask your system administrator for help, read the [[FAQ]] or get in [[Special:Contact|contact with the BioCASe Team]].):&lt;br /&gt;
&lt;br /&gt;
# You have administrative privileges on this machine, i.e. the user rights to install new software packages.&lt;br /&gt;
# It is accessible from outside your institution. This means it either needs to be outside any institutional firewall or, more likely, the HTTP port is open for an existing firewall.&lt;br /&gt;
# A direct connection can be established from this machine to the database to be published – either because there’s no firewall in between, or the port used by the DBMS is open (e. g. 3306 for MySQL).&lt;br /&gt;
&lt;br /&gt;
In addition to the regular installation, you can install BioCASe from a Docker image. Docker is an operating-system-level virtualization software that allows easy software deployment in so-called containers. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide]. &#039;&#039;&#039;If you&#039;re famliar with Docker, we&#039;d suggest to use the Docker path for installing BioCASe&#039;&#039;&#039; - read more in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]] below.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Installing BioCASe from a Docker image ==&lt;br /&gt;
&lt;br /&gt;
Good choice! Installing BioCASe from a Docker image is much easer than installing the required components step-by-step. In addition, it&#039;s easier to update an existing installation. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide] first.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; BioCASe requires Docker version 17 or later. If you already have Docker installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
&lt;br /&gt;
For installing BioCASe from the Docker image, please follow these steps:&lt;br /&gt;
&lt;br /&gt;
# If you&#039;re not using Linux, install the &#039;&#039;make&#039;&#039; tool from https://gnuwin32.sourceforge.net/packages/make.htm.&lt;br /&gt;
# Install Docker Community Edition (Docker CE). For detailed instructions, see [https://docs.docker.com/install/ About Docker CE] and choose the tutorial for your platform. To make sure Docker is properly installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
# Download the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] that contains the commands for installing and updating BioCASe. Use &amp;quot;Save as...&amp;quot; to store it to your home folder on the server machine.&lt;br /&gt;
# Open a terminal window and change the work directory to the location you&#039;ve just saved the Makefile to. Then type in &#039;&#039;make install&#039;&#039; and press enter. This should download the latest BioCASe image, create a BioCASe container and run it.&lt;br /&gt;
&lt;br /&gt;
Per default, Docker will use port 80 for BioCASe. If this port is already used by another application on your server, you can instruct Docker to use another port. For using port 8181, for example, type in &#039;&#039;make install PORT=8181&#039;&#039; instead:&lt;br /&gt;
&lt;br /&gt;
[[File:DockerInstall.png|650px]]&lt;br /&gt;
&lt;br /&gt;
Voilà, that&#039;s it! To check your BioCASe installation, use your Browser to go to &#039;&#039;http://localhost/biocase&#039;&#039;. Don&#039;t forget to [[Installation#Changing_the_Default_Password | change the default password]].&lt;br /&gt;
&lt;br /&gt;
You can also use the Makefile for stopping and starting the BioCASe container (for example, if you restart your server each night automatically) - just type &#039;&#039;make stop&#039;&#039; and &#039;&#039;make start&#039;&#039;. For removing the container, use &#039;&#039;make remove&#039;&#039;, for updating your BioCASe installation &#039;&#039;make update&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; The configuration and the log files of your BioCASe installation, as well as any XML and DwC archives created, will be stored in Docker hosted volumes. That means they are stored outside of the BioCASe container and will be preserved, even when the container is removed (actually, that&#039;s what happens if you update your installation). Docker hosted volumes are stored in the &#039;&#039;volumes&#039;&#039; folder of your docker installation, e.g. /var/lib/docker/volumes. If you want to backup the configuration of your BioCASe installation, just backup the folder /var/lib/docker/volumes/bps_config. To learn more about docker hosted volumes, please refer to the [https://docs.docker.com/storage/volumes/ Docker guide].&lt;br /&gt;
&lt;br /&gt;
== Regular BioCASe Installation ==&lt;br /&gt;
This is the path to choose if you haven&#039;t heard of [https://www.docker.com/ Docker] yet. If you have experience with this virtualisation software, we&#039;d suggest to install BioCASe from the Docker image (instructions in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]]).&lt;br /&gt;
&lt;br /&gt;
BioCASe runs on both Windows and Linux machines. Two thoughts to consider for you:&lt;br /&gt;
* If you want to use ODBC to connect to your database (for example to an Access database), you should make sure that an ODBC driver is available for the OS of your choice. For an Access database, for example, such a ODBC driver is available only for Windows - so you should go for Windows.&lt;br /&gt;
* If you don&#039;t wanna use ODBC, because you plan to connect to a wide-spread DB system such as MySQL, Postgres or MS SQL Server, we recommend Linux (Debian).&lt;br /&gt;
&lt;br /&gt;
=== Installing Apache/IIS and Python ===&lt;br /&gt;
If you’re using a Linux system, you probably don’t need to install either, since Apache and Python are usually preinstalled. Same holds true for MacOS, but you should have a look at one of the articles on the web to find out about the file locations.&lt;br /&gt;
&lt;br /&gt;
Even though the BPS runs with both Apache and Internet Information Server (IIS), we recommend using Apache, which is much easier to configure. However, if you’re already using IIS, you might want to stick with that.&lt;br /&gt;
&lt;br /&gt;
The BPS requires Python 3.7+ to run, it doesn&#039;t work with Python 2, which ended its life cycle in 2020 (same is true for Python 3 versions &amp;lt; 3.7). On most Linux systems, Python 3 will be pre-installed. If not, you should be able to install Python using &#039;&#039;apt-get update&#039;&#039; and &#039;&#039;apt-get install python&#039;&#039;. (By the way: You can install several different Python versions on the same machine without any conflicts.)&lt;br /&gt;
&lt;br /&gt;
If you’re installing on a Windows Vista (poor you) or Windows 7 machine, we recommend not to install Apache in the default program files folder, since there is some magic spell on that which can get you into trouble when changing Apache’s configuration files. Just choose another path (Apache Software Foundation?) to spare that hassle.&lt;br /&gt;
&lt;br /&gt;
Once you’ve successfully installed Apache and Python, you can proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
=== Downloading the Provider Software ===&lt;br /&gt;
You can download the BPS either as a g-zipped archive or directly from our Subversion repository. First option is the easiest if you’re not familiar with Subversion; the second option makes it easier for you to update your installation later. So if you’ve never used Subversion before and plan not to keep your installation up-to-date, choose the archive. If you plan to set up a productive installation, which should be kept up-to-date, you should opt for the subversion repository. &lt;br /&gt;
&lt;br /&gt;
==== Downloading the Archive File ====&lt;br /&gt;
Just download the archive from the [http://www.biocase.org/products/provider_software Download section of the BioCASe site] and unpack the contents to the destination folder.&lt;br /&gt;
&lt;br /&gt;
==== Downloading from the Subversion Repository ====&lt;br /&gt;
If you’re using Windows, you need to install a Subversion client first (try [http://tortoisesvn.net Tortoise], which comes with a nice user interface). Linux and MacOS usually have Subversion preinstalled.&lt;br /&gt;
&lt;br /&gt;
The URL for the latest stable version is http://ww2.biocase.org/svn/bps2/branches/stable, which we recommend to use. Updating your installation to the latest BPS version is then as easy as just running the Subversion update command. If you want to download a defined version, the URL would be http://ww2.biocase.org/svn/bps2/tags/release_3.8.0.&lt;br /&gt;
&lt;br /&gt;
In order to download the BPS from subversion with the Subversion command line client (preinstalled on Linux/MacOS), just go to the destination and type in &amp;lt;pre&amp;gt;svn co http://ww2.biocase.org/svn/bps2/branches/stable biocase&amp;lt;/pre&amp;gt;This will connect to our server with anonymous access and download all files to the folder &#039;&#039;biocase&#039;&#039;. In case you’re using Tortoise on Windows, right-click on the destination in the Windows explorer and choose &amp;lt;small&amp;gt;Checkout&amp;lt;/small&amp;gt;. Fill in the URL, change the destination folder name into something meaningful and press OK:&lt;br /&gt;
&lt;br /&gt;
[[image:instTortoiseMenu.png|300px]][[image:instTortoiseDialog.png|450px]]&lt;br /&gt;
&lt;br /&gt;
For the remainder of this guide, we will assume you’ve installed the BPS into a folder named &#039;&#039;biocase&#039;&#039;, which should look like this by now:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseFolder.png|650px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the Setup Script ===&lt;br /&gt;
The setup script will initiate the configuration files with values you provide and point the script files to your Python installation (you can re-run the setup script in case that location changes). If you want to modify any of settings you made during the setup, you can change the values in the configuration tool later.&lt;br /&gt;
&lt;br /&gt;
In order to run the script, open a terminal window (or “command prompt” in Windows). Change the working directory to the folder you’ve downloaded the BPS to (&#039;&#039;biocase&#039;&#039;) and type in:&amp;lt;pre&amp;gt;python setup.py&amp;lt;/pre&amp;gt; In case Python is not found, you’ll have to add the full path name to the Python executable. Make sure the Python version given in the fifth line of the output is the one you desire (otherwise add the path to the correct executable):&lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptStart.png|550px]]&lt;br /&gt;
&lt;br /&gt;
The questions asked by the setup script do have defaults. If you want to keep them, just press &amp;lt;small&amp;gt;Return&amp;lt;/small&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Webserver domain:&amp;lt;/strong&amp;gt; This is the domain name of the web server you’re installing BioCASe on, e.g. &#039;&#039;http://www.myinstitution.org&#039;&#039;.  You can keep the default &#039;&#039;localhost&#039;&#039; as long as you’re configuring and testing the installation locally; for production you’ll need to change that into the correct domain name (or IP address) later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Base URL:&amp;lt;/strong&amp;gt; This will become the second part of the URL your installation will use. If you keep the default biocase, your installation will be accessible later at &#039;&#039;www.myinstitution.org/biocase&#039;&#039;, for example.&lt;br /&gt;
&lt;br /&gt;
After answering these two questions, the script will update your files. At the end of the output you can find the lines you&#039;ll need later to create the link between BioCASe and your web server, so do not close the window! &lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptDone.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Linking BioCASe and Your Web Server ===&lt;br /&gt;
&lt;br /&gt;
The public part of the provider software is stored in the &#039;&#039;www&#039;&#039; subfolder of your BioCASe installation and must be configured in your web server as a public folder. You should always make this folder public using a virtual directory: This means that you should never install BioCASe under the default root folder of your web server. Doing so can compromise your server security and will allow people to see your configuration files (which include passwords). So since we installed BioCASe in &#039;&#039;c:\biocase&#039;&#039;, the folder that must be published with a virtual directory is &#039;&#039;c:\biocase\www&#039;&#039; and will be accessible later through &#039;&#039;http://www.myinstitution.org/biocase&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Apache ====&lt;br /&gt;
If you use Apache, adding the BioCASe folder to your web server environment is as simple as copying the lines printed at the end of the setup script to the end of the Apache configuration file &#039;&#039;httpd.conf&#039;&#039;. This can typically be found in the &#039;&#039;conf&#039;&#039; folder of your Apache installation. If you’re adding BioCASe to an already productive web server, please ask the server admin before doing any changes!&lt;br /&gt;
&lt;br /&gt;
[[image:instHttpdConf.png|550px]] &lt;br /&gt;
&lt;br /&gt;
Save the file and restart Apache for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
==== Internet Information Server ====&lt;br /&gt;
&lt;br /&gt;
If you use Internet Information Server, you need to create a virtual directory for the folder &#039;&#039;c:\biocase\www&#039;&#039; using the IIS Server Manager. Grant all rights for this directory (Read, Write, Script Execution, Directory listing). You should also add &#039;&#039;index.html&#039;&#039; to the list of default documents (&amp;lt;small&amp;gt;Virtual Directory &amp;gt; Properties &amp;gt; Documents &amp;gt; Default&amp;lt;/small&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
In order to associate Python scripts with Python in IIS 5/6, you need to use the &amp;lt;small&amp;gt;Configure&amp;lt;/small&amp;gt; button on the virtual directory tab and associate the file extensions .cgi and .py with Python (see screenshot below). In IIS 7, you can open this dialog by choosing &amp;lt;small&amp;gt;Add Script Map&amp;lt;/small&amp;gt;. Note the placeholders &#039;&#039;%s %s&#039;&#039; after the Python executable!&lt;br /&gt;
&lt;br /&gt;
[[File:instAddScriptMap.png|330px]]&lt;br /&gt;
&lt;br /&gt;
If you run into problems configuring IIS, you should have a look at the tutorials available on the web, for example&lt;br /&gt;
* http://haishibai.blogspot.de/2011/02/setting-up-python-on-iis-7_01.html&lt;br /&gt;
* http://support.microsoft.com/kb/276494&lt;br /&gt;
&lt;br /&gt;
==== Testing the Link ====&lt;br /&gt;
&lt;br /&gt;
Once you’re done, you can test your BioCASe Installation by opening a browser and typing in &#039;&#039;http://localhost/biocase&#039;&#039; (replace &#039;&#039;localhost&#039;&#039; with the domain name of the machine you installed BioCASe on, if you’re not working locally). You should then see the start page of the BPS:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseStartpage.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Installing Additional Python Packages/Java/Graphviz ===&lt;br /&gt;
&lt;br /&gt;
Before you can start configuring your installation, you need to install additional packages, depending on the management system used for the database to be published and the functions of the BPS you intend to use.&lt;br /&gt;
&lt;br /&gt;
On the BPS start page, click on &amp;lt;small&amp;gt;Utilities&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;library test&amp;lt;/small&amp;gt; in order to navigate to the library test page that shows the status of installed libraries. On a fresh BPS installation, only the BioCASe libraries should be installed, since they&#039;re part of the archive file you’ve downloaded (or the Subversion repository you checked out from):&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesVanilla.png|550px]]&lt;br /&gt;
&lt;br /&gt;
If you plan to use the Local Query Tool (a small portal for querying and browsing your BioCASe webservice), you need to install the lxml library. You can do this easily by running the Python Package Installer (PIP): &#039;&#039;pip install lxml&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For each DBMS you plan to use with BioCASe (i.e. you have a database you want to publish with BioCASe), you’ll have to install the corresponding package. So if your collection is stored in a MySQL database, you&#039;ll need the MySQLdb library; the table shows you the command to run for installing it using pip: &#039;&#039;pip install mysqlclient&#039;&#039;. Once pip has installed the package, reload the libraries test page. The according list entry should turn from an orange &#039;&#039;not installed&#039;&#039; into a green version number. Redo this process for all DBMS you want to connect to.&lt;br /&gt;
&lt;br /&gt;
The Graphviz library listed under optional external binaries is used by the BPS to create a graph of your database’s data model in the table setup (you will learn in the [[DatasourceSetup#Setting_up_the_Database_Structure|Table Setup]] about this). If the data model is very simple (i.e., not more than 3 or 4 tables), you probably can spare the effort of installing Graphviz. Otherwise we recommend installing it: Simply click on the Download link and install the package using an installer file or a package manager on Linux.&lt;br /&gt;
&lt;br /&gt;
If you want to create DarwinCore Archives for your web services, you also need to install a Java Runtime Environment (JRE). BioCASe requires Java 1.8 or later for creating DarwinCore archives, so please check the version listed on the Testlibs page if it&#039;s already installed on the server.&lt;br /&gt;
&lt;br /&gt;
=== Changing the Default Password ===&lt;br /&gt;
&lt;br /&gt;
The configuration tool is a browser interface that allows you to configure almost every aspect of the BPS. As a last step of the setup, you should change the password.&lt;br /&gt;
&lt;br /&gt;
Go back to the Start page of the BPS (by clicking &amp;lt;small&amp;gt;Start&amp;lt;/small&amp;gt; at the top of the page, or by retyping &#039;&#039;http://localhost/biocase&#039;&#039; if the server is running on your computer), choose &amp;lt;small&amp;gt;Config Tool&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;System Administration&amp;lt;/small&amp;gt;. You will then be prompted for a password. Type in the default &#039;&#039;ACDC&#039;&#039;, then click &amp;lt;small&amp;gt;Submit&amp;lt;/small&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The top of the configuration page you’ll be directed to should look similar to this:&lt;br /&gt;
&lt;br /&gt;
[[image:instConfigTool.png|500px]]&lt;br /&gt;
&lt;br /&gt;
In the first two lines, you’ll see the values you entered during the setup script (in this case, the defaults &#039;&#039;localhost&#039;&#039; and &#039;&#039;biocase&#039;&#039;). In the fourth line, enter a new password. Please be careful when typing (if you forget the password some day, you can reset it by directly editing the configuration file). Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the new password to the configuration file.&lt;br /&gt;
&lt;br /&gt;
In case you’ve installed Graphviz, you need to tell the BPS the location of the binaries, since it is not a Python package that will be registered automatically. In order to do so, locate the Graphviz installation on your local disk and enter the path to the binary executable into the text box labelled &amp;lt;small&amp;gt;Path to Graphviz executable&amp;lt;/small&amp;gt;. On Linux machines it might look similar to the default (&#039;&#039;/usr/local/bin/dot&#039;&#039;), on Windows machines it will be probably something like &#039;&#039;C:/Program Files/Graphviz 2.44.1/bin/&#039;&#039;. Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the path.&lt;br /&gt;
&lt;br /&gt;
=== Checking Your Installation ===&lt;br /&gt;
&lt;br /&gt;
Before you proceed to the configuration, you should make sure everything is installed correctly:&lt;br /&gt;
&lt;br /&gt;
# Typing in &#039;&#039;http://localhost/biocase&#039;&#039; (or the appropriate values of your installation) takes you to the entry page of the provider software (as shown in the section [[#Linking_BioCASe_and_Your_Web_Server|Linking BioCASe and Your Web Server]]).&lt;br /&gt;
# The libraries test page (&amp;lt;small&amp;gt;Utilities &amp;gt; library test&amp;lt;/small&amp;gt;) shows you’ve installed the packages for your DBMS, lxml (if you want to use the Local Query Tool), Java (if you want to create DarwinCore Archives) and the Graphviz dot (if you decided so).&lt;br /&gt;
# &amp;lt;small&amp;gt;Status of writeable directories&amp;lt;/small&amp;gt; shows a green &amp;lt;small&amp;gt;writeable&amp;lt;/small&amp;gt; for all four directories. If not, the path to problematic file will be given – please grant write access to Python.&lt;br /&gt;
&lt;br /&gt;
If you want to connect BioCASe to a variety of different database management systems, create DarwinCore archives and use the QueryTool, the libraries test pages should look like this:&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesDone.png|650px]]&lt;br /&gt;
&lt;br /&gt;
== Updating an existing BioCASe Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Updating a BioCASe Docker installation ===&lt;br /&gt;
This is very simple with the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] you downloaded for installing BioCASe. Just go to the folder where you stored the file and run &#039;&#039;make update&#039;&#039;. This will stop and remove the BioCASe container, download the latest BioCASe image and create/start a new BioCASe container. Since the configuration files are not stored within the container, all your data sources will be preserved.&lt;br /&gt;
&lt;br /&gt;
=== Updating a regular BioCASe installation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Important Note&amp;lt;/u&amp;gt;&#039;&#039;&#039;: If you have a running BioCASe installation, you shouldn’t touch it until you’ve successfully installed a new version. So keep the old installation instead of replacing it!&lt;br /&gt;
&lt;br /&gt;
==== Updating from version 2.5 or later ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# Change directory to the new installation and run setup script. When asked whether to import the configuration from an old installation, answer yes. The setup script will now import the configuration of the old installation, including the data sources.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;br /&gt;
&lt;br /&gt;
==== Updating from older versions &amp;lt; 2.5 ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version; moreover, you will need the configuration files later.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# [[Installation#Running_the_Setup_Script|Run the setup script]]. When asked whether to import the configuration from an old installation, just press Return (defaults to no). Make sure to provide the the same base URL that was used by the old installation (for example &#039;&#039;/biocase&#039;&#039;).&lt;br /&gt;
# [[Installation#Changing_the_Default_Password|Change the default password]] of the new installation to the one you used in the old installation.&lt;br /&gt;
# Open the file &#039;&#039;config/config.ini&#039;&#039; of your old installation in a text editor. Open the config tool of the new installation and navigate to the System Administration page. Compare the settings in the section &amp;lt;small&amp;gt;Server configuration&amp;lt;/small&amp;gt; with the values you can find in the old configuration file and change them, if necessary (leave values unchanged if you don&#039;t find them in the old file). Press &amp;lt;small&amp;gt;Update config&amp;lt;/small&amp;gt;.&lt;br /&gt;
# Last, copy the configuration of the BioCASe web services: Open the folder &#039;&#039;config/datasources&#039;&#039; of your old installation and copy all subfolders to &#039;&#039;config/datasources&#039;&#039; of your new installation.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1182</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1182"/>
		<updated>2024-04-15T13:50:29Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Current Version 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Upcoming ===&lt;br /&gt;
* Timeout added for the request to retrieve latest version from sbuversion repository&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.5 [2023-11-30] ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1181</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1181"/>
		<updated>2023-11-30T11:14:04Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Upcoming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.5 [2023-11-30] ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1180</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1180"/>
		<updated>2023-10-02T10:18:57Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Upcoming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Upcoming ===&lt;br /&gt;
* Bugfix for ConfigTool login page (didn&#039;t work for empty webroots like &#039;&#039;biocase.xxxx.de&#039;&#039;)&lt;br /&gt;
* Fix for CMF upgrade function&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1179</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1179"/>
		<updated>2023-09-29T13:50:29Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Current Version 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Upcoming ===&lt;br /&gt;
* Bugfix for empty webroots (like biocase.xxxx.de)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1178</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1178"/>
		<updated>2023-08-18T12:03:21Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Upcoming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.4 [2023-08-18] ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1177</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1177"/>
		<updated>2023-08-18T11:59:51Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Upcoming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Upcoming ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
* Use SQL statements with parameters for most DB mods&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1176</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1176"/>
		<updated>2023-04-18T10:19:01Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Current Version 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Upcoming ===&lt;br /&gt;
* Fix for login page of configtool (didn&#039;t used the webroot from configuration)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1175</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1175"/>
		<updated>2023-01-13T12:12:54Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Current Version 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.3 [2023-01-13]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1174</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1174"/>
		<updated>2023-01-13T09:52:48Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Current Version 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== 3.8.3 [2023-01-xx]===&lt;br /&gt;
* Fix in Database connection for Python versions with two-digits minor version (e.g. 3.10)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1173</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=Installation&amp;diff=1173"/>
		<updated>2022-06-10T09:33:01Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Installing Apache/IIS and Python */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This part of the wiki explains how to install the BioCASe Provider Software. Depending on your skills, it should take between 15 and 60 minutes. If you’re a beginner, please read the [[BeginnersGuide|Beginner’s Guide]] first.&lt;br /&gt;
&lt;br /&gt;
== Requirements and Considerations ==&lt;br /&gt;
Before installing, please make sure that the system you’re intending to install the BPS on meets the following requirements (If you find out one of these items is not met, please ask your system administrator for help, read the [[FAQ]] or get in [[Special:Contact|contact with the BioCASe Team]].):&lt;br /&gt;
&lt;br /&gt;
# You have administrative privileges on this machine, i.e. the user rights to install new software packages.&lt;br /&gt;
# It is accessible from outside your institution. This means it either needs to be outside any institutional firewall or, more likely, the HTTP port is open for an existing firewall.&lt;br /&gt;
# A direct connection can be established from this machine to the database to be published – either because there’s no firewall in between, or the port used by the DBMS is open (e. g. 3306 for MySQL).&lt;br /&gt;
&lt;br /&gt;
In addition to the regular installation, you can install BioCASe from a Docker image. Docker is an operating-system-level virtualization software that allows easy software deployment in so-called containers. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide]. &#039;&#039;&#039;If you&#039;re famliar with Docker, we&#039;d suggest to use the Docker path for installing BioCASe&#039;&#039;&#039; - read more in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]] below.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Installing BioCASe from a Docker image ==&lt;br /&gt;
&lt;br /&gt;
Good choice! Installing BioCASe from a Docker image is much easer than installing the required components step-by-step. In addition, it&#039;s easier to update an existing installation. If you don&#039;t know yet what Docker is, you should read the [https://docs.docker.com/get-started/ Get Started Guide] first.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; BioCASe requires Docker version 17 or later. If you already have Docker installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
&lt;br /&gt;
For installing BioCASe from the Docker image, please follow these steps:&lt;br /&gt;
&lt;br /&gt;
# Install Docker Community Edition (Docker CE). For detailed instructions, see [https://docs.docker.com/install/ About Docker CE] and choose the tutorial for your platform. To make sure Docker is properly installed, run &#039;&#039;docker --version&#039;&#039; in a terminal and make sure the version number is 17+.&lt;br /&gt;
# Download the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] that contains the commands for installing and updating BioCASe. Use &amp;quot;Save as...&amp;quot; to store it to your home folder on the server machine.&lt;br /&gt;
# Open a terminal window and change the work directory to the location you&#039;ve just saved the Makefile to. Then type in &#039;&#039;make install&#039;&#039; and press enter. This should download the latest BioCASe image, create a BioCASe container and run it.&lt;br /&gt;
&lt;br /&gt;
Per default, Docker will use port 80 for BioCASe. If this port is already used by another application on your server, you can instruct Docker to use another port. For using port 8181, for example, type in &#039;&#039;make install PORT=8181&#039;&#039; instead:&lt;br /&gt;
&lt;br /&gt;
[[File:DockerInstall.png|650px]]&lt;br /&gt;
&lt;br /&gt;
Voilà, that&#039;s it! To check your BioCASe installation, use your Browser to go to &#039;&#039;http://localhost/biocase&#039;&#039;. Don&#039;t forget to [[Installation#Changing_the_Default_Password | change the default password]].&lt;br /&gt;
&lt;br /&gt;
You can also use the Makefile for stopping and starting the BioCASe container (for example, if you restart your server each night automatically) - just type &#039;&#039;make stop&#039;&#039; and &#039;&#039;make start&#039;&#039;. For removing the container, use &#039;&#039;make remove&#039;&#039;, for updating your BioCASe installation &#039;&#039;make update&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note:&#039;&#039;&#039; The configuration and the log files of your BioCASe installation, as well as any XML and DwC archives created, will be stored in Docker hosted volumes. That means they are stored outside of the BioCASe container and will be preserved, even when the container is removed (actually, that&#039;s what happens if you update your installation). Docker hosted volumes are stored in the &#039;&#039;volumes&#039;&#039; folder of your docker installation, e.g. /var/lib/docker/volumes. If you want to backup the configuration of your BioCASe installation, just backup the folder /var/lib/docker/volumes/bps_config. To learn more about docker hosted volumes, please refer to the [https://docs.docker.com/storage/volumes/ Docker guide].&lt;br /&gt;
&lt;br /&gt;
== Regular BioCASe Installation ==&lt;br /&gt;
This is the path to choose if you haven&#039;t heard of [https://www.docker.com/ Docker] yet. If you have experience with this virtualisation software, we&#039;d suggest to install BioCASe from the Docker image (instructions in section [[Installation#Installing_BioCASe_from_a_Docker_image | Installing from a Docker image]]).&lt;br /&gt;
&lt;br /&gt;
BioCASe runs on both Windows and Linux machines. Two thoughts to consider for you:&lt;br /&gt;
* If you want to use ODBC to connect to your database (for example to an Access database), you should make sure that an ODBC driver is available for the OS of your choice. For an Access database, for example, such a ODBC driver is available only for Windows - so you should go for Windows.&lt;br /&gt;
* If you don&#039;t wanna use ODBC, because you plan to connect to a wide-spread DB system such as MySQL, Postgres or MS SQL Server, we recommend Linux (Debian).&lt;br /&gt;
&lt;br /&gt;
=== Installing Apache/IIS and Python ===&lt;br /&gt;
If you’re using a Linux system, you probably don’t need to install either, since Apache and Python are usually preinstalled. Same holds true for MacOS, but you should have a look at one of the articles on the web to find out about the file locations.&lt;br /&gt;
&lt;br /&gt;
Even though the BPS runs with both Apache and Internet Information Server (IIS), we recommend using Apache, which is much easier to configure. However, if you’re already using IIS, you might want to stick with that.&lt;br /&gt;
&lt;br /&gt;
The BPS requires Python 3.7+ to run, it doesn&#039;t work with Python 2, which ended its life cycle in 2020 (same is true for Python 3 versions &amp;lt; 3.7). On most Linux systems, Python 3 will be pre-installed. If not, you should be able to install Python using &#039;&#039;apt-get update&#039;&#039; and &#039;&#039;apt-get install python&#039;&#039;. (By the way: You can install several different Python versions on the same machine without any conflicts.)&lt;br /&gt;
&lt;br /&gt;
If you’re installing on a Windows Vista (poor you) or Windows 7 machine, we recommend not to install Apache in the default program files folder, since there is some magic spell on that which can get you into trouble when changing Apache’s configuration files. Just choose another path (Apache Software Foundation?) to spare that hassle.&lt;br /&gt;
&lt;br /&gt;
Once you’ve successfully installed Apache and Python, you can proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
=== Downloading the Provider Software ===&lt;br /&gt;
You can download the BPS either as a g-zipped archive or directly from our Subversion repository. First option is the easiest if you’re not familiar with Subversion; the second option makes it easier for you to update your installation later. So if you’ve never used Subversion before and plan not to keep your installation up-to-date, choose the archive. If you plan to set up a productive installation, which should be kept up-to-date, you should opt for the subversion repository. &lt;br /&gt;
&lt;br /&gt;
==== Downloading the Archive File ====&lt;br /&gt;
Just download the archive from the [http://www.biocase.org/products/provider_software Download section of the BioCASe site] and unpack the contents to the destination folder.&lt;br /&gt;
&lt;br /&gt;
==== Downloading from the Subversion Repository ====&lt;br /&gt;
If you’re using Windows, you need to install a Subversion client first (try [http://tortoisesvn.net Tortoise], which comes with a nice user interface). Linux and MacOS usually have Subversion preinstalled.&lt;br /&gt;
&lt;br /&gt;
The URL for the latest stable version is http://ww2.biocase.org/svn/bps2/branches/stable, which we recommend to use. Updating your installation to the latest BPS version is then as easy as just running the Subversion update command. If you want to download a defined version, the URL would be http://ww2.biocase.org/svn/bps2/tags/release_3.8.0.&lt;br /&gt;
&lt;br /&gt;
In order to download the BPS from subversion with the Subversion command line client (preinstalled on Linux/MacOS), just go to the destination and type in &amp;lt;pre&amp;gt;svn co http://ww2.biocase.org/svn/bps2/branches/stable biocase&amp;lt;/pre&amp;gt;This will connect to our server with anonymous access and download all files to the folder &#039;&#039;biocase&#039;&#039;. In case you’re using Tortoise on Windows, right-click on the destination in the Windows explorer and choose &amp;lt;small&amp;gt;Checkout&amp;lt;/small&amp;gt;. Fill in the URL, change the destination folder name into something meaningful and press OK:&lt;br /&gt;
&lt;br /&gt;
[[image:instTortoiseMenu.png|300px]][[image:instTortoiseDialog.png|450px]]&lt;br /&gt;
&lt;br /&gt;
For the remainder of this guide, we will assume you’ve installed the BPS into a folder named &#039;&#039;biocase&#039;&#039;, which should look like this by now:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseFolder.png|650px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the Setup Script ===&lt;br /&gt;
The setup script will initiate the configuration files with values you provide and point the script files to your Python installation (you can re-run the setup script in case that location changes). If you want to modify any of settings you made during the setup, you can change the values in the configuration tool later.&lt;br /&gt;
&lt;br /&gt;
In order to run the script, open a terminal window (or “command prompt” in Windows). Change the working directory to the folder you’ve downloaded the BPS to (&#039;&#039;biocase&#039;&#039;) and type in:&amp;lt;pre&amp;gt;python setup.py&amp;lt;/pre&amp;gt; In case Python is not found, you’ll have to add the full path name to the Python executable. Make sure the Python version given in the fifth line of the output is the one you desire (otherwise add the path to the correct executable):&lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptStart.png|550px]]&lt;br /&gt;
&lt;br /&gt;
The questions asked by the setup script do have defaults. If you want to keep them, just press &amp;lt;small&amp;gt;Return&amp;lt;/small&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Webserver domain:&amp;lt;/strong&amp;gt; This is the domain name of the web server you’re installing BioCASe on, e.g. &#039;&#039;http://www.myinstitution.org&#039;&#039;.  You can keep the default &#039;&#039;localhost&#039;&#039; as long as you’re configuring and testing the installation locally; for production you’ll need to change that into the correct domain name (or IP address) later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Base URL:&amp;lt;/strong&amp;gt; This will become the second part of the URL your installation will use. If you keep the default biocase, your installation will be accessible later at &#039;&#039;www.myinstitution.org/biocase&#039;&#039;, for example.&lt;br /&gt;
&lt;br /&gt;
After answering these two questions, the script will update your files. At the end of the output you can find the lines you&#039;ll need later to create the link between BioCASe and your web server, so do not close the window! &lt;br /&gt;
&lt;br /&gt;
[[image:instSetupScriptDone.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Linking BioCASe and Your Web Server ===&lt;br /&gt;
&lt;br /&gt;
The public part of the provider software is stored in the &#039;&#039;www&#039;&#039; subfolder of your BioCASe installation and must be configured in your web server as a public folder. You should always make this folder public using a virtual directory: This means that you should never install BioCASe under the default root folder of your web server. Doing so can compromise your server security and will allow people to see your configuration files (which include passwords). So since we installed BioCASe in &#039;&#039;c:\biocase&#039;&#039;, the folder that must be published with a virtual directory is &#039;&#039;c:\biocase\www&#039;&#039; and will be accessible later through &#039;&#039;http://www.myinstitution.org/biocase&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Apache ====&lt;br /&gt;
If you use Apache, adding the BioCASe folder to your web server environment is as simple as copying the lines printed at the end of the setup script to the end of the Apache configuration file &#039;&#039;httpd.conf&#039;&#039;. This can typically be found in the &#039;&#039;conf&#039;&#039; folder of your Apache installation. If you’re adding BioCASe to an already productive web server, please ask the server admin before doing any changes!&lt;br /&gt;
&lt;br /&gt;
[[image:instHttpdConf.png|550px]] &lt;br /&gt;
&lt;br /&gt;
Save the file and restart Apache for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
==== Internet Information Server ====&lt;br /&gt;
&lt;br /&gt;
If you use Internet Information Server, you need to create a virtual directory for the folder &#039;&#039;c:\biocase\www&#039;&#039; using the IIS Server Manager. Grant all rights for this directory (Read, Write, Script Execution, Directory listing). You should also add &#039;&#039;index.html&#039;&#039; to the list of default documents (&amp;lt;small&amp;gt;Virtual Directory &amp;gt; Properties &amp;gt; Documents &amp;gt; Default&amp;lt;/small&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
In order to associate Python scripts with Python in IIS 5/6, you need to use the &amp;lt;small&amp;gt;Configure&amp;lt;/small&amp;gt; button on the virtual directory tab and associate the file extensions .cgi and .py with Python (see screenshot below). In IIS 7, you can open this dialog by choosing &amp;lt;small&amp;gt;Add Script Map&amp;lt;/small&amp;gt;. Note the placeholders &#039;&#039;%s %s&#039;&#039; after the Python executable!&lt;br /&gt;
&lt;br /&gt;
[[File:instAddScriptMap.png|330px]]&lt;br /&gt;
&lt;br /&gt;
If you run into problems configuring IIS, you should have a look at the tutorials available on the web, for example&lt;br /&gt;
* http://haishibai.blogspot.de/2011/02/setting-up-python-on-iis-7_01.html&lt;br /&gt;
* http://support.microsoft.com/kb/276494&lt;br /&gt;
&lt;br /&gt;
==== Testing the Link ====&lt;br /&gt;
&lt;br /&gt;
Once you’re done, you can test your BioCASe Installation by opening a browser and typing in &#039;&#039;http://localhost/biocase&#039;&#039; (replace &#039;&#039;localhost&#039;&#039; with the domain name of the machine you installed BioCASe on, if you’re not working locally). You should then see the start page of the BPS:&lt;br /&gt;
&lt;br /&gt;
[[image:instBiocaseStartpage.png|550px]]&lt;br /&gt;
&lt;br /&gt;
=== Installing Additional Python Packages/Java/Graphviz ===&lt;br /&gt;
&lt;br /&gt;
Before you can start configuring your installation, you need to install additional packages, depending on the management system used for the database to be published and the functions of the BPS you intend to use.&lt;br /&gt;
&lt;br /&gt;
On the BPS start page, click on &amp;lt;small&amp;gt;Utilities&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;library test&amp;lt;/small&amp;gt; in order to navigate to the library test page that shows the status of installed libraries. On a fresh BPS installation, only the BioCASe libraries should be installed, since they&#039;re part of the archive file you’ve downloaded (or the Subversion repository you checked out from):&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesVanilla.png|550px]]&lt;br /&gt;
&lt;br /&gt;
If you plan to use the Local Query Tool (a small portal for querying and browsing your BioCASe webservice), you need to install the lxml library. You can do this easily by running the Python Package Installer (PIP): &#039;&#039;pip install lxml&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For each DBMS you plan to use with BioCASe (i.e. you have a database you want to publish with BioCASe), you’ll have to install the corresponding package. So if your collection is stored in a MySQL database, you&#039;ll need the MySQLdb library; the table shows you the command to run for installing it using pip: &#039;&#039;pip install mysqlclient&#039;&#039;. Once pip has installed the package, reload the libraries test page. The according list entry should turn from an orange &#039;&#039;not installed&#039;&#039; into a green version number. Redo this process for all DBMS you want to connect to.&lt;br /&gt;
&lt;br /&gt;
The Graphviz library listed under optional external binaries is used by the BPS to create a graph of your database’s data model in the table setup (you will learn in the [[DatasourceSetup#Setting_up_the_Database_Structure|Table Setup]] about this). If the data model is very simple (i.e., not more than 3 or 4 tables), you probably can spare the effort of installing Graphviz. Otherwise we recommend installing it: Simply click on the Download link and install the package using an installer file or a package manager on Linux.&lt;br /&gt;
&lt;br /&gt;
If you want to create DarwinCore Archives for your web services, you also need to install a Java Runtime Environment (JRE). BioCASe requires Java 1.8 or later for creating DarwinCore archives, so please check the version listed on the Testlibs page if it&#039;s already installed on the server.&lt;br /&gt;
&lt;br /&gt;
=== Changing the Default Password ===&lt;br /&gt;
&lt;br /&gt;
The configuration tool is a browser interface that allows you to configure almost every aspect of the BPS. As a last step of the setup, you should change the password.&lt;br /&gt;
&lt;br /&gt;
Go back to the Start page of the BPS (by clicking &amp;lt;small&amp;gt;Start&amp;lt;/small&amp;gt; at the top of the page, or by retyping &#039;&#039;http://localhost/biocase&#039;&#039; if the server is running on your computer), choose &amp;lt;small&amp;gt;Config Tool&amp;lt;/small&amp;gt;, then &amp;lt;small&amp;gt;System Administration&amp;lt;/small&amp;gt;. You will then be prompted for a password. Type in the default &#039;&#039;ACDC&#039;&#039;, then click &amp;lt;small&amp;gt;Submit&amp;lt;/small&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The top of the configuration page you’ll be directed to should look similar to this:&lt;br /&gt;
&lt;br /&gt;
[[image:instConfigTool.png|500px]]&lt;br /&gt;
&lt;br /&gt;
In the first two lines, you’ll see the values you entered during the setup script (in this case, the defaults &#039;&#039;localhost&#039;&#039; and &#039;&#039;biocase&#039;&#039;). In the fourth line, enter a new password. Please be careful when typing (if you forget the password some day, you can reset it by directly editing the configuration file). Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the new password to the configuration file.&lt;br /&gt;
&lt;br /&gt;
In case you’ve installed Graphviz, you need to tell the BPS the location of the binaries, since it is not a Python package that will be registered automatically. In order to do so, locate the Graphviz installation on your local disk and enter the path to the binary executable into the text box labelled &amp;lt;small&amp;gt;Path to Graphviz executable&amp;lt;/small&amp;gt;. On Linux machines it might look similar to the default (&#039;&#039;/usr/local/bin/dot&#039;&#039;), on Windows machines it will be probably something like &#039;&#039;C:/Program Files/Graphviz 2.44.1/bin/&#039;&#039;. Press &amp;lt;small&amp;gt;update config&amp;lt;/small&amp;gt; to save the path.&lt;br /&gt;
&lt;br /&gt;
=== Checking Your Installation ===&lt;br /&gt;
&lt;br /&gt;
Before you proceed to the configuration, you should make sure everything is installed correctly:&lt;br /&gt;
&lt;br /&gt;
# Typing in &#039;&#039;http://localhost/biocase&#039;&#039; (or the appropriate values of your installation) takes you to the entry page of the provider software (as shown in the section [[#Linking_BioCASe_and_Your_Web_Server|Linking BioCASe and Your Web Server]]).&lt;br /&gt;
# The libraries test page (&amp;lt;small&amp;gt;Utilities &amp;gt; library test&amp;lt;/small&amp;gt;) shows you’ve installed the packages for your DBMS, lxml (if you want to use the Local Query Tool), Java (if you want to create DarwinCore Archives) and the Graphviz dot (if you decided so).&lt;br /&gt;
# &amp;lt;small&amp;gt;Status of writeable directories&amp;lt;/small&amp;gt; shows a green &amp;lt;small&amp;gt;writeable&amp;lt;/small&amp;gt; for all four directories. If not, the path to problematic file will be given – please grant write access to Python.&lt;br /&gt;
&lt;br /&gt;
If you want to connect BioCASe to a variety of different database management systems, create DarwinCore archives and use the QueryTool, the libraries test pages should look like this:&lt;br /&gt;
&lt;br /&gt;
[[image:instLibrariesDone.png|650px]]&lt;br /&gt;
&lt;br /&gt;
== Updating an existing BioCASe Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Updating a BioCASe Docker installation ===&lt;br /&gt;
This is very simple with the [http://ww2.biocase.org/svn/bps2/trunk/Makefile Makefile] you downloaded for installing BioCASe. Just go to the folder where you stored the file and run &#039;&#039;make update&#039;&#039;. This will stop and remove the BioCASe container, download the latest BioCASe image and create/start a new BioCASe container. Since the configuration files are not stored within the container, all your data sources will be preserved.&lt;br /&gt;
&lt;br /&gt;
=== Updating a regular BioCASe installation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Important Note&amp;lt;/u&amp;gt;&#039;&#039;&#039;: If you have a running BioCASe installation, you shouldn’t touch it until you’ve successfully installed a new version. So keep the old installation instead of replacing it!&lt;br /&gt;
&lt;br /&gt;
==== Updating from version 2.5 or later ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# Change directory to the new installation and run setup script. When asked whether to import the configuration from an old installation, answer yes. The setup script will now import the configuration of the old installation, including the data sources.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;br /&gt;
&lt;br /&gt;
==== Updating from older versions &amp;lt; 2.5 ====&lt;br /&gt;
&lt;br /&gt;
# Rename the folder of the old installation to something meaningful, for example &#039;&#039;biocase_old&#039;&#039;, and memorise its old name. By doing this, you can always revert to this working version; moreover, you will need the configuration files later.&lt;br /&gt;
# Download the new version as described above into a directory with the name you just memorised.&lt;br /&gt;
# [[Installation#Running_the_Setup_Script|Run the setup script]]. When asked whether to import the configuration from an old installation, just press Return (defaults to no). Make sure to provide the the same base URL that was used by the old installation (for example &#039;&#039;/biocase&#039;&#039;).&lt;br /&gt;
# [[Installation#Changing_the_Default_Password|Change the default password]] of the new installation to the one you used in the old installation.&lt;br /&gt;
# Open the file &#039;&#039;config/config.ini&#039;&#039; of your old installation in a text editor. Open the config tool of the new installation and navigate to the System Administration page. Compare the settings in the section &amp;lt;small&amp;gt;Server configuration&amp;lt;/small&amp;gt; with the values you can find in the old configuration file and change them, if necessary (leave values unchanged if you don&#039;t find them in the old file). Press &amp;lt;small&amp;gt;Update config&amp;lt;/small&amp;gt;.&lt;br /&gt;
# Last, copy the configuration of the BioCASe web services: Open the folder &#039;&#039;config/datasources&#039;&#039; of your old installation and copy all subfolders to &#039;&#039;config/datasources&#039;&#039; of your new installation.&lt;br /&gt;
# Done! [[Installation#Checking_Your_Installation|Try out your new installation]] to make sure it is working.&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1172</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1172"/>
		<updated>2022-06-08T14:51:37Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Version 3.8.2 [2021-06-08] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2022-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1171</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1171"/>
		<updated>2022-06-08T14:51:26Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Current Version 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.2 [2021-06-08]===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1170</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1170"/>
		<updated>2021-12-22T09:51:13Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Upcoming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Upcoming ===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
* Check for existence of Kettle libraries before starting a DwC-A transformation - and issue a hint in case they&#039;re missing because a BioCASe version without Kettle is installed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1169</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1169"/>
		<updated>2021-12-21T16:13:38Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Upcoming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Upcoming ===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduced in that version. Python 3.6 doesn&#039;t receive any security fixes anymore.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1168</id>
		<title>VersionHistory</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/bps/index.php?title=VersionHistory&amp;diff=1168"/>
		<updated>2021-12-21T16:10:49Z</updated>

		<summary type="html">&lt;p&gt;JoergHoletschek: /* Upcoming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current Version 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Upcoming ===&lt;br /&gt;
&#039;&#039;&#039;Important: BioCASe now requires Python version 3.7+&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unicode problem with MySQL data sources fixed (by setting the enoding explicitly in connection string)&lt;br /&gt;
** Check if file system supports Unicode; if not, convert archive file names to ASCII.&lt;br /&gt;
** Always use utf8 encoding for the archiving logs. This requires Python 3.7, since the method for reconfiguring stream encodings was introduces in that version.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.1 [2021-09-24] ===&lt;br /&gt;
* DarwinCore Archives&lt;br /&gt;
** Term &#039;&#039;occurrenceStatus&#039;&#039; added (&#039;&#039;present/absent&#039;&#039;, set from &#039;&#039;abcd:basisOfRecord&#039;&#039;)&lt;br /&gt;
** Extension &#039;&#039;MeasurementOrFact&#039;&#039; added; will be filled from &#039;&#039;abcd:MeasurementOrFact&#039;&#039;&lt;br /&gt;
** Invalid term &#039;&#039;occurrenceDetails&#039;&#039; removed&lt;br /&gt;
* Smaller fixes&lt;br /&gt;
** Apache configuration snippet is now compatible with Apache 2.4&lt;br /&gt;
** If installed, the lxml library will now be shown as installed on Testlibs page (workaround for non-exposed __version__ attribute in versions &amp;lt; 4.5.0)&lt;br /&gt;
** Fix for Ubuntu 18.04: QueryTool didn&#039;t work because OS reported a wrong file encoding (encoding now explicitly set to UTF8 upon template loading)&lt;br /&gt;
** Changes in Postgres dbmod for Version 3.8 reverted (used to cause problems for case-sensitive file systems)&lt;br /&gt;
&lt;br /&gt;
=== Version 3.8.0 [2021-06-04] ===&lt;br /&gt;
* BioCASe now runs on Python 3 - yeah!&lt;br /&gt;
* Advantages&lt;br /&gt;
** Removal of external dependencies: consistent use of internal Python packages&lt;br /&gt;
** Up to 50% faster due to code clean-up and Python optimizations (tested on MySQL and SQL Server databases)&lt;br /&gt;
** Better handling of invalid database values (control characters used to break requests)&lt;br /&gt;
** Easier installation: All database-dependent packages can be installed by Python itself&lt;br /&gt;
** DB connection setting &amp;quot;encoding&amp;quot; removed (will be detected automatically)&lt;br /&gt;
** Pre/post 2012 versions for SQL Server merged: server version will now be detected automatically and SQL syntax adapted accordingly&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.4 [2021-05-17] ===&lt;br /&gt;
* Last version for Python 2!&lt;br /&gt;
* Fixes&lt;br /&gt;
** in DwC transformation if there is only one identification without preferred flag (ends up now correctly in occurrence core file, not identification extension).&lt;br /&gt;
** for archiving page in config tool: Also allow unicode chars in dataset titles (broken since introduction of filtered downloads).&lt;br /&gt;
** in Dockerfile: Remove apache2.pid before starting Apache in order to prevent problems in case the Docker container wasn&#039;t shut down correctly.&lt;br /&gt;
** in Local QueryTool, record list page: The map now also works if some of the records lack coordinates (used to break the leaflet map).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.3 [2019-12-02]===&lt;br /&gt;
* Skin unitid_int added for UnitIDs of integer type (necessary for Postgres databases, since it doesn&#039;t accept the like operator on integers; MySQL and SQL Server don&#039;t object if the operand doesn&#039;t contain wildcards).&lt;br /&gt;
* ABCD 2.1 template in manual query form moved right next to ABCD 2.06&lt;br /&gt;
* Bugfix for mapping editor: If column retrieval is not available, potential dots are removed from column names, since they&#039;re not allowed.&lt;br /&gt;
* Method sanitiseFieldStorage added that removes any suspicious characters from CGI paramaters.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.2 [2019-07-10]===&lt;br /&gt;
* Bugfix for Archiving/section &amp;quot;Existing archives&amp;quot;: Link for converting XML archives into DwC archives fixed.&lt;br /&gt;
* Bugfixes in Local Query Tool&lt;br /&gt;
** Error page on &amp;quot;Grouping page&amp;quot; now displayed correctly.&lt;br /&gt;
** for SSL handshake error on certain installations if HTTPS is used.&lt;br /&gt;
** Skin configuration in querytool_prefs.xml is now read correctly (used to be ignored).&lt;br /&gt;
* PyWrapper Wiki logo moved to local resources in order to prevent &amp;quot;not secure&amp;quot; message on HTTPS installations.&lt;br /&gt;
* QueryTool: Preview added in detail view for multimedia types video and sound&lt;br /&gt;
* Template for connecting to an [https://www.irisbg.com IrisBG database] added.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7.1 [2018-10-02] ===&lt;br /&gt;
* XML Archiving allows now to set a BioCASe filter in order to archive and publish just a subset of the records published by a data source.&lt;br /&gt;
* New feature &#039;&#039;Filtered Export&#039;&#039; allows to export and download a subset of the records in a datasource into an XML archive without touching the XML and DwC archives that will be published to network harvesters by the dataset inventory.&lt;br /&gt;
* GoogleMaps in QueryTool replaced with OpenStreetMaps because of changes to Google&#039;s billing policy.&lt;br /&gt;
* Bugfix for AnnoSys retrieval (used to cause SSL handshake errors on certain installation).&lt;br /&gt;
* Bugfix for path handling of sqlite databases (now always relative to BioCASe home directory).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 [2018-06-12]===&lt;br /&gt;
* Dockerfile and Makefile added for dockerisation&lt;br /&gt;
* ODBC modules now use pyodbc or ceODBC, whichever is installed.&lt;br /&gt;
* DBmod_sqlite overhauled; uses Python-integrated module &#039;&#039;sqlite3&#039;&#039; and supports metadata retrieval.&lt;br /&gt;
* Local QueryTool: If a typified name is given for a type, it is now listed in brackets after the type status.&lt;br /&gt;
* Java version now shows type of JRE installed (for example OpenJDK)&lt;br /&gt;
* If configuration files cannot be loaded, raise an exception right away (makes it easier for the user to identify the problem if the setup script is run with missing configuration files).&lt;br /&gt;
* Testlibs page: Graphviz check now executes the file and retrieves version info instead of just checking for file existence.&lt;br /&gt;
* Default value for graphviz path in config.ini set to Debian default for easier dockerisation.&lt;br /&gt;
* Apache snippet in setup script adapted to Apache 2.4&lt;br /&gt;
* Fully functional demo data source included (uses included Sqlite database).&lt;br /&gt;
* Parameter &#039;&#039;url&#039;&#039; removed from manual query form for security reasons; target URL can now be changed manually in the form.&lt;br /&gt;
* Fixes&lt;br /&gt;
** in dbmod_oracle for metadata retrieval&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is removed from the setup, the second confirmation dialog has been removed. This keeps the user from rendering the configuration invalid by keeping invalid FKs.&lt;br /&gt;
** in DB structure editor of ConfigTool: If a table is purged from the setup because of a missing primary key or table name, a more verbose message is being printed.&lt;br /&gt;
** for XML archiving: Hashtag character removed from dataset title when generating the archive names; the download link for the archiving page of the config tool is now correctly URL-encoded.&lt;br /&gt;
** for layout of &#039;&#039;dsa_info&#039;&#039; page for new Firefox Quantum (versions 57+).&lt;br /&gt;
** in DwC transformation for the case that several identifications exist per unit and one of them has a preferred flag=true, while others have no preferred flag set (= empty).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.4 [2017-07-04] ===&lt;br /&gt;
* QueryTool now lists annotations created with [https://annosys.bgbm.fu-berlin.de/ AnnoSys] and allows to create an annotation.&lt;br /&gt;
* &#039;&#039;System administration&#039;&#039; page now allows to view log files in browser&lt;br /&gt;
* Changes to LIDO schema (small version): Element &#039;&#039;Point&#039;&#039; of complex type &#039;&#039;gml&#039;&#039; now expanded to full GML type; elements &#039;&#039;LineString&#039;&#039; and &#039;&#039;Polygon&#039;&#039; removed&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in wrapper core for multi-column primary keys&lt;br /&gt;
** Bugfix for &amp;quot;remove cached objects&amp;quot; in system administration&lt;br /&gt;
** Bugfix in QueryTool for search fields with no label defined (XPath used instead now)&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql_2012+&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.3 [2016-08-08] ===&lt;br /&gt;
* DwC archive generation: ABCD node &#039;&#039;Licenses&#039;&#039; will now be tranferred into an &#039;&#039;intellectualRights&#039;&#039; paragraph in the EML document if provided.&lt;br /&gt;
* Fix/change for dbmod_oracle.py: Paging is now faster&lt;br /&gt;
* New &amp;quot;reset&amp;quot; function for archiving: If the archiving thread is killed for some reason, this allows to reset the archiving process by removing the proc file&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.2 [2016-07-21] ===&lt;br /&gt;
* Debug output now contains INFO items on time required for SQL execution and XML creation.&lt;br /&gt;
* Changes in DarwinCore transformation:&lt;br /&gt;
** Transformation streamlined&lt;br /&gt;
** &#039;&#039;IdentificationQualifier&#039;&#039; is now correctly filled from ABCD field&lt;br /&gt;
** GatheringAgents are now ordered by sequence (if they are mapped as separate gathering persons and the &#039;&#039;sequence&#039;&#039; attribute is mapped)&lt;br /&gt;
** If type status information are provided with a typified name, they are now assigned to the respective identification result (if no typified name is given, they are grouped and assigned to the preferred identification in the occurrence core)&lt;br /&gt;
** Fixed the issue that one of the identifications was lost if identical scientific names were provided for both a preferred and a non-preferred identification&lt;br /&gt;
** Fixed the issue that higherClassification contained double entries if higher taxa were provided for identifications with empty scientific name&lt;br /&gt;
* Fixes&lt;br /&gt;
** Bugfix in metadata retrieval for dbmod_pymssql&lt;br /&gt;
** Duplicate slash in access point URL removed in case a slash was specified at the end of base URL&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.1 [2016-03-14] ===&lt;br /&gt;
* New experimental dbmod added for text files: Allows to publish data directly from csv files (for example, the contents of a DarwinCore archive).&lt;br /&gt;
* DarwinCore Archives: Field &#039;&#039;higherClassification&#039;&#039; is now also filled with higher taxa that don&#039;t have a rank specified.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Unhandled exceptions in manual query form removed (occurred when incorrect data source name or no parameter at all was given).&lt;br /&gt;
** Bugfix for XML archiving (occurred when configuration parameter xml_retries not present in config.ini).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6.0 [2015-10-27] ===&lt;br /&gt;
* Support for [http://www.lido-schema.org/ LIDO schema] added (including smaller changes to wrapper core).&lt;br /&gt;
* Various changes to mapping editor in preparation for the LIDO schema (e.g. dealing with mandatory nodes that do not have mandatory leaf elements)&lt;br /&gt;
* XML archiving improved&lt;br /&gt;
** uses less memory now (and will be probably faster with larger datasets)&lt;br /&gt;
** is error tolerant now: If a query fails during the archiving, a configurable number of retries will be done after a short waiting period.&lt;br /&gt;
* Support for ABCD 2.1 added to QueryTool and archiving.&lt;br /&gt;
* &#039;&#039;SchemaLocation&#039;&#039; is now set for most schemas (ABCD 2.06, ABCD 2.1, LIDO, GGBN).&lt;br /&gt;
* DB mod for Excel not experimental any more.&lt;br /&gt;
* Fixes&lt;br /&gt;
** DarwinCore Archives: Fields &#039;&#039;dc:identifier&#039;&#039; and &#039;&#039;dc:references&#039;&#039; in multimedia extension are now correctly created from &#039;&#039;abcd:FileURI&#039;&#039; and &#039;&#039;abcd:ProductURI&#039;&#039;.&lt;br /&gt;
** DarwinCore Archives: Deprecated namespace for multimedia extension replaced with namespace for Simple Multimedia Extension&lt;br /&gt;
** Namespace only added for all attributes if attributeForm=qualified in schema definition.&lt;br /&gt;
** base_dbmod: verifyTable now retrieves the table list from the DB only once.&lt;br /&gt;
** dbmod_pymssql/2012: Order tables alphabetically; convert table/column names to unicode explicitly.&lt;br /&gt;
** dbmod_pymssql2012/odbc_tsql_2012 renamed to 2012+, because they also work with SQL Server 2014.&lt;br /&gt;
** Warning &#039;&#039;Destination hostname could not be determined&#039;&#039; removed.&lt;br /&gt;
** Archives that have been manually moved/renamed/deleted in the file system will now be automatically removed from the Provider Software.&lt;br /&gt;
** Mapping editor doesn&#039;t run into an exception if a mapping contains more than five elements and issues a warning instead.&lt;br /&gt;
** In the DB structure editor, trailing &#039;&#039;$&#039;&#039; characters in table/view names are removed for creating the alias.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.3 [2015-01-23] ===&lt;br /&gt;
* QueryTool now uses libxml2/libxslt or 4Suite XML, whichever is installed. This allows the QueryTool to be used with Python versions later than 2.5, for which 4Suite XML is not available.&lt;br /&gt;
* New experimental dbmod for Excel (ODBC).&lt;br /&gt;
* Slight changes and fixes in mapping editor (pop-up window can now be closed with Return or Escape) and datasource overview of the configuration tool.&lt;br /&gt;
* Fixes&lt;br /&gt;
** In wrapper core for mandatory attributes: If unmapped, the respective element is now removed (used to be removed only if the mandatory attribute was mapped to an empty, i.e. NULL field).&lt;br /&gt;
** for dbmod_odbc_tsql/dbmod_odbc_tsql_2012: In certain cases, SQL statements used to return no results for no reason. Parameters are now integrated into the statements instead of being passed separately, that fixed the issue.&lt;br /&gt;
** CMF upgrades now also keep the static table definition.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.2 [2014-07-18] ===&lt;br /&gt;
* Fixes&lt;br /&gt;
** For metadata retrieval in DB package pymssql (table lists used to be empty for SQL Server 2005 installations).&lt;br /&gt;
** Admin password removed from configuration dump in system administration.&lt;br /&gt;
** For update hint (for the case that an installation was updated before the hint advised this).&lt;br /&gt;
** DwC archiving&lt;br /&gt;
*** For duplicate identical identifications in the source ABCD document (used to quadruplicate the affected occurrences in the result DarwinCore archive).&lt;br /&gt;
*** EML document now also valid if some metadata elements in ABCD are empty.&lt;br /&gt;
* Namespace prefix for ABCD 2.1 added.&lt;br /&gt;
* Some content added to dummy files to force Winzip into extracting empty folders from the download archive.&lt;br /&gt;
* Warning added to table setup if configured PKs/FKs do not exist in database any more.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5.1 [2014-04-10] ===&lt;br /&gt;
* DwC Archives&lt;br /&gt;
** Terms &#039;&#039;verbatimCoordinates&#039;&#039;, &#039;&#039;coordinatePrecision&#039;&#039;, &#039;&#039;georeferenceProtocol&#039;&#039;, &#039;&#039;verbatimElevation&#039;&#039;, &#039;&#039;verbatimDepth&#039;&#039;, &#039;&#039;minimumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;maximumDistanceAboveSurfaceInMeters&#039;&#039;, &#039;&#039;locationRemarks&#039;&#039;, &#039;&#039;identificationVerificationStatus&#039;&#039;, &#039;&#039;recordNumber&#039;&#039; added.&lt;br /&gt;
** Term &#039;&#039;verbatimLocality&#039;&#039; removed (ABCD element AreaDetail now stored as &#039;&#039;locationRemarks&#039;&#039;), term &#039;&#039;eventID&#039;&#039; removed (ABCD Gathering/Code now stored as &#039;&#039;fieldNumber&#039;&#039;).&lt;br /&gt;
** ABCD element CollectorsFieldNumber is now correctly mapped to &#039;&#039;recordNumber&#039;&#039;; &#039;&#039;fieldNumber&#039;&#039; is filled with ABCD elemen Gathering/Code.&lt;br /&gt;
* DB connectivity&lt;br /&gt;
** Paging mechanism optimised for Oracle (rownum replaced with row_number).&lt;br /&gt;
** Unicode handling changed for MySQL.&lt;br /&gt;
** Firebird modules (native + ODBC) revised; works now with current Firebird installation and supports efficient paging.&lt;br /&gt;
** Sybase module revised; works with current versions of Sybase Adaptive Server; metadata retrieval implemented.&lt;br /&gt;
** When Postgres is used, another port than the default 5432 can be used.&lt;br /&gt;
* Update Mechanism&lt;br /&gt;
** Provider Software checks for updates once a week and shows update hint if a new version is available.&lt;br /&gt;
** Installation script now supports importing the configuration of an old installation, including mapped data sources.&lt;br /&gt;
* QueryForm now also shows Dataset Inventory.&lt;br /&gt;
* Testlibs page now shows detailed error message in hover text for packages that are not installed.&lt;br /&gt;
* Data source lists are now sorted alphabetically.&lt;br /&gt;
* Fixes&lt;br /&gt;
** If no data source parameter is passed in the URL or if data source is invalid, an error message is now being returned instead of an empty response when Apache is used.&lt;br /&gt;
** Wrong error messages caused by empty strings returned from DB for columns mapped to int and float XML data types removed.&lt;br /&gt;
** Search request with count=true doesn&#039;t fail with exception now if count SQL statement doesn&#039;t return a row.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.5 [2013-12-05] ===&lt;br /&gt;
* XML archiving now shows progress in percent.&lt;br /&gt;
* Mapping editor concept tree&lt;br /&gt;
** Overhauled (collapsable subtrees thanks to Falko Glöckler)&lt;br /&gt;
** Fix for attributes (used to be misplaced when &#039;&#039;show all concepts&#039;&#039; was checked)&lt;br /&gt;
** Now has a floating &#039;&#039;Save&#039;&#039; button&lt;br /&gt;
* New dbmods for SQL Server 2012 added, supporting new OFFSET clause.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Term &#039;&#039;recordedBy&#039;&#039; is now filled correctly in DarwinCore archives.&lt;br /&gt;
** Mapping editor now works even if there is no connection to the database.&lt;br /&gt;
** Selective XML archiving now also works for datasets with multiple subsequent spaces in dataset title.&lt;br /&gt;
** XML archiving now works for datasets with characters &#039;&#039;&amp;amp;&#039;&#039;, &#039;&#039;&amp;lt;&#039;&#039; or &#039;&#039;&amp;gt;&#039;&#039; in title.&lt;br /&gt;
* Cosmetics&lt;br /&gt;
** Datasource page: List of target schemas for possible upgrades now hides &#039;&#039;cmf_&#039;&#039; prefix.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.2 [2013-07-15] ===&lt;br /&gt;
* XML Archiving can now be limited to certain datasets within one data source.&lt;br /&gt;
* Optional attribute &#039;&#039;expires&#039;&#039; for archives added to dataset inventory.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** On Archiving page for datasets with titles containing non-ASCII characters (Internet Explorer).&lt;br /&gt;
** Archiving page now also works with Safari.&lt;br /&gt;
** DarwinCore Archives: Term verbatimCoordinateSystem removed (was misapplied), verbatimSRS replaced with geodeticDatum.&lt;br /&gt;
** Namespace prefixes added for DNA and EFG extensions.&lt;br /&gt;
** More verbose error messages for dbmods odbc_access and odbc_tsql.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4.1 [2013-04-04]  ===&lt;br /&gt;
* Fixes:&lt;br /&gt;
** in dbmod_psycopg2 (Postgres) for non-ASCII characters in primary keys.&lt;br /&gt;
** in dbmod_mysql (MySQL) for unicode databases.&lt;br /&gt;
** in dbmod_oracle (Oracle): SCAN results now only yield values that are referenced by at least one root record.&lt;br /&gt;
** Search request with &amp;quot;count=true&amp;quot; now returns the correct number when filters on repeatable elements are used (by doing a COUNT DISTINCT on the primary key).&lt;br /&gt;
** for non-ASCII characters in element attributes (used to break the request).&lt;br /&gt;
&lt;br /&gt;
=== Version 3.4 [2013-02-20] ===&lt;br /&gt;
* XML archiving re-implemented:&lt;br /&gt;
** Now directly calls BioCASe libraries instead of using the web service. Results in less complex code and significantly improved archiving performance.&lt;br /&gt;
** XML documents are not pretty-printed any more, but stored without line breaks and leading spaces for indentation, which results in smaller documents and smaller archives.&lt;br /&gt;
** Archiving is now dataset-aware for ABCD 2.06 and HISPID 5 schemas, i.e. each datset published by the webservice will end up in a separate archive.&lt;br /&gt;
* DwC archive transformation simplified.&lt;br /&gt;
* Archiving page overhauled.&lt;br /&gt;
* Archiving information shown in datasource configuration page overhauled.&lt;br /&gt;
* New dataset inventory allows discovery of published datasets and their XML/DwC archives for schemas ABCD 2.06 and HISPID 5.&lt;br /&gt;
* Corrections in layout of DB structure page in datasource configuration tool.&lt;br /&gt;
* Default record limit for web service set to 1000.&lt;br /&gt;
* Change in dbmod_tsql: Do not display tables/views of schemas &#039;&#039;INFORMATION_SCHEMA&#039;&#039; and &#039;&#039;sys&#039;&#039;.&lt;br /&gt;
* Improvements to the QueryTool (thanks to Franck Theeten): Images will now be viewed on the record details page, coodinates printed on a map; several smaller changes.&lt;br /&gt;
* Bugfix for diagnostic messages with non-ASCII characters (used to bring up a malformed response document).&lt;br /&gt;
* Bugfix for filters containing single quotes for dbmods odbc_tsql and odbc_access.&lt;br /&gt;
* Fix for dbmod_orcale: Synonyms for tables now included in table lists.&lt;br /&gt;
* Fix for dbmod_odbc_access: Python error when SQL statement failed removed.&lt;br /&gt;
* Fix for dbmod_pymssql: Problems with non-ASCII characters in primary key columns solved.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.2 [2012-11-26]===&lt;br /&gt;
* Test version of new dataset inventory added: If ABCD 2.06/HISPID5 is mapped, it will list all datasets published by the web service with the respective XML/DwC archives, if present.&lt;br /&gt;
* Bugfix: When on the DB Connection page of the config tool the Save button was pressed after the user had been logged out because of a long period of inactivity, the settings were lost. This has been fixed.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3.1 [2012-11-09] ===&lt;br /&gt;
* Archiving: Archive name is now set automatically by BioCASe; various smaller changes.&lt;br /&gt;
* Upgrade feature changed; now possible to a schema with the same namespace. For example, an existing ABCD 2.06 schema mapping can now be upgraded to ABCD-EFG or ABCD-DNA and vice versa. More upgrade paths added.&lt;br /&gt;
* Fixes&lt;br /&gt;
** dbmod_odbc_tsql now lists tables of all schemas (not only dbo)&lt;br /&gt;
** dbmod_oracle/oracle now use correct format for date/datetime conversion&lt;br /&gt;
** base_dbmod: Bugfix for filter parameters with unicode characters (used to break the request in certain cases)&lt;br /&gt;
** Bugfix for conversion of XML data type &amp;quot;date&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.3 [2012-10-04] ===&lt;br /&gt;
* Archiving can now be triggered from outside the UI through a deep link (allows scheduling)&lt;br /&gt;
* Datasource Overview now lists DarwinCore Archives; several smaller changes in UI.&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Ordering the result of a Scan request is now done in the database. This prevents problems when the collation of the DBMS is different from Python&#039;s.&lt;br /&gt;
** Concept count in config tool (datasource overview) corrected: Now includes attributes of hierarchy elements. The count now includes leaf elements that can store data and all attributes.&lt;br /&gt;
** Dummy files added to empty folders to prevent WinZip from ignoring them.&lt;br /&gt;
** Local QueryTool: Umlauts in scientific names are now replaced with placeholder *&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 [2012-07-09] ===&lt;br /&gt;
* DarwinCore Archives fully integrated into config tool interface&lt;br /&gt;
* Changes for XML archiving:&lt;br /&gt;
** Log files are kept for old archives and can be viewed later even if a XML archive generation for the same file name was started, but was not finished successfully (in the past, this used to overwrite the old log file)&lt;br /&gt;
** Log files of failed or cancelled archiving runs can be viewed later&lt;br /&gt;
** If errors occur during archiving, the log output is less arcane now (e.g. when ceODBC is used)&lt;br /&gt;
** Format of output changed&lt;br /&gt;
* Fixes for page &#039;&#039;DB Structure&#039;&#039;:&lt;br /&gt;
** DB graph generation works now also when IIS is used&lt;br /&gt;
** No exception thrown in case there is no connection to the database&lt;br /&gt;
* Other fixes:&lt;br /&gt;
** Removing a schema mapping in the config tool doesn&#039;t break the Capabilities any more (PSF is updated to reflect this change)&lt;br /&gt;
** install/readme files updated&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 [2012-04-23] ===&lt;br /&gt;
* Fixes for XML archives:&lt;br /&gt;
** Compatibility issue with IIS solved (root directory returned by webserver is different from Apache&#039;s, see http://osdir.com/ml/python.web/2005-10/msg00008.html)&lt;br /&gt;
** Webinterface overhauled; reacts faster now because server interaction has been reduced&lt;br /&gt;
** If webinterface is left open in the browser during archive generation, less load is put on the server for showing the progress&lt;br /&gt;
** XML declaration added to documents&lt;br /&gt;
** If documents contain elements from several schemas (e.g. an extension is used), all namespaces are added&lt;br /&gt;
** Bugfix for the case that no results are returned for the chosen mapping.&lt;br /&gt;
** Archiving binary moved from archive working folder to archive lib folder&lt;br /&gt;
* Metadata retrieval added for pymssql (SQL Server connectivity package)&lt;br /&gt;
* Error message for dbmods that don&#039;t support parameters (such as pymssql) is less arcane now (dbmod_base changed)&lt;br /&gt;
* &amp;quot;Wrong&amp;quot; error messages removed for unicode datasources and in mapping editor&lt;br /&gt;
* Setup script now fixes write permissions for archive folders (working/download directory)&lt;br /&gt;
* Hint on the usage of literals and concatenation added to mapping editor&lt;br /&gt;
* Bugfix in library test page (for the case that Apache has different access privileges than Python)&lt;br /&gt;
* Bugfix in Mapping Editor for literals containing unicode characters&lt;br /&gt;
* Bugfixes for deleting a datasource:&lt;br /&gt;
** Archive folders will now be correctly removed (both working and download directory)&lt;br /&gt;
** Deleting a datasource with the same name as a previously deleted datasource that is still in the recycling bin now works; it will replace the old version in the recycling bin&lt;br /&gt;
* Bugfix for start page: Leftover debug code removed that always logged an error (&amp;quot;in index&amp;quot;)&lt;br /&gt;
* Bugfix for IIS: Error message &amp;quot;No handlers could be found for logger lib&amp;quot; removed&lt;br /&gt;
&lt;br /&gt;
===Version 3.0.1 [2012-04-05]===&lt;br /&gt;
replaced by 3.1&lt;br /&gt;
&lt;br /&gt;
===Version 3.0 [2011-12-14]===&lt;br /&gt;
* New feature: XML Archives (integrated into UI), DwC Archives (separate application)&lt;br /&gt;
* List of table/column names now also available for Oracle databases&lt;br /&gt;
* &amp;quot;Report a bug&amp;quot; links added&lt;br /&gt;
* Fixes in wrapper core:&lt;br /&gt;
** ORDER BY clause now always used in first query when paging (necessary also when OFFSET is used)&lt;br /&gt;
** Python-sorting of ID list returned by first query removed (already done by DB; caused problems under certain circumstances when paging because Python sort order might be different from DB sort order)&lt;br /&gt;
* Optimization in wrapper core: &lt;br /&gt;
** Check for uniqueness of IDs in the list returned by first query only done when this is not alreay done by DISTINCT clause in query.&lt;br /&gt;
** Db_mod Oracle now uses paging optimization.&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC2 [2011-11-24]===&lt;br /&gt;
&lt;br /&gt;
===Version 3.0RC1 [2011-11-01]===&lt;br /&gt;
&lt;br /&gt;
== Version 2 History ==&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.1 [2011-08-23]===&lt;br /&gt;
* Test for write-protected files in Testlibs page now ignores Subversion directories, thus avoiding false alarm.&lt;br /&gt;
* &#039;&#039;Help&#039;&#039; links now point to the respective sections of the new PyWrapper Wiki.&lt;br /&gt;
* Link to FAQ added to the encoding error page (which can be used to alter system enocding).&lt;br /&gt;
* Non-existing upgrade function removed from setup script.&lt;br /&gt;
* Bugfix for HISPID5: Missing value &amp;quot;unknown&amp;quot; added to the CoordinateMethod vocabulary.&lt;br /&gt;
* Bugfix in XML Handler for unary operators (isNull, isNotNull).&lt;br /&gt;
&lt;br /&gt;
===Version 2.6.0 [2011-06-07]===&lt;br /&gt;
New Features:&lt;br /&gt;
* Table Setup completely overhauled: Tables/Columns will now be retrieved from the database and shown in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* Mapping Editor now shows table columns in drop-down-boxes when Postgres, MySQL, MS SQL Server, Access or Foxpro are used.&lt;br /&gt;
* When MySQL or Postgres is used, for Search requests the OFFSET SQL clause is used now for paging; this improves performance for harvesting large datasets considerably.&lt;br /&gt;
* Support for DNA extension of ABCD (data model for the DNA Bank network) added&lt;br /&gt;
* Mapping Editor shows XML Path for current element&lt;br /&gt;
* Deleted datasources and schemas will now be moved to a recycle bin and can be restored later.&lt;br /&gt;
* Several confirmation dialogs and smaller changes in UI.&lt;br /&gt;
* mxODBC package (not free for academic use any more) replaced with Open Source package ceODBC&lt;br /&gt;
* &amp;quot;Mapping Test&amp;quot; in mapping editor now uses the Query Forms, which are more reliable.&lt;br /&gt;
&lt;br /&gt;
Bugs fixed:&lt;br /&gt;
* Session management: User gets logged out only when inactive for more than 30 mins.&lt;br /&gt;
* Bugfix for unicode characters in mapped literals.&lt;br /&gt;
* Mapping editor: Added elements do not disappear temporarily any more.&lt;br /&gt;
* Subversion users: BPS now can handle write-protected svn folders when removing a datasource.&lt;br /&gt;
* Graphviz dot binary now works also when installed in a folder with a name containing spaces&lt;br /&gt;
* Creating multiple mapping files for same namespace will be prevented now&lt;br /&gt;
* Display issues for paths containing &amp;quot;\b&amp;quot; and &amp;quot;\t&amp;quot;&lt;br /&gt;
* Filters combining two comparison operators that always evaluate to FALSE with OR will now be compressed correctly to FALSE, not TRUE. This prevents the Provider Software from returning any results if, for example, the filter of a Search  request combines two LIKE-operators on unmapped concepts with the logical operator OR.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.4 [2010-09-14] ===&lt;br /&gt;
Withdrawn; changes included in version 2.6&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.3 [2010-05-12] ===&lt;br /&gt;
* Support for HISPID5 added&lt;br /&gt;
* Bugfix CMF upgrade&lt;br /&gt;
* Bugfix QueryTool (Stylesheet transformation error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.2 [2009-10-01] ===&lt;br /&gt;
* Bugfix QueryTool (Unicode conversion error)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.1 [2009-01-25] ===&lt;br /&gt;
* Security Bugfix (database credentials removed from debug output)&lt;br /&gt;
&lt;br /&gt;
=== Version 2.5.0 [2008-04-29] ===&lt;br /&gt;
* replaced XSLT library, mx.DateTime &amp;amp; PyXML with 4suite &amp;amp; python native libraries (ElementTree, datetime). No external libraries are required anymore, just 4suite for xslt processing if you want to use the querytool (and you dont need to install the horrible libxml2 anymore)&lt;br /&gt;
* removed all metakit lib dependencies, thereby removing the concept finder window in the configtool. To select a new concept for mapping you can list all concepts of a schema or enter the xpath to one.&lt;br /&gt;
* Introduced a new &#039;&#039;cache&#039;&#039; directory where all temporary files go like user session data, pickled CMFs or temporary configtool files. To remove any cached files you can now simply empty this one folder!&lt;br /&gt;
* remove many old relicts that were never used like datasource metadata, system metadata, database autodiscovery, etc (all nice features to have for a future release, but they were never implemented so far)&lt;br /&gt;
* Use a new config singleton based on some simple ini text files. Incl a new parameter &amp;quot;prettyprint&amp;quot; to format the output nicely&lt;br /&gt;
* When creating a new datasource you can now select template datasources like Brahms6, a training db, ABCD2.06 metadata tables or NoDIT2&lt;br /&gt;
* Replaced the entire logging system with python file logging. Separate debug logs for each datasource plus global request &amp;amp; error logging&lt;br /&gt;
* new sesion based login that stays&lt;br /&gt;
* updated setup.py script&lt;br /&gt;
* changed the library test page&lt;br /&gt;
* and last but not least for developers: cleaned up quite some code&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.2 [2006-11-16] ===&lt;br /&gt;
* configtool mapping pane. use anchors to go back to last editing position&lt;br /&gt;
* typeconverter: some dates were not correctly converted to xs:dateTime. Adding a &amp;quot;T00:00:00&amp;quot; solved it.&lt;br /&gt;
* ABCD2.06 CMF template updated to contain the allowed enumeration of ranks!&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.1 [2006-06-26] ===&lt;br /&gt;
* Football Worldcup 2006 logos included&lt;br /&gt;
* minor bugfixes (dead links)&lt;br /&gt;
* admin password management fixed&lt;br /&gt;
&lt;br /&gt;
=== Version 2.4.0 [2006-04-06] ===&lt;br /&gt;
* move most of the querytool_prefs to the new skin.xml preference file within a skin folder. Leave only list of concepts for form in old querytool_pref.xml. Modified querytool_prefs schema&lt;br /&gt;
* webapps log into rotating files instead of screen&lt;br /&gt;
* updated CMF parser service link&lt;br /&gt;
* configtool catches errors for unknown static aliases&lt;br /&gt;
* querytool XSLTs for abcd &amp;amp; abcdefg2.06&lt;br /&gt;
* remove wrapper_config.xml&lt;br /&gt;
* removed character encoding bug in CMF pickling.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.2 [2006-03-06] ===&lt;br /&gt;
* ABCDEFG extension 1.0 for Earth sciences included&lt;br /&gt;
* List available character encodings for python2.4 and 64bit systems&lt;br /&gt;
* QueryTool capable of querying DiGIR providers for details.&lt;br /&gt;
* new synthesys/biocase QT skin&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.1 [2005-11-30] ===&lt;br /&gt;
* new 4th dimension dbmod!&lt;br /&gt;
* record filters inside CMFs fixed&lt;br /&gt;
* works with NoDIT v2 again&lt;br /&gt;
* GCP Passport 1.03 added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.3.0 [2005-11-03] ===&lt;br /&gt;
* compatible with Python 2.4 /!\ Using a new metakit compilation for windows.&lt;br /&gt;
* Graphviz&#039;s dot is being used to visualize the database structure.&lt;br /&gt;
* ABCD 2.06 included instead of ABCD2.05&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.4 [2005-10-13] ===&lt;br /&gt;
* include PonTaurus example db&lt;br /&gt;
* scans without a filter crashed with some dbmods. bug fixed.&lt;br /&gt;
* use select distinct in access for scans&lt;br /&gt;
* ConfigTool includes graphical view of the db structure graph through graphviz dot images&lt;br /&gt;
* CMF filters with scan filters crashed the wrapper. solved.&lt;br /&gt;
* typeconverter: fixed bug in transforming zero-length strings to integers.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.3 [2005-09-01] ===&lt;br /&gt;
* &amp;quot;upgrade&amp;quot; from abcd 2.05 to abcd 1.20 crashes the config tool no more&lt;br /&gt;
* abcd2.05 debugform templates included&lt;br /&gt;
* fixed scan problem with oracle8 module&lt;br /&gt;
* fixed connection problem with native firebird module&lt;br /&gt;
* Querytool allows to view raw xml&lt;br /&gt;
* Querytool can handle unicode queries now&lt;br /&gt;
* Concatenation with pure whitespace works now in wrapper output&lt;br /&gt;
* database module is logged again into the protocol header. was broken before&lt;br /&gt;
* if request filter evaluates to False (because concept is not mapped for example), dont query database with an SQL &amp;quot;... WHERE False ...&amp;quot; but return no results immediately.&lt;br /&gt;
* configtool removes now non mapped concepts after pressing &amp;quot;revert&amp;quot; or re-entering the mapping section&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.2 [2005-07-22] ===&lt;br /&gt;
* Include a button to show all concepts in the mapping tools directly without the need to use the concept retrieval tool. Works wit all CMFs.&lt;br /&gt;
* Update MCPD CMF template to include w3c types.&lt;br /&gt;
* Include new page to create your own CMFs from custom XML schemas with the help of a BGBM TAPIR service.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.1 ===&lt;br /&gt;
* Alternative root tables for SPICE wrappers work now correctly.&lt;br /&gt;
* Hierarchy requests in SPICE parse correct ID parameters now.&lt;br /&gt;
* corrected SPICE1.3 CMF template&lt;br /&gt;
* full Berlin Model SPICE CMF example&lt;br /&gt;
&lt;br /&gt;
=== Version 2.2.0 [2005-07-18] ===&lt;br /&gt;
* System section of configtool can modify .configuration (domain, baseURL, admin password) file and gives overview about DSA passwords.&lt;br /&gt;
* setup script included to handle basic configuration, system adaptation and an upgrade facility for existing BPS2 installations.&lt;br /&gt;
* SPICE 1.3 supported with a single CMF now! Search is being done on seperate genus, species and infraspecies fields now. Spice queryforms and IOPI/Berlin model example mapping updated.&lt;br /&gt;
* ABCD 2.05 included (template,upgrade,example), the candidate for the final TDWG ABCD standard.&lt;br /&gt;
* Bugfixes in configtool, mapping section:&lt;br /&gt;
** Internet Explorer compatability fixed (no tablealias names were saved)&lt;br /&gt;
** CMF filter display fixed. Colored green now&lt;br /&gt;
** Allow special mappings (TotalMatchedRecords) to be displayed and saved correctly&lt;br /&gt;
** Fixed minor display problems with attributes&lt;br /&gt;
* fixed a serious new bug of the configtool that does not allow to add new tables to the db structure&lt;br /&gt;
* Allow case insensitive like searches in oracle if wanted.&lt;br /&gt;
* The performance debug logging works again&lt;br /&gt;
&lt;br /&gt;
=== Version 2.1.0 ===&lt;br /&gt;
* CMF/schema version upgrade facility integrated into the configtool. By using Altovas mapforce to graphically map 2 schemas or versions of the same schema (e.g. ABCD 1.20 to ABCD 2.0, or ABCD1.20 to DarwinCOre and vice versa), it is now possible to upgrade your datasource configuration to support similar schemas. Thanks to Synthesys!&lt;br /&gt;
* SPICE search: bug removed with genus search including the wildcard&lt;br /&gt;
* SPICE: empty root element returned if no result was found. Debugging as html comments output was broken - fixed!&lt;br /&gt;
* optional XML attributes bug removed. optional attributes were sometimes treated as mandatory ones. relevant for SPICE&lt;br /&gt;
* cfgtool attr display: sort order in configtool now shows attributes always below its element and displays the attributes name only with @ instead of the entire element name&lt;br /&gt;
* oracle dbmod improved. Paging has to use subqueries to guarantee that ordering takes place BEFORE the rownum limit. See Oracle FAQ http://www.orafaq.com/faqsql.htm#ROWXtoY&lt;br /&gt;
* attribute mapping synching repaired. It is possible now to sync the mappings of an element with several attribute mappings&lt;br /&gt;
* bug in local conditional mapping removed.&lt;br /&gt;
* logging fixed (error and request)&lt;br /&gt;
* only use &amp;quot;text&amp;quot; instead of &amp;quot;string&amp;quot; and &amp;quot;unicode&amp;quot; everywhere now in the code.&lt;br /&gt;
* ConfigTool: deletion of primary keys, foreign keys and tables works again [Ben Richardson].&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.3 ===&lt;br /&gt;
* SPICE search: Modify search string for genera only by adding &amp;quot; *&amp;quot; and normalize whitespace.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.2 ===&lt;br /&gt;
* Limit for Oracle via ROWNUM implemented for ora8,9&amp;amp;10&lt;br /&gt;
* Include a Linux, Windows &amp;amp; MacOSX binary build of metakit. Solaris users still have to build it themselves.&lt;br /&gt;
* SQLLite module added&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.1 ===&lt;br /&gt;
* ABCD 2.0 CMF included&lt;br /&gt;
&lt;br /&gt;
Bugfixes&lt;br /&gt;
* Configtool&lt;br /&gt;
** Lot of little bugs solved.&lt;br /&gt;
** Make possible to map attributes&lt;br /&gt;
** Be able to delete mappings&lt;br /&gt;
** Alert user when several CMFs with the same namespace exist for a datasource&lt;br /&gt;
** Allow full xpaths to be entered directly into the add path form&lt;br /&gt;
** allow datasource admin to delete all serialized objects&lt;br /&gt;
* QueryTool&lt;br /&gt;
** More inteligent XSLT for processing&lt;br /&gt;
* PyWrapper&lt;br /&gt;
** Solved error with wrapper not presenting attributes&lt;br /&gt;
** Empty elements are now excluded in the output.&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0.0 ===&lt;br /&gt;
* SPICE protocol supported for Species2000 CDM 1.20&lt;br /&gt;
* completely rewritten config tool including a concept retrieval interface to search for concepts&lt;br /&gt;
* completely rewritten an adaptable query tool with skin support&lt;br /&gt;
&lt;br /&gt;
== Version 1 history ==&lt;br /&gt;
=== Version 1.6b ===&lt;br /&gt;
* needs at least version 1.4b of the pywrapper&lt;br /&gt;
* added pywrapper skeleton for new species2000 protocol&lt;br /&gt;
* cleaned the querytool sourcecode (thanks to Doreen Pahlke)&lt;br /&gt;
* added little script &amp;quot;cmfupdater.py&amp;quot; to biocase/cgi that updates all existing CMFs of the installation to the latest CMF version.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.56 ===&lt;br /&gt;
* Removed authorization bug when entering non ascii characters as the password.&lt;br /&gt;
* added more database modules for (upcoming) new pywrapper version: Sybase, Firebird, PostgreSQL via psycopg&lt;br /&gt;
&lt;br /&gt;
=== Version 1.55 ===&lt;br /&gt;
* NoDIT v2 metaprofile templates and preconfigured database corrected&lt;br /&gt;
* added a GBIF registration method in the configtool&lt;br /&gt;
&lt;br /&gt;
=== Version 1.54 ===&lt;br /&gt;
* added a query engine prototype for CMF concepts to the configtool&lt;br /&gt;
* more database modules supported (Oracle8, FoxPro)&lt;br /&gt;
&lt;br /&gt;
=== Version 1.52 ===&lt;br /&gt;
* added URL encoding service in cgi-test.&lt;br /&gt;
* added AltText to images.&lt;br /&gt;
* removed bugs in config-tool when editing dbType for foreign key attributes and added FoxPro dbmod to menu.&lt;br /&gt;
* Updating the cgi-test script to fully support Unix systems.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.5 ===&lt;br /&gt;
* Includes the fully working version 1.0 of the config-tool to edit WCF, PSF and CMF files. Structural CMF editing is not yet supported as well as guidance for ABCD.&lt;br /&gt;
* template subdirectories renamed. Subdir &amp;quot;wrapper-skeleton&amp;quot; now contains the skeleton for new database directories, which comes without any CMF template. CMF templates are now hosted in the config-files subdirectory.&lt;br /&gt;
* private config directory used now for wrapper_config.xml, providerlist.xml and all other future configuration files that should be private.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.41 ===&lt;br /&gt;
* first release including the query-tool&lt;/div&gt;</summary>
		<author><name>JoergHoletschek</name></author>
	</entry>
</feed>