Removing Language(s) from BMC Remedy ITSM

Version 2
    Share This:

    Uninstalling one or more languages from BMC Remedy ITSM is not supported and there isn't really any elegant methods that I've come across to date.  This has never been an issue for me since I typically only work on simple English installs and don't personally use the stack installer which installs all languages but recently a colleague of mine did use the stack installer and it was causing his environment to be very slow due to the amount of localized views that get cached on start-up.

     

    The difference is pretty large between a single language install and the stack-installers 9 language install.  E.g. the arserver process in a single language typically will start up after a fresh install in the 800-950 MB range of utilized memory whereas the 9 language install starts closer to 1.9 GB range of utilized memory (let alone the higher memory requirements for the DB and Mid-Tier to go along with this).  When dealing with a virtual machine with limited resources this extra GB or more of memory can make a significant impact to performance.

     

    I'm sure someone in the past has done similar work (possibly via SQL in the database) however I've never seen any full solutions published so I'm sharing this utility I just finished using the BMC Java API in the hopes that it could be of use for others.  Please be aware that this is being provided as-is and no warranty is given or implied... Use at your own risk and always have a backup of your database prior.

     

    Now to what this utility does:

     

    • Deletes all form views for the selected locales
    • Delete all localized data entries for the selected locales
      • Localized data entries by way of field ID 160 where it matches the selected locales
    • Update the SHARE:Application_Properties LanguagePacks and OnlineHelpLanguages entries based on the remaining languages supported after running the utility
    • Update the ar.cfg/conf files Locale-List value based on the remaining languages supported after running the utility

     

    The behavior of the utility is controlled via the LocalePurge.yaml configuration file where some or all of the capabilities of the utility can be toggled on/off and performance of the utility tweaked to support both very fast systems and others that can't process as fast (by introducing delay between operations to let the server catch up)

     

    From a performance standpoint, I offer the following data-point while using the default values I have provided in the sample configuration file.

     

    Platform: Virtual

    OS: Windows 2008 Std

    CPU: 1 x 2.4 GHz

    RAM: 8 GB

    Installed Software: BMC Remedy ITSM 8.1 (Installed via Stack Installer), MS SQL Server 2012.

     

    Run-time for the utility when removing all locales except English was approximately 26 minutes and resulted in the removal of 18,234 views, 84,733 entries as well as the updates to the SHARE:Application_Properties entries and ar.cfg files accordingly.

     

    The full steps to using this utility would be the following:

     

    1. Extract zip file to a suitable location (preferably on the target server to optimize utility performance)
    2. Modify LocalePurge.yaml as required (make sure to use an account with Administrator permission and point it to your target AR Server)
    3. Execute LocalePurge.jar
      • To execute, launch a command window / terminal and then execute java -jar LocalePurge.jar
      • (Optionally) if you want to record the output, simply pipe the command to a file, e.g. java -jar LocalePurge.jar > output.txt
    4. Restart AR System (and optionally Database) to greatly reduce memory footprints
    5. Flush Mid-Tier Cache
    6. (Optional) Clean out file-system localized files
      • Localized Help Files deployed in Mid-Tier
      • Localized arcatalog files
      • ...

     

    There may be other areas of the system that gets touched by multi-language support but off hand I do not know them so if others are aware of any additional areas that could potentially be automated when attempting to remove a language, please provide so in the comments and I will try and add additional capabilities overtime.

     

    Please enjoy and provide feedback both good and bad as if there are improvements I can make I will try and make them over time.