What's new in HALE 2.9?

HALE 2.9 comes with some nice new features since the last release HALE 2.8.0 - among other things a free configurable command line interface for transformation, improved INSPIRE support and some bug fixes.

Please note that projects created with HALE 2.9 in some cases may be incompatible with previous versions of HALE. This is because the project file format has been extended, but the project file parser in HALE 2.8 and earlier is very strict and fails if it encounters anything unknown.


HALE 2.9.4 is a maintenance release with a few tweaks and bug fixes, but also two noticeable experimental features that were added.

New features

GeoServer App-Schema configuration Publishing OGC services based on GML Application Schemas and Complex Features with GeoServer is now easier than ever. You can use HALE to define and manage the mapping from your data store to an application schema and upload the resulting configuration for the GeoServer App-Schema plugin directly to your GeoServer instance.

This is the first release of this integration of HALE and GeoServer and though functional, should still be considered experimental. Please see the GeoServer App-Schema Plug-in for HALE help for more information on usage and limitations.

Thanks to GeoSolutions and Stefano Costa for this contribution to HALE.

Inline transformation When you encounter complex embedded structures in your data (like for instance embedded Features), even with the powerful declarative approach of HALE, the mapping can get quite complicated. Especially when the same structures in the source often have the same structure in the target to be transformed to, there should be a possibility for reuse. With the Inline transformation function you have the possibility to make use of a type transformation defined in the mapping for any transformation of properties that have the corresponding source and target type.

As an example, let's assume we are looking at a mapping between different CityGML schemas or ADEs. In both source and target there is the concept of a Building and a BuildingPart. BuildingParts can be features on their own, thus a mapping is defined based on a Retype between the corresponding source and target types.
Buildings however can also contain BuildingParts, and to transform these internal BuildingParts we can use the Inline transformation to tell HALE that it should transform the internal objects the same way as it would standalone features, with the additional step to include it in the respective target property.

Tweaks & bug fixes

CLI: Transform folders The command line interface has been extended with the capability to use whole folders as source for the transformation. Files to include or exclude can be specified with corresponding patterns. This can be very handy if you have a set of files to transform, for example if your data set is tiled or files are generated and the file names are unknown beforehand.

Thanks to Landesbetrieb Geoinformation und Vermessung Hamburg for funding this work under a Professional Support Subscription for HALE.

Namespace agnostic loading of XML/GML HALE relies on schemas for transformation and handling data. If you have data that is very similarly structured but has a different schema, the difference often is a difference in namespaces. This can be the case for instance when using data based on a previous version of a schema or for data that is published via an OGC Web Feature Service. Now there is an option when loading XML or GML data, that instances will be loaded even if the namespaces do not match the schema's exactly.

Thanks to HL Consulting BVBA for funding this work under a Professional Support Subscription for HALE. They use this feature to define their alignments on a schema that allows them to make extensive use of relation inheritance in their alignment, to have one mapping that they can use to transform data from different services.

Minor tweaks
  • Added an option for loading an XML Schema that allows to use all globally defined types for the alignment.
  • Deprecated INSPIRE SpatialDataSet export, as INSPIRE now recommends to use a WFS 2.0 FeatureCollection instead.
  • Support generating a Dataset Feed file for an ATOM-based INSPIRE predefined Dataset Download Service when exporting to a WFS 2.0 FeatureCollection.
  • Groovy type transformations can throw a NoResultException to prevent the creation of a target instance.
  • Added a Groovy variant of the Join transformation that allows for more control on the creation of transformed instances.
  • Introduced the concept of helper functions available from Groovy scripts. Currently included are helpers for dealing with geometries and performing type conversions.
  • Structural copies with Rename and Retype can now explicitly exclude geometry objects parsed by HALE, for cases where the original geometry encoding should be retained.
  • A default SRS can now be specified on the command line, for reading data from a specific source, in case HALE cannot correctly detect the SRS.
  • Handling foreign key constraints during the export to a database has been improved.
