ODI KMs for HFM 11.1.2.4
Hi guys how are you? Today we are proud to announce that we are making available the ODI KMs for HFM 11.1.2.4.
—- EDITED on June/17 —-
We developed these KMs around 6 months ago, but we were waiting to release them together with an article that we wrote for Oracle.
Since OTN had some “Priority changes”, our article was postponed to later this year. As we had some people asking for these KMs we decide to release the KMs now and when the article is published we will let you guys know as well.
The article is live here! And if you guys are having errors with our KMs, please check our troubleshooting post here.
—- EDITED on June/17 —-
Prior to version 11.1.2.4, ODI could be easily used for HFM integration processes. ODI used its KMs with specific HFM drivers (HFMDriver.dll) provided by Oracle that were used to access and manipulate HFM applications. However, on HFM’s latest version, Oracle decided to remove its support for ODI, meaning that all HFM integrations would have to move from ODI to either manual iteration with HFM, usage of another integration tool (Like FDMEE) or create custom code using the new Java HFM API.
Since we didn’t want to re-write all our ODI environment and also none of the above options are robust enough, we decided to recreate the ODI KMs using Java HFM API. For these KMs to work we need to do two things: import them from ODI Java Net and do some setup in the ODI agent.
In the article we explain all options and how do we came up with this solution, but here we will not talk about it since we want you guys to read our article as well and we can’t use the content of the article here since we already signed an exclusivity agreement with Oracle.
The first part is easy and you just need to download the files from the link below
The second one is more difficult. We need to make the new HFM Jars available to the ODI Agent and in order to do so we have two options:
Install the agent in the HFM machine OR copy the necessary jar files to the agent drivers folder (oracledi\agent\drivers).
If your architecture allows to have both HFM and ODI agent in the same server, then you may use this approach, which is very simple. The only thing to do is to change odiparams file (oracledi\agent\bin\odiparams.bat file in a standalone agent) and add the location of those three HFM jar files. Open odiparams.bat file and search for “ODI_ADDITIONAL_CLASSPATH”. On that setting, just set the location of the HFM jar files, as below (this is just an example. Please adjust the path accordingly to your environment):
set ODI_ADDITIONAL_CLASSPATH=%ODI_ADDITIONAL_CLASSPATH%;
“D:\Oracle\Middleware\EPMSystem11R1\common\jlib\11.1.2.0\epm_j2se.jar”;
“D:\Oracle\Middleware\EPMSystem11R1\common\jlib\11.1.2.0\epm_thrift.jar”;
“D:\Oracle\Middleware\EPMSystem11R1\common\jlib\11.1.2.0\epm_hfm_server.jar”
Save the file, restart the ODI agent and it is done
If you decide to go with the second option, we’ll provide a list of all the necessary jars (be prepared… it’s huge). In the article we explain how to identify all the necessary jar files in a systematic way but here this is not an option as explained before.
Search for all the Jars in the below list and copy all of them under oracledi\agent\drivers folder.
adm.jar
admaps.jar
admodbo.jar
ap.jar
ArtifactListing.jar
audit-client.jar
axiom-api-1.2.10.jar
axiom-impl-1.2.10.jar
axis-ant.jar
axis-jaxrpc-1.2.1.jar
axis.jar
axis2-adb-1.5.4.jar
axis2-kernel-1.5.4.jar
axis2-transport-http-1.5.4.jar
axis2-transport-local-1.5.4.jar
backport-util-concurrent.jar
broker-provider.jar
bsf.jar
castor-1.3.1-core.jar
castor-1.3.1.jar
com.bea.core.apache.commons.collections_3.2.0.jar
com.bea.core.apache.commons.net_1.0.0.0_1-4-1.jar
com.bea.core.apache.commons.pool_1.3.0.jar
com.bea.core.apache.log4j_1.2.13.jar
com.bea.core.apache.regexp_1.0.0.0_1-4.jar
com.bea.core.apache.xalan_2.7.0.jar
com.bea.core.apache.xml.serializer_2.7.0.jar
com.oracle.ws.orawsdl_1.4.0.0.jar
commons-cli-1.1.jar
commons-codec-1.4.jar
commons-compress-1.5.jar
commons-configuration-1.5.jar
commons-dbcp-1.4.0.jar
commons-discovery-0.4.jar
commons-el.jar
commons-fileupload-1.2.jar
commons-httpclient-3.1.jar
commons-io-1.4.jar
commons-lang-2.3.jar
commons-validator-1.3.1.jar
cpld.jar
css.jar
cssimportexport.jar
ctg.jar
ctg_custom.jar
dms.jar
epml.jar
epm_axis.jar
epm_hfm_web.jar
epm_j2se.jar
epm_jrf.jar
epm_lcm.jar
epm_misc.jar
epm_stellant.jar
epm_thrift.jar
essbaseplugin.jar
essbasestudioplugin.jar
ess_es_server.jar
ess_japi.jar
fm-actions.jar
fm-adm-driver.jar
fm-web-objectmodel.jar
fmcommon.jar
fmw_audit.jar
glassfish.jstl_1.2.0.1.jar
hssutil.jar
httpcore-4.0.jar
identitystore.jar
identityutils.jar
interop-sdk.jar
jacc-spi.jar
jakarta-commons.jar
javax.activation_1.1.jar
javax.mail_1.4.jar
javax.security.jacc_1.0.0.0_1-1.jar
jdom.jar
jmxspi.jar
jps-api.jar
jps-common.jar
jps-ee.jar
jps-internal.jar
jps-mbeans.jar
jps-unsupported-api.jar
jps-wls.jar
js.jar
json.jar
jsr173_1.0_api.jar
lcm-clu.jar
lcmclient.jar
LCMXMLBeans.jar
ldapbp.jar
ldapjclnt11.jar
libthrift-0.9.0.jar
log4j-1.2.14.jar
lucene-analyzers-1.9.1.jar
lucene-core-1.9.1.jar
lucene-spellchecker-1.9.1.jar
neethi-2.0.4.jar
ojdbc6dms.jar
ojdl.jar
opencsv-1.8.jar
oraclepki.jar
org.apache.commons.beanutils_1.8.3.jar
org.apache.commons.digester_1.8.jar
org.apache.commons.logging_1.1.1.jar
osdt_cert.jar
osdt_core.jar
osdt_xmlsec.jar
quartz.jar
registration_xmlBeans.jar
registry-api.jar
resolver.jar
saaj.jar
scheduler_ces.jar
servlet-api.jar
slf4j-api-1.5.8.jar
slf4j-log4j12-1.5.8.jar
sourceInfo.jar
stax-api-1.0.1.jar
wf_ces_utils.jar
wf_eng_agent.jar
wf_eng_api.jar
wf_eng_server.jar
wldb2.jar
wlpool.jar
wlsqlserver.jar
wsplugin.jar
xbean.jar
xmlparserv2.jar
xmlpublic.jar
xmlrpc-2.0.1.jar
XmlSchema-1.3.1.jar
Restart the ODI agent and it should be ready to execute any HFM Java code inside of ODI.
I know that this is a lot of jars and will take some time to find all of them but at least you’ll be able to upgrade you HFM and still use the same interfaces you have today in ODI to manage HFM (just remember to use the new data store objects reversed from the new RKM).
The KM usage is very similar to the old ones and we had the instructions in all its options so we’ll not explain then here (just in the article). The only important difference is on how to setup the “Cluster (Data Server)” information on Data Server (Physical Architecture). For the new HFM API, we need to inform two new settings: Oracle Home and Oracle Instance Paths. Those paths are related to the server where your HFM application is installed. These settings will be used internally in HFM API to figure out all HFM information related to that specific HFM instance.
Due to these two new settings and in order to continue to accommodate all connection information within a single place (ODI Topology), “Cluster (Data Server)” was overloaded to receive three settings instead of just one, separating them by colon. So now “Cluster (Data Server)” receives “dataServerName:oracleHomePath:oracleInstancePath” instead of just dataServerName.
Having those considerations in mind, it is just a matter to create a new Data Server and set the overloaded “Cluster (Data Server)” information and the user/password that ODI will use to access the HFM application. After that, we just need to create a Physical Schema with the name of the HFM application, a new Logical Schema and associate that to a context.
And that is it, you guys are ready to upgrade your HFM environment and still use your old ODI interface to maintain HFM. If you guys have any doubts/suggestions about the KMs please few free to contact us.
If you guys are having errors with our KMs, please check our troubleshooting post here.
I hope you guys enjoy these KMs. See you soon!
March 4, 2017 at 10:10 pm
The RKM link is to the IKM for dimensions
March 6, 2017 at 7:33 am
Hi Terry how are you? Thank you for the info and I’m sorry for that! I just updated the Link!! Thank you and I hope you enjoy!
March 8, 2017 at 12:53 am
I am doing well. Thank you for asking and providing these KM’s to the community. I have a couple of clients which will definitely have an interest if an upgrade to 11.1.2.4 occurs.
March 20, 2017 at 5:17 pm
Hi, when I try to perform the reverse engineering:
org.apache.bsf.BSFException: The application script threw an exception: java.lang.ArrayIndexOutOfBoundsException BSF info: Reverse 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:2093)
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:874)
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)
March 21, 2017 at 11:29 am
Don’t you love the way that Java errors are always “clear” to debug? 🙂 It seems that the Topology information is not correctly separated by : Remember that for these new set of KM, the Topology Dataserver (cluster) must be something like this: “dataServerName:oracleHomePath:oracleInstancePath”
If you wish, send us an email to devepm@teracorp.com.br with some screenshots from your topology and any useful information that you have, so we may help you. Thanks!
March 21, 2017 at 11:54 am
Yes!! I love that Java error message logs 🙂
You are right.
I just updated this information:
WIN-1DL1MSEERVV://WIN-1DL1MSEERVV/E$/Oracle/Middleware/EPMSystem11R1://WIN-1DL1MSEERVV/E$/Oracle/Middleware/user_projects/epmsystem1
But I have received the following error:
org.apache.bsf.BSFException: The application script threw an exception: oracle.epm.fm.common.exception.HFMException: EPMHFM-65536: Se produjo un error inesperado. BSF info: Reverse 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:2093)
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:874)
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)
And the log file:
Starting Reverse Process
Getting Connection Token
Any idea?
Thanks
Matias
March 21, 2017 at 4:56 pm
Another complicated error to debug, since 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. Basically, the ODI KM code is not able to connect/get the connection token from your HFM application. The code is not able to perform this:
ssoToken = HSSUtilManager.getSecurityManager().authenticateUser(hfmUser, hfmPass);
sessionOM = new SessionOM();
This is where ODI would pass the user/password and would create a connection to HFM. Unfortunately, there is no easy way to debug this. My suggestion (if possible) is to try to install a Java IDE (like Eclipse) in the same server as the ODI agent that you are using and try to replicate the login step (take this code as example, just remove all the extract steps and focus only in the connection part https://community.oracle.com/message/13771292#13771292 )
A good thing is that it seems that ODI Agent is correctly setup, since it was able to read HFM jar files and (at least) tried to connect to HFM. The problem that you are facing is probably on HFM side.
Please let me know if you are able to make it work!
March 30, 2017 at 1:27 pm
Hi,
I understand that these KMs, not being official, are not certified by Oracle and do not have support, is it correct? So what’s the agreement you’re talking about?
March 30, 2017 at 2:17 pm
Hi Marcelino!
Yes, these KMs are not Oracle supported. DEVEPM built them and released them to public usage, so we will try our best to solve any issue that may appear on them 🙂
About the agreement: the agreement is not about the KMs, but about the article itself. When you write an article to Oracle you sign an “exclusive” agreement saying that the article will be published first by them and not elsewhere (like our blog). That’s why we said that we would make a “resumed” blog post since we cannot blog the entire article until Oracle publishes it (it would go against our agreement with Oracle).
Thanks!
April 18, 2017 at 11:43 am
I see where you can download the HFM RKM and IKMs but what about LKMs :LKM Hyperion Financial Management Members To SQL and
LKM Hyperion Financial Management Data To SQL. I have a requirement to extract HFM data to a flat file (to import into a data warehouse).
December 6, 2017 at 12:10 pm
We do not have these KMs yet, however it is already in our “to-do” list. However, Oracle has released their set of KMs and one of them may fit your needs. Please take a look here: https://blogs.oracle.com/dataintegration/a-simple-guide-to-hyperion-financial-management-hfm-knowledge-modules-for-oracle-data-integrator-12c
June 15, 2017 at 4:01 pm
The IKM loads the data into HFM from a pre-formatted .dat file.
Why cant it load from the SQL source directly by generating the intemittent .dat file through the KM?
December 6, 2017 at 12:18 pm
Thats exactly what we do in our IKM. We load from a SQL source, create a .dat “behind the scenes” and send this .dat file to HFM. So for the IKM users, the .dat is something transparent and they dont need to worry about it. Take a look here: https://devepm.com/2017/08/08/loading-and-extracting-hfm-11-1-2-4-data-with-odi-knowledge-modules-odtug-article/
July 19, 2017 at 5:49 am
Hi I’ve done all the steps above and I’m still getting an error when doing the reverse engineer. Could you please help me solving this question?
ODI 26-066: An unexpected error has occurred
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)
December 6, 2017 at 12:21 pm
If you wish, send us an email to devepm@teracorp.com.br with some screenshots from your topology and any useful information that you have, so we may help you. Thanks!
April 22, 2018 at 4:57 am
Hi,
IKM SQL to Hyperion Financial Management Dimension 11.1.2.4 JAVA API is not available in the link provided. It would be very helpful if you can provide the KM.
Thanks..
April 23, 2018 at 2:03 pm
I tried the link now and it seems to be working. If you still have issues, please send us an email to devepm@teracorp.com.br so we may send you the KMs.
August 1, 2018 at 3:03 pm
Hi guys, I’m working with your IKM: “KM_IKM_SQL_to_Hyperion_Financial_Management_Dimension_11_1_2_4_Java_API” to update members in Account dimension, but i have trouble. I don’t have LKM to read the current dimension Account, therefore, I need to read some HFM tables how: XXX_ACCOUNT_CUSTATTR, XXX_ACCOUNT_DESC, XXX_ACCOUNT_ITEM, XXX_ACCOUNT_LAYOUT to update the two ORACLE tables: XXX_ACOUNTS_HIERARCHY and XXX_ACCOUNTS_PROP. But I have some trouble with the second: XXX_ACCOUNTS_PROP, I can see some columns can fill with some columns the another tables XXX_ACCOUNT_ITEM, but other columns are not where they come from. Could you help me to know which tables internally fill HFM the table XXX_ACCOUNTS_PROP.
Thanks!!!
Eugenio
August 1, 2018 at 4:06 pm
Hi Eugenio,
Unfortunatelly, I dont know how HFM tables work internally (if it was Hyperion Planning, than we would know by heart). What you may try to do is to get Oracle’s LKM that extracts metadata from HFM to a table. I’m just not sure which is the level of detail that you will be able to get from it, since I never tried it (https://blogs.oracle.com/dataintegration/a-simple-guide-to-hyperion-financial-management-hfm-knowledge-modules-for-oracle-data-integrator-12c)
Thanks!
May 31, 2019 at 1:45 pm
Hello,
we’re trying to use the method you described in this post on an ODI 11.1.1.9 to HFM 11.1.2.4, but we’re having problems. Both HFM and ODI agent are on the same server.
The steps followed are:
1) Downloaded the KMs from your link (https://drive.google.com/drive/folders/0B6qArlZmuBsaYnpRVVNzeVJvV2M) and imported them in ODI
2) Set the 3 jars (epm_hfm_web.jar, epm_j2se.jar and epm_thrift.jar) in OPMN.xml in ODI_CLASS_PATH variable
This didn’t work.
Then we tried to follow the instructions found in Oracle link “https://www.oracle.com/technetwork/articles/bi/giampaoli-hfm-odi-km-3748317.html” where it suggests to compile the 3 jars (epm_hfm_web.jar, epm_j2se.jar and epm_thrift.jar) with Eclipse and to retrieve the list of dependencies among other jars, inserting all of them inside “agent/drivers” folder.
Also this solution didn’t work.
In both cases, the error that ODI RKM provides us is as follow:
org.apache.bsf.BSFException: BeanShell script error: Sourced file: inline evaluation of: “import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; i . . . ” : Typed variable declaration : Class: SessionOM not found in namespace : at Line: 25 : in file: inline evaluation of: “import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; i . . . ” : SessionOM
BSF info: Reverse at line: 0 column: columnNo
It seems that it can’t find “SessionOM” and “SessionInfo” classes inside any jar file.
Can you please help us on solving this issue or suggest another way?
Thank you and best regards,
Paolo.
July 7, 2019 at 11:09 pm
when i reverse engineering using hfm,it raise error:
org.apache.bsf.BSFException: BeanShell script error: Sourced file: inline evaluation of: “import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; i . . . ” : Typed variable declaration : Class: SessionOM not found in namespace : at Line: 25 : in file: inline evaluation of: “import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; i . . . ” : SessionOM
BSF info: Reverse 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:346)
at com.sunopsis.dwg.codeinterpretor.SnpScriptingInterpretor.exec(SnpScriptingInterpretor.java:170)
at com.sunopsis.dwg.dbobj.SnpSessTaskSql.scripting(SnpSessTaskSql.java:2457)
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:2906)
at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java:2609)
at com.sunopsis.dwg.dbobj.SnpSessStep.treatAttachedTasks(SnpSessStep.java:537)
at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java:453)
at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java:1740)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$2.doAction(StartSessRequestProcessor.java:338)
at oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:214)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.doProcessStartSessTask(StartSessRequestProcessor.java:272)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.access$0(StartSessRequestProcessor.java:263)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$StartSessTask.doExecute(StartSessRequestProcessor.java:822)
at oracle.odi.runtime.agent.processor.task.AgentTask.execute(AgentTask.java:123)
at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor$2.run(DefaultAgentTaskExecutor.java:82)
at java.lang.Thread.run(Thread.java:662)
July 10, 2019 at 1:49 pm
The error ” Class: SessionOM not found in namespace” means that your agent is not finding the HFM jars in the ODI Params locations or it was not able to load them properly. I also faced this issue in some environments and it is painful to debug. I suspect that it happens because the “absolute path” gets too big for ODI to handle and then the path gets “truncated” at some point, making ODI to throw this error. My suggestion is to go with our second approach and add all the jar files to oracledi\agent\drivers folders. I may provide you a link with all the necessary jar files if you wish. Please send us an email to devepm@teracorp.ie . Thanks!
January 15, 2021 at 3:19 pm
Hello
Will it work with HFM 11.2.3 Setup and ODi 12C?