Xoom 3.8 has been released

We are proud to announce the release of Xoom 3.8. This major new release introduces first-class support for Windows PowerShell scripting to Xoom, and with it a new product, Service Optimization Tuning Toolkit. This exciting development brings a host of new scripting and automation capabilities to configuration management, as well as major improvements to the way ClickSchedule configuration can be tuned and maintained, with direct operational impact.

Windows PowerShell support

Windows PowerShell is a task automation and configuration management framework from Microsoft, consisting of a command-line shell and associated scripting language built on the .NET Framework. Due to its range of capabilities and widespread use, a lot of systems administrators will already be familiar with Windows PowerShell, and it is therefore a natural way of enabling Xoom automation capabilities on Microsoft Windows systems.

The features and capabilities that we have implemented will be documented separately (though they are also available through PowerShell built-in documentation framework), so for the time being we only list the main highlights here:

  • Xoom PowerShell provider enables the creation of Xoom drives which expose query, type and item lookup and retrieval on the target system. Multiple drives can be open in parallel (each with its own Xoom session), allowing simultaneous interaction with multiple configurations from the same script.
  • Cmdlets are provided for all relevant basic Xoom operations, such as retrieval of parameters (except for hidden and encrypted parameters, for obvious reasons), types or items, performing transformations, or invoking a Xoom deployment.
  • Cmdlets for some low-level Service Optimization operations are also provided, including the execution of database queries and invoking of SXP messages.
  • As part of Service Optimization Tuning Toolkit (licensed separately), cmdlets are provided for higher level Service Optimization, such as setting logic domains, activating agent instances, running BGO agents or performing schedule quality measurements. Cmdlets are also provided for programmatic generation and manipulation of Excel documents.

Please feel free to get in touch with us if you need any information in the interim before the full documentation is published.

Note: Service call time-outs have been significantly extended (send time-out is now one hour) in order to accommodate long-running operations made available through PowerShell and used by Service Optimization Tuning Toolkit. These new time-outs will affect Xoom in general, although we don’t expect any change in practice for any of our users.

Xoom Reporting

Extract XoomXML for Required Indexes

In order for Service Optimization to correctly interpret the references to objects within SXP messages, any referenced object needs to have an entry in Object References, and also an index containing those same properties in the same order. These indexes are sometimes missing, and Service Optimization does not contain a mechanism to verify whether they are there, or to create them when they aren’t. The result of such missing indexes is unpredictable errors that only become visible quite late in the project, or even in production, when data of sufficient richness becomes available.

Given a XoomXML file containing Service Optimization structure (i.e. Scheme and an Object Reference setting), this transformation creates a XoomXML file that will, on deployment, create the indexes that are required for proper interpretation of all the defined object references that are currently missing from the configuration.

The transformation also takes an optional parameter IncludeExistingIndexes which, if specified, will cause the transformation to include all indexes that are required by existing object references, regardless of whether they are currently missing or not.

Scheme Dependencies GraphML

This new report creates a GraphML document intended for visualisation of dependencies between specified collections in Service Optimization scheme. The resulting file can be loaded into yEd or any other suitable tool that supports GraphML in order to produce beautiful visualisations of scheme dependencies. This is extremely useful when trying to understand what objects constitute configuration and master data, and which collections are effectively transactional due to the nature of their dependencies: this last point is essential in migration and upgrade scenarios.

Due to the potential extreme complexity of the resulting graph, the report expects a parameter called IncludedSourceCollections. The parameter is a string starting and ending with a space, and containing all collections that should be included in the graph as part of the core group from which dependencies will be calculated. (The dependent collections will also be included in the graph, but they won’t be considered to be sources of further references.) For example, if all dependencies of District, Region, Group and Setting collections are to be visualised, then the parameter should be ” District Region Group Setting “, with each collection name preceded and followed by a space.

Another version of the transformation with fewer capabilities but better support for scripting using freely available tools is also provided. This transformation is called SchemeDependenciesDot.xsl, and produces a dot file used by Graphviz graph visualisation software.

Structure Report

This is a new report based on the Scheme Customisations report. In addition to everything that is in that report, this report adds two sections above scheme customisations. The first lists all collections in the scheme, including their ID, collection type and storage type, object references (where they exist) and property definitions. The second lists all configurations, including their collection type, storage type, convertor ProgID and property definitions.

This report is currently work in progress and will receive significant revisions in the future versions. However, we decided to include it with this release as even in its current form it is extremely useful.

Other Xoom Reporting changes

Transformations that produce XoomXML with xoom:set special forms have been modified to emit select instead of xpath attributes, as those are more descriptive and better aligned with other XML technologies such as XSLT. The two attributes are currently equivalent, but xpath will be deprecated in the future.

Rules Report now also lists rule types, not just rule categories.

New parameters

Product.W6.Objects.EncryptClickContactNotificationSmtpPassword: If true (default), ClickForecast’s notification SMTP password (Setting[[Application]|ClickContact|NotificationSMTPPassword|]/Body) will be encrypted.

Product.W6.Objects.EncryptClickExpressImportAgentPassword: If true (default), the password to used by ClickExpress Import agent while calling SXPClickExpressImportTool (Setting[[Application]|Agent|ClickExpress Import|*]/Body/SXPClickExpressImportTool/Password) will be encrypted.


The installer now accepts an optional parameter DISABLESERVICESTART (defaults to 0) which can be used to successfully complete Xoom installation without attempting to start the Xoom service. This is very useful when the service can’t be started for an unknown reason, as it is much easier to experiment with and obtain detailed logging for an installed version of Xoom that it would be for repeatedly running the installer.

Miscellaneous improvements

    • Added the following convenience types and related references: Roster Optimization Enumerator and Roster Optimizer.
    • A number of additional interpretations of various Service Optimization features, including coverage of features up to and including Service Optimization 8.3.
    • In Settings Migration Tool’s, right-clicking an item in the Import pane now first highlights the item and then displays the context menu, making it clear to which item the context menu refers.
    • When type keys are already used in the representation, the reference interpretation simply annotates the reference node and no longer recreates those values, resulting in better performance and higher degree of representation preservation (in particular, preserving the order of keys in multi-key types where the order in the representation is different from the declared order).
    • XML tweaky now supports an ignore-malformed-xml attribute which, if set to true, results in malformed XML in the configuration being ignored and left in place as opposed to causing a fault and potential transport problems. For obvious reasons, any further interpretations of the contents of such malformed XML will not be possible and will simply be skipped.
    • Error reporting involving XPaths within the configuration now identifies the item in question using its Xoom identity, making it much easier to troubleshoot such cases.

Bug fixes

  • References to types with no keys (an example would be a business object without an object reference entry in Service Optimization) now result in an error with a descriptive message.
  • Dynamic reference definitions can now use all XML namespaces declared in the knowledge base inside the type XPath, which is an expected behaviour that didn’t work previously.
  • Includes all fixes and improvements from patch releases 3.7.1, 3.7.2, 3.7.3, 3.7.4, 3.7.5, 3.7.6 and 3.7.7.