How to Update Metadata of documents through DB at UCM(webcenter Content) ?

let’s imagine the following scenario

you have different employee profile for different Document types of each employee such sanctions,vacations, services,certificate ,.. etc

and every UCM profile has 2 metadata “civil number of employee” , and ” employee name” and title which have specific signature as follow

“type of Documnet of ********** ” where the position of * is the civil number example “Vacations of 1235495689” vacations “document title” and the number represent the civil number

and the entry user forget to enter the civil number of employee and those documents are more than 700 document

sure you will not request from user to back to all those document and updates their metadata it’s time consuming and headache

we need to make workaround to get from title the civil number and update the missed civil number

to overcome via DB this problem we should have background about the UCM DB diagram specially the tables of Documents

the metadata of document spread through more than table as following

DOCUMENTS    contain basic data of document “metadata of slandered chick-in”

DOCUMENTHISTORY  contain history of document and life cycle from new to released

DOCMETA    contain metadata of document the customized one

REVISIONS  contain different versions of document

all those tables contain the DID column primary key at DOCUMENTS   table and represented as foreign key at remaining tables

we need to modify metadata so it will be available on  DOCMETA   table but at our case we will get the new value from another metadata -basic one- the DDOCTitle  metadata which represent the  document title

so we need to set the civil number to equal sub string from the document title “get the last 10 characters from title column”

where  r.did=dm.did

the previous SQL statement get all document with civil number null “have not civil number” and get also the civil number as substring from title field which belong to another table revision

we can get them by different method which will be ready for update statement as following

select  dm.XCIVILRECORDNUMBER ,(select  substr(R.DDOCTITLE,-10,10) from REVISIONS r  where r.did=dm.did) as newcivil

now let’s run our update statement as following
set dm.XCIVILRECORDNUMBER =(select  substr(R.DDOCTITLE,-10,10) from REVISIONS r  where r.did=dm.did and r.ddoctype !=’Document’)

the result will appear as following screenshot

18-08-2013 06-33-55 م



What is the necessity of oracle record management(URM)?

URM is another amazing product from Oracle Shipped with oracle UCM product that are formally called Oracle webcenter Content now , at this post i am trying to focus on business needs and what is the necessity for URM

Oracle records management

The best way to understand the business need to the record management in general is to compare it to back-up software any back-up software that an IT department uses. The Back-up software is used to ensure the company can recover its data after a disaster “restore the missing information after disaster”

In contrast  records management software is used to ensure that content which must be kept for specific periods of time is indeed kept for that length of time.  It ensures that correct content is used throughout the organization and perhaps most importantly. It is responsible for ensuring that content is moved, approved for disposition by the correct people and eventually disposed of at the appropriate time.  This ultimately helps the company recover in the event of a legal disaster.

On the surface, keeping everything forever seems like the easy and right scenario for those needs, but there are several significant issues with that approach:

Lowering the cost of storage 

Saving everything forever can create significant storage cost.  It takes money to pay for both physical and electronic storage.  It takes money to pay for handling and management of the content items too.  Each time a box of old invoices is moved, more money and time are invested to maintain its existence.  Every square foot of storage space is purchased or leased, taxed and sometimes heated and cooled.  Likewise, every byte of data is stored, backed up and maintained on a hard drive somewhere.  Overall, there’s a larger than expected “hidden” cost associated with storing every piece of content the company owns regardless of whether the item is printed and stored in a file cabinet or whether it is stored electronically on a network.  As the number of content items increase, the cost of carrying those items increases.  keeping everything forever guarantees that a company’s cost of content will increase perpetually so there is a need for reducing content “disposition”.

Lowering the cost of discovery

We live in a litigious society.  Most companies of any size will at some point find themselves the target of legal action.  As part of the legal action the company will be required to produce documents for the discovery process. Imagine a single discovery request that will reviews 75 million pages of text during the previous three-year period, during the process of e-discovery, company must follow several steps, including

v  Collect

  • Collect content for discovery
  • Log and copy content

v  Prepare

  • Restore backups and data extraction, de duplicate
  • Organize documents by concept, keyword, batch, or other Methodology

v  Review

  • Have lawyers read through content to determine what is relevant to the case

v  Produce

  • Output data to a usable format such as PDF
  • Gather content for transmission to court and opposition

Those steps cost the company efforts, money, and time. so there is a need for “e-discovery mechanism”

Keeping content “keep everything forever”

In fact many companies simply “keep everything forever.” companies don’t have a tool to insure compliance across the organization, keeping everything forever quickly becomes the easiest and most often implemented The challenges of categorizing the content, finding it when needed and disposing of it at the right time simply require too much effort so there is a need for “retention policy”.

Delivering consistent “get the right document”

