Oskari version 1.49.0 is now available in GitHub, oskari.org download and the Maven repository. Here’s the list of changes: https://github.com/oskariorg/oskari-server/blob/master/ReleaseNotes.md and https://github.com/oskariorg/oskari-frontend/blob/master/ReleaseNotes.md

There’s a ton of changes again! The sample application that you get when you start Oskari for the first time now uses EPSG:3857 as the native coordinate system (customizable as before). The sample application is now named “example” (previously “sample”) to emphasize the fact that you should customize the geoportal setup for production as the example app may change between releases and you usually want to have control over the functionalities included in your instance. The example app uses vectortile basemap (with a couple of styles) from a more stable source so the actual map you see works more often than not which might have not been the case before.

Note that there are a couple of things you need to do while upgrading if you have customized your instance (https://github.com/oskariorg/oskari-server/blob/master/MigrationGuide.md#1490) as some of the frontend files have been bundled in to one on production builds and development is now also done using the same bundled code (using Webpack devserver) instead of loading a ton of files. The old build scripts for the frontend has been replaced by the Webpack-based script that was introduced on the previous release. Check the README.md on oskari-frontend for instructions. This is an absolute must. The frontend build is now very different from before and so is the developer experience. We also added ESLint testing for the frontend using Travis CI so you can expect any future PRs to be checked against these rules.

Also note that the Oskari-frontend repository is now cleaned up from most of the possibly unmaintained and/or app-specific code which have been moved to https://github.com/oskariorg/oskari-frontend-contrib. If there’s some paikkatietoikkuna.fispecific bundle that you want to look at they can be found in https://github.com/nls-oskari/pti-frontend. The pti-frontend uses code from both Oskari-frontend and Oskari-frontend-contrib and adds some app-specific stuff so it’s a decent example how to go about creating your own app-specific repository with build scripts etc for your instance. Think of it as Oskari-frontend-extension for Oskari-frontend like the Oskari-server-extension is for Oskari-server. We will be updating the documentation about these changes.

Note that there’s a change in the database schema that will most probably break your customized/application specific flyway-module WHEN installing to an EMPTY database. Any previously installed instances that are just now upgraded should work properly. The reason is that the “startup” column in portti_view_bundle_seq and portti_bundle database tables are no longer used and now have an enforced NULL-constraint. You can work around this by removing the constraint, but it’s up to you if you want to upgrade the app-specific migrations to NOT reference the startup column OR remove the constraint. Let me know if you have problems with this and we can figure it out together.

Also there a new Jetty 9 package available that will replace the current package next week (with 1.50.0 release). You can download it at http://oskari.org/build/server/jetty-9.4.12-oskari.zip. It has the same functionality as 1.49.0 but has updated Geotools, Geoserver, CometD, Jetty and probably some other libs as well. For the interested ones you can check the diff on GitHub as both oskari-server and oskari-frontend have a jetty-9 branch.

Here’s the release notes for 1.49.0:


For a full list of changes see: https://github.com/oskariorg/oskari-frontend/milestone/14?closed=1

Build script

The build script has now been completely migrated to Webpack and the old tools-scripts have been removed. Changes for the new script from 1.48.0 is that builds no longer point to a single minifierAppsetup.json but a directory hosting apps that can have the json-file OR main.js file as it’s a common use case to have at least one app for the geoportal and another for the embedded maps. The parameter for builds changed from “env.appdef=applications/application/guest/minifierAppSetup.json” in 1.48.0 to “env.appdef=applications/application” in 1.49.0. When the build is run it also generates a “main.js” file based on the minifierAppsetup.json. You can remove the json-file after running the build for the first time and start using the main.js as the main entrypoint for the app.

Bundles can now be loaded “lazily” meaning “lazy” bundles are not part of oskari.min.js but can be loaded and started as usual when referenced. This can be used to minimize the initial JavaScript payload users have to download. Bundles that aren’t used by all the users like admin bundles should be included in the app as “lazy”.

The devserver now passes additional http headers to Jetty so forwarded requests like logging in work properly with it.

The separate css-files that were previously referenced on the HTML (forms.css, portal.css and overwritten.css) have all been included in the oskari.min.css file. Icons.css is still a separate file. jQuery is now included in oskari.min.js as well.

Other build script improvements

  • Build script now provides a way to be used from another repository while referencing code from oskari-frontend/oskari-frontend-contrib repositories enabling application specific repositories like nls-oskari/pti-frontend.
  • Added a flag for build script to use absolute paths instead of relative
  • Added a script to create the sprite image for customized/app-specific icons.
  • babel-polyfill has been added to the build for IE support

Code quality

The code base has been formatted with ESLint configured settings. Any pull requests made in GitHub are now automatically checked against these rules using Travis CI. You can also check the settings by running “npm run test”.

Most of the calls to deprecated functions inside the oskari-frontend code have been updated to use the new versions of the functions so the developer console should only have warning for customized apps using deprecated functions. Note that the deprecated functions will be removed in a future version and you should update your apps to match the changes (see the browsers developer console for details). If you see no warnings it’s all good for your app.


Much of the app-specific functionalities and unmaintained code have been moved to a new repository: oskari-frontend-contrib. These can still be used with any oskari-applications, but they are not “officially” supported. Now everything in the oskari-frontend repository should work with new versions.

Also removed CSS-files that had corresponding SCSS files so it’s clear which one to edit.

Thematic maps improvements

  • Improvements for diagram flyout
  • Selected indicators are now listed on the indicator selection flyout and selections can be removed from that listing without the need to go the data table flyout
  • Performance improvements
  • Flickering reduced on statistical timeseries/indicator switching
  • Color animation added for timeseries
  • Other improvements and error handling added
  • The select component has been changed for indicator selection flyout
  • Map region borders are now shown even on point visualization

Other changes

  • Initial support for MVT vector tiles (the new example app now uses OpenMapTiles as basemap)
  • Vector tile layers can be styled using the Oskari style definition OR Mapbox styles
  • Openlayers updated to 5.2.0 (as npm dependency so using it has changed to ES6 imports instead of using the global “ol” object)
  • Some of the code like the mapmodule implementation has started migrating towards ES6-modules.
  • User geolocation can no longer move the map outside the map extent
  • Color selection for myplaces etc user generated styles now have a new color picker component
  • The info icon placement has been modified in printout and publisher to match the UI guide
  • MapLayerService.registerLayerModel() now supports functions/constructors as modelbuilders in addition to name to pass to Oskari.clazz.create()
  • CSS-styles have been streamlined and references to missing resources have been removed.
  • Publisher theme selection and the theme on map are now in sync. Previously you mnight have gotten the geoportal style on preview, but end up with the default style embedded map. This happened if the geoportal had customized style/didn’t have the default style
  • Content-editor and Download-basket bundles have been updated to work with current Oskari libraries (OpenLayers 5)
  • Fixed a bug in printout where zoom-levels on the map got mixed up after visiting the printout functionality
  • Admin layerselector now has a field for layer “options” which content is layer type specific (vectortilelayer styles are added using options)
  • Metadata presentation fixes and error handling
  • Fix for customized styles when user draws on the map
  • Link tool now allows user to select if guided tour should be skipped on link and if center marker should be shown
  • Toolbars tool selection color now works better on themes with light background
  • Fixed https://github.com/oskariorg/oskari-docs/issues/79


For a full list of changes see: https://github.com/oskariorg/oskari-server/milestone/13?closed=1

  • JSP-files modified to match the new frontend build. See migrationguide for details.
  • search-service-nls removed from oskari-server as it’s adapters for NLS Finland specific search channels. See migrationguide for details.
  • Added initial support for vectortile based layers
  • URLencoding added for some outgoing requests to improve parameters handling
  • Improved SearchChannel.isValidSearchTerm() error handling so single erratic search channel doesn’t prevent search results from showing.
  • Applications now halt on startup if migrations are not successfully completed. You can use the old functionality (force startup after bad migration) by having db.ignoreMigrationFailures=true on oskari-ext.properties.
  • Statistical regionsets that are hosted as resource-files can now have numeric IDs and are read as UTF-8 to support wider range of characters
  • The server now filters out statistical indicators without names so the UI doesn’t list empty/undefined indicators.
  • Error handling improved for CSW metadata parsing
  • Customized labels fixed for myplaces when a new/empty database is populated
  • Fix an issue with XML-parsing when Xalan library is in the classpath (For example SAML has Xalan)
  • Fix for layer group matching on database populator/layers now get proper groups
  • Removed “startup” info for bundles from database. All required bundles now have to be included in the frontend build.
  • oskari-server now has a new “example” app that replaces the previous “sample” app to make it clearer it’s an example that can be used to demo the software, but will change in releases so you shouldn’t use it as your own geoportal if you wish to have control over content and/or functionalities included in it.
  • There’s a new URL parameter for skipping the guided tour: showIntro=false
  • Print-functionality now supports ArcGIS REST raster layers.
  • PropertyUtil.getNecessary() now throws NoSuchElementException instead of plain RuntimeException so misconfigurations are easier to separate from actual errors.
  • Library updates

Thanks and happy updating 🙂