Bug fixes
  • Fixed erroneous flipping of coordinates when displaying geometries in the map view (Thanks to Willem Stolte for the bug report).
  • Fixed the File Dialog on Mac OS X being rendered unusable after first use (Thanks to Olav Peeters for the bug report).
  • Fixed handling of nillable complex XML elements containing only a nilReason (Thanks to Ann Crabbe for the bug report).
  • Fixed proxy configuration not being applied when loading code lists, accessing the INSPIRE registry or loading web templates.
  • Fixed Merge type transformation configuration for property names containing dots (Thanks to Willem Stolte for the bug report).
  • Fixed encoding of simple type lists in XML.
  • Fixed handling of target URI without path in the Command Line Interface.
  • Fixed handling of absolute file locations in the Command Line Interface on Windows.
  • Fixed live validation based on XML Schema which sometimes treated null values wrong.
  • Fixed UI problems when using type conditions and custom map styles.
  • Fixed the inconsistent behavior on which instances can be retrieved from the internal temporary database in comparison to a file or other source.


HALE 2.9.3 is a maintenance release with a few tweaks and bug fixes, but also two noticeable features that were added.

New features

Support for SQLite and SpatiaLite You can now work with SQLite and SpatiaLite files using HALE. This was made possible by a contribution from GeoSolutions. Special thanks to Stefano Costa and Sandro Salari!

Please see the corresponding help topics for more information on SQLite/SpatiaLite import and export.

Colored styles generator Create individual styles for your feature types with just one click. Using specific styles provides a better overview in the map. To easily identify associated types, the type symbol reflects the style.

As an additional option you can quickly assign a random color to a selected type. For more control specify a custom style with the style editor.

Tweaks & bug fixes

INSPIRE 4.0 schema presets Experienced HALE users know they can load any GML/XML Schema using the corresponding XSD file. However, it's more convenient to just search and select a schema from the presets defined in HALE. INSPIRE version 4.0 schemas now included.
Improved UX for INSPIRE voidable attributes When assigning a nilReason for a voidable attribute, so far you were offered the values that are proposed by GML, not those defined in INSPIRE. To make it more convenient for you, you can now select from the INSPIRE values unpopulated, unknown and withheld, even though those are not defined in the schema itself. Thanks to Helen Eriksson for this idea on making it easier for users to map to INSPIRE schemas.
Minor tweaks
  • Schema Explorer: added filter to hide unpopulated types (e.g. for large schemas).
  • Improved GML export: srsDimension is provided and you can select a preferred prefix for representing EPSG codes.
  • You can now specify a character encoding to use when loading a schema from a Shapefile.
  • Excluding types from the mapping via the Schema Explorer now works also with a selection of multiple types.
Bug fixes
  • Fixed wrong detection of GML namespace that could happen if certain GML 3.3 schemas were imported in a schema (Thanks to Fabio Vinci for the bug report).
  • Fixed error on XML export that could lead to an invalid file (Thanks to Giuseppe Procino for the bug report).
  • Fixed parsing GML geometries defined through a Ring instead of a LinearRing.
  • Show 3D WKT (instead of 2D WKT) for 3D geometries in the data views.
  • Fixed error that could lead to a Merge relation no longer being editable after a schema upgrade.
  • Variable values for Groovy scripts are no longer converted and passed as a String by default.
  • Fixed deadlock that could occur when disabling the Groovy restriction when a project is loaded.
  • Fixed behavior that could lead to a drastic performance loss for Merge and Join operations on very complex instances.
  • Fixed saving a project as a project archive if resources include a query string (e.g. WFS requests).


HALE 2.9.1 is a maintenance release with a few tweaks and bug fixes, but also some experimental features that were added.

Experimental features

Publish to WFS Publish GML to a transactional Web Feature Service, for instance for publishing INSPIRE data to a deegree server.

Please see the Transactional WFS help topic for information on usage and limitations.

Database export Experimental support for writing to databases via JDBC.

Please see the Database export help topic for information on usage and limitations.

Schema update A new option in the menu allows to replace the schema for an existing project (e.g. updating from a schema to a new version). The migration dialog allows to update the mapping accordingly. We are still working on an improved UI and currently only updating the target schema is possible.

Tweaks & bug fixes

Better support for accessing data provided via WFS The user interface to construct WFS DescribeFeatureType and GetFeature URLs for loading schemas and data has been improved. It now supports WFS 2.0 and providing a Bounding Box for loading data.
Minor tweaks
  • Pretty printing of XML/GML disabled by default - configurable for the export
  • Code lists loaded from the INSPIRE registry now display values in the system language if possible
  • Support for export of GML files using WFS FeatureCollection as container
  • Added Aggregate function for smart aggregation of geometries
  • Prefer MultiSurface over CompositeSurface when encoding MultiPolygons as GML
Bug fixes
  • Fixed GML encoding of curve geometries - invalid curve geometries will give an error during export
  • Fixed UI for Classification and Bound Assign functions
  • Added general timeouts for HTTP requests, timeouts are now configurable via system properties


