Playing with CAF(OBIEE Content Accelerator Framework)

I am right back after hectic day-to-day schedule ! Now I will try to explore a new OBIEE feature called Content Accelerator Framework (CAF) version 1 . It is a free utility available in OTN and yet not part of OBIEE 10g default installation .Possible reason could be , as this utility come in the mid way of transition between 10g and future version 11g .Hopefully Oracle will provide a polished automated CAF release bundled in 11g version to thrash out Legacy Web Replication method and will provide a full-proof intelligent migration tool.

What is CAF/The Objective and Purpose

It is a RPD and Catalog migration utility to replicate/clone and synchronize RPD objects and existing reports from Source environment to Target OBIEE environment. It also helps to create duplicate report and duplicate logical RPD constructs from one OBIEE environment to other even if source and target environment has nothing in common and only basic logical model at Target environment .This in-turn help to propagate the changes made on RPD /Catalog  from one environment to other .This could even done after selecting each and individual object.

Overcome from Legacy Web Replication

Webcat replication seems to be an old school method while CAF approaches to make a revolutionary change in Migration aspects .The tool is simply amazing with its wide variety of features . As we all know Webcat Replication is not a very robust method while doing the synchronization. There are lot of glitches while anybody try to adopt this .Not only this , the configuration and network based setup is very much important for doing a successful webcat replication which sometime seems to be a headache for a Configuration Manager .However it is very good in clustered based synchronization arena and not typically in migration .In CAF approach the migration task would be much more simpler and not so cumbersome to handle .As the entire Catalog based concept changes from legacy .webcat file after Oracle takeover the product ,it is predictable that Replication strategy need to change as well . Lets see what OBIEE11g comes with !!!

Why this Blog Thread

There are lots of so-called OBIEE Guru’s already blogged about CAF . However my intension is to blog it with nitty-gritty after deep diving so that readers could feel how it works across various Proof Of Concept approaches.

Installation Prerequisite

1) OBIEE and later (not OBIEE 11g !)

2) JDK 1.6 or later (Note : Make sure the JDK version is correct and correct PATH entry is there as Environment variable parameter)

Installation and Configuration

Download CAF and extract it under below path .Note that don’t rename the Temporary subdirectory “C:\OracleBI\TEMP_CAFV1_Install” and the extracted content should be under the mentioned path and directory to avoid any issues.

Now make sure OBI Catalog manager is not running and all the process is killed i.e. “catalogmanager.exe, java.exe, javaw.exe” . Otherwise unwanted JAR error will be thrown.

Navigate to the directory ..\OracleBI\web\catalogmanager\plugins.

Create a backup of the file and move the backup file outside of the OBIEE directory structure.
Delete the original file from ..\OracleBI\web\catalogmanager\plugins.
Lets try to open Catalog Manager by selecting Start > All Programs > Oracle Business Intelligence > Catalog Manager. Catalog Manager should not open and you should receive an error message similar to the following:

Now run the batch file from the extracted directory and continue it by pressing “Y” .

Now try to open Catalog Manager once again and you can see two new option added as ‘Syncronize’ and ‘Clone’ . This indicates that CAF has been installed and configured successfully .

So lets discuss about how functionally it is working across several perspective in a step by step different kind of approaches.

Approach 1 – Cloning Catalog Object from Dev to Test Environment

CAF Cloner Framework

I have created a RPD called dev_rpd , duplicate it and rename it as test_rpd .The dev_rpd will be used as Source RPD and test_rpd as Target RPD .Both RPD’s having same SA and same metadata objects configured based on Default ‘EMP’ and ‘DEPT’ table  joins .A report and prompt is created in ‘dev_catalog’ .This will be used as source of target catalog ‘test_catalog’ .The Online RPD is dev_rpd and it has been copied to “\OracleBI\server\Repository\dev” to make an offline access to it.Another offline RPD is test_rpd and kept under “\OracleBI\server\Repository\test” .

Lets configure instanceconfig.xml to point “test_catalog” .Start the Presentation services .Initially it will be blank catalog .We will see how to synchronize dev_catalog items to online test_catalog now.

Open the Catalog Manager and open dev_catalog offline and Click on Clone .That does mean I want only Emp report to be cloned in target blank web catalog i.e. test_catalog .

It will pop-up content accelerator wizard .If the Target Catalog is not online it will throw below error :

Otherwise move to the next screen to Select Source and Target offline RPD location and Online Target Catalog URL prefix (BI service plugin ‘analytics’ should be excluded)

Now choose the Target Subject area where you want the items to be migrated .

Click Next .This will parse the Emp request/report XML and extract the columns from it to display at the left-pane.Whereas at the Right pane it selects the Presentation tables from Target RPD .

Below I have clicked EMPNO from left pane and double clicked to the EMPNO from EMP table at right pane to get the final Mapped Values .As you can see after hovering the mouse you can see the Data Type of the target mapped column.This datatype will be extracted and identified from Target RPD automatically .

Any incorrect mapping will throw below error :

Do all the mapping as below :

Lets change the target request name from default “/shared/Cloned” to make it in sync with source catalog .Check the “Create Dashboard” option to make a new dashboard “emp_dashboard” at target catalog .(You can skip Dashboard creation option,in that  case only Answers request will be Cloned at Target) .Also please note that we have same named dashboard “emp_dashboard” at “dev_catalog” and same report emp added under that dashboard which we want to cloned in same name at Target catalog “test_catalog” .

You can edit the target request name also .Finally click on Finish. This results below successful cloning log .

Now lets login to Online ‘test_catalog’ and I can see a new dashboard created having the same report.Also it is available in Answers .

So the Cloning has been succeeded from Source Development environment to Target Test environment.

You can notice 2 things : Target RPD test_rpd has been renamed to test_rpd_backup before change and target catalog report description has been changed i.e. marked red in above image .How pretty and careful CAF is !!!

To be Continued ……….

Updated as of 17-Feb-2011 … I am not resuming this thread anymore as new OBIEE 11g comes with enhanced migration capability without CAF …

OBIEE on Windows XP Home – A Installer Compatibility bug

I was encountered one strange problem asked by one of my ex- colleague about the problem on installing OBIEE version downloaded from OTN , to his Dell Inspiron 1520 laptop . The operating system is Windows XP Home SP3 .While running the setup.exe it is throwing strange error as below :

“Oracle Business Intelligence is not supported on this Windows version. Oracle Business Intelligence is only supported on Windows XP x86, Windows 2003 x86, Windows 2003 AMD64, Windows 2003 EM64T, Windows Vista x86, Windows Vista AMD64, Windows Vista EM64T, and Windows 2000 x86”

The error seem to be confusing to end users as the user have x86 (32 bit) hardware config , OS also 32 bit and finally the downloaded OBIEE version also 32 bit (x86) .So above error is bit misleading .

I have search on OTN forum and the outcome seems not to be so promising ,it might be the problem for other users could be helped by the suggestions .

For my case the resolution for the problem is : Copy the file systeminfo.exe from path “C:\WINDOWS\system32”  of any Windows XP Professional version and paste  it to the same path at XP Home .pretty simple ! only thing is that you need to have another machine where XP Prof version is running or could be downloaded .

Now try to execute the file systeminfo.exe from Run . Make sure that : “C:\Windows\system32” is set in your PATH environment variable. It would run in a command window and faded after glimpse . Don’t worry … Now try to reboot your machine and see if the OBIEE installer works fine or not .

Otherwise try one more step : copy framedyn.dll  from “C:\WINDOWS\system32\wbem”   to “C:\WINDOWS\system32” . This dll has been actually called while executing systeminfo.exe .Now try to run the OBIEE installer once again and it should resolve the problem … at least for my ex-colleague 🙂

Note that this one is very specific problem reported for Dell Laptop users .Alternatively you can run the WMI diagnostic utility from Microsoft or de-install “Broadcom ASF Management Application” from Add/Remove option which is reported to be a known culprit for the problem .

The anatomy and heritage of OBIEE

Suddenly interested about knowing the History and all the past versions of OBIEE including all its predecessors and major acquisitions :

“These products have a long heritage with Oracle BIEE being based on Siebel Business Analytics which was originally created by nQuire in 1997 . The following major releases of the software have occurred” :

Siebel Analytics 7.0 – 2002
Siebel Analytics 7.5 – 2003
Siebel Analytics 7.7 – 2004
Siebel Analytics 7.8.2 and 7.8.3 – 2005
Siebel Analytics / Oracle Business Intelligence 7.8.4 and 7.8.5 – 2006
OBIEE 10gR3, – Jan 2007 (MAUI)
OBIEE 10gR3, – Apr 2007
OBIEE 10gR3, – Aug 2007
OBIEE 10gR3, – Oct 2007 (Enhanced Localization)
OBIEE 10gR3, – Dec 2007 (Essbase Integration)
OBIEE 10gR3, – May 2007
OBIEE 10gR3, – Aug 2008 (Disco Migration ,Workspace Integration, SmartSpaceIntegration )
OBIEE 10gR3, – Apr 2009

As of today :

The latest shipping versions are:
Future expected version : OBIEE 11g (Negril) – A Major and Mega blockbuster release .
Thanks Darryn for the above inputs .

OBIEE Clustering – Approach of Oracle BI Server Load balancing/Failover

Luckily I got a chance to get work on a BI Clustered Environment on behalf of a giant UK Customer .The situation demands a clustered shared repository and load balanced environment so that BI Server resource would be shared across multiple server and the consecutive request from loads of users will be distributed without being a lack of memory or a memory dump .

 As the application was so big that it could have to process million of request in a day hence the idea was to have a clustered shared BI server env . In addition to that there was multiple BI Presentation server was there .Since OBIEE still not have a active failover mechanism (until incorporated using DMZ network and deployed inside a failover Router) so we have gone for a passive failover mechanism where at any time one Presentation server will be used and absorb the request transmitted from Browser and another will be in hot standby mode and will be used in case of the Primary Presentation server stop response .

So lets make situation bit simple : We have “HostSAS1”  and “HostSAS2” act as two BI Clustered Analytics Server and “HostSAW1” and  “HostSAW2” act as two BI Web Server .At any time two SAW server can pass the request to any of the SAS server and depending on the load the BI Cluster controller module will redirect the request and process it by using any of the Analytics Server resource .















Hence “HostSAS1” and “HostSAS2” need only BI server components and Cluster controller installed and configured ,whereas “HostSAW1” and “HostSAW2” needs only Web server component installed .Since both SAS1 and SAS2 are only configured for single BI instance having single default DSN “AnalyticsWeb” hence to configure BI Clustering we need to configure those DSN’s in both server as below. Please note that we need to make atleast one server as Primary . Hence our case SAS1 has been made as primary .







Check the Clustered DSN option and put the Primary and Secondary Controller information (Either Host name or IP Address) in both servers .Make necessary changes on NQClusterConfig.ini file located under ..\OracleBI_Home\server\Config






After that make the Oracle BI Server and BI Clustered Controller Service up and running and Click “Test Clustered Connect” option . This should throw a successful clustered connection message .That means the BI Cluster controller now actively participating and can handshaking with two BI Server services using Clustered ODBC connection port 9706 .

Pros and Cons :

BI Server Clustering is definitely a scalable solution by which we can tie multiple server together to handle the loads of inbound requests and thus perform a good load balancing and load sharing across them . This also enhance the BI server response and inturn the performance .

However there are couple of issues observed during the application/RPD syncronisation process during polling time window .One of the known problem is ,while you are doing online RPD editing from either Primary or Seconday server and save the RPD it would restart the BI server and copy the changed RPD and syncronised it across 2 servers .Thus ,eventually it make the consistency and integrity but if any user try to access report in between sometime it would throw errors as the BI server is restarting .

Moreover , Before restarting the BI Server during the cluster sync process the RPD usually copied into a separate location of Log .But after syncronisation it doesn’t delete the RPD from Log file location . So best practice is to remove that RPD from log after service down or making the services up in clustered environment .Otherwise if you try to put a fresh RPD in Primary server it could have been replaced and syncronised by previous RPD from log file and necessarily incur some inconsistent behavior and wrong results .Believe me this is my observation while working Online in Clustered env .

This is not a Cons rather a restriction which seems logically correct .What will about your Cache Files while you env is Clustered ? As we know Cache files must be build inside individual BI Server location as separate physical files and since that location is not shared across BI multiple servers .Hence to perform the Caching in Clustered environment, the physical location for storing and sharing cache entries need to be specified using parameter “GLOBAL_CACHE_STORAGE_PATH”  under NQSCONFIG.ini file .Also it is worth to monitoring nQCluster.log from “..\OracleBI_HOME\server\Log”, if Clustering is enabled .

N.B : – To operate clustering perfectly follow the Cluster and OBAS (Analytics Server) startup sequence judiciously i.e Primary OBAS up , Seconday OBAS up , Cluster Controller of Primary up and then Secondary Controller up .

RPD(Repoitory Directory) and Catalog File Name Syntax – nQSError

I was suddenly experimenting with the RPD file name syntax and came to know that some special character in .rpd file name will not be recognized by BI Server service and hence putting character like “$,#,%,<space>,-” inside the filename will throw below error in NQServer.log file and you will get below error message after Windows service startup . 







[47012] Syntax error in NQSConfig.ini file.

2009-10-02 17:01:26

     [nQSError: 26009] File D:\OracleBI\server\Config\NQSConfig.INI Near Line 33, Near <“>: new line in string.

However we can give special character in BI catalog file name and it loads by the Presentation server cool . So its somehow contradictory that certain syntax allowed in Catalog but not in Repository .See this :


Online editing of Multiple RPD from Hetergeneous/Cross platform

One of our current assignment was to do the online development using one RPD from one platform say Windows and also need to do the testing of the different RPD hosted into different IBM AIX platform. Since AIX doesn’t support the GUI kind of stuff hence we have configured both the RPD in Windows env via multiple DSN configuration  . It’s pretty simple , easy and straightforward though need to cautious about some syntax .

As we know OBIEE installation do a default configuration of “AnalyticsWeb” System DSN (i.e Oracle BI Server Driver NQSODBC.dll)  which appeared in a box while developer try to open the RPD in *Online Mode* .


Multiple DSN1     Multiple DSN2


 However developer can simultaneously work with multiple RPD online where RPD’s even hosted under heterogenous platform .Only thing you need to know is that the IP address or Host name and the Port by which a SQL ODBC connection done between BI Presentation server and BI server(usually the default port is 9703 until customized and configured ) . So lets create a new System DSN .

Click Add on System DSN tab from Microsoft ODBC Datasource Administrator window . Select the driver as “Oracle BI Server” .Click Finish .

Then go  through the below steps . Here I have created a DSN called “Sample Scott” and let the other settings unchanged apart from Server “AIX_Server” .Before that make sure you able to ping that server from your local machine by running “ping AIX_Server” from command prompt .Otherwise you can put the AIX host IP address .Sometime you might need to map the hostname and IP address in “..\WINDOWS\system32\drivers\etc\hosts” file .

Multiple DSN3






If explicit login ID and password required to access Oracle BI Server from other environment (apart from  OS authentucation) enter the Login ID and password for the same and change the port if necessary .Since  I am not physically loading multiple RPD from my own BI server(physically 2 separate BI server running instance load that RPD into their memory) hence keep uncheck Default repository Catalog” .

     Multiple DSN4Multiple DSN5






Make sure the AIX server reachable and SAW  service working fine there once running the SAWPING utility from $ORACLEBIHOME\web\bin .

 >> sawping –v –s AIX_Server

It should return the response as : “Server alive and well” . This utility try to access Oracle BI Presentation Server services to lookup whether this could communicate with Oracle BI Server via 9703 port .

So now when I trying to open the RPD into Online mode it will give me two option as below .The “AnalyticsWeb” DSN instance will open the RPD from my local machine but “Sample_Scott” open RPD from “AIX_Server” .(Note that DSN name “Sample Scott” changed to “Sample_Scott” here )

Multiple DSN6







Trying to access “Sample_Scott” with proper password will throw the below error though my BI server instance running on AIX machine .

 Multiple DSN7






Can you identify what is the problem behind this ? The problem is BI server try to find a DSN called “Sample_Scott” whereas the actual DSN name is “Sample Scott” . Now lets change the DSN name to “Sample_Scott” and here you go ! there is no more problem . So in brief BI server doesn’t support the DSN having space between them . This is al about the syntactical caution we need to consider .

Multiple RPD & Multiple Presentation service instance on single BI Server

The objective of the thread is to understand the process of configuring multiple RPD and Presentation service in same BI server instance .Once that will be understood it can be further extended in scalable solution to integrate the approach on multiple server based instance as per business demands .The OBIEE suite documentation mentioned this functionality could be achieved but never mentioned the detail steps how to achieve this .

The initial bit could be found at below URL of Mark Rittman though not in detail :

My goal in this thread is to clearly define the entire process however multiple Presentation Services instances on a machine is “NOT SUPPORTED BY ORACLE” .

The effective use of this approach will support multiple RPD editing online and also modifying multiple BI catalog online through two different instance .Also this would facilitate the running of failover instance in real life production environment .Apart from that customer could also ask for hosting two different (dev and test) instance(environments) in single host . 

Now lets assume that the two RPD i.e deba.rpd & test.rpd and there respective two catalogs both working properly while loaded individually and working independently .

Configuring the NQSCONFIG

Lets configure the NQSCONFIG.ini file as below :

RPD1  =       deba.rpd , DEFAULT; 
RPD2    =     test.rpd ;

Configuring the DSN

Create 2 Oracle BI Server System DSN i.e DSN1 to point to default repository deba.rpd and DSN2 to point to test.rpd . Since we are configuring two RPD in parallel to single BI server instance hence  for both DSN we point to server Local with default Port 9703 . The 9703 port is ODBC communication port between BI Server and Presentation Services .

Multiple RPD and Presentation Instance-1Multiple RPD and Presentation Instance-2






N.B : whatever repository will be put under change Default repository section will be override by the DEFAULT settings in NQSCONFIG.ini .You can tick “Connect to Oracle BI Server to obtain default settings” ,so that RPD connection will be established as per the definition in .ini file after BI server restart .

Configuring the Catalog and instanceconfig.xml

For both deba.rpd and test.rpd we have catalog file under ../$OracleBIDataHome/web/catalog/” as “deba” and “test” having different sets of reports in each of them to distinguish properly.So lets make catalog “deba” online after making the below changes in instanceconfig.xml .


Restart the services and log into catalog for “deba” and you can verify that the query running on deba.rpd and your dashboard display the reports relevant for catalog “deba” .Verify that from NQServer.log file .

Edit the xml and make the similar type of change to point to DSN2 and catalog “test” .It should work as well pointing to repo “test” .

Now till this point single BI server hosted two repository and you since the two repo available online hence you can easily make the online modification just by selecting the DSN from Admintool in online mode .

Deploying a new Presentation Service instance

As we know that there must be something different to distinguish two Web server instance . The typical URL is : http://localhost:9704/analytics where “analytics” is the context root and deployable J2EE module .My aim to create another context root by deploying a new instance of the analytics application which can be done by the Enterprise Manager as (http://localhost:9704/em). Typical default userid is “oc4jadmin” .

Lets follow the steps below to deploy the module “analytics.ear” from ..\$OracleBIHome\oc4j_bi\j2ee\home\applications .

Multiple RPD and Presentation Instance-3Multiple RPD and Presentation Instance-4






Multiple RPD and Presentation Instance-5

 Multiple RPD and Presentation Instance-6





Duplicating instanceconfig.xml for Presentation services

The second presentation service should use its own catalog i.e “test” and connect to the repo “test.rpd” while first presentation service would use “deba” .Hence there must be two separate xml web config file to point to different catalog .Duplicate the instanceconfig.xml file and create two xml as instanceconfig_deba.xml , instanceconfig_test.xml .


<Listener port=”9712″/>



Replace $ORACLEBIDATAHOME as per your env settings .

Configuring Presentation service communication channel for OC4J

Context root “analytics” can be communicated by OC4J using the default settings as per web.xml under “..\OracleBIHOME\oc4j_bi\j2ee\home\applications\analytics\analytics\WEB-INF” via default port 9710  .

But to communicate with context root “analytics_deba” I need to change the web.xml file under “..\OracleBIHOME\oc4j_bi\j2ee\home\applications\analytics_deba\analytics\WEB-INF” via default port 9712  .

Search for and change the param-value into 9712.

Multiple RPD and Presentation Instance-7







After creating the new configuration files we have to re-start the BI Server , BI Presentation services. Please restart the OC4J instance also .

Running two presentation service parallelly

To start the new presentation services I create two batch file with below target shortcuts .

sawserver.exe -c $ORACLEBIDATAHOME\web\config\instanceconfig_test.xml

sawserver.exe -c $ORACLEBIDATAHOME\web\config\instanceconfig_deba.xml

First stop all service and then start BI and OC4J service and after that invoke the above two scripts .So the presentation services will be started and you can login and type the following URL  in your web browser:

So presentation service application/context-root  “analytics” will refer to one repository file “deba.rpd”  and “analytics_deba” will refer to “test.rpd” but you now have the ability to create different reports, dashboards etc via different presentation services using single BI server env/resource .

N.B : You can define multiple catalog path in one instanceconfig.xml but only one will be active at a time and that will be the one which defined first .Hence the idea is to create multiple instanceconfig to access multiple catalog .