There may be different versions of the same document.  Imagine a manufacturing company and there may be assembly or installation instructions for a product. Perhaps an incorrect installation will fail to meet a specific government regulation.  In these cases it is critical that only the most recent installation instructions are used. 

Single and Federated Search

“Federation” is a term used to describe the process of providing a single point of contact/entry for searching multiple disparate data sources across applications and repositories throughout the enterprise

Expanding number of software systems holding important content so there is need for “single and federated search”.


oracle UCM 11G – show up blank page?


just clear your browser cache

if not work

work with https

and clear cache




1-  restart of the entire server (not just UCM 11G) seemed to solve the problem.

2- start DB

3- start nodemanager

4- start weblogic

then login with https  and rebuild the index

How to implement SSL in UCM?

Steps needed to setup the Content Server to use SSL are as follows….

1. Open the file <UCM>/config/config.cfg

2. Change the value for HttpServerAddress=http:// … to https://.

3. Add the config entry UseSSL=true

4. Restart the Content Server

5. Start the Admin Applet Weblayout Editor

6. Update the Portal Page

7. If you are using the Folders component make the above config changes to these two files. < UCM>/data/components/folders/config.cfg < UCM>/data/components/folders/install.cfg 8. Restart the content server after all changes have been made.

How to configuring WebLogic NodeManager ?

the original Post here

Starting Point

The assumption is that the WebLogic Server installation has been done and that the Node Manager Windows Service was installed as a part of the installation.

Any paths reflected below should be updated to reflect your directory structures. In fact, it probably would not be a bad idea to find/replace some of the following with the relevant strings:

  • WebLogic Server installation path: D:\Oracle\wls11g
  • Hostname: jbayer-us
  • Domain path: D:\Oracle\wls11g\user_projects\domains\my_domain

Uninstall / Reinstall NodeManager Service

This needs to be done if you installed Node Manager with the standard installer because by default Node Manager binds to localhost. So as more OS instances are added, it will be required to have Node Manager instances on the network communicate to each other. This can only happen if Node Manager binds to an network interface that is available remotely.

  • open cmd prompt
  • run D:\Oracle\wls11g\wlserver_10.3\server\bin\setWLSEnv.cmd
  • run D:\Oracle\wls11g\wlserver_10.3\server\bin\uninstallNodeMgrSvc.cmd
  • Make backup copy of installNodeMgrSvc.cmd
  • edit installNodeMgrSvc.cmd to bind to hostname for remote starts
  • set NODEMGR_HOST=jbayer-us
  • run D:\Oracle\wls11g\wlserver_10.3\server\bin\installNodeMgrSvc.cmd
  • start the service – mine is called “Oracle WebLogic NodeManager…” but on older versions it’s likely will start with “BEA …” startnodemanager.cmd
  • starting the NodeManager process should create the file we will edit next

CrashRecovery and StartupScriptEnabled (updated 01/10/2010)

  • We want to Enable NodeManager to restore servers to their last known state after a reboot.
  • Open from the directory D:\Oracle\wls11g\wlserver_10.3\common\nodemanager\
  • Change the CrashRecoveryEnabled property from false to true:
  • CrashRecoveryEnabled=true
  • Also, because the domain’s \bin\startWebLogic script already has classpath configured, which is especially helpful for use with SmartUpdate that manages WebLogic patches as those classpath’s are not trivial to understand, I strongly recommend setting StartupScriptEnabled=true StartScriptEnabled=true in (Thanks to Ray T for the typo fix 6/29/10)
  • stop/start node manager after making changes to

Set up the Machines

  • Go to the domain’s AdminServer console
  • http://localhost:7001/console
  • If you need to start it, run <your_domain_dir>\bin\startWebLogic.cmd
  • With the console navigate to <domain_name> -> Environment -> Machines
  • Create a new machine – I named mine after the hostname of the server – jbayer-us
  • If you have more than one OS instance, create one machine for each.


  • In console go to <domain_name> -> Environment -> Servers
  • Create a new server, example: managedServer1
  • Put in the listen address to the hostname you want to bind to, in my case jbayer-us
  • Change the port to 8001or another available port so as not to conflict with the 7001 port of the AdminServer
  • Assign managedServer1 it to the jbayer-us machine you just created – <domain_name> -> Enviornment -> Servers -> managedServer1
  • There should be a dropdown you can use to select the machine
  • Click the save button on this settings page (don’t forget this step)
  • Now activate changes if required

We need to assign the machine for the AdminServer, this cannot be done while the AdminServer is running.

  • Stop AdminServer
  • Open the domain config, example – D:\Oracle\wls11g\user_projects\domains\my_domain\config\config.xml
  • Find the element used to assign the machine for managedServer1
  • <machine>jbayer-us</machine>
  • Copy that and paste that element right after the AdminServer <name/> element
  • If it is not already set, also specify the AdminServer listen address to be the hostname to bind to, by default it is blank which means bind to all network interfaces.
  • After these changes my config.xml snippet for the AdminServer looks like this:
    • Start the AdminServer again with the domain directory’s bin\startWebLogic.cmd
    • Check the console page <domain_name> -> Environment -> Servers to see that the servers are defined correctly as expected