Extended command line interface For integrating schema transformation based on HALE into your infrastructure an easy way is to use the command line interface. Some have already used the command line interface part of the integration with the HALE FME plug-in - but this is very limited in functionality. The new command line interface is far more flexible in its configuration and allows data export to be easily configured with support through the HALE user interface. HALE plug-ins and extensions offering additional data format or validation support can be used with minimal effort.

For detailed information on the command line interface, please see the Transformation via the command line help topic.

Dataset feed for INSPIRE Download Service HALE aids you in creating an ATOM feed based INSPIRE download service by generating a dataset feed for your transformed data automatically. Just enable the creation of the feed in the INSPIRE SpatialDataSet export and provide some basic information for the feed metadata. Information on feature types and coordinate reference systems will be included automatically.

For a complete ATOM based INSPIRE Download Service you will need to include the dataset feed in a download feed. Take a look here for more information and a template.

CRS conversion You can now include a conversion to a given coordinate reference system (CRS) as part of writing the transformed data to GML. You can identify the CRS with an EPSG code or define a custom CRS using a WKT representation.

Easily copy similar attributes Do you have source and target schema types that are very similar and differ just in a few properties or only the namespace? Now the Retype transformation function has configuration options to automatically copy properties/attributes with similar names. To do this only on the level of a certain property, use the Rename function and configure it as structural rename.
Excel file support Similar to the support for CSV files you can now read or write simple Excel files (.xls, .xlsx) with HALE. For more information, see Excel File Import and Excel File Export.

Are Excel files potential source data you need to transform? Let us know your requirements for an extended Excel support.

Cope with schema changes Easily adapt a mapping created for a different version of a schema. When HALE encounters a mapping of a schema element that no longer exists (e.g. because it has been renamed or deleted), it will ask you to select an element from the current schema instead. You also have the option to cancel and keep the now invalid relation instead.

Load code lists from INSPIRE registry Browse and search the code lists from the INSPIRE registry provided by the JRC and directly load them in HALE.

INSPIRE Annex II & III schemas The INSPIRE Annex II and III themes application schemas are now included in HALE, for faster loading and offline usage. Also check out the INSPIRE project templates (FileNew project from template) to get you started faster on your transformation towards INSPIRE.
Export source data The same options you have for export of transformed data are now available for source data as well. This means you can easily export data in the same structure but in a different encoding, for instance XML as JSON.
Copy property values to clipboard

The data views now allow to easily copy values from inspected instances to the clipboard for further use or detailed inspection.

Easily find source or target In addition to the possibility to filter based on CQL, you can search for specific instances in the data views by their internal HALE identifiers. These identifiers are displayed in the data views for each instance in the metadata category.

This allows you to easily find a source instance for a transformed instance, or a transformed instance for a source instance. To find the source instance for a transformed instance, copy the identifier displayed as Source ID for the transformed instance, and specify a filter with the identifier preceded by id: in the source data view. The respective prefix for finding transformed instances for a source instance in the transformed data view is source:

New mapping documentation format Additionally to the existing mapping documentation HTML format that is more suited for printing, we added a new mapping documentation format based on HTML and SVG that is better suited to be displayed in a web browser.

Map database schemas without database access HALE now caches certain types of schemas as part of the project, in case the resource to load the schema from is not accessible. This allows you to share projects that use your database schema without the need for them to be able to connect to the database.
Safer execution of Groovy scripts With the Groovy transformation functions you practically can do anything - but that doesn't only have good sides. HALE by default restricts the execution of Groovy code as part of the transformation to allow access only to certain classes and methods. If you trust a project's Groovy code, you can disable the restriction, which also allows a more performant execution.

Assign - back to the roots In one of the previous releases the Assign transformation function has been extended with the possibility to only apply it if a certain source property value is present. This change in the function has led to some confusion and accidental misconfiguration of relations. The Assign function now again is a pure augmentation, that has no connection to the source schema. Instead there now is an additional function Assign (Bound) that requires a source schema element as anchor. This doesn't break any existing mappings, existing assigns will be replaced on load with the bound assign if applicable.
Other stuff There is a lot more that has changed under the hood for the 2.9 release. Apart from a lot of bug fixes and an upgrade of the underlying platform from Eclipse Indigo to Eclipse Luna, there also was a new build system introduced that allows us to again provide an installer for Windows and a version of HALE that runs on current Mac OS X operating systems.