Monday, December 20, 2010

Collections in UCM 11g

I have noticed that Collections/Folders in UCM 11g release had some changes. One of them is using randomly auto-generated IDs for folders, even for Contribution Folders. I know some guys did integrations using collections database table, which will cause some issues for them. For example if they are depending on using IDs on your development environment then you moved to production, for sure IDs will be totally different.

So how to retrieve Folders under Contribution Folders, without depending on IDs, the answer is using COLLECTION_DISPLAY service with the following parameters:

<$dCollectionPath="/Contribution Folders/"$>

Notice hasCollectionPath took value equal 1 which means true in IdocScript.

Adding profiles to COLLECTION_DISPLAY template

I have a requirement to allow users to check-in files inside folders according to a chosen profile, this will not be done from WebDAV it will be from the UCM Web Interface.

So in this case we need to customize with COLLECTION_DISPLAY template or resources used inside it.

After investigations I found that I need to customize the two resources collection_explore_menus, and new_content_form

For example I created a new profile called Processes, and I want to add it as a link under New Content link. In the first resource collection_explore_menus we will add the following at the end of the resource

FOLDER_EXPL_NEW_CONTENT_Processes,  FOLDER_EXPL_NEW_ITEM,     70,        wwArchiveProcesses,    javascript:document.newcontentformProcesses.submit(),


id            = FOLDER_EXPL_NEW_CONTENT_Processes
labelKey = wwArchiveProcesses
href        = javascript:document.newcontentformProcesses.submit()

Then as you noticed we are firing Submit action for a HTML form called newcontentformProcesses which has to be created by us and here comes the role of the next resource new_content_form, so will add the following to the resource and after the first HRML form there

<form action="<$HttpCgiPath$>" method="GET" name="newcontentformProcesses">

<input name="IdcService" type="hidden" value="CHECKIN_NEW_FORM" />
<input name="<$collectionIDMeta$>" type="hidden" value="<$dCollectionID$>" />
<input name="xIdcProfile" type="hidden" value="wwArchiveProcesses" />


Notice the hidden field xIdcProfile which is the profile trigger metadata field.

I hope this post will be helpful

Wednesday, December 15, 2010

Top 50 Media Gawker passwords

While I was reading articles in ShalshDot website, I read one taking about the top 50 passwords

For me the top passwords I am always facing are
  • welcome1
  • oracle
  • oracle123
  • Oracle10g
  • Oracle11g
  • companyname@password
  • companyname@password123
  • passw)rd
  • admin
  • admin123
  • weblogic1
  • weblogic123
  • weblogic123$
  • password2$
  • companyname123$
Unfortunately, I found those easy passwords in big organizations (some of them multinational ones) in Middle East. I think the best approach to create passwords it to use random password generator. However sometimes I am using one of those passwords for the sake of facilitating implementation and deployment, but system supposed to change them however he isn't doing that. May be in the future I will avoid that.

Sunday, December 12, 2010

Guys did hear about "ECM Maturity Model"

As the post title asks "Did you hear about ECM Maturity Model?"

If you are not, go and visit it, and download this document. It is great job, but what I liked is page number 12 and the matrix there. I didn't use it in a project but I imagine it will be helpful for me as a consultant working in a project where using it I can assess how much maturity we reached in that project.

However, the website and the document lacks a lot of information, may misguide some people. Also I saw the same things discussed there before, like for example in Bex's last book "", but really I like their remarkable maturity matrix.

Anyway it's nice work and I advice by taking a look on it.

Chrome OS

I have downloaded Chrome OS, and I tried it. I think it is good OS, light, and suitable for Notebook users. The OS is Linux based on SUSE Linux (as I think), also uses OpenOffice but SUSE release (not Oracle). It is mainly focusing on using Online services offered by Google like google docs, so the main interface used is Chrome browser, not Explorer.exe in Windows.

Really I like the idea, but still for windows users it's hard to make them change, where most windows users are using local storage and services, and they didn't have the Cloud concept. However Google is the only one who has the power to convince users to change.

For me as Fedora user, I think there is no big difference but services and features offered by fedora for me as developer are higher.

