Troubleshooting connectivity issues between ODI and HFM 11.1.2.4


Hi all! We are very happy with the feedbacks that we are having about HFM KMs for ODI. People are downloading them and giving them a try, which is awesome! However, we know that this ODI and HFM integration process is not as simple and straight forward as we would like it to be and we generally fall into environment issues to setup the jar files, ODI agent, connect to HFM using the new Java API and so on. In order to make it easier for people to troubleshoot their issues, we are creating this post to hold all known issues that people are having with our KMs and try to help the best we can. We will keep updating it, so please keep checking.

If you have any issues with our KMs usage, please send us an email (devepm@teracorp.com.br) so we may try to help you and all the others that may be facing the same issue. Thanks all!

Error WSSERVLET11: failed to parse runtime descriptor: java.lang.NullPointerException

As we wrote in our blog post, we have two options to setup the necessary HFM Jar files:

1) Install the ODI agent on the HFM server;
2) Copy the necessary jar files to the agent folder;

Some people are getting the above WSSERVLET11 error when performing the first option, which is to install the ODI agent on the HFM server and just point the jar file locations on ODI_ADDITIONAL_CLASSPATH. They change the ODI parameters to point to the right location, but when they start the agent it fails with this error.

We are not sure exactly why it happens, but we suspect that the “absolute file path” gets too big for ODI to handle and then the path gets “truncated” at some point, making ODI to throw this error. Our suggestion is to go with our second approach and add all the jar files to oracledi\agent\drivers folders. If are not sure how to locate the correct jar files, send us an email and we will provide them for you.

Also, if you are not sure if the problem resides on your ODI agent or the Jar files, you may do a test using ODI Local (No Agent) by copying the HFM jar files to C:\Users\\AppData\Roaming\odi\oracledi\userlib (don’t forget to restart the ODI client after that). Then you may try to reverse a HFM model using Local (No Agent). If it works, the Jar files are good to go and your problem resides in the ODI agent itself.

HFMException: EPMHFM-65536

This error is happening when people want to reverse the ODI objects using the new ODI RKM, more specifically when the ODI code tries to connect/get the connection token from your HFM application. EPMHFM-65536 is a very generic error message and can be caused by a number of different factors; ranging from an improper install to application processes crashing.

One of the users (thanks Kevin!) solved his issue with the following:

I needed to copy the file “reg.properties” from Oracle\Middleware\user_projects\config\foundation\11.1.2.0 to path Oracle\Middleware\user_projects\epmsystem1\config\foundation\11.1.2.0 and then the KM is running with success.

This blog post gives some other suggestions for the issue:

https://knowepmbi.wordpress.com/2016/11/03/hfm-error-epmhfm-65536-an-unexpected-error-has-occurred/

Since this error is too generic, each HFM application may have its own kind of fix.

IKM Data Load does not load any data (and does not throw any error either)

One user found a bug where the data interface would run without any error but would not load any data. This happened due to a bug in the RKM that may create the datastore with a wrong column order in some cases. As workaround, please change your HFMData datastore to the following order before loading data to HFM:

HFM_Order

We will work to fix the RKM code to avoid this issue and to create the columns in the correct order.

I get a parse error when I have more than one filter in the interface

We noticed that if you add more than one filter in the ODI interface, the IKM throws a parse error. As a workaround, just group all filter criteria in one single filter component. We will fix the IKM code to avoid this issue and we will let you know once it is released.

Slashes vs Backslashes (Token Parsing Error: Lexical error)

Some people stated that they were getting some errors like this” Token Parsing Error: Lexical error at line 34, column 34.  Encountered: “O” (79), after : “\”C:\\”: “. This error is probably due to the backslashes. All the paths that you add in your KM options needs to be using / (slashes). e.g: C:/Temp/<%=snpRef.getTable(“L”,”TARG_NAME”,”A”)%>_Load.log

Isolate the components to see what may be wrong

We are seeing that generally the errors may happen on the ODI agent (that does not load the Jar files correctly or does not have access to the HFM application) or on the HFM installation installation. In order get it easier to identify where the issue may be happening, it is a good advice to install a Java IDE (like Eclipse) in the HFM server and try to create a small code just to connect to your HFM app. If it connects, then the problem is likely to be in the ODI agent. If it does not connect at all, then you have a problem in you HFM application that is not accepting Java API calls.

Here you may find some examples on Java codes that you may copy from and try to create a sample app:

http://hyperionfinn.blogspot.com.br/2016/09/hfm-java-api-part-1-getting-started.html
http://www.accelatis.com/the-accelatis-blog/dissecting-my-first-hfm-sample-program/
http://www.accelatis.com/the-accelatis-blog/coding-against-the-new-hfm-11-1-2-4-java-api/

Running a simple connect Java code first against your HFM application “eliminates” ODI from the possible points of failure. In other words, if you are not able to connect using standard Java code, ODI will not be able to connect as well.

Thanks all!

Advertisement

22 Responses to “Troubleshooting connectivity issues between ODI and HFM 11.1.2.4”

  1. […] If you guys are having errors with our KMs, please check our troubleshooting post here. […]

  2. […] Please feel free to download and use our KMs. They do not have official Oracle Support, but we try our best to answer and fix any issues that you may find (don’t forget to take a look on our “debug” post here). […]

  3. Álvaro Santos Says:

    This error WSSERVLET11: failed to parse runtime descriptor: java.lang.NullPointerException appears when ODI find the Weblogic JAR files in the location directory.

    I has unable to use RKM is always returning the same generic error in ODI, I have the HFM server in a different Machine.

    Can you help me ?

    • Yeah, this is a hard one to debug because it seems to be related on the archtecture that you are in. Did you already tried to test without the ODI agent? You may do a test using ODI Local (No Agent) by copying the HFM jar files to C:\Users\\AppData\Roaming\odi\oracledi\userlib (don’t forget to restart the ODI client after that). Then you may try to reverse a HFM model using Local (No Agent). If it works, the Jar files are good to go and your problem resides in the ODI agent itself, which is hard for us to debug since every environment has its own characteristics.

      • Álvaro Santos Says:

        I tried everything even install ODI in HFM server but I receive always the same error using ODI local or agent.

        I follow all the steps in the article, can you confirm the physical Topology for the HFM data Server I’m using the following :

        HFM11_Cluster:\\serverhfm11\d$\Oracle\Middleware\EPMSystem11R1:\\serverhfm11\d$\Oracle\Middleware\user_projects\epmsystem1

        I’m using Build ODI_11.1.1.9.0_GENERIC_150427.0937, it’s like the issue is interpreting the KM.

        Error:

        ODI-26066: Na unexpected error has ocurred

        java.lang.NullPointerException
        at
        com.sunopsis.dwg.codeinterpretor.SnpGenerator.getExeChannel(SnpGenerator.java:1265)
        at
        com.sunopsis.dwg.codeinterpretor.SnpGeneratorReverse.treatGenReverse(SnpGeneratorReverse.java:428)
        at
        com.sunopsis.dwg.codeinterpretor.SnpGeneratorReverse.treatJobReverseModel(SnpGeneratorReverse.java:765)
        at
        com.sunopsis.dwg.codeinterpretor.SnpGeneratorReverse.mainGenReverseInternal(SnpGeneratorReverse.java:191)
        at
        com.sunopsis.dwg.codeinterpretor.SnpGeneratorReverse.mainGenReverse(SnpGeneratorReverse.java:129)
        at
        com.sunopsis.graphical.dialog.SnpsDialogExecution.doReverseExecuter(SnpsDialogExecution.java:924)
        at
        com.sunopsis.graphical.frame.edit.EditFrameSnpModel.jButtonReverse_ActionEvents(EditFrameSnpModel.java:2687)
        at
        com.sunopsis.graphical.frame.SnpsEditFrame$IvjEventHandler.actionPerformed(SnpsEditFrame.java:206)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
        at
        javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
        at
        javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
        at
        javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
        at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:290)
        at java.awt.Component.processMouseEvent(Component.java:6505)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
        at java.awt.Component.processEvent(Component.java:6270)
        at java.awt.Container.processEvent(Container.java:2229)
        at java.awt.Component.dispatchEventImpl(Component.java:4861)
        at java.awt.Container.dispatchEventImpl(Container.java:2287)
        at java.awt.Component.dispatchEvent(Component.java:4687)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
        at java.awt.Container.dispatchEventImpl(Container.java:2273)
        at java.awt.Window.dispatchEventImpl(Window.java:2719)
        at java.awt.Component.dispatchEvent(Component.java:4687)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
        at java.awt.EventQueue.access$200(EventQueue.java:103)
        at java.awt.EventQueue$3.run(EventQueue.java:694)
        at java.awt.EventQueue$3.run(EventQueue.java:692)
        at java.security.AccessController.doPrivileged(Native Method)
        at
        java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
        at
        java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
        at java.awt.EventQueue$4.run(EventQueue.java:708)
        at java.awt.EventQueue$4.run(EventQueue.java:706)
        at java.security.AccessController.doPrivileged(Native Method)
        at
        java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
        at
        java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
        at
        java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
        at
        java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

        I’m using JAVA 1.7.0.40 any issue on that?

  4. Álvaro Santos Says:

    Thanks I finally find the issue, is now working both agent and local in odi in hfm machine and in different servers machines.

    • Great news!

    • Hector H Avila Says:

      What was the issue. I’m having the same error with the jar files using the stand alone agent and No agent as well. When I remove the jar files, everything works OK for everything else but when I paste the jar files, I keep getting the same error: WSSERVLET11: failed to parse runtime descriptor:

    • Johnson Says:

      Hello, dear frient. How you resolve the problem. Now, I don’t use agent to extract from HFM 11.1.2.4,but failed when extract data.
      The error log like above :
      org.apache.bsf.BSFException: The application script threw an exception: java.lang.Exception: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 BSF info: Extract Data from HFM at line: 0 column: columnNo
      at bsh.util.BeanShellBSFEngine.eval(Unknown Source)
      at bsh.util.BeanShellBSFEngine.exec(Unknown Source)
      at com.sunopsis.dwg.codeinterpretor.SnpScriptingInterpretor.execInBSFEngine(SnpScriptingInterpretor.java:322)
      at com.sunopsis.dwg.codeinterpretor.SnpScriptingInterpretor.exec(SnpScriptingInterpretor.java:170)
      at com.sunopsis.dwg.dbobj.SnpSessTaskSql.scripting(SnpSessTaskSql.java:2473)
      at oracle.odi.runtime.agent.execution.cmd.ScriptingExecutor.execute(ScriptingExecutor.java:47)
      at oracle.odi.runtime.agent.execution.cmd.ScriptingExecutor.execute(ScriptingExecutor.java:1)
      at oracle.odi.runtime.agent.execution.TaskExecutionHandler.handleTask(TaskExecutionHandler.java:50)
      at com.sunopsis.dwg.dbobj.SnpSessTaskSql.processTask(SnpSessTaskSql.java:2925)
      at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java:2637)
      at com.sunopsis.dwg.dbobj.SnpSessStep.treatAttachedTasks(SnpSessStep.java:577)
      at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java:468)
      at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java:2123)
      at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$2.doAction(StartSessRequestProcessor.java:380)
      at oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:216)
      at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.doProcessStartSessTask(StartSessRequestProcessor.java:312)
      at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.access$0(StartSessRequestProcessor.java:304)
      at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$StartSessTask.doExecute(StartSessRequestProcessor.java:875)
      at oracle.odi.runtime.agent.processor.task.AgentTask.execute(AgentTask.java:133)
      at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor$2.run(DefaultAgentTaskExecutor.java:84)
      at java.lang.Thread.run(Thread.java:662)

  5. Diogo Dias Says:

    Hi there,

    I’m looking for LKM HFM members to SQL, since old version isn’t working anymore. Could you please tell me some way to get it?

    Thanks in advance

  6. […] Please feel free to download and use our KMs. They do not have official Oracle Support, but we try our best to answer and fix any issues that you may find (don’t forget to take a look on our “debug” post here). […]

  7. Qiang Yue Says:

    HI,the error WSSERVLET11: failed to parse runtime descriptor: java.lang.NullPointerException appears when i restart odi agent after copy the jars to oracledi\agent\drivers.in fact ,I get 376 jars from hfm server.
    If I remove two jars(weblogic.jar,epm_jrf.jar) and don’t change ojdbc6dms.jar,the odi agent can be restarted, but when reverse the ODI objects I meet EPMHFM-65536.
    it happened again during test using ODI Local by all hfm jars.
    In ODI log,I found the error is happened on

    ssoToken = HSSUtilManager.getSecurityManager().authenticateUser(hfmUser, hfmPass);
    sessionOM = new SessionOM();

    finally ,i create a small java code on hfmserver by same user and password with http://www.accelatis.com/the-accelatis-blog/coding-against-the-new-hfm-11-1-2-4-java-api/ ,it returns the clustername”hfmcluster”.

    My hfm version is HYPERION 11.1.2.4.0.79
    odi version is ODI_11.1.1.9.0_GENERIC_150427.0937

    So can i do anything else to find the reason??

  8. Hello

    great job.

    For the WSSERVLET11 issue, it can be solved by adding this additional class path

    set ODI_ADDITIONAL_CLASSPATH=%ODI_ADDITIONAL_CLASSPATH%;D:\Oracle\Middleware\EPMSystem11R1\common\jlib\11.1.2.0\epm_*.jar

    Then, you don’t have to copy all jar files.

    Francisco

  9. JasonChen Says:

    WHEN I IMPORT KM TRT_Extract_Data_from_HFM.xml,raise error following:
    com.sunopsis.tools.core.exception.SnpsSimpleMessageException: Odi-14070: Import failed. The parent object could not be found in the archive.
    at com.sunopsis.dwg.DwgDuplicationTools.batchDuplication(DwgDuplicationTools.java:285)
    at com.sunopsis.dwg.DwgObject.importFromObjectLst(DwgObject.java:7701)
    at com.sunopsis.dwg.DwgObject.internalImportObjectList(DwgObject.java:6601)
    at com.sunopsis.dwg.DwgObject.doImport(DwgObject.java:7026)
    at com.sunopsis.dwg.DwgObject.importFromXml(DwgObject.java:6227)
    at com.sunopsis.dwg.DwgObject.importFromXmlWithCommit(DwgObject.java:6367)
    at com.sunopsis.dwg.DwgObject.importFromXmlWithCommit(DwgObject.java:6335)
    at com.sunopsis.graphical.dialog.SnpsDialogImportXml.doInternalImport(SnpsDialogImportXml.java:382)
    at com.sunopsis.graphical.dialog.SnpsDialogImportXml.access$10(SnpsDialogImportXml.java:285)
    at com.sunopsis.graphical.dialog.SnpsDialogImportXml$2.doAction(SnpsDialogImportXml.java:261)
    at oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:216)
    at oracle.odi.core.persistence.dwgobject.TransactionalDwgObjectTemplate.execute(TransactionalDwgObjectTemplate.java:64)
    at com.sunopsis.graphical.dialog.SnpsDialogImportXml.doImport(SnpsDialogImportXml.java:255)
    at com.sunopsis.graphical.dialog.SnpsDialogImportXml$6.doInBackground(SnpsDialogImportXml.java:850)
    at com.sunopsis.graphical.tools.utils.swingworker.SwingWorker$1.call(SwingWorker.java:240)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at com.sunopsis.graphical.tools.utils.swingworker.SwingWorker.run(SwingWorker.java:278)
    at oracle.ide.dialogs.ProgressBar.run(ProgressBar.java:655)
    at java.lang.Thread.run(Thread.java:662)
    Caused by: com.sunopsis.core.SnpsInexistantObjectException: SnpFolder.getObjectByIdent : SnpFolder does not exist
    at com.sunopsis.dwg.dbobj.generated.GeneratedSnpFolder.getObjectByIdent(GeneratedSnpFolder.java:461)
    at com.sunopsis.dwg.dbobj.SnpTrt.checkParentExists(SnpTrt.java:2318)
    at com.sunopsis.dwg.DwgDuplicationTools.batchDuplication(DwgDuplicationTools.java:281)
    … 19 more

    • Did you try to import as “Insert/Update”? Please try with “Duplication”. I just tried to import in ODI 12 with Duplication and it worked fine. Thanks!

      • Anonymous Says:

        my odi is China version£¬the result following£ºi search your blog£¬say extract from hfm km is to do list£¿

      • Anonymous Says:

        my odi is 11.1.9,is it not compatible with your km?it must use 12C?

      • No, it should work on both versions. It was originally created in 11.1.9, but I tested again in ODI 12 just to make sure it was working. If you are not able to import as “Duplication”, you may open the XML in a text editor and copy/paste the code from it. Its a totally manual work, but you may use it as a last resource…

      • Anonymous Says:

        I’m your fans,I also love your blog.
        I’d like to ask you about you develope km:TRT_Extract_Data_from_HFM.xml
        if importing it to ODI,how to use it?
        I understand that this function is the same as THE EA function of HFM,so How do I set up such an interface using this km at ODI 11.1.1.9.

        I’m Looking forward to your reply!

Leave a Reply to ODI KMs for HFM 11.1.2.4 | DEV EPM Cancel reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: