Wednesday, 28 January 2015

EPM Installation and configuration

As expected there was a flurry of activity on social media that had been  released though it was only the downloads that had been released on OTN, no documentation, no support matrix or edelivery and the OTN release is not packaged up in the same way, one year the OTN EPM downloads were a beta release so should never be trusted (wait for the edelivery release)

It would make more sense to release the documentation first but then again the way some people go about it these days is to install first and then ask questions before even reading any of the docs :)

All that time Oracle had to prepare the way it was  released and in the end it was done in an unstructured way. :)

Seeing as I have no choice to go down the route of OTN and with no documentation then so be it, I will update this post once all the documentation becomes available with the highlights.

UPDATE 29/01/2015: Documentation can be found here or all documentation here

UPDATE 28/01/2015: Support Matrix has now been updated and can be downloaded from here

The noticeable changes in compared to are:
  • OS support added for Windows Server 2012 (all SP levels inc)/R2
  • OS support removed for Windows Server 2003
  • Client OS support added for Windows 8.1 and Windows Server 2012 (all SP inc/R2)
  • Client OS support removed for XP and Vista
  • Browser support added for Internet Explorer 11.x and Firefox 31.x ESR
  • Browser support removed for Internet Explorer 7 and 8
  • No changes in Oracle database repository support though Microsoft SQL Server 2012 (all SP levels inc) has been added
  • No changes in supported versions of Microsoft Office which are 2007/2010/2013
  • Websphere application server support removed
  • Smart View compatible version for is
There are some caveats on the above so for more detailed information check out the support matrix.

As windows 2012  is at last supported I am going to take the plunge and install on it and configuring against Oracle 12c ( database.

Just like in my previous installation post this is not going to be a step by step guide to installing and it will be only be covering key aspects or changes from

Please be aware as this has just been released it just my initial view which I am sure will change once I have gained more knowledge on the release.

Once the files are downloaded and extracted under the same location you will notice there have not been any changes to the file structure.

There are a few additions in the root installation folder.

Supplemental Data Manager and Tax Supplemental Schedule Smart View Extension installers.

Running through the installation is exactly the same as previous versions.

Interesting to see the operating system is supported but categorised as Windows NT (unknown)

Most of the options are the same on the product components screen though there are few changes.

As you will notice FDM has been removed, farewell and time to move on to the much superior FDMEE.

The new Tax Management product including Tax Governance and Reporting is available.

Financial Management includes the new SDK and the ADM option has gone.

I went to install all the products just to test whether there would any problems installing on Windows 2012 but as you can see all green.

The underlying directory structure remains constant.

What I am surprised at the versions of jdk and jrockit have not been updated from

Now on to the configuration which remains in the whole pretty much similar to and I will miss out some sections.

The configuration to Shared Services and Registry Database has no changes.

Once again the product configuration options are very similar to that of

There is the new addition of Tax Management and the removal of DCOM and the web server from the FM configuration.

In this configuration I am not going to configure FCM/Tax Management as they require SOA so I will leave that for another day.

Under FDMEE the register HFM adaptor is no more now that HFM has moved into the Java world so it will be built into FDMEE by default.

The common components screen now has a new option to enable SSL offloading and host details.

The configure database screen no longer has the option to upgrade from a version.

The deploy application server still has the annoying deploy to single managed server enabled by default which I quickly deselected.

The essbase configuration has a new additional option to set the binding host name which I know will help in cluster configurations.

From the docs:
"Specify a Binding Host Name to have Essbase bind only to the IP address for the specified Binding Host Name. Otherwise, at startup, Essbase binds on all available IP addresses."

There are now only two configuration screens for FM

>The FM configure server has the new options for the server port and datasource port range.

The cluster configuration remains the same.

IIS has been removed as an option for the Web Server

The hardly ever used and more annoying than anything Oracle Configuration Manager (OCM) Registration has been removed so another less thing to worry about especially on Linux.

And besides all screens which are exactly the same as then that is pretty much it and off the configuration goes.

Surprisingly enough I didn’t have any failures on win2012 and the validation report is all happy too.

If you take a look at the windows services there is not much of a shock.

Financial Management is down to two services instead of four.

The service names, logs etc still contain references to system 9 how we have moved on :)

IIS is very quiet indeed with no FDM and no FM now that it has fully moved in to java web application world.

Firing up all the services was once again successful and you can see that workspace has a very slight makeover.

Well I will leave it there for now, obviously there will be much more to follow once I delve a little deeper

Thursday, 1 January 2015

EPM - Did you know? #5

Time now for the fifth and final part of the “did you know” miniseries and from the list of topics the following has been randomly selected for today:

Did you know there is an EPM System Activity Report in

It is not documented and probably was only developed for use with Oracle’s PBCS but nevertheless it does exist and can be run on any EPM server.

The report generates the following statistics:
  • Weblogic Top 10 Least Performing End User URL Requests
  • WebLogic Top 10 URL Request Instances by Duration
  • WebLogic Top 10 Functions by Number of Executions
  • WebLogic Number of Requests by Webapp
  • WebLogic Top 10 Number of Active Users by Period
  • WebLogic Top 10 Users by Duration
  • WebLogic Non-200 Status by Number of Requests
  • WebLogic Top 10 URLs by Number of Requests
  • WebLogic Top 10 URL Requests by Size
  • WebLogic Funtionally Unknown URLs
  • Database Top 10 Queries by Duration
  • Database Top 10 Queries by Execution
  • Essbase Top 10 Calc Scripts by Duration
  • Essbase Top 10 Calc Scripts by Execution
  • Essbase Top 10 Calc Scripts Execution Instance by Duration
As this looks like it has been developed for PBCS then the WebLogic statistics are only against the planning web application, the database statistics are produced against an Oracle database and looking at a single schema development.

So this report is obviously not for everybody but it highlights what is being developed in the background to the on-premise world.

Basically the WebLogic section of the report is built up from parsing the access log in the planning managed server logs directory.

The database section is generated from the Automatic Workload Repository (AWR), the AWR is used to collect performance statistics for the Oracle database.

The essbase section is generated by parsing the application logs for each database and focusing on the execution time of calcs.

To run the report is very simple and can be achieved from command line by running something similar to:

set classpath=E:\Oracle\Middleware\modules\com.bea.core.apache.velocity_1.4.jar;%EPM_ORACLE_HOME%\common\SharedServices\\lib\epmactivity.jar;%EPM_ORACLE_HOME%\common\jlib\\epm_j2se.jar;
set EPM_ORACLE_INSTANCE=E:\Oracle\Middleware\user_projects\epmsystem1


This will generate an html report named EPMActivty.html in the diagnostics reports directory.

The report is broken down into all the statistics which I mentioned earlier.

It is possible to use parameters to generate the report within a specified number of days or between a specified time period.

To run the report for a specified number of days you would use:
–tday <DAYS>

So to run for the last 10 days it would be:


To run the run against a time period the parameter format is
–t  <from date/time> <to date/time>

The “from and “to” time must be specified in YYYY-MM-DDTHOUR:MIN:SEC format using a 24-hour clock.

For example:

java -DEPM_ORACLE_INSTANCE=%EPM_ORACLE_INSTANCE% -t 2014-12-01T00:00:00 2014-12-31T23:59:59

There is also a separate report available which is only run against essbase and something similar can be run on any essbase server:

set classpath=E:\Oracle\Middleware\modules\com.bea.core.apache.velocity_1.4.jar;%EPM_ORACLE_HOME%\common\SharedServices\\lib\essbaseactivity.jar;%EPM_ORACLE_HOME%\common\jlib\\epm_j2se.jar;
set EPM_ORACLE_INSTANCE=E:\Oracle\Middleware\user_projects\epmsystem1

java -DEPM_ORACLE_INSTANCE=%EPM_ORACLE_INSTANCE% com.hyperion.essbasemonitor.EssbaseLogParser

There is another caveat to the reports generating any essbase results and that is it will only run against the appname.log and not the equivalent appname_odl.log

If the ODL logs exist the essbase sections of the reports will be blank, to get around this the ODL logs can be removed and disabled by editing the logging xml file, and did you know that was possible? Sorry that didn’t to the selected topics for this series.

The essbase activity report will be generated in the same location and named EssbaseActivityReport.html

If you are wondering what the inline scripts are in the report these are generated from planning business rules

I am not going to cover it but It is even possible to alter the design of the reports by editing certain template files.

So that is the end of the series which I hope some have found useful, there are many other topics in the list that could have been covered but unfortunately I have run out of time, maybe the series will return again some time in the future.

Tuesday, 30 December 2014

EPM - Did you know? #4

Back again with the fourth instalment of the “did you know” series and the random topic for today is:

Did you know that you can alter the frequency or disable the essbase OPMN ping?

Personally I think OPMN was a bad choice to inflict on essbase and has been more trouble that it is worth, it only seems a viable solution for clustering on *nix type systems and the rest of the time it is a waste of space, it would have been nice to be given the option of not having to deploy it with essbase, anyway it is an old technology and looks like it is not going to be in Oracle’s strategic future.

In case you are wondering what the OPMN ping is all about I will give a little bit of background information.

If you look in the essbase product bin directory you will see the OPMN ping executable:

What it basically does is log into essbase with the admin account and then log out this indicates whether essbase is alive or not which is a requirement when clustering.

By default this happens every 20 seconds and if you take a look at the essbase log you will see it constantly polluted with something like:

[Tue Dec 30 10:12:29 2014]Local/ESSBASE0///964/Info(1042059)
Connected from []

[Tue Dec 30 10:12:49 2014]Local/ESSBASE0///964/Info(1042059)
Connected from []

As you can imagine this amounts up to many entries over time and doesn’t serve much purpose in the log.

There are also other logs that get written to under the OPMN logs directory.

I seem to find that at many clients this log folder is not part of any housekeeping solution and the essbase ping and agent log can become large in size.

Unfortunately there does not seem to be any options to rotate these logs even though there is a setting in the opmn.xml

The rotation size works with the opmn log but not does not seem to work with the ping or agent log, I remember a enhancement request back in 2012 to be able to add the option to but I am not sure it got anywhere.


If you look in the EssbasePing.log then you will see the following messages repeating every 20 seconds.

[2014-12-30T11:02:15.272-18:02] Initializing Ping Request
PM-PingUtility INFO: Connection is done
PM-PingUtility INFO: Received Response from the Essbase Agent
PM-PingUtility INFO: Essbase Message - PING_OK

If there is a problem connecting or logging into Essbase then you will see a similar message to:   

[2014-12-30T11:25:13.539-18:58] Initializing Ping Request
PM-PingUtility: Couldn't connect to Essbase with Essbase ERR# 1042006
PM-PingUtility: Fails to Ping the Essbase Agent 1042006

In a non-clustered essbase environment this is not really providing much benefit as the message just repeats and unless the log is being monitored it would go unnoticed, if required the same solution could be easily created with a Maxl script.

Luckily the opmn ping log does not have a lock on it so it can be removed with stopping services.

So how about altering the frequency of the ping and how can it be done.

Well it is back to the opmn.xml file located in:


There is an element called ping and an attribute called interval that can be added to the XML file

For example <ping interval="60"/>

The interval is the number of seconds between each ping so in the above example after a restart to OPMN the ping will have gone from 20 seconds to 60 seconds.

After making any changes to the xml file I was always like to use the validate command to check the file is still valid.

The maximum value is 7200 seconds and if you try and set it any higher then you should see the following error message:

The maximum value is defined by the XML schema definition file:

It is possible to change the value in the XSD file so I tested increasing the maximum value to 10800 and the ping interval matched the value.

So how about disabling the ping process well it couldn’t be simpler just set the interval value to 0.

If you set it to 0 and restart OPMN then you will no longer be bothered by the ping.

Saturday, 27 December 2014

EPM - Did you know? #3

Today I am going to be continuing the “did you know” series with the third instalment.

This time the randomiser has picked:

Did you know where the EAS console picks the version/patch number from?

I previously wrote a blog on understanding product versions in workspace, in the post I did not cover EAS and I know sometimes there can be confusion on the versioning in the console so here is a brief overview on how it works.

