<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rittman Mead Consulting &#187; Hyperion</title>
	<atom:link href="http://www.rittmanmead.com/category/hyperion/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rittmanmead.com</link>
	<description>Delivered Intelligence</description>
	<lastBuildDate>Wed, 10 Mar 2010 08:49:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Oracle EPM 11.1.1.3 &#8211; Deploying EPM reporting Portlets in Weblogic Portal 10g</title>
		<link>http://www.rittmanmead.com/2010/01/13/oracle-epm-11-1-1-3-deploying-epm-reporting-portlets-in-weblogic-portal-10g/</link>
		<comments>http://www.rittmanmead.com/2010/01/13/oracle-epm-11-1-1-3-deploying-epm-reporting-portlets-in-weblogic-portal-10g/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 11:50:50 +0000</pubDate>
		<dc:creator>Venkatakrishnan J</dc:creator>
				<category><![CDATA[Hyperion]]></category>
		<category><![CDATA[Oracle EPM]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=4073</guid>
		<description><![CDATA[There are multiple ways of integrating reporting tools(oracle or non-oracle) to external portals. The most commonly used ones are the URL based integration, Web Service calls and calling native portlets directly from the portals. I have covered the details of the techniques some time back here. Out of these 3, URL based integration is the [...]]]></description>
			<content:encoded><![CDATA[<p>There are multiple ways of integrating reporting tools(oracle or non-oracle) to external portals. The most commonly used ones are the URL based integration, Web Service calls and calling native portlets directly from the portals. I have covered the details of the techniques some time back <a href="http://oraclebizint.wordpress.com/2009/01/26/integration-of-all-oracle-and-non-oracle-reporting-toolsets-url-parameters-an-introduction/" target="_blank">here</a>. Out of these 3, URL based integration is the easiest and the widely used method. Web Service integrations are commonly used by various product development teams when an acquisition happens (for example, BI EE &#8211; BI Publisher integration, EPM Workspace &#8211; BI EE Integration, BOBJ &amp; XCelcius Integration etc) though these can be leveraged by us as well. Portlet based integration is not that widely used due to the lack of extensibility/customization of the portlets exposed. Though the portlet based integration is not widely used, it can actually be put into very good use when the requirement is to have an efficient method of integration without compromising on security (URL based integrations can sometimes be insecure as some tools require the username/passwords to be passed in the URL. But these days most tools support POST method which is a secure method and hence this is not applicable anymore). Today i will be covering the EPM Portlet integration with an External Portal (in my case Weblogic Portal).</p>
<p>To demonstrate how the integration works, i will be using a simple report built in Web Analysis and expose that in Weblogic Portal. The procedure remains the same for HFR &amp; IR as well. I chose Web Analysis for a couple of reasons</p>
<p>1. Its one of the most under-rated tools in the Hyperion Stack. Its one of the best tools in Oracle that provides excellent multi-dimensional analysis even on relational data. There are so many features that makes BI EE 10g look like a very simple analysis tool in comparison, atleast from a multi-dimensional analysis standpoint. Its major downside though is it does not scale very well &amp; lacks a slick UI like BI EE.</p>
<p>2. HFR &amp; IR both require windows clients. In my case, both my VM&#8217;s (one running EPM Workspace and the other running Weblogic portal) were on Oracle Enterprise Linux.</p>
<p>From a portal standpoint, i believe Weblogic Portal 10.3 is now superseded by the Webcenter Suite portal framework. I had to choose Weblogic to reduce the memory footprint on my VM&#8217;s. Somehow the SOA Suite 11g portal along with JDeveloper on OEL seemed to bring my VM&#8217;s to a grinding halt. The procedure for portlet integration with Webcenter Suite is a bit different from Weblogic Portal which i do hope to cover in future(after sorting out the memory issue). One point to note is, while installing Weblogic Portal ensure that you are installing the Portal Samples as well. These samples contain a sample DVT application which provides a login portlet for the portal.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 30" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture30.png" border="0" alt="Picture 30" width="413" height="315" /></p>
<p>Having used Weblogic Portal, i can surely say that it is much better than the Oracle Portal 10g. Portlet development/deployment is a lot easier in Weblogic as it is purely java based. I still remember i had to get 2/3 patches applied on Oracle Portal 10.2.0.x to 10.2.0.4 just to make the Oracle Portal WSRP compliant so that it can consume JSR-168 compliant BI EE portlets. In the case of Weblogic, it supports WSRP by default. One downside though is Weblogic Portal 10.3 does not provide login portlets out of the box. This is essential to render EPM 11 portlets. I will demonstrate how we can enable a login portlet in the Weblogic Portal later here. One other good thing about Weblogic portal is it supports Portal deployment directly from the Eclipse IDE. This is so essential during the development cycles and i thought that is the biggest differentiating factor between Oracle portal 10g and Weblogic Portal 10g. Oracle Portal 10g supported only web based development and lacked a true IDE integration.</p>
<p>When you install EPM Workspace or Web Analysis, the Workspace portlets get installed automatically. There is nothing extra that we will have to do to use the portlets.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 15" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture151.png" border="0" alt="Picture 15" width="504" height="291" /></p>
<p>We will start with creating a very simple report in Web Analysis as shown below. This a report based on the SH schema.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 16" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture16.png" border="0" alt="Picture 16" width="504" height="178" /></p>
<p>Once the report is created, login to the machine where the portlets are installed. Navigate to the directory {HYPERION_HOME}\products\Foundation\workspace\InstallableApps\portlets</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 17" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture171.png" border="0" alt="Picture 17" width="492" height="250" /></p>
<p>In this directory, you would find all the portlet files for various portals. In our case, since we are using Weblogic Portal, we will have to copy the bea-avaproxy.zip to a temporary directory and decompress it.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 18" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture181.png" border="0" alt="Picture 18" width="258" height="71" /></p>
<p>The next step is to navigate to the Weblogic Portal and open up the eclipse IDE (workshop). If you are new to Weblogic Portal, the following steps will basically highlight what you need to do to quickly create a portal. Start with creating a simple Portal EAR Project directly from the Eclipse IDE.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 19" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture191.png" border="0" alt="Picture 19" width="294" height="315" /></p>
<p>Once you have created the EAR Project created, associate the project with a Weblogic domain. If you do not have a domain, you can create it as part of the EAR creation process.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 20" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture201.png" border="0" alt="Picture 20" width="274" height="315" /></p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 21" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture21.png" border="0" alt="Picture 21" width="275" height="315" /></p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 22" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture22.png" border="0" alt="Picture 22" width="374" height="315" /></p>
<p>Once the EARProject is created, we will have to create the Portal Web Project. While creating the Portal Web Project ensure that you are assigning the Samples DVT application as part of the project facets. This is very important for the portlet integration to work. This DVT application provides a login portlet that we can use within the portal. Remember that EPM portlets cannot be used by autonomous(non-authenticated) users.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 23" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture23.png" border="0" alt="Picture 23" width="338" height="315" /></p>
<p>Once the Portal Web Project is created, we need to deploy the portlets that we decompressed before. Portlet deployment in weblogic is done by copying the portlet.xml from the decompressed portlets folder to <strong>{BEA_HOME}\{Workspace_Home}\{PortalWebDirectory}\WEB-INF</strong> folder. In my case i had to copy the portlet.xml from <strong>/home/oracle/portlets/WEB-INF</strong> to <strong>/u01/app/bea/user_projects/workspaces/default/EPMPortalWebProject/WebContent/WEB-INF</strong>. Remember while copying on linux, the portlet.xml will contain Ctrl characters like ^M. Ensure that you do a dos2unix on this file before copying.</p>
<p>After copying the portlet.xml, merge the contents web.xml in <strong>/home/oracle/portlets/WEB-INF</strong> with web.xml in <strong>/u01/app/bea/user_projects/workspaces/default/EPMPortalWebProject/WebContent/WEB-INF</strong> folder.  For reference i have attached the web.xml and portlet.xml files <a href="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/portlet.xml" target="_blank">here</a> and <a href="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/web.xml" target="_blank">here</a>. Then ensure that every other file/folder (from decompressed portlet directory) is copied within the Portal Web applications portlets directory as is.  This will enable us to use the EPM portlets within the workshop framework. After the deployment, the eclipse IDE will recognize the portlets and will list it in the Design Palette as shown below</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 24" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture24.png" border="0" alt="Picture 24" width="272" height="207" /></p>
<p>To use the portlets, lets create a page in the Workshop portal and include the following portlets</p>
<p>1. DVT Enabler &#8211; Login portlet<br />
2. Hyperion Reporting and Analysis Portlet<br />
3. Hyperion Reporting and Analysis credentials Manger Portlet</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 25" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture25.png" border="0" alt="Picture 25" width="345" height="315" /></p>
<p>Now run this portal directly from Workshop. Remember to alter the name of the portal to remove the .portal extension. Else deploy the portal from Portal Web Admin console. If you deploy it with the portal extension, the portlets will not render properly.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 31" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture31.png" border="0" alt="Picture 31" width="190" height="315" /></p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 26" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture26.png" border="0" alt="Picture 26" width="504" height="142" /></p>
<p>As you see, since we have not logged in, both the portlets will throw an error. Lets login as the admin user. After logging in, we customize the portlets by entering the EPM username/password. The report portlet basically has 2 options. One is to specify the path of the report. And the other is any parameters that we would like to pass. When i tried this, the portlet seemed to be very fast, much faster than workspace itself.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 27" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture27.png" border="0" alt="Picture 27" width="504" height="297" /></p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 28" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture28.png" border="0" alt="Picture 28" width="504" height="297" /></p>
<p>Not all the functionality available in the EPM workspace will be available in the portlets like Drill up, Keep/Remove etc. Basic drill functionality will work though.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 29" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture29.png" border="0" alt="Picture 29" width="504" height="214" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2010/01/13/oracle-epm-11-1-1-3-deploying-epm-reporting-portlets-in-weblogic-portal-10g/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Oracle EPM 11.1.1.3 &#8211; Life Cycle Management &#8211; Part1 &#8211; Essbase Migration</title>
		<link>http://www.rittmanmead.com/2010/01/05/oracle-epm-11-1-1-3-life-cycle-management-part1-essbase-migration/</link>
		<comments>http://www.rittmanmead.com/2010/01/05/oracle-epm-11-1-1-3-life-cycle-management-part1-essbase-migration/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 11:06:24 +0000</pubDate>
		<dc:creator>Venkatakrishnan J</dc:creator>
				<category><![CDATA[Hyperion]]></category>
		<category><![CDATA[Hyperion Essbase]]></category>
		<category><![CDATA[Oracle EPM]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=4017</guid>
		<description><![CDATA[One of the major issues that i commonly encountered while doing 9.3 based essbase implementations was the fact that there was no built in utility within the Hyperion stack that could migrate various applications from a Development to a Test/Production machine(not essbase alone but also other related components like Shared Services etc). I still remember [...]]]></description>
			<content:encoded><![CDATA[<p>One of the major issues that i commonly encountered while doing 9.3 based essbase implementations was the fact that there was no built in utility within the Hyperion stack that could migrate various applications from a Development to a Test/Production machine(not essbase alone but also other related components like Shared Services etc). I still remember a big rollout almost a year back, wherein we had to document a whole list of steps (manual as well as automated ones) just to migrate a set of BSO &amp; ASO cubes (along with some HFR reports) from one machine to another.</p>
<p>The biggest compelling feature, in my opinion to upgrade from 9.3 to the EPM 11 release is the inclusion of the new Life Cycle Management utility which makes the process of migration from one machine to another all the more smoother. Not that this utility works perfectly or isnt without bugs, it is nevertheless a significant leap from the older 9.3 release and can drastically reduce migration times/effort involved.</p>
<p>The 2 common issues in the 9.3 release was</p>
<p>1. There was no automated way of migrating shared services users/groups/provisioning information from one machine to the other. There did exist a CSV/XML import-export utility but it was never straight forward to use. Just to work around this we had to build a custom JAPI based User/Group extractor.</p>
<p>2. There was no automated way of migrating Essbase artifacts without doing copying from the file system (Outlines, rule files, calc scripts etc). EAS does provide an option to copy applications across multiple servers but unfortunately cannot be automated out of the box. Even if we can somehow automate it by reusing the EAS Jars, we cannot reuse the same scripts without modification across environments.</p>
<p>Now only if we could have a similar such utility in BI EE, it will make the process of migration all the more smoother. Anyway i am digressing. Today, i will demonstrate how this utility can be used to migrate Essbase applications from one environment to another.</p>
<p>LCM Utility supports 2 kinds of migration</p>
<p>1. Application to Application Migration &#8211; If you have multiple instances of Essbase registered in a single shared services instance, then this migration automatically migrates the Essbase Application &amp; Database Artifacts to the other Essbase instance through the common Shared Services CSS.</p>
<p><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 19" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture19.png" border="0" alt="Picture 19" width="504" height="241" /></p>
<p>2. Application to File System Migration &#8211; This is the most common case. If you have multiple instances of Essbase registered in different shared services instances then this utility migrates all the necessary artifacts on to the file system. Then we need to move the extracted artifacts to the target machine and then run the utility again which will reimport the application in the target machine.</p>
<p><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 20" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture20.png" border="0" alt="Picture 20" width="504" height="182" /></p>
<p>I will demonstrate the 2nd type of migration for Essbase as that is the most commonly used one. We start with migrating a very simple database Sample-&gt;Basic. The migration can be executed directly from shared services or can be remotely executed using the LCM utility. But for either of them to work, we will need something called as a Migration XML. This XML basically defines the source and target artifacts that we will be migrating from/to. This XML is created from Shared Services by navigating to the corresponding Application Group that we would like to migrate</p>
<p><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 2" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture2.png" border="0" alt="Picture 2" width="504" height="227" /></p>
<p>In the screenshot above, we have basically chosen all the artifacts corresponding to the Sample-&gt;Basic database. One very good thing about this is, it migrates the security &amp; Substitution variables(which are not stored as separate files but are created through MaxL) as well. All the major artifacts are identified using the file extensions. This does not support data migration i.e if your cube has data in development, the LCM utility will not migrate the data to the test/prod machine. We will have to do that manually. Also, Partitions will have to be recreated manually in the target instance using MaxL. Once the artifacts are chosen, we need to click on &#8220;Define Migration&#8221; to specify how we would like to migrate the Sample-&gt;Basic database artifacts.</p>
<p><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 13" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture13.png" border="0" alt="Picture 13" width="449" height="315" /></p>
<p><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 14" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture14.png" border="0" alt="Picture 14" width="504" height="225" /></p>
<p>We shall choose the file system migration for the Destination as shown above. We can specify any folder name here. This will in turn create a folder under {HYPERION_HOME}\common\import_export\&lt;user&gt;@&lt;Directory&gt;\&lt;foldername&gt;. The folder will be created only when we execute the migration. Currently we are just defining the XML for the migration. Once we have defined the destination options we need to save the MigrationDefinition XML</p>
<p><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 15" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture15.png" border="0" alt="Picture 15" width="450" height="315" /></p>
<pre>&lt;Package name="web-migration" description="Migrating Product to File System"&gt;
    &lt;LOCALE&gt;en_US&lt;/LOCALE&gt;
    &lt;Connections&gt;
        &lt;ConnectionInfo name="MyHSS-Connection1" type="HSS" description="Hyperion Shared Service connection" user="" password=""/&gt;
        &lt;ConnectionInfo name="FileSystem-Connection1" type="FileSystem" description="File system connection" HSSConnection="MyHSS-Connection1" filePath="/SampBasic"/&gt;
        &lt;ConnectionInfo name="AppConnection2" type="Application" product="ESBAPP" project="Essbase:oraepm2.venkatlap.com:1" application="Sample" HSSConnection="MyHSS-Connection1" description="Source Application"/&gt;
    &lt;/Connections&gt;
    &lt;Tasks&gt;
        &lt;Task seqID="1"&gt;
            &lt;Source connection="AppConnection2"&gt;
                &lt;Options/&gt;
                &lt;Artifact recursive="true" parentPath="/Databases/Basic" pattern="*"/&gt;
            &lt;/Source&gt;
            &lt;Target connection="FileSystem-Connection1"&gt;
                &lt;Options/&gt;
            &lt;/Target&gt;
        &lt;/Task&gt;
    &lt;/Tasks&gt;
&lt;/Package&gt;</pre>
<p>If you notice we have defined our XML for doing the migration which is from Shared Services to File System. After defining the XML, we need to execute the Migration. This will extract the necessary artifacts from Essbase to the folder that we specified. Shared Services has a nice console view to look at the status of all the migrations.This can come in very handy if you have a lot of applications and you are migrating all or most of them.</p>
<p>Once the migration is complete you will notice that all the Essbase artifacts will now have been copied over to the File System directory we specified before</p>
<p><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 17" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture17.png" border="0" alt="Picture 17" width="475" height="240" /></p>
<p>To migrate this to another Essbase instance, we can zip the entire File System folder that was created and then move it over to the target machine. We also will have to copy the Migration XML as well. To complete the migration we will have to modify the XML a bit to cater to File System to Essbase migration. The modified XML is given below</p>
<pre>&lt;Package name="web-migration" description="Migrating File System to Essbase"&gt;
    &lt;LOCALE&gt;en_US&lt;/LOCALE&gt;
    &lt;Connections&gt;
        &lt;ConnectionInfo name="MyHSS-Connection1" type="HSS" description="Hyperion Shared Service connection" user="" password=""/&gt;
        &lt;ConnectionInfo name="FileSystem-Connection1" type="FileSystem" description="File system connection" HSSConnection="MyHSS-Connection1" filePath="file:/u01/app/SampBasic"/&gt;
        &lt;ConnectionInfo name="AppConnection2" type="Application" product="ESBAPP" project="Essbase:oraepm2.venkatlap.com:1" application="SampLCM" HSSConnection="MyHSS-Connection1" description="Source Application"/&gt;
    &lt;/Connections&gt;
    &lt;Tasks&gt;
        &lt;Task seqID="1"&gt;
            &lt;Source connection="FileSystem-Connection1"&gt;
                &lt;Options/&gt;
                &lt;Artifact recursive="true" parentPath="/Databases/Basic" pattern="*"/&gt;
            &lt;/Source&gt;
            &lt;Target connection="AppConnection2"&gt;
                &lt;Options/&gt;
            &lt;/Target&gt;
        &lt;/Task&gt;
    &lt;/Tasks&gt;
&lt;/Package&gt;</pre>
<p>Remember you will have to modify some of the config files(sourceInfo.xml etc) in the extracted files to support target updates. To import the Sample-&gt;Basic application we just have to call the LCM utility directly from command line. This facilitates integration with external schedulers so that we can do the migrations at regular intervals. Also supported is a Java API, so that external applications like ODI etc can call this.</p>
<p><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 18" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/01/Picture18.png" border="0" alt="Picture 18" width="408" height="315" /></p>
<p>This is pretty straight forward and works pretty well too. But the actual interesting part is in migrating shared services users/groups. This is where it can become tricky. In a couple of my installs, the exports worked absolutely fine but the import process corrupted the entire shared service instance. I observed this on a couple of my OEL-EPM-Weblogic instances. I might have to log this as a LCM bug. But i will cover a workaround in my next blog entry and show how users/groups can be migrated from one instance to the other.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2010/01/05/oracle-epm-11-1-1-3-life-cycle-management-part1-essbase-migration/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Oracle EPM 11.1.1.3 &#8211; Customizing EPM Workspace</title>
		<link>http://www.rittmanmead.com/2009/12/22/oracle-epm-11-1-1-3-customizing-epm-workspace/</link>
		<comments>http://www.rittmanmead.com/2009/12/22/oracle-epm-11-1-1-3-customizing-epm-workspace/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 09:41:37 +0000</pubDate>
		<dc:creator>Venkatakrishnan J</dc:creator>
				<category><![CDATA[Hyperion]]></category>
		<category><![CDATA[Oracle EPM]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=3953</guid>
		<description><![CDATA[A common requirement that always comes up as part of an Organization wide EPM rollout, is in customizing the look and feel of the products to match the company logo, style etc. In the case of BI EE, the customization is quite straight forward, as BI EE segregates the look and feel into 2 parts
1. [...]]]></description>
			<content:encoded><![CDATA[<p>A common requirement that always comes up as part of an Organization wide EPM rollout, is in customizing the look and feel of the products to match the company logo, style etc. In the case of BI EE, the customization is quite straight forward, as BI EE segregates the look and feel into 2 parts</p>
<p>1. Styles<br />
2. Skins</p>
<p>I have blogged about the method for customizing the BI EE UI using both Styles and Skins almost 2 years back <a href="http://oraclebizint.wordpress.com/2007/09/12/oracle-bi-ee-10133-customizing-look-and-feel-styles-and-skins/" target="_blank">here</a> and <a href="http://oraclebizint.wordpress.com/2007/10/05/oracle-bi-ee-101332-customizing-look-and-feel-styles-and-skins-phase-2/" target="_blank">here</a>. In the case of EPM Workspace, the terminology used is a little bit different. Also, Oracle has an agreement with <a href="http://www.bindows.net/" target="_blank">Bindows</a>, a third party vendor which basically provides the entire framework for customizing EPM Workspace. The full agreement is available on Bindows website <a href="http://mb.bindows.net/news/MB_Hyperion_PR_7JUN05.pdf" target="_blank">here</a>.  I am not sure how the agreement works, but i believe it does allow for change in the UI styles implemented as part of the Bindows framework. In fact Bindows has a nice set of themes on their website(for download) which can effectively be retrofitted back to EPM workspace with some amount of work.</p>
<p>In the EPM 11 release, a new feature was added to support high contrast themes. This can be invoked directly from within the EPM workspace by pressing Ctrl+Shift+H.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 7" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture74.png" border="0" alt="Picture 7" width="485" height="315" /></p>
<p>Though a third party framework is used, there are also some internal themes that Oracle EPM uses. To understand how this all work together, we need to start with understanding how EPM workspace renders all the themes, styles, images etc. Whenever we deploy the Workspace war manually or do an automated deployment into an application server, the deployment process manually copies certain part of the installed Workspace(or different application) files to the App Server accessible area (within its relative URL reach). This is very similar to what happens in BI EE. When we deploy Presentation Services Plug-in to an app server, all the themes, images etc are copied to the context accessible area of the application server.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 2" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture26.png" border="0" alt="Picture 2" width="504" height="129" /></p>
<p>As you see in the above screenshot, i have deployed Workspace into Tomcat and hence we have a multitude of workspace related files in the deployed directory. You can see a couple of folders here. <strong>themes</strong> and <strong>thirdparty/bindows/html/themes</strong>.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 3" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture32.png" border="0" alt="Picture 3" width="345" height="64" /></p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 4" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture41.png" border="0" alt="Picture 4" width="504" height="117" /></p>
<p>If you notice, we have completely different set of folders under both the theme folders. My initial impression was that only the bindows one was used (not the workspace native one). But on further analysis i realized that both the folders above are required to make the themes to work. Bindows themes are just for Workspace alone(bringing all the components together while using 19000 workspace port). But the individual themes can vary for different products. In the above screenshot we basically had theme_tadpole and theme_tadpole_hc as native workspace themes(workspace as a product). Also, the Bindows specific themes Bpmtadpole and BpmtadpoleHc. Similarly lets look at the ui_themes folder of Hyperion Scorecards</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 6" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture63.png" border="0" alt="Picture 6" width="504" height="73" /></p>
<p>As you see we only have the product specific ones theme_tadpole and theme_tadpole_hc. So, there are a couple of conclusions that we can derive out of this.</p>
<p>1. When customizing the UI of EPM components, the bindows theme as well as the individual product themes should be in sync with each other<br />
2. Ensure that when you have EPM components deployed in multiple machines, all of them get a common ui through the same default theme theme_tadpole. The _hc version of the themes are the high contrast variants of the original themes.</p>
<p>In BI EE, we typically start off with creating new themes(styles) as a copy of existing themes(styles). But in the case of EPM workspace, due to the nature of interaction (or lack of it) between the bindows and the product themes, i would recommend not to create new themes but to modify the existing ones(Its better to backup the older themes so that we have something to revert back on).</p>
<p>To start with lets look at a way of customizing the login screen of EPM workspace.<br />
The login screen basically has 2 parts. One is the background color. And the other is the Oracle EPM logo. Remember, whenever you are customizing the EPM workspace, the same customization will have to be done across all the other product component themes as well. The primary reason is each product can be invoked either through the workspace or directly. In either case, we need to ensure that the UI remains the same. Once you start thinking in those lines, you will actually realize that the customization is actually pretty easy. To customize the logo, navigate to</p>
<p><strong>{HYPERION_HOME}/deployments/&lt;appserver&gt;/&lt;application&gt;/webapps/&lt;application&gt;/(ui_)themes/(theme_)tadpole/images_global/ </strong></p>
<p>In my case, since i am customizing the login of workspace alone, i had to navigate to <strong>/u01/app/oracle/hyperion/deployments/Tomcat5/Workspace/webapps/workspace/themes</strong><strong>/theme_tadpole/images_global </strong>folder. Here you would find a file called logon_panel.gif. This is the image that actually gets rendered in the logon screen. Replace this image with you corporate logo. Ensure that the image size is 298*367 (pixels).</p>
<p>Copy the same image over to</p>
<p><strong>{HYPERION_HOME}/products/&lt;product&gt;/AppServer/InstalledApps/&lt;application&gt;/(ui_)themes/(theme_)tadpole/images_global </strong></p>
<p>In my case the actual product folder was <strong>/u01/app/oracle/hyperion/products/Foundation/AppServer/InstalledApps/workspace_static/themes /theme_tadpole/images_global</strong>.</p>
<p>This is very similar to BI EE customization where we need to have the modified style in both the product directory as well as the installed app server directory. Once we have changed the image, the next step is to change the background color. It can be a little bit difficult to do understand this part as there are 4 places that we need to modify the settings. I will just list them down here</p>
<p>1. Global.css file in <strong>{HYPERION_HOME}/products/Foundation/AppServer/InstalledApps/workspace_static/themes/theme_tadpole/ </strong>- Product Customization<br />
2. Global.css file in <strong>{HYPERION_HOME}/deployments/Tomcat5/Workspace/webapps/workspace/themes/theme_tadpole/</strong> &#8211; Product Customization<br />
3. theme.css file in <strong>{HYPERION_HOME}/deployments/Tomcat5/Workspace/webapps/workspace/thirdparty/bindows/thirdparty/ themes/Bpmtadpole<br />
</strong>4. theme.css file in <strong>{HYPERION_HOME}/products/Foundation/AppServer/InstalledApps/workspace_static/thirdparty/bindows/ thirdparty/themes/Bpmtadpole </strong></p>
<p>Just edit the css files and modify the necessary property (in our case the background color property). The above changes will ensure that you have customized your workspace application as well as the overall workspace. If you have deployed more applications like Planning, Shared Services etc to be accessible through the workspace, the same customizations will have to be done in those components as well.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 11" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture113.png" border="0" alt="Picture 11" width="475" height="315" /></p>
<p style="text-align: left;"><em>Update: Though theoretically we can customize the entire look and feel of EPM Workspace, you might want to check the licensing agreements to see what can be and cannot be customized.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2009/12/22/oracle-epm-11-1-1-3-customizing-epm-workspace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle EPM 11.1.1.3 &#8211; Installing Hyperion Components on Multiple Machines</title>
		<link>http://www.rittmanmead.com/2009/12/11/oracle-epm-11-1-1-3-installing-hyperion-components-on-multiple-machines/</link>
		<comments>http://www.rittmanmead.com/2009/12/11/oracle-epm-11-1-1-3-installing-hyperion-components-on-multiple-machines/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 20:06:47 +0000</pubDate>
		<dc:creator>Venkatakrishnan J</dc:creator>
				<category><![CDATA[Hyperion]]></category>
		<category><![CDATA[Hyperion Essbase]]></category>
		<category><![CDATA[Oracle BI Suite EE]]></category>
		<category><![CDATA[Oracle EPM]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=3840</guid>
		<description><![CDATA[In any EPM deployment, rarely do all the components get installed on a single machine. In majority of the cases, you will see that each component is actually installed on separate machines with their own application and web servers. So, how does this all work and how do we go about installing various EPM components [...]]]></description>
			<content:encoded><![CDATA[<p>In any EPM deployment, rarely do all the components get installed on a single machine. In majority of the cases, you will see that each component is actually installed on separate machines with their own application and web servers. So, how does this all work and how do we go about installing various EPM components across multiple machines? I plan to cover this today and will try to compare the architecture of EPM deployment along with BI EE deployment.</p>
<p>One major problem with an Oracle EPM installation is in the number of components involved and the dependencies among them. Immediately after the Hyperion Acquisition (with the EPM 11 release), Oracle has done significant improvements to the end to end install. The entire installation/configuration is now more or seamless through the EPM system configurator. Though it is much easier to deploy an EPM system now, there still are quite a few components that we need to be aware of while doing a distributed deployment. It would always help if we can understand how they interact with each other. Oracle EPM system has the following products</p>
<p>1. Oracle Shared Services &#8211; Grouped under Foundation Services<br />
2. Oracle Workspace &#8211; Grouped under Foundation Services<br />
3. Oracle Planning<br />
4. Oracle Essbase, Essbase Admin Console, Provider Services, Studio<br />
5. Oracle Enterprise Performance Management Architect<br />
6. Oracle Financial Reporting, Web Analysis, Interactive Reporting &amp; Production Reporting<br />
7. Oracle Financial Management<br />
8. Oracle Scorecards<br />
9. Oracle Data Integration Management (DIM with its adapters)</p>
<p>There are other components as well(like CMC etc). But above 9 are the most commonly used ones. If you consider the number of products and how they can all work together you can imagine that we can never get the full performance out of them if we install all the components in a single machine. So, to get the maximum performance out of them we need to identify an architecture where each component can be clustered separately but at the same time work in tandem with the other components. At a high level from a deployment standpoint i have depicted the entire Oracle EPM architecture as shown below</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 16" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture161.png" border="0" alt="Picture 16" width="504" height="310" /></p>
<p>The actual deployment can (web &amp; app servers can be swapped, reused, added etc) vary but the above will give a high level conceptual overview of what components we will need in every machine in a distributed installation. Every component can work in isolation or can be brought together through a common workspace.</p>
<p>The above architecture will also provide an overview of how we need to go about adding new components to an existing installation. Every component, for example hyperion planning, has its own web interface (<a href="http://machineA:8300/HyperionPlannig)">http://machineA:8300/HyperionPlannig)</a>. So in a distributed environment, every machine requires an application server, a web server and the component itself. There are some components like Essbase that do not require application servers and web servers. But for the sake of this discussion lets club Essbase installation with EAS, Provider Services and Essbase Studio. But remember most of these web enabled components are brought together in a single interface through Workspace (For ex. <a href="http://machineC:19000/workspace)">http://machineC:19000/workspace)</a>. How does that work? Also, Workspace has its own Application Server and Web Server (<a href="http://machineC:45000/workspace)">http://machineC:45000/workspace)</a> which works in a standalone mode without any component integration.</p>
<p>For security reasons, all the web enabled components do not talk to each other directly since they can typically reside in multiple hostnames (possibility of cross domain scripting). So, Oracle EPM combines all the components together into a single web enabled workspace (<a href="http://machineC:19000/workspace)">http://machineC:19000/workspace)</a> either using an Apache HTTP Server or an IIS Server. One distinctive advantage of this is it provides a means of complete security where there is a need to expose the components over the web. In such cases, we can just put the web server alone to be internet facing and everything else inside a DMZ and then put a firewall (on both sides of the DMZ) to protect the corporate intranet. There can be other variations like multiple firewalls across multiple layers but the point is it provides flexibility</p>
<p>I think Oracle/Hyperion also did this for a couple of other reasons</p>
<p>1. Workspace was a product that was introduced, much after Planning and Essbase, EAS etc to bring them all together. So, they had to find an architecture where every component will be in a different machine but at the same time should be able to work together through a common console<br />
2. Incremental product/component purchase. If someone purchases Planning along with Shared Services today, they can add more components like BI EE etc later and will still be in a position to bring them all together.</p>
<p>One more point to note is, multiple components can be installed on a single machine and then deployed on to the same application and web servers. So, depending on the usage, performance required, an optimal number of servers required etc can be arrived at before doing a deployment. Lets look at a very simple distributed deployment scenario today. We will start with the first component which is shared services. The application server i will be using is Weblogic Server 9.3. Other app servers are supported as well. But ensure that, for the workspace integration to work the application server used for workspace deployment will have to be used for other components as well.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 17" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture171.png" border="0" alt="Picture 17" width="301" height="394" /></p>
<p>The order of installation of various components can be different. But the configuration should be done in a certain order. In our case, on MachineA we will start with shared services installation. Once the installation is done, install Weblogic Server on that machine as well. Ensure that while installing weblogic server, you choose the servlets option. This is what will enable the Apache redirects between the main workspace http server and individual Weblogic embedded http servers through mod_so.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 10" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture101.png" border="0" alt="Picture 10" width="438" height="315" /></p>
<p>After the installation, install an Oracle Database or use a new database schema from an existing database instance. The Oracle client installation on any of the machines is not necessary as the connections happen through JDBC with pre-bundled drivers. Start the configurator and then point to a database schema specific to sharedservices. It is a standard practice to have one schema for each component.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 11" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture111.png" border="0" alt="Picture 11" width="504" height="170" /></p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 7" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture71.png" border="0" alt="Picture 7" width="411" height="315" /></p>
<p>Choose the automatic deployment for Oracle Weblogic 9. Also enter the Weblogic home. During deployment, a weblogic domain for Hyperion is automatically created(no need to create before hand). If multiple components are deployed at the same time, all the components will be deployed onto the same domain. Once the deployment is successful, ensure that shared services is up and running. Shared Services has to be up and running for other components to be configured from other machines.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 14" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture142.png" border="0" alt="Picture 14" width="409" height="315" /></p>
<p>Once the shared services is installed and configured, we can move on to other components. In my case, i will install Workspace &amp; Planning together in another machine.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 19" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture192.png" border="0" alt="Picture 19" width="353" height="484" /></p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 6" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture6.png" border="0" alt="Picture 6" width="411" height="315" /></p>
<p>Once the install is done, install Weblogic server again in this machine (i believe using weblogic node manager it is possible to use a single em managing multiple instances of weblogic, but i will leave that for now). While installing ensure that the Servlet Plugins option is enabled as well. In this we will configure 2 components(Planning &amp; Workspace) on to a single weblogic domain. Start the EPM configurator.</p>
<p>If you have other components installed on other machines, while in the system configurator, do not check the &#8220;Configure Web Server&#8221; option. This is always done at the end once every component is registered with shared services. This option basically configures the URL redirects from the main HTTP Server to the individual component http servers. In our case, since we do not have any other component to install, we shall choose every option available for Workspace and Planning (Except clustering). Every other configuration remains the same. The only addition is in the Web Server configuration. You will notice that all the web enabled registered components will be listed in the web server configuration screen</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 15" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture151.png" border="0" alt="Picture 15" width="411" height="315" /></p>
<p>You will also see components along with their machine names as well. This will ensure that Workspace can automatically make redirects to other applications using its http.</p>
<p>If you notice this is very different from a BI EE deployment. BI EE has only one web facing component which is through the http server and the presentation services Plugin(deployed in the Java Container). Every other component like Presentation Services, BI Server talk to each other through specific ports but are not web enabled by themselves. The main reason is, BI EE itself is a single product. Presentation Services alone will not make sense without the BI Server. BI Scheduler cannot work in isolation. So, in effect, this comparison itself is not valid since we are comparing a multiple product deployment (EPM) with a single product deployment i.e BI EE. But if you look at the whole architecture in the first figure, it blends overall with the entire Oracle EPM universe story. The integration of BI EE with Oracle EPM is very similar to the integration of Hyperion Planning with Workspace. End users connect to the Workspace http server. When BI Presentation Services is chosen, Apache does a redirect to the local apache of the app server on which BI EE is deployed. But what is not seamless yet is the security integration. In the case of Planning, Workspace etc, since Hyperion itself developed it, all of them more or less followed the same security model. But in the case of BI EE, the security model is completely different. Hence Oracle i believe, had to come up in some way to pass the SSO tokens from EPM to BI EE and then make BI EE to recognize them. Hopefully this integration will become more seamless with future releases of EPM and BI EE. I can envision BI EE becoming the core of reporting in the EPM architecture replacing Web Analysis.</p>
<p>Lets look at the list of steps that we typically go through while integrating BI EE with EPM Workspace.</p>
<p>1. We start with Registering the BI EE into Hyperion Shared Services Registry (using BI EE Administration-&gt;Manage EPM Connection tab). This step enables the configurator to recognize BI EE as another EPM product. This will basically enable apache redirects between the EPM Workspace HTTP Server and the BI EE http server.</p>
<p>2. Once the registration is done, we enable BI EE to recognize the Oracle EPM SSO tokens (as the security model is different). This is done by adding the the following configuration tags to instanceconfig.xml</p>
<pre>&lt;Auth&gt;
 &lt;ExternalLogon enabled="true" logonPageAllowed=”true”&gt;
   &lt;ParamList&gt;
      &lt;Param name="UID" source="url" nameInSource="sso_token"/&gt;
      &lt;Param name="PWD" source="constant" value="obips.hss.ssotoken"/&gt;
   &lt;/ParamList&gt;
 &lt;/ExternalLogon&gt;
&lt;/Auth&gt;</pre>
<p>3. There are a couple of ways in which the EPM SSO tokens can be recognized by the Javahost. One is through the cssURL method wherein the CSS values are derived from the cssURL. The cssURL can be verified using the URL <a href="http://machineA:28080/interop/framework/getCSSConfigFile">http://machineA:28080/interop/framework/getCSSConfigFile</a>. If you query this, it will generate an XML as shown below</p>
<pre>&lt;css&gt;
	&lt;hub location="http://esscluster1.venkatlap.com:28080"&gt;
		&lt;dirPort&gt;28089&lt;/dirPort&gt;
	&lt;/hub&gt;
	&lt;spi&gt;
		&lt;provider&gt;
			&lt;native name="Native Directory"&gt;
			&lt;/native&gt;
		&lt;/provider&gt;
	&lt;/spi&gt;
	&lt;searchOrder&gt;
		&lt;el&gt;Native Directory&lt;/el&gt;
	&lt;/searchOrder&gt;
	&lt;token&gt;
		&lt;timeout&gt;480&lt;/timeout&gt;
	&lt;/token&gt;
	&lt;logger&gt;
		&lt;priority&gt;WARN&lt;/priority&gt;
	&lt;/logger&gt;
	&lt;delegatedUserManagement&gt;
		&lt;enabled&gt;false&lt;/enabled&gt;
	&lt;/delegatedUserManagement&gt;
&lt;/css&gt;</pre>
<p>Javahost can extract the required values out of this config XML itself. But in many cases, since this can be extracted directly from sharedservices registry, there is an option to specify the HYPERION_HOME registry property file within Javahost so that it can communicate with sharedservices and authenticate accordingly.</p>
<p>4. The next step is to make sure BI Server authenticates against shared services using the custom authenticator.</p>
<p>5. Once all the above are done, we need to enable the apache from Workspace through the EPM configurator to redirect requests for BI EE to the app server on which Presentation Services plugin is deployed.</p>
<p>If you look at it from an overall perspective the only complicated piece is in the enabling the EPM to BI EE security. But hopefully in 11g, BI EE would have the same authentication model like Oracle EPM. If that is the case, the only configuration that we probably would have to do is the first and the last steps i.e register with shared services and then enable apache redirect. Now, how about bundling BI EE along with the EPM installer(i think we might even see this in the coming future). Even that will become straightforward like other Hyperion Components once the security model is straightened out hopefully in 11g(again based on rumours in the public domain). Now we can realize why Oracle is planning on moving BI EE towards a common security framework. Its all for seamless integration with Oracle EPM. But again from a shared services perspective, i think there need to be significant improvements there. From a provisioning standpoint, shared services does not have a good integration with Essbase or with BI EE currently. Now, only if they can revamp shared services with more Essbase &amp; BI EE specific provisioning capabilities, it will become all the more interesting.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2009/12/11/oracle-epm-11-1-1-3-installing-hyperion-components-on-multiple-machines/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Oracle EPM 11.1.1.3 &#8211; Essbase Clustering for High Availability</title>
		<link>http://www.rittmanmead.com/2009/11/01/oracle-epm-11-1-1-3-essbase-clustering-for-high-availability/</link>
		<comments>http://www.rittmanmead.com/2009/11/01/oracle-epm-11-1-1-3-essbase-clustering-for-high-availability/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 20:14:05 +0000</pubDate>
		<dc:creator>Venkatakrishnan J</dc:creator>
				<category><![CDATA[Hyperion]]></category>
		<category><![CDATA[Hyperion Essbase]]></category>
		<category><![CDATA[Oracle EPM]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=3528</guid>
		<description><![CDATA[Its been almost a couple of weeks since i last blogged due to a flurry of events like Open-World, Training Days, Client Engagements etc. Getting the materials completed took most of my time and since then i haven&#8217;t had a chance to blog. But now that the busiest part of the year is behind me, [...]]]></description>
			<content:encoded><![CDATA[<p>Its been almost a couple of weeks since i last blogged due to a flurry of events like Open-World, Training Days, Client Engagements etc. Getting the materials completed took most of my time and since then i haven&#8217;t had a chance to blog. But now that the busiest part of the year is behind me, i am looking forward to blog more frequently in the near future. One of the things that i have been planning on blogging recently is the High Availability features in the EPM 11 stack. I will split this into a series of entries over this month and the next. The first one that we shall look at today is Essbase clustering.</p>
<p>Clustering of Essbase servers can be very critical if you have a mission critical reporting system that requires to be online almost all the time. There are 2 kinds of clustering that Oracle supports for Essbase</p>
<p>1. Horizontal Clustering – This is a normal clustering scenario wherein we have an exact replica of the Essbase server spread across multiple machines and each machine is in active state (active-active).</p>
<p>2. Vertical Clustering – This is clustering scenario which is similar to Horizontal clustering wherein instead of having multiple instances, multiple instances of Essbase are created on the same machine (adding more hardware). If you compare this with BI EE, BI EE does not support this clustering architecture yet.</p>
<p>At a high level, the Essbase clustering architecture is given below</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="Picture 2" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/11/Picture2.png" border="0" alt="Picture 2" width="504" height="279" /></p>
<p>The idea is to have multiple Essbase servers being served in turns by the Provider Services. For complete high availability scenario, the Provider Services itself can be clustered so that there is no single point of failure. The Provider services clustering is very similar to Presentation Services clustering in BI EE. In a BI EE cluster, multiple presentation services write to a common shared web catalog. Similarly, in the case of Provider services, multiple web instances share a common cluster definition stored in a shared directory. This blog entry will focus only on the Essbase server clustering using a single provider services.</p>
<p><strong>Scenario: </strong>We basically have 2 instances of Essbase running on 2 separate machines. One machine hosting one of the Essbase Servers and a corresponding provider services. Another machine hosting another Essbase server with no provider services. To cluster both the servers we shall start with logging into the Essbase Administration console and then adding both the servers under the Essbase Server node.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="image" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/11/image.png" border="0" alt="image" width="268" height="315" /></p>
<p>Once these Essbase Servers have been added, the next step is to add a Provider Services under the Provider Services node.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="image" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/11/image1.png" border="0" alt="image" width="218" height="176" /></p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="image" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/11/image2.png" border="0" alt="image" width="295" height="296" /></p>
<p>One of the advantages of Essbase clustering is the fact that it allows clustering at database level. That is, one has the ability to either include all the applications to be part of a cluster or only certain necessary ones. In our case, lets add both the Essbase Servers to the Essbase Cluster node.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="image" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/11/image3.png" border="0" alt="image" width="326" height="123" /></p>
<p>While specifying the name for the cluster, ensure that you have a name without any spaces in them. Also, in our example, we shall just add the SampEast Application(from both servers) to the cluster</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="image" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/11/image4.png" border="0" alt="image" width="316" height="315" /></p>
<p>Whenever new applications/servers are added/removed from a cluster, the provider services need to be restarted (but they can be enabled/disabled after adding them without a restart)</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="image" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/11/image5.png" border="0" alt="image" width="236" height="105" /></p>
<p>Clustering capability can be leveraged only by those applications that can connect through Provider Services. So, if you have a smart-view client or an external application using JAPI, then clustering can be leveraged. To test our cluster, lets login to Smart-view using the provider services. While adding the Essbase Server, instead of the actual Essbase Server names use the cluster name that we gave above.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="image" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/11/image6.png" border="0" alt="image" width="392" height="274" /></p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="image" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/11/image7.png" border="0" alt="image" width="298" height="240" /></p>
<p>As you see we now have the application/database that we added under the cluster being displayed by Smart-View through the provider services. Now, lets create a report using this database and check where the session gets created.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="image" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/11/image8.png" border="0" alt="image" width="453" height="152" /></p>
<p>As you see the first session gets created in the first Essbase Server. Now lets open up another instance of the Smart-View client and create the same report. You will notice that Smart-View pushes this new session to the other essbase server</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="image" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/11/image9.png" border="0" alt="image" width="504" height="137" /></p>
<p>Also, as another test, lets kill the first essbase server and then try running both the reports(both instances of Smart-View) again. You will notice that, both the sessions will now have moved to the valid &amp; live Essbase Server.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="image" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/11/image10.png" border="0" alt="image" width="504" height="155" /></p>
<p>Though it works out of the box and is quite good, it has certain drawbacks. Lets look at them one by one.</p>
<p>1. Write backs directly from Smart-view are not supported. If you try to write-back to a database cell, an error message would pop-up denoting the fact that write-backs are not supported in a clustered mode.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="image" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/11/image11.png" border="0" alt="image" width="374" height="125" /></p>
<p>The only work around is to connect to the servers directly (without the provider services cluster) and then write-back on them. But the end user will have to ensure that both the servers are kept in sync manually. So, this cannot be used in Hyperion Planning apps.</p>
<p>2. Essbase Add-in cannot leverage the clusters.</p>
<p>3. Security across the nodes should exactly be the same. Both the nodes should have same security setup (native authentication or shared services authentication)</p>
<p>Apart from the above 3 limitations, every other individual essbase feature can be leveraged and hence all of them will be in a highly available mode. It is easy to add new nodes and remove them as and when necessary. In future, we shall see how to go about clustering Provider Services, OpenLDAP and Hyperion Workspace. All the clustering topics that i am planning to cover will all be based on active-active clustering mode. Active-Passive clustering is also supported though it is typically achieved through an external software solution (to keep machines in sync through some background process). Hence i will not be covering the latter.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2009/11/01/oracle-epm-11-1-1-3-essbase-clustering-for-high-availability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Early News on the Oracle BI Apps &#8211; Essbase Integrator</title>
		<link>http://www.rittmanmead.com/2009/11/01/early-news-on-the-oracle-bi-apps-essbase-integrator/</link>
		<comments>http://www.rittmanmead.com/2009/11/01/early-news-on-the-oracle-bi-apps-essbase-integrator/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 07:45:47 +0000</pubDate>
		<dc:creator>Mark Rittman</dc:creator>
				<category><![CDATA[Hyperion]]></category>
		<category><![CDATA[Hyperion Essbase]]></category>
		<category><![CDATA[Hyperion Smart View]]></category>
		<category><![CDATA[Oracle BI Apps]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=3510</guid>
		<description><![CDATA[I was recently going through the recorded Open World sessions using Oracle Open World on Demand, and came across an interesting session by Alaric Thomas and Mike Nader on the forthcoming Oracle BI Applications to Essbase Integrator. This is a technology project going on within Oracle that aims to deliver integration between the Oracle BI [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently going through the recorded Open World sessions using <a href="http://openworld.vportal.net/">Oracle Open World on Demand</a>, and came across an interesting session by Alaric Thomas and Mike Nader on the forthcoming Oracle BI Applications to Essbase Integrator. This is a technology project going on within Oracle that aims to deliver integration between the Oracle BI Applications technology stack and the Essbase stack, so that users can for example launch SmartView from a BI Apps dashboard and analyze their data using Essbase.</p>
<p>Listening to the presentation and reading the slides, it&#8217;s clear that this is a work in progress and there&#8217;s the usual disclaimers about not being able to make purchasing decisions based on what they say. As this session was a preview and it&#8217;s at such an early stage, I won&#8217;t be too specific about what they said, though you can listen to the session in full and download the slides on Open World on Demand, session S308151, if you&#8217;re interested in the full details. Anyway, here&#8217;s what was talked about:</p>
<p>The product is called the &#8220;Oracle BI Applications Essbase Integrator&#8221; and aims to deliver in three areas:</p>
<ol>
<li>A seamless user experience between the OBIA dashboard and SmartView</li>
<li>Metadata sychronization between the BI Apps RPD and the Essbase Outline</li>
<li>An Extension to BI Apps Financial Analytics and Supply Chain/Order Analytics</li>
</ol>
<p>Looking at the demo screenshots, the way that this would be delivered would be through additional narrative views on the BI Apps dashboard (the platform targeted is Oracle BI EE 10.1.3.4+, BI Apps 7.9.6 and Essbase 11.1.1) that would provide drop-down menus linking to SmartView analyses. When the menu item is selected, SmartView would be contacted (via the OracleSV protocol that Venkat blogged about <a href="http://www.rittmanmead.com/2009/07/09/hyperion-planning-11-1-1-2-new-smart-view-oraclesv-protocol-integration-into-smart-view-and-other-desktop-applications-part-1/">here</a>) with context being passed from OBI Apps to Essbase. Dimensions would be on the correct axes, security would be honoured and the user should not have to do anything to maintain their train of thought.</p>
<p>The way that data and metadata would work, is that the BI Apps RPD would be used as the initial data definition for the Essbase cube. The BI Apps RPD would be read and parsed, with data being extracted via UDML and then loaded into a Fusion Middleware MDS repository that stores an abstracted data model for the two systems. This would then be used to generate an Essbase outline along with the neccessary SQL scripts to extract data via the BI Apps RPD. Then, a similar process would work over time to keep the Essbase cube in sync with the BI Apps RPD, but preserving user changes to the Essbase cube so that models and other Essbase-specific analyses are preserved during updates. There is quite a sophisticated process at work here with bi-directional synchronization between the two products, from what I can see it doesn&#8217;t use Essbase Studio but instead relies on custom data and metadata loaders.</p>
<p>An area that appears to have had significant thought is how to apply OBI data filters, aggregations and calculations to the Essbase cube. OBI filters are essentially predicate based &#8211; filter products on &#8220;electrical&#8221;, for example &#8211; whereas Essbase ones are hierarchical, whilst OBI calculations are in SQL whilst Essbase ones are in MDX. OBI aggregations are also transferred 100% to Essbase, and the whole thing is aimed at the current set of BI Apps and Essbase products together with EBS rather than being reliant on the Fusion (11g) generation of products.</p>
<p>So, I won&#8217;t say any more as this session was the first public unveiling of the product, but as I said if you have Oracle Open World on Demand access you can listen to the presentation and see the slides for more details. I&#8217;ll be trying to get Alaric across to ODTUG Kaleidoscope later in 2010 to see if he can demo this later in the year, but if like us you&#8217;re a user of both the BI Apps and Essbase, this sounds like an interesting development.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2009/11/01/early-news-on-the-oracle-bi-apps-essbase-integrator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using EPMA for Managing Hyperion Planning Applications</title>
		<link>http://www.rittmanmead.com/2009/10/09/using-epma-for-managing-hyperion-planning-applications/</link>
		<comments>http://www.rittmanmead.com/2009/10/09/using-epma-for-managing-hyperion-planning-applications/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 18:56:32 +0000</pubDate>
		<dc:creator>Mark Rittman</dc:creator>
				<category><![CDATA[Hyperion]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/2009/10/09/using-epma-for-managing-hyperion-planning-applications/</guid>
		<description><![CDATA[The Irish OUG BI Special Interest Group are running an Essbass-themed event on November 11th in Dublin, and as well as delivering a session on Oracle BI EE and Essbase Integration I&#8217;ve also agreed to do a session on the technology behind Hyperion Planning. This particular session is aimed at developers like myself, who generally [...]]]></description>
			<content:encoded><![CDATA[<p>The Irish OUG BI Special Interest Group are running an <a href="http://www.ukoug.org/calendar/show_event.jsp?id=4482">Essbass-themed event</a> on November 11th in Dublin, and as well as delivering a session on Oracle BI EE and Essbase Integration I&#8217;ve also agreed to do a session on the technology behind Hyperion Planning. This particular session is aimed at developers like myself, who generally work with Oracle&#8217;s BI technology tools and are wondering how this &#8220;Planning&#8221; application works; how does its architecture look, what are the typical development tasks that are associated with it and how do you get data in, and out of it.</p>
<p>I covered a <a href="http://www.rittmanmead.com/2009/04/13/so-just-what-is-hyperion-planning/">basic introduction to Hyperion Planning</a> a few months ago, where I outlined the basic idea behind the product and how it fitted into the EPM Suite framework. To recap, Hyperion Planning is a part of Oracle EPM Suite and is currently at version 11.1.1.3. It is used by organizations to plan and budget within their organization, and where it differs to ordinary Essbase is that it&#8217;s a packaged application designed to do one thing (planning), rather than being just an OLAP server or a toolkit like Java. Planning uses a combination of Essbase (for multi-dimensional analysis, allocations, forecasts and calculations) and relational storage (for additional planning metadata), and is generally accessed by end-users either through the Planning Web Application (part of EPM Workspace), or through Excel via SmartView or the classic Excel add-in.</p>
<p>At a very high-level, Planning fits in with Oracle&#8217;s general EPM/BI architecture at the &#8220;application&#8221; level, along with the Oracle B Applications.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/10/plan1-1.jpg" height="380" width="556" border="1" hspace="4" vspace="4" alt="Plan1-1" /></p>
<p>At a product level, Planning sits underneath the EPM Workspace and Smartview/Essbase Add-in and is administered using both it&#8217;s own Web Application and through Enterprise Performance Manager Architect, a general metadata management/lightweight ETL/application management tool that first appeared with Hyperion System 9. Planning as I said stores its planning data in Essbase, additional supporting metadata in relational tables, and can take data from applications, data warehouses and master data management tools, or from files and other structured data sources.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/10/plan2.jpg" height="392" width="519" border="1" hspace="4" vspace="4" alt="Plan2" /></p>
<p>Note that <a href="http://www.oracle.com/technology/products/bi/foundation-services/epm-architect.html">EPM Architect</a>, the Planning Web Application and infact Workspace itself are all delivered through the Hyperion Workspace application, so they all appear in the same user interface but accessible through different menu options, but conceptually they can be thought of as different applications. A typical end-user session in the Planning Web Application looks like the screenshot below, note the fact that the forms (of course) support write-back, and its this ability for users to submit their own numbers coupled with the workflow element of the product that sets it apart from a standard sales analysis-type Essbase application.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/10/plan3.jpg" height="379" width="500" border="1" hspace="4" vspace="4" alt="Plan3" /></p>
<p>So, the question is, how do we build a Planning application? The actual &#8220;application&#8221; itself is stored in Essbase as a regular application, with an outline, dimensions, attributes and data stored within it, with everything stored in a single Essbase database within the application. If you opened up Essbase Administration Services and took a look at the application, a typical one would look like this:</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/10/plan5.jpg" height="420" width="500" border="1" hspace="4" vspace="4" alt="Plan5" /></p>
<p>But you can&#8217;t load a Planning database like a regular Essbase database, as you have to manage it using the Planning application itself. Planning acts as a wrapper around Essbase and manages dimensions etc within its own repository, publishing these to the Essbase server when you deploy a Planning application. Essbase is effectively hidden under the covers (at least in the current EPMA-enabled release, in previous versions you still needed to know a lot about Essbase to get it working) and you use Planning, and from System 9, Enterprise Performance Manager Architect (EPMA) to manage applications instead.</p>
<p>Data in Planning breaks down into two main areas; dimension data, such as entity, period, scenario and ones that you define yourself, and data, the actual numbers (actuals, forecast, budgets) that you load into the database. Planning (in its standard form, there are variations for workforce and capital expenditure planning) ships with six standard dimensions:</p>
<ul>
<li><strong>Entity</strong>, for organizational units, countries or similar (current calculations are based around these)</li>
<li><strong>Scenario</strong>, so that you can try different types of plan or planning methods</li>
<li><strong>Version</strong>, typically top-down or bottom-up, but also allowing you to split plans into public ones and ones for internal use</li>
<li><strong>Period</strong>, such as financial period, month, financial quarter etc</li>
<li><strong>Year</strong> (typically split from period to make plans easier to work with)</li>
<li><strong>Account</strong>, the measures in the plan such as profit, margin, costs etc</li>
</ul>
<p>In addition, you can define your own dimensions to allow you to budget by product, for example.</p>
<p>When you load data into a Planning application, the actual numbers go into the Essbase database, whilst a support relational database holds all the textual data, workflow steps, plan status and so on. Up until System 9, you would create Planning applications using the Planning administration tool, which allows you to define the application in metadata before deploying it to a suitable Essbase server. This approach is preserved for backward compatibility in System 9 and EPM Suite 11.1 (a.k.a. System 9.5), and I <a href="http://www.rittmanmead.com/2009/04/17/hyperion-planning-creating-your-own-simple-application/">walked through an example</a> in a previous posting where I created an application using what is now called the Classic Application Wizard. This works pretty well (indeed, most Planning administrators still use this approach for reasons I&#8217;ll outline later on), but it&#8217;s not the &#8220;strategic&#8221; way of doing it and we can&#8217;t take advantage of the metadata management features of EPMA if we go down this route (though we can upgrade classic planning applications to EPMA ones, if you like, in order to take advantage of these features).</p>
<p>So after running through the upgrade myself on one of my classic applications, I thought I&#8217;d run through the process of creating a new one from scratch, just using EPMA. The first hurdle with this is that EPMA needs Microsoft Internet Information Services to run, and so I dug out the Windows CD and installed it (feeling a bit dirty in the process), then got all the services up and running.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/10/plan7.jpg" height="358" width="500" border="1" hspace="4" vspace="4" alt="Plan7" /></p>
<p>Hyperion tends to create lots of services anyway (at last count, including Planning, there were 31 Hyperion-related services running on my Windows machine) but as you can see from the screenshot above, EPM Architect and Calc Manager take up eight of their own. The different services for EPMA hint and what the product actually does, as EPMA actually consists of a number of components:</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/10/plan8.jpg" height="253" width="500" border="1" hspace="4" vspace="4" alt="Plan8" /></p>
<ul>
<li>A <strong>Dimension Library</strong>, for holding metadata on the shared and local dimensions used by EPMA-enabled applications</li>
<li>An <strong>Application Library</strong>, for holding definitions of the various Essbase, Planning and HFM applications EPMA manages</li>
<li>A <strong>Data Sychronization Engine</strong>, for loading data (numbers) into EPMA-managed applications</li>
<li><strong>Workspace</strong>, <strong>Security</strong> and <strong>Taskflow</strong> elements</li>
</ul>
<p>EPMA has its own repository that holds all the metadata on the applications it manages, and as with classic planning applications you define the dimensions there first and then deploy them to Essbase. To start off them, as with the Classic Application Wizard you can define the basics of the Planning application using a wizard in EPMA, where you can say whether the application has one or more plans, whether it&#8217;s multi-currency, what time periods it uses and so on.</p>
<p>Note the option in the above screenshot to &#8220;auto-create local dimensions&#8221;. The first (System 9) version of EPMA made you define all dimensions as &#8220;shared&#8221;, which meant that you defined them in the &#8220;dimension library&#8221; within EPMA and then made them available for use by various applications, each of which then used the same dimension definition. EPMA 11.1.1 introduced the concept of local dimensions, detached independent dimensions that only exist within a particular dimension, allowing you to have different definitions of entities for example in different planning applications. Classic applications that are imported into EPMA have by default local dimensions, and local dimensions are the default when setting up fresh applications directly within EPMA, however if you are looking to standardize data and access across all of your planning applications you&#8217;ll probably want to move towards shared ones. For me though, I created my application using the standard dimensions and in shared mode, choosing to create period and year ones at the same time.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/10/epmanew2.jpg" height="432" width="500" border="1" hspace="4" vspace="4" alt="Epmanew2" /></p>
<p>As well as creating the standard dimensions, I also wanted to create a custom, &#8220;product&#8221; dimension to allow me to plan across my product line. This also was created as a local dimension, again using the wizard, as shown below.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/10/epmanew5.jpg" height="403" width="500" border="1" hspace="4" vspace="4" alt="Epmanew5" /></p>
<p>So now I&#8217;ve got my basic dimensions including one for Accounts, to hold the measures that I&#8217;ll be planning against. What I haven&#8217;t got at this stage though are any members for my dimensions, which I&#8217;ll need to hold details such as the scenario name, entity names, period and products.</p>
<p>If the dimensions are small (scenario, for example), you can define them directly within EPMA in a similar manner to Essbase Administration Services. In the screenshot below, I&#8217;m adding a child member to the Accounts dimension:</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/10/epmanew8.jpg" height="251" width="428" border="1" hspace="4" vspace="4" alt="Epmanew8" /></p>
<p>Doing this allows me to build up the accounts that will hold my actuals, budgets, forecasts and so on.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/10/epmanew9.jpg" height="249" width="278" border="1" hspace="4" vspace="4" alt="Epmanew9" /></p>
<p>Repeating this for Version and Scenario allows me to quickly add the members for these dimensions, and even Entity is straightforward as there are only a few territories where my company is operating.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/10/epmanew10.jpg" height="315" width="279" border="1" hspace="4" vspace="4" alt="Epmanew10" /></p>
<p>Period and Year have their members automatically created for you by the EPMA Application Wizard, and so the only dimension left to create members for is the Product dimension, which won&#8217;t be easy to create easily as it has lots of members. When I created a planning application using the Classic Application Wizard I was able to use the Outline Load Utility to mass-create dimension members using a flat file as a source, but you can&#8217;t use this utility when managing a Planning application using EPMA (nor can you use ODI or DIM, strangely enough). So how do you get large amounts of dimension members into a Planning application when you are using EPMA?</p>
<p>It&#8217;s probably worth taking a moment out to understand how data and metadata flows through Planning when EPMA is involved. As you can see from the diagram below, data and metadata from the various sources goes first into interface tables or files before being accessed by EPMA, which then takes this data, maps it and then uses it to construct the applications that you want to create.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/10/plan9.jpg" height="229" width="500" border="1" hspace="4" vspace="4" alt="Plan9" /></p>
<p>So what we need to get to grips with then, to bulk load dimension members into our product dimension, is either the interface tables or the interface file structure, and the Dimension Library part of EPMA to bring them in. In my case, the data that will define the members in my dimension is held in a flat file, to start I select the Dimension Library tool within Workspace, and create what&#8217;s called a new &#8220;profile&#8221;.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/10/epmanew21.jpg" height="403" width="500" border="1" hspace="4" vspace="4" alt="Epmanew21" /></p>
<p>The profile will contain the information on the file that I&#8217;ll be importing, so I start by naming the profile, pointing it to the file containing the list of members, and selecting a particular application rather than the Shared Library, thereby making the dimension local to that application.</p>
<p>Now the tricky bit for me was getting the data in the input file in the correct format for the Dimension Library application to read. Unlike the Outline Load Utility which uses one format, input files for dimensions into EPMA use another, and after a bit of experimentation I got one together that firstly defines the dimension that we&#8217;ll be importing, then the list of dimension members, then the hierarchy within the dimension.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/10/plan10.jpg" height="547" width="500" border="1" hspace="4" vspace="4" alt="Plan10" /></p>
<p>See the &#8220;Managing Application Metadata&#8221; / &#8220;Working with Dimensions&#8221; section of the EPM 11.1 documentation for full details on the dimension file format.</p>
<p>Once the file is imported and then processed, you can then check back into the EPMA Dimension and Application libraries to see the newly created dimension members and hierarchy. In my case, my products are all now showing as I&#8217;d expect, and it&#8217;s time to deploy the Planning application to Essbase.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/10/epmanew25.jpg" height="380" width="500" border="1" hspace="4" vspace="4" alt="Epmanew25" /></p>
<p>Deploying it was the easy bit, as it takes care of the creation of the Essbase outline directly from within EPMA, meaning that you only really need to use the Planning Web Application to create the forms and workflows/tasks. Before you can start working with forms though, there&#8217;s one more task to do &#8211; to load the data (i.e the actuals, the baseline planning data) into Essbase. Getting the initial data ready for Planning is actually a two stage process; firstly, you usually want to load some initial data in, and then secondly you process, calculate and otherwise manipulate this data to allocate, for example, top-level budget figures down to individual departments based on headcount, which in classic planning applications you&#8217;d do using Hyperion Business Rules and in EPMA-managed ones, you&#8217;d use the Calc Manager. Starting off with the data load though, you&#8217;ve got a couple of options on how to get the initial data in.</p>
<p>Probably the easiest way is to do an old-fashioned data load into the Essbase database. Unlike dimensions which can only be loaded from EPMA, data can be loaded in whichever way you see fit, although if you bypass EPMA you&#8217;ll miss the logging, management and other benefits you get when you manage all your loads using this environment. Doing a data load in this way is pretty straightforward though, you can for example select the dimension in Essbase Administration Services, right-click on it and select Load Data, then point it towards the file containing your data.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/10/epmanew39.jpg" height="457" width="395" border="1" hspace="4" vspace="4" alt="Epmanew39" /></p>
<p>Your file needs to hold the data in a particular format (see <a href="http://www.rittmanmead.com/2009/04/17/hyperion-planning-creating-your-own-simple-application/">this previous posting</a> for more details) but it&#8217;s easy to understand and only takes a few minutes to set up. The &#8220;proper&#8221; way of doing it though is to use the Data Synchronizer feature within EPMA, which can bring in data from applications such as Financial Management, in the future it&#8217;ll link to Oracle GL, but for now we can point it towards the interface tables I mentioned previously or files, as I&#8217;m going to use in the final example.</p>
<p>Data Synchronization, like the Dimension and Application Libraries, is accessed from the Workspace menu.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/10/epmanew26.jpg" height="600" width="455" border="1" hspace="4" vspace="4" alt="Epmanew26" /></p>
<p>Once the application is loaded, you start by defining a new External File Definition (or a Data Interface Table Definition, if you are bringing data in from interface tables).</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/10/epmanew27.jpg" height="231" width="480" border="1" hspace="4" vspace="4" alt="Epmanew27" /></p>
<p>Then, in a process familiar to Warehouse Builder developers, you sample the file and go on to specify which dimension each file field refers to.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/10/epmanew28.jpg" height="364" width="500" border="1" hspace="4" vspace="4" alt="Epmanew28" /></p>
<p>Then once the file definition is complete, you then use the tool to define a new &#8220;data synchronization&#8221;, which maps the incoming fields to the dimensions in your application, with the remaining field containing the data for the specified account.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/10/epmanew36.jpg" height="364" width="500" border="1" hspace="4" vspace="4" alt="Epmanew36" /></p>
<p>So there you go. Once you&#8217;ve set all of this up and brought some data into the Essbase database, you can follow the same steps in the Planning Web Application to define the web forms and task list that the application will use, and from that point onwards the planning application is the same as far as end-users are concerned (though you need to make any dimension metadata changes in EPMA and redeploy as necessary, rather than make the changes in the Planning Web Application).</p>
<p>So how did it all pan out, compared to creating a Planning application using the Classic Application Wizard? Well I was discussing it with Venkat as I went through the process, and it was interesting to see how restrictive using EPMA can become once you start using it. Tools such as ODI and DIM (the adapters for Informatica) only work with classic applications, which means that you can&#8217;t make use of ODI&#8217;s ETL capabilities when working with EPMA Planning applications. You can&#8217;t use the Outline Load Utility to load your dimension metadata, you have to use Profiles and the Dimension Library, but you can use regular data loads from EAS if you don&#8217;t want to use Data Synchronization.</p>
<p>EPMA is clearly the way that Oracle want us to go though, and there are are obvious benefits if you have a whole estate of Planning, Profitability, Financial Management and Essbase applications to manage. It&#8217;s also worth thinking about how EPMA might work going into the future &#8211; will Essbase dimensions continue to be managed using this tool, could there perhaps be some merging between the Semantic Model that OBIEE uses, will we ever get to that nirvana where we have one repository, one dimensional modeling tool, one set of metadata for all our Oracle Bi tools? Who knows, but for now this is how planning applications using EPMA are initially put together.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2009/10/09/using-epma-for-managing-hyperion-planning-applications/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Oracle EPM 11.1.1.3 &#8211; Hyperion Shared Services integration with external Applications &#8211; Java API &#8211; Part 1 &#8211; Introduction</title>
		<link>http://www.rittmanmead.com/2009/08/18/oracle-epm-11-1-1-3-hyperion-shared-services-integration-with-external-applications-java-api-part-1-introduction/</link>
		<comments>http://www.rittmanmead.com/2009/08/18/oracle-epm-11-1-1-3-hyperion-shared-services-integration-with-external-applications-java-api-part-1-introduction/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 13:08:19 +0000</pubDate>
		<dc:creator>Venkatakrishnan J</dc:creator>
				<category><![CDATA[Hyperion]]></category>
		<category><![CDATA[Oracle EPM]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=2847</guid>
		<description><![CDATA[One of the major enhancements that came in the Hyperion EPM 11 release is the availability of Java APIs to access shared services from external applications. In the prior releases, SDK’s were available but those have been enhanced completely now in this release to accommodate new features. Also with the plans of opening up Essbase [...]]]></description>
			<content:encoded><![CDATA[<p>One of the major enhancements that came in the Hyperion EPM 11 release is the availability of Java APIs to access shared services from external applications. In the prior releases, SDK’s were available but those have been enhanced completely now in this release to accommodate new features. Also with the plans of opening up Essbase in the form of Web Services through a WSDL in future releases, makes the Java API option a definitive plus from an integration standpoint. In fact one can find traces of the WSDL implementation in the 11 release itself (if you browse through the complete installation directories). So theoretically opening up shared services and other applications through Java API means one has more control on import and export of users/groups into shared services.</p>
<p>Shared Services currently does not support table authentication whereas BI EE does. So, one common issue that people faced while using EPM and BI EE together in prior releases(pre-9.3) is in migrating the users from a database table to shared services. The only way then was to use an export/import utility shipped with shared services that accepted a CSV or an XML file for the import process. So, the database table would have to be exported into a CSV in a specific format (which in itself was not documented well) and then imported back to shared services using the import utility. But now with the advent of Java APIs it has become easier to manage the export import process. In addition, this opens up a lot of integration opportunities revolving around using shared services as a federating user directory.</p>
<p>Today we shall see what pre-requisites are needed to get this working. Unfortunately, the documentation falls short in explaining all the bits and pieces. Following are the components you will need</p>
<p>1. Hyperion Shared Services 11.1.1.1 client archive (or fully installed shared services)<br />
2. JDeveloper or any Java IDE/client</p>
<p>One of the first things that you would notice is the fact that JAPIs of Hyperion are completely different(due to a different implementation methodology probably) from any other Oracle’s own native product like BI Publisher etc. Looking at the API you can clearly understand why it was not documented before (you can find a lot of jar files used extensively, interchangeably by a lot of Hyperion Components) as there are still quite a lot of jar files you would need to get it to work. Unfortunately the documentation just points to the fact that you would need the class path to be qualified correctly without mentioning where or what those jar files are.</p>
<p>To start with i would be using the sample.java file that comes with the <a href="http://download.oracle.com/docs/cd/E12825_01/epm.111/epm_security_api/frameset.htm?launch.html" target="_blank">EPM documentation</a>. For the sake of clarity i have provided the code for this java file below.</p>
<pre>package hsssecurity;

import java.io.PrintStream;
import java.util.HashMap;
import java.util.Map;

import com.hyperion.css.CSSAPIIF;
import com.hyperion.css.CSSDirectoryManagementAPIIF;
import com.hyperion.css.CSSException;
import com.hyperion.css.CSSSystem;
import com.hyperion.css.CSSUserProvisioningAPIIF;
import com.hyperion.css.common.CSSGroupIF;
import com.hyperion.css.common.CSSPrincipalIF;
import com.hyperion.css.common.CSSRoleIF;
import com.hyperion.css.common.CSSUserIF;

public abstract class hsssecurity {
	 // Handle to Instance of CSS System
    protected CSSSystem system = null;
    // Handle to Instance of CSSAPI
	protected CSSAPIIF cssAPI = null;
	//Handle to Directory management API
	protected CSSDirectoryManagementAPIIF cssDMAPI;
	//Handle to User Provisioning API
	protected CSSUserProvisioningAPIIF cssUPAPI;
	//the identity of the entity performing the operation.
	protected CSSPrincipalIF principal = null; 

	protected HashMap context;

	public static String PRODUCT = "HUB-9.5.0";

	public hsssecurity() {
		initialize();
	}

   /**
    * Initialize the CSS Framework
    */
    private void initialize()
    {
        try
        {
        	System.out.println("Initializing CSS ...");
        	context = new HashMap();

            // Get Instance of the CSS System. Specify the location of
            // the Shared Services Client log file.
            // CSS will be intialized from configuration stored in Registry.
             System.out.println("Initializing CSS ...");
            system = CSSSystem.getInstance(context, "C:/Oracle/Hyperion/logs");
            System.out.println("Initialized CSS.");

            // get Handle the CSS API Interface
            cssAPI = system.getCSSAPI();

            cssDMAPI = cssAPI.getDirectoryManagementAPI(new HashMap());

            cssUPAPI = cssAPI.getUserProvisioningAPI(new HashMap()); 

            System.out.println("Getting the Principal ...");
            principal = getPrincipal();
            System.out.println("Got Principal.\n");

            context = new HashMap();
        }
        catch (Exception ce)
        {
            ce.printStackTrace();
        }
    }

	/**
	 * Shuts down the CSS framework.
	 */
    public void shutdown() {
    	try {
    		system.shutdown();
    	} catch (Exception e) {
    		e.printStackTrace();
    	}
    }

      private CSSPrincipalIF getPrincipal() {
    	  CSSUserIF admin  = authenticate("admin","password");
    	return admin.getPrincipal();
      }

      protected HashMap getContext() {
    	return new HashMap();
      }

      protected CSSUserIF authenticate(String username, String password)
      {
          CSSUserIF user = null;
          System.out.println("Authenticating user: " + username);
          try
          {
              Map context = new HashMap();
              user = cssAPI.authenticate(context, username, password);
              System.out.println("Got User: " + user);
          }
          catch(CSSException ce)
          {
              ce.printStackTrace();
          }

          return user;
      }

      protected void dump(PrintStream out, String msg, String [] arr){
    	  out.println(msg);
    	  for (int i = 0; i &lt; arr.length; i++){
    		  out.println(arr[i]);
    	  }
      }

      protected void dumpUsers(PrintStream out, String msg, CSSUserIF[] users){
    	  out.println(msg);
		  out.println();
    	  for (int i=0 ; i  "+ users[i].getLoginName());
    		  out.println("User Email--&gt;" + users[i].getEmailAddress()[0]);
    		  out.println("User Description--&gt;" + users[i].getDescription());
    		  out.println("User FN --&gt;" + users[i].getFirstName());
    		  out.println("User Identity--&gt;" + users[i].getIdentity());
    		  out.println();
    	  }

      }

      protected void dumpGroups(PrintStream out, String msg, CSSGroupIF[] groups){
    	  out.println(msg);
		  out.println();
    	  for (int i=0 ; i " + groups[i].getName());
    		  out.println("Group Description--&gt;" + groups[i].getDescription());
    		  out.println("Group Identity--&gt;" + groups[i].getIdentity());
    		  out.println();
    	  }

      }

      protected void dumpRoles(PrintStream out, String msg, CSSRoleIF[] roles){
    	  out.println(msg);
		  out.println();
    	  for (int i=0 ; i " + roles[i].getName());
    		  out.println("role Description--&gt;" + roles[i].getDescription());
    		  out.println("role Identity--&gt;" + roles[i].getIdentity());
    		  out.println();
    	  }
      }

      protected abstract void cleanup(String []identities) throws CSSException;

	  protected void printMsg(PrintStream out, String msg) {
		  out.println(msg);
	  }

}</pre>
<p>As you see, all this class does is, it authenticates into shared services and provides a set of methods for displaying the groups, users, roles etc. But if you notice, the recommended approach is to use the abstract class method implementation as we need to ensure that when we have multiple instances of the client application the memory is shared across the applications if necessary(this is not always necessary but this is what seems to be the recommended approach by Oracle). So, in order to test this out, we would have to create a sub-class as shown below</p>
<pre>package hsssecurity;

import com.hyperion.css.CSSException;

public class hssImplementation extends hsssecurity{
    public hssImplementation() {
    }

    protected void cleanup(String []identities) throws CSSException{
    }

    public static void main(String[] args) {
        hssImplementation a = new hssImplementation();
    }
}</pre>
<p>The sub-class would have to provide implementation methods for non-abstract methods in the abstract class. Now, coming to the classpath, you would have to ensure that you have all the jar files under the {HYPERION_HOME}\common\utilities\LCM\9.5.0.0\lib folder to be available to the main executing class.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="image" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/08/image28.png" border="0" alt="image" width="504" height="315" /></p>
<p>Once that is done, go to the Run-time execution profile and add an HYPERION_HOME parameter as shown below</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="image" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/08/image29.png" border="0" alt="image" width="501" height="268" /></p>
<p>With this you should be able to execute any of the methods in the main sample.java file.</p>
<p align="center"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="image" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/08/image30.png" border="0" alt="image" width="504" height="171" /></p>
<p>The above should get you started on using the Java APIs of shared services. I would cover some more complex integration methods like export/importing users into shared services, custom application to main users/groups etc in the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2009/08/18/oracle-epm-11-1-1-3-hyperion-shared-services-integration-with-external-applications-java-api-part-1-introduction/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A Quik Look at QlikView</title>
		<link>http://www.rittmanmead.com/2009/08/15/a-quik-look-at-qlikview/</link>
		<comments>http://www.rittmanmead.com/2009/08/15/a-quik-look-at-qlikview/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 16:08:18 +0000</pubDate>
		<dc:creator>Mark Rittman</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Hyperion]]></category>
		<category><![CDATA[Oracle BI Suite EE]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/2009/08/15/a-quik-look-at-qlikview/</guid>
		<description><![CDATA[Outside the world of Oracle, one of the rising stars of the BI world has been Qliktech, the Swedish software company behind QlikView. QlikView is one of a new breed of desktop, in-memory BI tools (see also the forthcoming Gemini tool from Microsoft, an in-memory, column-store BI tool that&#8217;ll be delivered as part of Microsoft [...]]]></description>
			<content:encoded><![CDATA[<p>Outside the world of Oracle, one of the rising stars of the BI world has been Qliktech, the Swedish software company behind <a href="http://www.qlikview.com/">QlikView</a>. QlikView is one of a new breed of <a href="http://www.olapreport.com/Comment_InMemBI.htm">desktop, in-memory BI tools</a> (see also the forthcoming <a href="http://www.olapreport.com/Comment_Gemini.htm">Gemini</a> tool from Microsoft, an in-memory, column-store BI tool that&#8217;ll be delivered as part of Microsoft Office 2010) that are being evaluated by customers as alternatives to traditional relational query tools such as Oracle BI Enterprise Edition and OLAP servers such as Essbase or Oracle OLAP. So what is QlikView, and how does it compare to Oracle&#8217;s BI tools?</p>
<p>QlikView, compared to Oracle&#8217;s relational and OLAP query tools, has a slightly different approach to storing and querying data. Whilst it can load data from relational and file-based data sources, it then stores the data in-memory in a compressed form with associations defined between data items rather than the traditional joins that we see in relational query tools. The idea behind these associations is that they are derived by Qlikview during the data load based on matching up columns across tables with the same name, and then when you query the resulting dataset you can analyze your data using these associations.</p>
<p>To take an example, the following QlikView demonstration shows data for a consulting company in a Windows thick client application. To analyze your data, you click on a data item, the numbers on the charts are then filtered by this value, and other data items that are associated with this selected value are then also made available for selection. The screenshot below shows this filtering in action, you can see the selected fields in green, the ones that are greyed out are no longer available for selection.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/08/qv1-1.jpg" height="384" width="500" border="0" hspace="4" vspace="4" alt="Qv1-1" /></p>
<p>Now obviously this way of selecting data items, and this method of &#8220;association&#8221;, is fairly alien to traditional Oracle BI users and so I put together a simple example using the Sales History (SH) dataset available on recent Oracle databases. The first step in creating some QlikView reports is to define a new document, which in the end will hold the report layout, the data loading queries and the actual reporting data itself, which gets loaded in to memory when you open the QlikView document. Once you&#8217;ve defined the new document, you create a script to load data in from in this case an Oracle database.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/08/qv2-1.jpg" height="419" width="500" border="0" hspace="4" vspace="4" alt="Qv2-1" /></p>
<p>This is in fact a similar process to putting load scripts together for Essbase and Oracle Express, with connections being made through ODBC and OLE DB for databases and direct connections being made to file and HTTP data sources. I get the impression that the most regular use case for data loading in QlikView is loading from files, and this would correspond to the target market for this tool which is desktop analysts who want to report on their data separately from the infrastructure around their enterprise BI tools and data warehouse.</p>
<p>Once you&#8217;ve brought your data in, you can view it either as a database (source) data model, or as the logical model that QlickView generates when it loads in the data. In fact for the SH schema, these are both the same as the joins in the Oracle schema are turned into the associations that QlikView uses, so what you see looks just like the regular sort of data model you&#8217;d see in any relational query tool.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/08/qv3-1.jpg" height="468" width="500" border="0" hspace="4" vspace="4" alt="Qv3-1" /></p>
<p>The joins (or associations) are defined by QlikView during the import process by matching up columns of the same name &#8211; each match creates an association. This means that to create a join, you need to alias column names as they come in (to change ID to CUSTOMERID for example, if this is required to join to another CUSTOMERID), and you need to create aliases to break associations so that the STATUS column from the orders table isn&#8217;t linked to the STATUS column from the customer table when this isn&#8217;t really appropriate.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/08/qv4-1.jpg" height="372" width="406" border="0" hspace="4" vspace="4" alt="Qv4-1" /></p>
<p>For an Oracle dataset with well defined primary and foreign keys, the logical table structure that QlikView creates in memory is usually pretty much the same as the Oracle schema, but for files or with data sets with lots of cross-related data, QlikView will create synthetic keys and synthetic tables to record the associations and assist with analysis. Internally QlikView tokenizes and compresses the data as well which meant that, for the Sales History data set that I worked with earlier, the total size of the QlikView document (including the data) was only 4MB and took about 1 minute to load and prepare, whereas the corresponding Essbase data set (as built in <a href="http://www.oracle.com/technology/pub/articles/rittman-essbase.html">this OTN article</a>) took up several gigabytes of space and took over an hour to load and prepare. Impressive stuff.</p>
<p>Loading the normalized data set that I used for <a href="http://www.rittmanmead.com/2007/09/16/obiee-dimension-data-modeling-redux/">this article on OBIEE data modeling</a> produced the following logical QlikView table diagram, which as you can see is a direct reflection of the normalized Oracle data model.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/08/qv5-1.jpg" height="485" width="500" border="0" hspace="4" vspace="4" alt="Qv5-1" /></p>
<p>This ability to report against normalized data obviously makes setting up the data model easier compared to OBIEE (notwithstanding the need to rename columns to make and break associations), but it then doesn&#8217;t make any distinction between columns that are measures and ones that are dimension attributes, which makes working with data in reports a bit more complicated.</p>
<p>So once you&#8217;ve got the data in, how do you create a report? And more importantly, how do these reports compare to Essbase or OBIEE reports? The actual report creation process is a bit like working with tools such as Hyperion Interactive Reporting or <a href="http://www.rittmanmead.com/2008/03/30/taking-a-look-at-hyperion-web-analysis/">Web Analysis</a> in that you construct an application made up of crosstabs, graphs, gauges and the like, which are then run either in the thick-client Windows application or online using a variety of thick and thin web clients. If I wanted to create a bar chart that allows users to select the product category, month and state of purchase and then graph product sales broken down by customer satisfaction rating, I&#8217;d add three field list boxes to my document and then create a bar graph chart, which would be automatically filtered by whatever I select in the lists.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/08/qv6.jpg" height="398" width="500" border="0" hspace="4" vspace="4" alt="Qv6" /></p>
<p>In the screenshot above, I&#8217;ve first selected the &#8220;Computers&#8221; product category which filters the graph, and highlights the states and months that have sales for this category. If I then selected the CA and NY states, only the months that are associated with sales (quantity) for Computers and CA / NY sales would be highlighted, and so on. As such, the &#8220;Qlik&#8221; part of Qlikview seems to translate to progressive filters of your data based on the items you have selected, with the filtered-down dataset being made up of the data that will join (or &#8220;associate&#8221;) with the data items that you have selected.</p>
<p>If you&#8217;re looking to produce Essbase-like reports where data is shown in hierarchies, this is a bit trickier. There isn&#8217;t really a concept of hierarchies in Qlikview; you can create column groups which group together columns that are related, but I can&#8217;t see a simple way to select column members, for example, by their position in a hierarchy which is pretty standard in OLAP tools such as Essbase. </p>
<p>Displaying data in hierarchies is a bit simpler, especially as QlikView automatically calculates the relationship between columns and their values so that, for example, if you display product categories and products in a pivot table chart, the product are automatically shown under the categories that they relate to.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/08/qv7.jpg" height="288" width="331" border="0" hspace="4" vspace="4" alt="Qv7" /></p>
<p>What I found trickier (as in I couldn&#8217;t do it) was to create a pivot table with regions, for example, across the top of the pivot, or to add page items or other controls. I&#8217;ve only used QlikView for a few days and so I may well have missed this feature, but none of the example documents that came with either of these features and therefore I suspect that it&#8217;s not something that the product does, for the moment.</p>
<p>Working through the examples that ship with QlikView 9, visualizations and fast access to data seem to be the main strengths of the tool. For example, the Sparkline graph type that features strongly in Stephen Few&#8217;s <a href="http://www.amazon.com/Information-Dashboard-Design-Effective-Communication/dp/0596100167">&#8220;Information Dashboard Design&#8221;</a> book is present and correct in QlikView:</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/08/qv8.jpg" height="297" width="500" border="0" hspace="4" vspace="4" alt="Qv8" /></p>
<p>As are butterfly financial-style tables, used for displaying P&#38;L reports and other finance data.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/08/qv9.jpg" height="234" width="500" border="0" hspace="4" vspace="4" alt="Qv9" /></p>
<p>One of the examples uses Google Maps to illustrate data, in this case around house for sale in London.</p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/08/qv10.jpg" height="261" width="500" border="0" hspace="4" vspace="4" alt="Qv10" /></p>
<p>Where QlikView is weaker in my view, compared to any of the Essbase-backed query tools, is around number-intensive and hierarchy-intensive applications. It&#8217;s not easy to select dimension members via a hierarchy, the scripting and calculation language that comes with the tool obviously doesn&#8217;t support the richness of languages like MDX and Essbase calculations scripts, and of course there are not the applications such as Planning and Financial Management that you&#8217;d expect to make use of in the Finance Department. </p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/08/qv11.jpg" height="269" width="500" border="0" hspace="4" vspace="4" alt="Qv11" /></p>
<p>That said, for what it does (provide fast access to star and normalized data sets, including data sourced from files and from the web) it does the job very well, with excellent load and preparation times and sub-second response times, even with large data sets. You probably wouldn&#8217;t use Qlikview <em>instead</em> of Essbase or Oracle BI EE as they address different requirements, but as a sales analysis tool or a tool to analyze OLTP datasets, it takes some beating. </p>
<p>It wouldn&#8217;t surprise me to find that Oracle or another of the big vendors acquires QlikTech at some point as QlikView would make a nice complement to the more enterprise, heavy-duty query tools, especially when tools such as this and the forthcoming Gemini from Microsoft threaten to create desktop BI tool &#8220;bridgeheads&#8221; on users&#8217; desktops as they are just so easy to use and to set up (can you imagine getting Business Objects and all its technology stack up and running over a couple of evenings, for example, let alone learning how to use it?). It wouldn&#8217;t also surprise me if vendors such as Oracle do more to bring their database and query tool processing in-memory, given the amounts of RAM available on users&#8217; desktops these days and some of the advances being made in data compression technologies.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2009/08/15/a-quik-look-at-qlikview/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Announcing Rittman Mead Training Days 2009, London</title>
		<link>http://www.rittmanmead.com/2009/07/28/announcing-the-rittman-mead-training-days-2009-event-london/</link>
		<comments>http://www.rittmanmead.com/2009/07/28/announcing-the-rittman-mead-training-days-2009-event-london/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 19:04:08 +0000</pubDate>
		<dc:creator>Mark Rittman</dc:creator>
				<category><![CDATA[Hyperion]]></category>
		<category><![CDATA[Hyperion Essbase]]></category>
		<category><![CDATA[Oracle BI Apps]]></category>
		<category><![CDATA[Oracle BI Suite EE]]></category>
		<category><![CDATA[Oracle Data Integrator]]></category>
		<category><![CDATA[User Groups & Conferences]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=2619</guid>
		<description><![CDATA[I&#8217;m very pleased to announce details of our second-ever Training Days event, to be held at the Bloomsbury Hotel in London on October 27th &#8211; 29th 2009. This year I&#8217;m especially pleased to be co-hosting the event with Venkat Janakiraman and Christian Berg, two experts in the Oracle BI EE world and star speakers at [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m very pleased to announce details of our second-ever<a href="http://www.rittmanmead.com/trainingdays2009"> Training Days</a> event, to be held at the <a href="http://www.doylecollection.com/locations/london_city_hotels/the_bloomsbury_hotel.aspx">Bloomsbury Hotel</a> in London on October 27th &#8211; 29th 2009. This year I&#8217;m especially pleased to be co-hosting the event with Venkat Janakiraman and Christian Berg, two experts in the Oracle BI EE world and star speakers at the recent <a href="http://www.rittmanmead.com/2009/05/17/the-rittman-mead-bi-forum-2009-brighton/">Rittman Mead BI Forum</a> in Brighton.</p>
<p>Like last year&#8217;s Training Days event, the focus is on in-depth technical knowledge around Oracle BI EE, Essbase, Oracle Data Integrator and the BI Applications, with each of us running several sessions over the three days. Unlike other &#8220;beginners-level&#8221; courses this event focuses on real project issues and we&#8217;ll be going through the reality of designing, architecting, performance-tuning and integrating products across the range of Oracle&#8217;s BI and EPM product stack. I&#8217;m particularly pleased to have Venkat on board because of his deep knowledge of OBIEE and Essbase integration, and it&#8217;s great to have Christian presenting as well as he&#8217;s worked on so many successful OBIEE and Oracle BI Applications projects. Anyway, here&#8217;s the agenda for the three days:</p>
<ul>
<li>Day 1</li>
<ul>
<li>Oracle BI and EPM architecture overview &#8211; Mark Rittman</li>
<li>Oracle BI EE Data Modeling against DW and 3NF sources &#8211; Mark Rittman</li>
<li>Oracle BI Delivers + Integration with Java and BI Publisher &#8211; Venkat Janakiraman</li>
<li>What&#8217;s new in Oracle BI, DW and EPM from Oracle Open World &#8211; Mark Rittman</li>
</ul>
<li>Day 2</li>
<ul>
<li>Oracle BI EE Data Modeling against Essbase &#8211; Venkat Janakiraman</li>
<li>Leveraging MDX functions and calculations in OBIEE &#8211; Christian Berg</li>
<li>Integrating Security across OBIEE and EPM &#8211; Venkat Janakiraman</li>
<li>I can do this in Hyperion &#8211; how do I do it in OBIEE? &#8211; Christian Berg and Venkat Janakiraman</li>
</ul>
<li>Day 3</li>
<ul>
<li>OBIEE Systems Management with OEM BI Mgmt Pack &#8211; Mark Rittman</li>
<li>OBIEE Configuration Management Best Practices &#8211; Christian Berg</li>
<li>ODI functionality in Oracle BI Applications &#8211; Mark Rittman</li>
<li>ODI Integration with Essbase, Planning and Oracle EPM Suite &#8211; Venkat Janakiraman</li>
</ul>
</ul>
<p>As with our BI Forum in Brighton earlier in the year, this is a great opportunity to meet and train with real-world Oracle BI and EPM consultants who have real project experience to back up their training materials. With lots of discussions and the opportunity for you to bring your own laptops and try out some of the techniques we discuss, this is a rare opportunity to take your OBIEE, Oracle BI and EPM knowledge up to the next level. Unlike the BI Forum though, this is an intensive three days with just three trainers, where we&#8217;ll look at topics in much greater detail and follow a common theme from start to finish.</p>
<p>Like last year, you can either book for just one day, or you can book for all three in a &#8220;three for the price of two&#8221; deal (though last year, everyone ended up staying for all three days). There is also an &#8220;early-bird&#8221; offer where we are discounting both rates by 10% up to the end of September, so if you&#8217;re interested in coming take a look at the event website for more details. The rate includes lunch on all three days and a special meal on the second night where we can kick back and discuss the world of Oracle BI in one of London&#8217;s top restaurants.</p>
<p>I&#8217;m really excited about this event and I know Christian and Venkat are as well. We only have twenty spaces available, so if you&#8217;re interested make sure you <a href="http://www.rittmanmead.com/trainingdays2009">register now</a> and we&#8217;ll see you in London in October.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2009/07/28/announcing-the-rittman-mead-training-days-2009-event-london/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