Let us see how Google community will improve Chrome OS.

Tuesday, December 7, 2010

Oracle BPM Suite 11g: New Book

Packt has asked me to review this book, I have just downloaded it and I will start reading it tomorrow. However one of friends told me that the book is good and it covers SOA too.

It worth to mention that BPM is an important part of Middleware which facilitates building of business processes by business users, and those processes are SOA based. I didn't use it yet, after reviewing the book I will come with an example of how to use BPM and UCM together.

I wish Packt will change their books' titles to "Hands On" :D which became very helpful to start with Oracle Middleware solutions in short time.

Monday, November 22, 2010

Change panelGroupLayout to use <table> instead of <div>

As most of us know that ADF by default is converting most of its containers to <div>, but sometimes there is a need to work with <table>, let us see how to do that:

It is very simple, we will use three styles  table, table-row, and table-cell. Let us suppose that we have the following ADF faces code

        <!-- some controls goes here -->
        <!-- some controls goes here -->

We need to convert it to a table with two rows and on column, so it will be

<af:panelGroupLayout inlineStyle="display:table;">
    <af:panelGroupLayout inlineStyle="display:table-row;">
        <af:panelGroupLayout inlineStyle="display:table-cell;">
            <!-- some controls goes g -->
    <af:panelGroupLayout inlineStyle="display:table-row;">
        <af:panelGroupLayout inlineStyle="display:table-cell;">
            <!-- some controls goes g -->

Note if you used layout property for panelGroupLayout with value equal to Horizontal, it will be converted to able but you will not have full control over it where cells will be generated automatically and you cannot add styles to them.

Wednesday, November 10, 2010

ADF: Images in CSS not displayed with IE

I am currently working on a portal project in Saudi Arabia using WebCenter. I have created my own skin and styles, and in the last days I was developing on Fedora linux so I tested my work on Firefox and Chrome. After deployment, I got surprised that images not displayed.

The issues was that I was using styles like the following:

background-image: url("../images/logo.png")repeat-x; 

but while debugging on Internet Explorer, I found that the style is not existing within the css class (not being served to Internet Explorer). To fix it, you have switch to the following

background-image: url(../images3/Center.png);
background-repeat: repeat-x;

it took from me time, to find the problem, world of css :D

Tuesday, November 9, 2010

Somali pirates & Nintendo

There is a study made about Management based on Somali Pirates and Taliban (insurgents in Afghanistan), you can read more about it in the article from economist.

What is interesting for me is the comparison between Somali pirates strategy in attacking ships and strategy Nintendo in penetrating gaming market and competing companies like Microsoft.

Also Taliban strategies is very interesting for me in project management, and how companies can have small teams taking quick decisions without returning to management and doing micro-management. They don't wait for long-term approvals.

I liked it and I wanted to share it with you.

Oracle UCM 11g clustered (continued)

I forgot to mention two things about clustering in my previous post.

- After creating a domain on the first physical machine, and you want to transfer the configuration to the other physical machine, do the following:

On the first machine

$ cd /u01/oracle/middleware/user_projects/domains/
$ ../../wlserver_10.3/common/bin/ -managed=true -domain=my_domain -template=my_domain.jar template_name="my_domain"
$ scp my_domain.jar

on the second machine

$ cd /u01/oracle/middleware/user_projects/domains/
$ ../../wlserver_10.3/common/bin/ -domain=my_domain -template=my_domain.jar

Note, when configuring weblogic machine on linux,  it is better to use Unix Machine (you can accept the defualts)

- Now you have UCM clustered on two machines, so what about load balancing? you have several options like using another weblogic instance to do load balancing, but in my case I used apache HTTP server for doing that (this was because I wanted to minimize licenses required)

To do load balancing
- Download weblogic plugin for Apache from
- Ensure that Apache is up and working on the server
- Extract the plugin in a directory on  your server
- add the following to httpd.conf (I assume here we are installing on linux)

#Weblogic Proxy Plugin
LoadModule weblogic_module /root/wlsplugin/lib/

#Weblogic Proxy Plugin

SetHandler weblogic-handler

I hope you will have a good picture about how to accomplish that

Friday, November 5, 2010

Oracle UCM 11g clustered

One of the biggest advantages we got with UCM 11g is that it is being hosted inside Weblogic Application Server. That allows us to create a clustered UCM without big efforts and in my opinion it doesn't need any expert to do that.

I think most of you guys remember clustering with UCM 10g, it was really silly :)

In next lines I will explain to you how to do that, but I will assume that you installed Weblogic Server 10.3.3,  Oracle ECM 11g, and middleware home is "/u01/oracle/middleware":

- $ cd /u01/oracle/middleware/Oracle_ECM1/common/bin
- $ ./
- Create new weblogic domain (or use an existing one if you have)

- Configure domain to support UCM, IBR, and Site Studio

- Name the new domain in this case I named it for demonstration my_domain

- Add the Weblogic admin password

- Choose Production environment

- Configure database connection information, if you are using Oracle database 11gR2 you will gain major feature which using one host name (scan name) and DNS will automatically will take care of load balancing and failover for RAC nodes.

- Next choose the following to configure clustered nodes for UCM and IBR

- Accept the default for the admin server

- In the managed servers page, you will have by default UCM_server1 and IBR_server1, we will add two other managed servers UCM_server2 and IBR_server2

- Next will create two clusters one for UCM and one for IBR

- Under UCM cluster we will add UCM managed servers and under IBR cluster we ill add IBR managed servers

- Next will add two Machines representing two physical machines, and they responsible for communicating with Node Managers on the two nodes we have here

- Add the managed servers and admin server to the Weblogic machines

- Next we can see the UCM cluster is automatically configured to support the required libraries and applications

- JDBC and the other required services is configured automatically

- At the end accept the configurations and you will have a ready UCM cluster on two nodes

The remaining part here is to have a shared storage like SAN for storing vault and weblayout repoistories, in this case also you need to have OS file system cluster. On linux you can use Oracle File System Cluster for doing that.

Oracle Referring my blog

Guys I am really sorry for not posting from weeks in my blog.

I was searching for things in Oracle Website and I got my surprised that Oracle is referring to my blog WoW, I didn't how it was helpful for other, and this really is very big responsibility on  me.

I read a book called "A leader who has no title", it explains an important thinking methodology which is "to lead, you don't need a title or a position or a company, start by yourself and work harder. Then everything you need will be in your hands, and everyone will appreciate your efforts and work."

If you are targeting money or a big position in a company, you will lose your focus and you will not be special. Myself, I am always asking myself If I am in the same long queue like others or I left the queue and trying to find some shortcut. By the way If I didn't find the shortcut, I will not be sad, earnings are always higher.

One last thing, I am not Oracle employee, or working in a multinational first class company. Currently I am freelancer trying to depend on myself.

Start by yourself,, don't look at others.

First use of Ajax terminology

From days I was watching a TV program about history of the flush toilets and its contribution in civilization. I got surprised when they said that one of the first flush toilets invented in 1596 by Sir John Harington called Ajax :) 

So Ajax has a big role in civilization advancement, but I don't know why he called the flush toilet Ajax.

Monday, September 27, 2010

Time to change

I didn't blog from a long ti me and I am not happy about that. I have acquired a lot of experience last months, I have worked heavily with Weblogic, UCM 11g, Webcenter, Access Manager, and even Oracle DB RAC. Most of the time I didn't have time but this not an excuse, because anyone can always get time.

Anyway I am here to say that I will re-host and re-deign my blog (may be with typepad), I will enhance it to as much useful as I want.

Time to change has come.

Friday, August 20, 2010

Oracle Universal Content Management Handbook

A new book about Oracle UCM has been published by Packt, I have been asked by Packt to review this book. I found this book is very interesting especially if you are new to UCM or you didn't get the chance to review all UCM capabilities. I used to give UCM trainings with Oracle, I can admit that reading this book will give the same knowledge you may get from trainings.

But I was wishing that this book will cover Oracle UCM 11g, where it covers UCM 10g, however almost all information in that book can be applied to 11g too.


Monday, May 24, 2010

Stars in Kuwait

I am currently working in a project in Kuwait, they are using Star Names for naming servers' hostnames. For me it is the first time I work with stars :D now I am interested in meaning of star names because of this project thanks to Jasem who is owner of this idea.

I was searching for star names and I came across an interesting website WikiSky. I like it so much and I think it deserves a look, you can get which stars is above you right now, can you imagine?

Now I will list the stars (servers) which I am working with

Chara          Joy
Chort          Small rib
Electra        Amber/Shining
Homam      The high-minded man
Nunki         "of Enki" (Sumerian god of waters & of most ancient city of Eridu)
Porrima      Roman goddess of childbirth
Yildun        Star
Lesath        Sting
Matar        Rain

By the way, after I saw the meaning of some stars, I am surprise, because some names are Arabic names like Matar. Anyway I liked the idea of using the star names for servers' hostnames.

Wednesday, March 24, 2010

Missing Configuration for Integration between OIM and ORM with JBOSS

I was facing an error after doing the integration between Oracle Identity Manager and Oracle Role Manager where OIM installed on Linux server and ORM in Windows server, here is a snapshot from the log

03:39:40,216 WARN  [IntegrationUtilities] No plugin configuration files found in /oracle/idm-home/jboss-4.2.3/bin/c:\ORMINT_HOME\/config
03:39:40,217 ERROR [TASK] Class/Method: SchedulerBaseTask/run encounter some problems: {1}
    at oracle.iam.rm.imframework.scheduledTasks.ScheduledIntegrationTask.init(
    at Source)
    at com.thortech.xl.scheduler.core.quartz.QuartzWrapper$ Source)
    at Thor.API.Security.LoginHandler.jbossLoginSession.runAs(Unknown Source)
    at com.thortech.xl.scheduler.core.quartz.QuartzWrapper.execute(Unknown Source)
    at org.quartz.simpl.SimpleThreadPool$

I faced this error before when I installed OIM on windows, but for a quick way to solve the problem I moved ORMINT_HOME (ORM Integration Library location on OIM server) to the default location C:\ORMINT_HOME but after we changed OIM server to be Linux server, I had to face that issue again.

I tried to find if someone faced that issue before or not I didn't find help, even I opened Service Request on Metalink but without any help. That's because ORM is a new product and there are only few implementations for it (by the way I am not a fan for that system).

The solution for this error is very simple but not mentioned in documentation, there is a system property that needs to be added to JBoss and it will be used by OIM for integration purposes with ORM. That property is ORMINT_ROOT_DIR and it will be added with a value to properties-service.xml file (you can find it under /server/default/deploy )

<attribute name="Properties">

Tuesday, March 16, 2010

AD integration in OpenText Hummingbird vs Oracle UCM

I am working in Oracle IDM project currently, and I have to provision users to Hummingbird and Hummingbird in this case integrated with Active Directory. So I were in my mind making a comparison between Oracle UCM and OpentText Hummingbird and I want to share it here.

In Oracle UCM, it is a full integration why because user roles and accounts will be represented in AD as security groups, so I want to give an AD user the contributor role, just assign to him contributor security group form inside AD. Also you can make a custom user attributes from inside UCM to AD user attributes like user manager or any other attribute.

In OpenText Hummingbird especially with Document Management module and Records Management modules, the admin have to import users from AD manually and assign security groups and permissions from inside the system, which means it is not full integration, Hummingbird is just using AD as a repository of users info not a repository for security.

Another thing Oracle UCM is like an open source application it is open, you can change any functionality you want, its database schema is not sealed and the schema is very easy to be used and modified. But Hummingbird's database is not allowing that, if you tried to add new records or delete records, the system will throw exceptions and errors.

In my opinion, Oracle UCM is one of the best applications you can integrate with. So If I am a decision maker I will always choose UCM because of integrations easiness.

Monday, March 15, 2010

JMS error sending message to queue/orm/IncomingEventQueue

