Thursday, December 24, 2009

And Oracle documentation confirms: Propagate in virtual folders meant to be broken!

If you ever tried to use Propagate feature in Virtual Folders - just to discover that it doesn't work - this post will delight you.

Imagine you need to "push down" the meta values from a parent folder down - onto the sub-folders and content items in them. You select Propagate from the menu on the top right on folder information page:

You go to a sub-folder and check if its meta was updated. And it wasn't! You check the content items… Same story.

What gives?

Don't be surprised when Propagate does nothing - if you use it "out of the box"!

That's right: Before you can use Propagate feature, you need to specify - what meta fields are ok to push down.

Here's how you do it: Expand Administration Tray. Expand Folder Configuration. Click Information Field Inherit Configuration. Here's how Information Field Inherit Configuration screen looks like:

Just place check marks against the fields you'd like to push down when you use the propagate feature - and click Update. You're done.

Now you can propagate the meta values! Give it a try!

Monday, August 17, 2009

Content Migration - How we got a project over a finish line 16.9 times faster

Last year we ended up migrating 38 web sites and major site sections (10,710 pages in total) in just over a week each. A Nation-Wide reputable vendor estimated each of them to take 3 to 6 months. How did we do it?

The short answer is this: we used Batch Loader. Easy enough. Am I simply comparing a manual import to the use of a tool? Nope. I'm not about to waste your time. After all, that vendor was also using batch loader.

Batch Loader Turbo Charged

When it comes to a mass-check in - batch loader is a nice and useful tool but when you're loading tenths of thousands of files from dozens of locations and when each file has unique derived values in its metadata - Batch Loader won't be of much help.

I guess that almost any enterprise-scale content migration will have you fall flat on your face if you're simply relying on Batch Loader to "magically" load your content into ECM.

So what is the quickest way to automate such a migration?

Its simple. The answer becomes obvious when you look at HOW the batch loader works. It processes a typical HDA file - one record at a time. It picks up a file from the location you specify in primaryFile field, sets metadata values to the ones you tell it to use and calls a Check In service. Again, it reads batch loader script one record at a time and checks in files - one by one.

What if we could create some cool batch loader script that will import all the files we want imported? All at once! Sure, that would be nice, but how do we go about creating one?

The Batch Builder utility that comes with Batch Loader is very limited. It builds a very simple files based on a content of a single directory lets you use file system data as meta. It won't let you pick up files from multiple locations or create complex meta values.

So, here's the biggie - to turbo-charge your content migration effort, you need may consider GENERATING your own batch loader scripts.

How to use Code Generation effectively

How do you go about generating it? For simple migration you can get away with using your editor's search and replace function on a comma-separated list of files

Let's say, your excel file has the following columns:

Content Id, Title, Author, Security Group, Account, Doc Type, Date, File Path

After you save it in a comma-separated (CSV) format, you'll end up with something like this:

A2561405, Migration Project Plan, Bill, Public, , abstract, 8/12/09 4:20 PM, C:/Migration/Project Plan v.3.4.doc

Now, you could use a RegEx like this to produce a batch loader script out of your CSV file:

Replace this:


( If you're new to regular expressions, this says:

- Begin at the start of a line
- Select every character until you see a comma - repeated 8 times
- You must be at the end of the line )

With this replacement string:

dDocName=$1\n dDocTitle=$2\n dDocAuthor=$3\n dSecurityGroup=$4\n dDocAccount=$5\n dDocType=$6\n dInDate=$7\n primaryFile=$8\n <<EOD>> \n

You may need to test the RegEx in your own editor as every one has a slightly different syntax.

After you run it - your comma-separated line will transform into an HDA entry that will look like this:

dDocTitle=Migration Project Plan
dInDate=8/12/09 4:20 PM
primaryFile=C:/Migration/Project Plan v.3.4.doc

I hope, you get the idea.

How to scale it up

You can easily adapt this technique to any complexity. Just use Perl, Ruby or another scripting language of your choice to generate metadata values and the file names and locations.

Be sure to use subroutines, structure your code well and store it in source-control system. Code generation script can get quite complex quite quickly.

Important last minute tips

Today, there will be three:

