Xoom 3.3 has been released

We are pleased to announce the release of Xoom version 3.3. The release contains a new versioning script supporting per-item configuration versioning with Git, Mercurial and Subversion, major improvements on installation file information retrieval, some enhancements of Xoom Processor, usability improvements of Settings Migration Tool and some other minor improvements and bug fixes. The changes are listed in detail below.

New versioning script

We are introducing a completely rewritten versioning script that takes advantage of Xoom Processor‘s capabilities of retrieving and storing Xoom data in various ways and provides a much more robust support for the three supported revision control systems (Git, Mercurial and Subversion). Here is the summary of major improvements:

  • Taking advantage of a new capability that a result of a Xoom query can now be stored in a directory with a well-defined structure and multiple files each containing a single configuration item, the script now supports the storing of such directories in all three supported revision control systems. The result of such per-item versioning is a much more detailed change log, where the items that changed are immediately apparent without looking at the contents of what previously used to be a single large Xoom file containing thousands of items. This also means that there is now for the first time a very simple way of looking up the complete history of changes of each individual configuration item.
  • When several operations need to be performed on the result of a single query, for example an automated production of several reports from the same data, the subsequent reports can now be performed on a previously stored result of a query, eliminating the need to repeatedly query the server for the same information. This results in faster execution of a script and a lesser load on the Service Optimization server.
  • The support for revision control systems is now much more robust, with more built-in checks, more specific, more detailed and friendlier error messages, and higher degree of control over the behaviour of the script when things go wrong, such as whether partially successful retrieval of information should be committed or rolled back. In addition, the queries are now configured per repository and it is now much harder to accidentally store information outside the versioned directories.
  • A command line parameter specifying a commit message is now supported. This is particularly useful when the script is run interactively and there is a need to describe what changes were made and why. There are a number of other new command line parameters, the documentation of which can be seen using the standard Get-Help PowerShell commandlet.

File configuration retrieval

The component for file information retrieval has also been rewritten. The main two new capabilities are the ability to use Xoom parameter values and expressions in the Path definition for file information retrieval, and that recursive directory traversal is now supported.

The representation has also changed somewhat, and now looks like this:

<File xoom:id="File[${Xoom.InstallDirectory}|Reports\ReferencesReport.xsl]">
  <FullPath>C:\Program Files (x86)\Zany Ants\Xoom\Reports\ReferencesReport.xsl</FullPath>
  <LastModificationDate>2013-01-10 10:58:05</LastModificationDate>
  <Version />

FullPath is what used to be Path, and is now the only bit of information that is environment specific (and will hence be ignored when environments are compared, meaning that Xoom installed on disk C can easily be compared with Xoom installed on disk D on a different system). All other information is using logical position derived from Path, which is in this example defined using a Xoom parameter specifying Xoom installation directory. LocalPath describes the file’s path relative to Path (which serves as a logical base directory), and Path preserves its literal value from the query definition and doesn’t get modified.

The IDs for a file are now its Path and LocalPath (previously they were a full directory name and file Name). The final minor change is that Extension no longer starts with a dot.

There are now two pre-defined file information retrieval queries: one for Service Optimization, which includes the DLL and EXE files in the Bin directory and all files in the Web directory with all its children; and another for Xoom itself, which retrieves the information on all files in both the main Xoom folder and the W6 plug-in folder, in each case including all subdirectories. The queries are defined in XoomConfig.xml.

Settings Migration Tool

Settings Migration Tool now remembers and reconstructs the checked items and categories when a session is refreshed or a connection is established to a different server. The reconstruction includes the loading of collections that were previously loaded and contained checked items (although collections that were loaded but none of their items were checked will not be loaded upon refresh), and for collections that were not loaded the checked categories remain checked after the refresh.

This behaviour can be helpful in cases where it took a while to check the right items, only to discover that the session is no longer valid or that so much time has passed that the session should be renewed. This can now be done safely without the need to recheck all the items.

Xoom Processor

Xoom Processor now supports the console as its output (using @ in place of a target), and prints out usage when called without parameters.

It also supports canonicalisation of XML and various other formatting options. These features will be explained in detail separately.

Other improvements

  • A new report ActiveScheduleAgentsReport has been added. The report provides detailed configuration (down to a decomposition and BGO step configuration) of all active background optimisation agents in the system.
  • Events, objective types, SXP object references and rule types are now sorted alphabetically in the representation, making it easier to compare Xoom files using non-Xoom tools.
  • A more informative error message is now issued when a data-entry required for an import of a specific logic component can’t be found on the target system. Most commonly this happens when a required customisation wasn’t installed.
  • A number of distinct event log sources are now registered and used by Xoom, making it easier to filter Xoom messages by context (most commonly the tool in use).

Bug fixes

  • Named queries in Xoom Explorer are now sorted by name.
  • The ordering of collections in the default query in the generic version of Xoom has also been fixed.
  • When an attempt is made to modify IsProduct property of an existing collection, Xoom no longer stops processing and reports an error. Instead it places a warning that the property cannot be changed on existing collections in the event log, and proceeds with the rest of the changes on the collection. The difference in IsProduct property on its own also no longer triggers the imports or registers as a difference in a configuration because it can’t be changed and has no functional consequences. The only functional differences are the collection’s icon colour in Service Optimization Structure tool and the inability to manually delete product collections, both of which are irrelevant outside the configuration management context.