I was getting the following error when I try to create an Oracle Identity Manager user after integrating with Oracle Role Manager (both OIM and ORM are using JBoss as the application server). I took from me a lot of time to discover the cause of that error
ERROR [oracle.iam.rm.imframework.oimjavatasks.ReconcileEntityAdapter] General exception: JMS error sending message to queue/orm/IncomingEventQueue
java.lang.Exception: JMS error sending message to queue/orm/IncomingEventQueue
    at oracle.iam.rm.imframework.util.JMSUtil.sendMessage(
Caused by: Cannot authenticate user; - nested throwable: ( No route to host: connect)
Caused by: No route to host: connect
    at Method)


The cause of the error is that in the test server where I installed Oracle Role Manager I have more than one IP address for the server and I was binding JBoss to all IP(s) by running it using the following command
run.bat -b
The solution is to bind JBoss to only one IP as the following
run.bat -b

Sunday, February 7, 2010

Sun Identity Manager and Oracle Identity Manager

As all of us know, Oracle bought Sun and the deal has been closed completely. I am currently working with Oracle Identity Management (as well as Oracle UCM) and I am interested to know Oracle's plan for IDM after merging. I found a blog post that talks in brief about that I recommend you to read it, click here.

The conclusion Oracle will keep its IDM solutions as a strategic solutions and it will re-brand Sun IDM solutions.

Wednesday, January 20, 2010

Java Decompiling

When I face frustrating bugs that comes because of the misleading exceptions, I go to the magic method which is decompiling the class that cause the error, and take a quick look there. But note I don't prefer going deeper to understand the class and the library I am decompiling.

I am using JD-GUI and I'd like to thank the people who created it and made it available for free.

Rebranding OIM Administration Console [JBoss]

The following brief steps explain rebranding of Oracle Identity Manager on JBoss application server:

- Get copy from XellerateFull.ear from [jboss_install_dir]/server/default/deploy

- Extract the file normally like a zip file (change extension from .ear to .zip)

- Inside the extracted directory, you will find a war file called xlWebApp.war

- Extract that file like a zip file (change extension from .war to .zip)

-  If you want to change the application colors and styles, go to XellerateFull/xlWebApp/css/Xellerate.css

- If you want to change labels and messages, go to XellerateFull/xlWebApp/WEB-INF/classes/ (change the other localized files that you are using)

- If you want to change logo and application images, go to XellerateFull/xlWebApp/WEB-INF/classes/

- After finishing recompress everything (compress it a .zip then change the extension), but after finishing open the archive you made and see if the structure of the archives (XellerateFull.ear and xlWebApp.war) is correct like the old one

- At last replace XellerateFull.ear under JBoss with the new one you made.

Anyway, this application is built using Struts, and it can be customized as you want, nut I don't recommend that from a previous experience with other applications.

Note in documentation there is another for doing that, but it didn't work with me.

Saturday, January 16, 2010

Oracle Identity Manager installation tips

I will not be able to post right now the complete installation steps for Oracle Identity Manager with JBoss as the application server, because it will take a lot of time, but I will add some tips here to be be taken in consideration during OIM installation.

- If you are using Sun JVM and JBoss, you need to make one more modification in run.bat (JBoss starting Batch) ro JAVA_OPTS parameter which is -XX:MaxPermSize=256m

set JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx1024m -XX:MaxPermSize=256m

- When you start JBoss and you want it to listen (or bind) to any available IP, run JBoss starting batch like this

run.bat -b

- After installing OIM Design Console, take copy from log4j.jar from inside JBoss and rename it to log4j-1.2.8.jar then replace log4j-1.2.8.jar from inside OIM Design Console installation directory.

- Take care when installing JBoss in your development or testing machine, some applications my be using JBoss ports like MS Exchange uses 1099 and 1098, Oracle UCM uses 4444 and 4445, and of course Apache Tomcat. So you need to change JBoss ports, to do that take a look at the following page which explains to you which files you will change

If you want to know which applications is using your machine's ports, download ActivePorts program from the following link

If you changed 1099 port after you have installed OIM, you should change it too in xlconfig.xml for OIM Server and OIM Design Console. Also If you changed 8080 port after you have installed OIM, you should change it too in xlconfig.xml for Design Console.

- To deploy SMPL WebService, take a look at the following link

Also note you need in this case to download apache commons-discovery library and add it to [jboss_install_dir]/server/default/lib