Enroll the domain with Node Manager (updated 01/10/2010)

    • Navigate with a command prompt go to the domain directory
    • run bin\setDomainEnv.cmd
    • run java weblogic.WLST
    • connect to the AdminServer with your credentials:
    • connect(‘weblogic’,’welcome1′,’t3://jbayer-us:7001′)
    • Make sure you use forward slashes instead of backslashes in Windows:
    • nmEnroll(domainDir=’D:/Oracle/wls11g/user_projects/domains/my_domain’,nmHome=’D:/Oracle/wls11g/wlserver_10.3/common/nodemanager’)
    • Now go back to the web console – http://localhost:7001, for each server in the environment, go to the server start tab and put in the appropriate values.
    • serverStartTab If you are using StartScriptEnabled=true in, then the classpath and jvm arguments from the script will be used first and the values you specify on the Server Startup tab will get added to the end, so you only need to enter values that are unique to each server in the classpath and arguments section.
    • If you’re using Sun JDK instead of JRockit, then use –Xrs instead of –Xnohup refer to the official docs for more on this, but it has to do with handling OS signals properly.
    • 7-2-10 update: Reader Ray T writes in with another tip:“After some testing: starting, stopping servers, killing processes, rebooting etc after the configuration, I also found that I could not get the managed servers to shutdown cleanly – or at least the console would not recognize that they had. This had the added side effect of then not letting me start/restart a managed server via the console.I found that also adding StopScriptEnabled=true solved that final problem.”

Click the image to enlarge – actual text values below:

Java Home


Java Vendor


BEA Home


Root Directory


Classpath is empty as the script values are sufficient



Security Policy File


User Name




Confirm Password


    • Save
    • Now do the same thing for each managed server.
    • Activate the changes if required

Node Manager Domain Username and Password

    • Set the Node Manager username/password for the domain in the console
    • Click <domain_name> in the console navigator
    • Select Security tab
    • Expand to the “Advanced” options about half-way down the page
    • Choose a Node Manager username/password and put it in the username/password/confirm boxes your credentials, these could be unique from your user used to start the AdminServer, but I chose to keep mine the same weblogic/welcome1.  If you change this user name and password, then you’ll need to specify both when using the command nmConnect().  Thanks Ray T for the catch – 6/29/10.

Decrease Log Verbosity For Standard OutnmCriticalLogSetting

    • In console, go to each server’s Logging -> General page
    • Expand to the Advanced section half-way down the page
    • Change the standard out notice level to “Critical”
    • This log file that captures Standard Out does not roll over while a server is running, so it’s really important to make sure this file doesn’t get too large. Note that this is not the server log file, this is only standard out.

Have NodeManager Start and Stop the Servers

    • If it is running, shutdown the AdminServer
    • Start the AdminServer with NodeManager
    • Go to domain dir
    • run bin\setDomainEnv.cmd
    • run java weblogic.WLST
    • nmConnect(domainName=’my_domain’)  nmConnect(domainName=’my_domain’, username=’weblogic’, password=’welcome1’)  6/29/10 Updated thanks to Ray T who noticed that if you change the domain’s Node Manager user and password in the section above called “Node Manager Username and Password” that you’ll need to specify those values here otherwise the defaults of weblogic/welcome1 are used, which worked in my case, but not for others.
    • nmStart(‘AdminServer’)
    • Go to console -> Environment -> Servers control tab and start the managed server from the console. It will send a command to Node Manager which actually performs the operation on the console’s behalf.
    • Gotcha! – If you have never started the managed server ever before and you try to start it from Node Manager, you might get an error.  In the server log it mjght say something like: Booting as admin server, but servername, managedServer1, does not match the admin server name, AdminServer  To get around this, simply start the Managed Server for the first time using either the Admin Console Servers->Control tab or the startManagedWebLogic.cmd script.  Subsequent nmStart commands should not have this issue any longer.

Test Killing and Restarting

If the servers are started successfully by Node Manager, try and kill a process from task manager and see if it restarts.

Looking at the Node Manager directory in the domain for each Managed Server, you will be able to see the state – below is a screenshot of managedServer1’s files. The PID and .state files should tell you what you need to know to see if the server recovered.  If it did not, the .out file in the server log directory should hopefully give you a clue why.


If manual killing of the process restarts a Server then you are ready to test an operating system reboot. Reboot the machine without stopping the WebLogic Servers. Each server should be restored to the state that it was in when the OS was rebooted.