Version-specific upgrade notes

    Upgrade instructions

    For upgrade instructions, refer to Upgrade XL Release.

    Important: If you plan to skip versions when you upgrade, ensure that you read the version-specific upgrade notes for each intermediate version. You may be required to perform manual actions as part of the upgrade.

    Version-specific upgrade notes

    These sections describe specific considerations for migrating from or to a particular XL Release version:

    Upgrading to XL Release 4.7.2

    XL Release 4.7.2 requires version 3 of the XL Release license. Versions 1 and 2 are not supported.

    To check your current license version, log in to the XL Release GUI and go to Help > About. To download a new license, go to the XebiaLabs Software Distribution site. Replace the XL_RELEASE_HOME/conf/xl-release-license.lic file with the new license file.

    Tip: You can also use license version 3 for XL Release 4.6.x and later.

    Upgrading to XL Release 4.7.0

    Delay automatic archiving of completed and aborted releases

    XL Release now archives completed and aborted releases older than a configurable amount of time. This improves performance and makes the repository faster and more efficient.

    By default, all releases are archived immediately as soon as you start XL Release after upgrading to 4.7.0. The amount of time this takes is proportional to the size of your repository. XL Release archives an average of five releases per second. This initial archiving process may temporarily affect the order of completed releases on the Releases Overview screen.

    If you want to delay the initial archiving of completed and aborted releases:

    1. Before updating to XL Release 4.7.0, uncomment the line in the file that contains xlrelease.ArchivingSettings.archivingJobCronSchedule and set its value to:

      xlrelease.ArchivingSettings.archivingJobCronSchedule=0 0 0 1 1 *
    2. Upgrade to XL Release 4.7.0 and start XL Release.

    3. Set the duration to the desired period in the general settings.
    4. In, comment the line that contains xlrelease.ArchivingSettings.archivingJobCronSchedule and set its value to:

      #xlrelease.ArchivingSettings.archivingJobCronSchedule=16 * * * * *

    For more information about this feature, refer to the release notes.

    Configure location of the archive database

    When starting XL Release 4.7.0 for the first time, it will start moving completed and aborted releases from the live repository to the archive database.

    By default, the archive database is stored in the XL Release installation directory. If your current setup has the repository on an alternative location, please check storage space availability of the XL Release installation directory. The archive database will take up less space than the repository, so you can take the current size of the repository as a rough estimate of the amount of disk space that is needed.

    If you want to move the archive database to a different location, see Configure the archive database for more information.

    Update backup plans for the archive database

    If you have custom scripts to back up the XL Release installation, ensure they include the new archive directory. See Back up XL Release for details.

    Cron jobs now use UTC by default

    Previously, the time zone of the XL Release server was used for all cron jobs. Now, the default time zone for cron jobs is Coordinated Universal Time (UTC). To set a different time zone:

    1. Open <XLRELEASE_SERVER_HOME>/conf/reference.conf, or create the file if it does not exist.
    2. Set the akka.quartz.defaultTimezone property to the desired time zone. For example, to use Eastern Standard Time, set:

       akka.quartz {
           defaultTimezone = EST
    3. Save the file and restart XL Release.

    Upgrade from Jython 2.5 to Jython 2.7

    XL Release 4.7.0 requires Python 2.7. That means that all existing Jython code must be compatible with Jython 2.7 to work with XL Release 4.7.0. Use of Jython 2.5 is not supported.

    Because Jython 2.7 is mostly backward-compatible with 2.5, you should not experience many issues. However, there are some areas that may need to be addressed:

    • Retrieving a nonexistent key from a dictionary results in KeyError instead of a None value. It is recommended that you use the in operator to first check if the key exists in the dictionary.
    • In some cases, the import syntax has changed slightly.

    For more information about upgrading from Jython 2.5 and 2.7 and an explanation of new features, please refer to:

    Upgrade from Spring Security 3.x to 4.x

    XL Release has also been upgraded from using Spring Security version 3.2.5 to 4.0.1. Some deprecated features have been removed, so please refer to the Spring Security 3.x to 4.x migration guide to determine if you need to modify your <XLRELEASE_HOME>/conf/xl-release-security.xml file.


    XL Release 4.7.0 includes the following important upgraders:

    • XLRelease470RemoveDirectoryVersions: Removes versions of directories to further improve performance of XL Release. This upgrader will go through all directories in your repository, which is roughly equal to the number of releases and templates, so it can take some time to execute. You can use the procedure described in Speed up the XL Release 4.6.x upgrade to speed up this process.
    • XLRelease470FixMissingEndDatesOnAbortedReleases: Corrects end dates in aborted releases. In some rare cases, an aborted release that was created prior to XL Release 4.0 might not have an end date set. The end date is required to archive the release, so this upgrader will search for all aborted releases in your repository and check their end dates.

    Upgrading to XL Release 4.6.0

    Long running repository upgrade

    The XL Release repository has been optimized so that it stores less information and is more efficient. When you upgrade to XL Release 4.6.0, it will process all existing data in your repository, which can take a long time. Please take into account that this upgrade will take longer than usual, and be sure to backup your data.

    As an example, it takes 10-15 minutes to upgrade a repository containing 500 releases.

    Changes in restart phase feature

    Please note that starting from 4.6.0, when restarting phase, which contained parallel groups, all the tasks inside the group are restored to the state which existed at the moment when the group was started.

    Limitations of restart phase feature for releases that were active during the upgrade

    If some releases were active during the upgrade to 4.6.0, the restart phase feature will work with some limitations: values of the variables will not be evaluated after the restart and fields will keep their existing values.

    Please note, that only releases that were active at the moment of upgrade will be affected.

    Upgrading to XL Release 4.5.0

    SVN plugin is bundled

    The XL Release SVN plugin is now bundled with standard distribution. So if you added it before into your /plugins folder, please remove it and its dependent libraries. Otherwise you will get errors like this: duplicate definition for type [svn.Poll]. Here is a list of libraries you should remove from /plugins folder:


    Upgrading to XL Release 4.0.13

    LDAP security upgrade

    • If you are using LDAP authentication, you must update xl-release-security.xml:
      • Change to

    Upgrading to XL Release 4.0.11

    Security upgrade

    • Spring and Spring Security were upgraded to version 3.2, so if you use xl-release-security.xml, you must update it by removing the version specification of XSD files:
      • Change .../spring-beans-3.1.xsd to .../spring-beans.xsd
      • Change .../spring-security-3.1.xsd to .../spring-security.xsd

    Upgrading to XL Release 4.0.10

    Updating calls to XLRequest

    In order to benefit new features from HttpRequest/HttpResponse, the plugin scripts have to be updated :

    • In the existing script replace the CredentialsFallback, XLRequest() and send() calls:

      credentials = CredentialsFallback(jiraServer, username, password).getCredentials()
      response = XLRequest(jiraURL + '/contextUrl', 'POST', content, credentials['username'], credentials['password'], 'application/json').send()
    • By calls to the HttpRequest constructor and to the get(), post(), put(), delete() methods:

      request = HttpRequest(jiraServer, username, password)
      response ='/rest/api/2/issue',
          contentType = 'application/json')
    • Replace calls to read():

      data = json.loads(
    • By an access to the response property:

      data = json.loads(response.response)