In the console if you go to “Help” and select “About Essbase Administration Services” then the following dialog box will open.

As you can see it displays three product version numbers, I have no idea why Business Rules is still included as it was removed in and this causes the version to default to 4.1.1.

The first question is it the server version for EAS and APS and the answer is no it is only the version of the files being used in the console.

You can tell that by the MSI console version as you don’t even need to connect to the EAS server for it return the version and even when you connect it does not make any difference.

With the web console it downloads the latest versions of the java files from the EAS server so usually the console and server will be in sync.

So where is the version generated from, well both the web and MSI console use a java archive called eas_client.jar, the MSI version is located in


The web console downloads the file from the EAS server and the file is contained in the EAS web application file:


If you open the java archive there is a directory which contains property files and the has some of the information we are after.

The VersionNo property contains the information that it is displayed in the console.

To prove it I updated the version and then loaded up the console again.

So that covers the EAS version so how about the APS version.

This is generated from a different java archive ess_es_gui.jar which is also used by the console:

The version is derived from the manifest file in the META-INF directory, the manifest is a special file that can contain information about the files packaged in an archive file and in this case the version is read from the Implementation-Version line.

Once again I updated the version number.

Loaded up the console again and the version had changed.

You may sometimes find that with patch releases that the jar files are not updated so the version number does not match to the patched server version.

Well at least you should now understand how the versioning works in the console.

Wednesday, 24 December 2014

EPM - Did you know? #2

If you read yesterday you will know I am putting together a series of quick posts with EPM information which you may or may not know.

The randomiser today has picked:

Did you know you can simply automate the refreshing of the Shared Services cache using the Java API?

In the Shared Services under the user directory configuration there is the option to set the cache refresh interval which the default is 60 minutes.

In some cases with large corporate directories the interval may be set to higher value to reduce performance degradation.

You may be wondering what the cache is for anyway, well here is Oracle’s definition:

"Interval (in minutes) for refreshing the Shared Services cache of groups to users relationship data. Default is 60 minutes.

Shared Services caches information about new external user directory groups and new users added to existing groups only after the next cache refresh. Users provisioned through a newly created external user directory group do not get their provisioned roles until the cache is refreshed."

Now say there have been changes in the external directory such as users have been added or removed from groups then these will not be picked up until the next cache refresh, if these changes are required to be pushed through straight away or maybe changes should be applied at a set time then having to log into Shared Services to click the refresh button is not the ideal option.

Luckily there is an option available using the API and a simple piece of code will allow the refresh to occur on demand.

Here is an example piece of code I wrote to basically accept a username and password which is then authenticated and if successful the cache is refreshed.

Apologies to master coders out there if you are appalled by my attempt :)

Right, let’s demonstrate refreshing the cache with an example scenario, in Shared Services I have an active directory group called EPM_ADMINISTRATORS which has already been provisioned with roles.

At present the group only has only user called epm_admin, in the AD I add myself to the group

Checking the properties of the group in Shared Services still only shows one member.

This will be the case until the next refresh of the cache so time to give my code a quick test.

Running the java can easily be done from command line with the following:
  • Set the classpath to include the required java classes, to simplify I am using epm_j2se.jar which references many packages
  • Set the epm instance location
  • Call the java class passing in the epm instance and user credentials.
So for my environment I used:

set classpath=.;E:\Oracle\Middleware\EPMSystem11R1\common\jlib\\epm_j2se.jar;

set EPM_ORACLE_INSTANCE=E:\Oracle\Middleware\user_projects\epmsystem1

java -DEPM_ORACLE_INSTANCE=%EPM_ORACLE_INSTANCE% refreshCache  admin password

The warnings can be ignored as they not important, I would recommend adding some encryption though as clear text credentials are not for the security conscious.

Checking the properties of the group in Shared Services confirms the refresh has happened with myself now displaying as a member.

If you are using essbase and run the above code the caching system essbase uses will not automatically trigger an update until a user logs in, so you could update the code to include a login using the essbase JAPI or Maxl and then you should see entries in the SharedServices_Security_Client.log to confirm the cache refresh did happen.

Well that completes #2, until next time..