- You'll very likely need to debug your code generation script and run your batch load file more then once so be sure to:
  • Add a custom meta field or a special value like "batch_loader" for the dDocAuthor so you can find your files quickly and delete them when its time to start fresh
  • Test on a small sub-set (under 200 items) so you don't have to wait for 8 hours for these 500 Gb to import
- Be sure to CLEAR the "Clean up files after successful check in" box. If you leave it checked - your source files WILL be deleted and you won't find them in a Recycle Bin!

- Be sure to MARK "Enable error file" box. This will create a detailed log file and a smaller batch loader script file for the files that didn't load. Absolutely essential!

That's all for now.

Happy Migrating!

Thursday, July 16, 2009

How to build your own personal and portable testing and learning environment

This article applies to Oracle UCM 10gR3. For new UCM 11gR1 follow the link below:

I promised to walk you through the process of creating your own personal and portable testing and learning environment - the one you can load on your laptop so you won't be dependent on your sysadmin to give you permissions. You won't be afraid to break something and will feel free to experiment.

Having your own environment may also let you work from home - but don't mention my name when you talk to your boss :)

Let's get started.

In my courses I'm making an assumption that you're familiar with virtualization. In case you aren't - here is a 1 min introduction.

Virtual machine or VM is an instance of a real OS such as Windows or Linux (Guest OS) running on a special software you install on your machine. Now that hardly any computer has less then 1 Gb or RAM and most OS (except Vista, of course) take less then 512 Mb - you can run a second OS in your own virtual environment.

The benefits are multiple:

  • Guest OS has absolutely no affect and may have no access to your host OS so even if you're running a virus in your guest OS - you are safe
  • Moving VM on another machine is a simple file copy operation so if you have your VM on a portable drive - you can work on the same OS at home and at work.
  • You don't need to pollute your software configuration when you can install and test one-offs on your virtual environment that can be reset to its original configuration in a matter of seconds
"OK, Show me how to build a virtual environment"

Here's how:

If you running Windows, begin by downloading and installing MS Virtual PC 2007. This is free download. On Linux - check out VMware products such as VMware Player or Server (currently free) or Workstation.

Here's a link to get MS VPC 2007

Download and unzip a sample VM. The one I'm recommending comes with Windows Server and SQL Server 2005.

The link is here

In VPC 2007 go File - New VM Wizard -> Use Default Settings to Create a VM.

Once VM settings are open, under hard drive select the location of your newly download SQL Server 2005 machine VHD file.

Give it about a 512 Mb or RAM and hit Start.

Voila! You're now ready to begin Oracle Content Server installation.

Please follow the instructions in my YouTube Video to install your Content Server

Since you are going to be using MS SQL Server, check out my article for JDBC Driver instructions

In the next 15 min you should have your new portable installation of Oracle Content Server up and running. You can put your (updated) VHD file on a portable drive and take with you wherever you go!

Tuesday, March 17, 2009

Fastest way to understand security model I know about

At last! After years of struggling to explain Content Server security model to my clients - I finally got it!

A while back when I was first learning it myself - it took me about an hour to understand how Role-based component alone is used. But when I tried to add on accounts... Later in that day there were five of us desperately trying to cut through the mess of multiple dimensions and confusing terminology. It took us several hours of screaming around a white board just to begin seeing some light at the end of the tunnel...

It always bothered me greatly to look at my customers suffer through trying to get their head around it. Many just gave up and were forced to rely on consultants for explanation... Not any more!

So here it comes

I finally realized that most humans are not good at piling on multiple dimensions ... and I see no benefit of looking at all the components of security model at once! When clients were introduced only one component of the model at a time and asked to keep them separate in their heads (and their diagrams) - the confusion quickly subsided or didn't appear in the first place!

Check out my FREE video tutorial at

Saturday, March 7, 2009

Gain Complete Working Knowledge Of Content Server In 5 Days Or Less In Just Minutes A Day - 100% GUARANTEED

Content Server Running Start Course is now available!

I did my best to put everything you'll need to stand comfortably on your own two feet, so you won't have to spend a single penny on consulting or other Content Server education... and this is the easiest course to follow that I know about...

Seasoned Professionals - don't be so quick to dismiss it! Are you sure you're crystal clear on all the topics I cover like building a portable virtual testing environment and my own approach to security model?

Check it out at