Unity 3.1.X provides is mostly a bugfix release on top of huge 3.0.0 release, however it provides also two new, important features.

Selective database dump/restore

So far Unity allowed to export an (almost) complete database contents to JSON and subsequently import it. This worked fine before 3.0 release, as after importing the data into running server, it was softly re-initialized. During the re-initialization, by default, Unity was setting up all file-configured settings: endpoints, authenticators, realms and more. In effect any of those settings imported from the JSON dump were overwritten immediately after import, leaving only directory schema and members. This situation was typically a good one, as endpoints & friends were anyway managed in configuration files, which could be copied separately when needed.

With changes introduced in Unity 3, this mechanism stopped to be practical: Unity by default is not overwriting DB-stored configuration from config files anymore, because of complete system control in Admin Console.

In Unity 3.1.0 this problem was addressed by introducing new capabilities in JSON dump export. It is possible to export only a directory alone, or directory together with basic system settings (including services, authenticators, …). What’s more it is possible to transfer only system basic setup without directory, or even only directory schema (groups tree, attribute types, classes) without members.


Multi-group bulk query

A new operation was added to the Admin REST API. It allows for retrieving – with a single query – members with attributes from multiple groups. Groups can be enumerated, or all groups under a given parent can be fetched.

Querying multiple groups was possible before by requesting all groups of interest one by one with separate queries. While the old approach was working, the new one is superior in case of speed. In our tests, using MySQL backend installed locally, and setup with 5000 queried groups, 50.000 memberships in those groups and 150.000 dynamic attributes in total the time difference between serial queries on Unity 3.0 and a single call to new API in 3.1 was around 1000 times in favor of the new API. On smaller data sets this will be for sure smaller, but for large deployments this API endpoint can become a critical element.