Improve HFM user experience with JHAT “on the fly”

Improve HFM user experience with JHAT “on the fly”
What is the difference between a good HFM application and a great HFM application? 
User experience! What Else?
Usage of JHAT can improve user experience for administration tasks. 
Usage of JHAT “on the fly” can bring it to the next level!


First things first. What is JHAT?

You can read the article of my colleague describing what is JHAT and what is possible to do with. JHAT tool is a way to automatize tasks using a batch file and the HFM API. JHAT offers the opportunity to use any scheduler to launch HFM tasks and provide a better flexibility than the regular Task Flows.


Why should it be “on the fly”?

Both Task Flows and JHAT are great ways to schedule tasks. When it comes to simply launch a sequence of consolidations for the same POV, they both have the same lack of flexibility. You will always have to redefine the POV in your setup. The operation is not as flexible as running a single consolidation in an HFM application: select a POV, right click and consolidate. With JHAT on the fly, it is!


Usage case: launching multi scenario/scope consolidations sequence

In HFM, it is common to create different scenarios for simulation purposes. For example, in addition to the “ACTUAL” scenario for published figures, administrator will create proforma scenarios for FX analysis or scope variation analysis. There can be also different entity hierarchies representing the different views of the organization (legal view, geographical view or management view). All these scenarios and scopes need to be consolidated regularly because the “ACTUAL” scenario has frequent updates during closing periods.

There are many ways in HFM to run these consolidations:

  • Manually launch the consolidations: this option is the most “flexible” because it does not need any setup and the consolidated POV are automatically read by HFM from where the command is launched. You can launch the consolidations one after one, but it can take a long time, or you can run all your consolidations at the same time in a data grid, but this is not recommended.
  • Usage of Task Flows: this is a better option. Consolidations will be launched one at the time. Nevertheless, Task Flows are not dynamic and need to be updated for any change of POV.
  • Usage of JHAT: this option has the same pros and cons as Task Flows. Consolidations will be launched one at the time.
  • Usage of JHAT on the fly: this option is the best option in my opinion because it has the power of JHAT and the flexibility of manual consolidation.


How does it work?

  • JHAT

JHAT is a small program installed on HFM server which can connect to an application a run administration tasks. The main purpose of JHAT is to be launched by a scheduler. To run a JHAT command, three mandatory elements are required:

  • An .ini file containing connection credentials and tasks to be operated
  • A .log file which will save execution logs
  • A .cmd file containing the MSDOS command which uses the two first files as parameters

For a standard JHAT execution, these files are created once and the .ini file is updated by administrators to fit the needs evolution.


  • JHAT on the fly:

With JHAT “on the fly” the POV definition is dynamically created and all the files needed are created on-demand.

JHAT on the fly is based on an “on-demand” rule. This rule will:

  • Identify the POV selected in the webform
  • Create the .ini, the .log and the .cmd files needed for JHAT execution. The current POV will be set in the .ini file
  • Run the .cmd file



In this example, with a dedicated on-demand rule, users can launch in one click consolidation of:

  • ACTUAL scenario
  • Last year rate scenario
  • Last year scope scenario
  • Custom simulation scenario


On-demand rule execution:

Consolidations executed:

Script used for the example:

Ini file content definition

Ini file creation

Log file creation

Cmd file creation and execution

File created

The on-demand rule of our example has created the .ini file, the .log file and the .cmd file in the first time. And in the second time it has executed the .cmd file.


This is one usage case of  JHAT. If you are experiencing different ways to use it, do not hesitate to share with us in the comment section below. Thank you for reading.

Next article Change HFM rules without disconnecting users
Previous article HFM upgrade from to 11.2.1


  1. I am trying to use JHAT utility to run consolidations on my HFM 11.2 application. I have created setenv.cmd file and updated my jhat.bat accordingly. Then I have created TestConsol.txt file to pass the consolidation parameters. It looks like below




    LEZ is the Entity

    I getting below errors when running the jhat.bat

    D:\Oracle\Middleware\EPMSystem11R1\..\jdk1.8.0_181\bin\java.exe -client -cp ;D:\Oracle\Middleware\EPMSystem11R1\..\oracle_common\modules\oracle.webservices_11.1.1\wsclient.jar;D:\Oracle\Middleware\EPMSystem11R1\..\oracle_common\modules\oracle.jrf_11.1.1\jrf.jar;D:\Oracle\Middleware\EPMSystem11R1\products\FinancialManagement\Server\jhat.jar;D:\Oracle\Middleware\EPMSystem11R1\common\jlib\\epm_j2se.jar;D:\Oracle\Middleware\EPMSystem11R1\common\jlib\\epm_hfm_web.jar -D”EPM_ORACLE_INSTANCE=D:\Oracle\Middleware\user_projects\epmsystem1″ -D”java.util.logging.config.class=oracle.core.ojdl.logging.LoggingConfiguration” -D”oracle.core.ojdl.logging.config.file=D:\Oracle\Middleware\EPMSystem11R1\products\FinancialManagement\Server\jhat_logging.xml” -D”logging.folder=D:\Oracle\Middleware\user_projects\epmsystem1\diagnostics\logs\jhat” -D”org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger” oracle.epm.fm.jhat.JHATMain -I””D:\JHAT\TestConsol.txt
    at oracle.epm.fm.jhat.ProcessFile.readFileAndExecute(ProcessFile.java:76)
    at oracle.epm.fm.jhat.JHATMain.main(JHATMain.java:30)
    at oracle.epm.fm.jhat.ProcessFile.readFileAndExecute(ProcessFile.java:119)
    at oracle.epm.fm.jhat.JHATMain.main(JHATMain.java:30)

    I doubt if there is a problem with the POV i am passing via txt file. I could not find a syntax to pass the consolidation variables. Can somebody help me on this?

  2. Getting the following error when trying to load metadata

    Logging configuration class “oracle.core.ojdl.logging.LoggingConfiguration” failed
    oracle.core.ojdl.logging.LoggingConfigurationException: ODL-52051: unable to process file ‘D:\Oracle\Middleware\EPMSystem11R1\products\FinancialManagement\Server\jhat_logging.xml’; exception: java.io.FileNotFoundException: D:\Oracle\Middleware\EPMSystem11R1\products\FinancialManagement\Server\jhat_logging.xml (The system cannot find the file specified)

    • Hi Ganesh,
      Unfortunatly it’s a “standard” error which occurs each time you execute JHAT for each command.
      Are your metadata loaded anyway ? Below the command syntax
      @JhatFunction(functionName = “LoadMetaData”, listParams = “3,17,18”, usage = “(\”C:\\Hfm\\MetadataLoadFile.xml\”, \”C:\\Hfm\\MetadataLoad.log\”, \”;\”,\”Merge, Replace, or Clear (Mode)\”, \”True or False (Load Currencies)\”, \”True or False(Load Scenarios)\”, \”True or False (Load Entities)\”, \”True or False (Load Accounts)\”, \”True or False (Load Custom1)\”, \”True or False (Load Custom2)\”, \”True or False (Load Custom3)\”, \”True or False (Load Custom4)\”, \”True or False (Load Consolidation Methods)\”, \”True or False (Load App Settings)\”,\”True or False (System Accounts)\”,\”True or False (Load Value Dimension)\”,\”True or False (Load ICP)\”,\”True or False (Integrity Check)\”);”)



Leave a Comment

Your data will be safe! Your e-mail address will not be published. Also other data will not be shared with third person. Required fields marked as *

five + 11 =