Wednesday, December 28, 2011

Top 7 project-killing "Best Practices" - which ones are you falling for?

Whether you are a developer or consultant getting down and dirty or a business person or project manager in charge - this may very well be the most revealing technology article you've seen in years.

The project killers I'm about to reveal here are nothing like those plain old "watch for this" common pitfalls everyone is aware of, like testing the expertise before you hire, watching the project scope and making sure you get lots of comments in your source. Nope. The ones I'm talking about here will snick up on when you least expect it... Geez, many folks are even proud of adopting those and get complimented for using them.... all the way to post-mortem project reviews.

Sure, they may not kill the project in one fell swoop, but given a little time, they are certain to do its job.

What I'm about to describe now is these commonly-reinvented bad solutions to typical problems you'll encounter in almost any Oracle UCM implementation. And once you see their ugly faces for what they really are - you won't be making the mistakes and your projects will run much smoother. I’m also giving you my best tips for getting yourself out of these situations on a short notice.

So now let’s get down there and take a look. I've collected the most common and the most deadly ones I've seen in my 7+ years in the frontline trenches of Oracle Stellent UCM.

The Kiss of Death

The worst thing of all is when your new Oracle ECM is not accepted by your organization. If that happens - the project is not going to make it. When people don't like your system, they won't be using it... When they are not using the system, no one can not benefit from it. End of story. The next three patterns give you some scoop:

Idiots In Charge

Almost every talented developer has a point in their career when they laugh at business people. These folks use CD trays to hold their coffees! "Incorrect version of user" huh? It’s true, they may act funny when it comes to technology, but chances are - those “dummies” are actually paying your bills!

Oracle ECM - just like SharePoint, Vignette, BroadVision - you name it - is just a framework. All it does is allow you, the designer, to quickly and easily automate business processes. Eliminate paper. Help them find the information faster. Destroy when it has to be destroyed...

You need to adjust your content collection, management and presentation systems to processes and demands of your organization. That's the real goal, not the software installation!

So guess what comes first?

If you misunderstand your organization's culture, processes and business requirements - no system out there will save your project.

Take the time to understand the real needs of business people. Understand the goals of your enterprise. Then go ahead and automate them. You won't be stuck trying to automate a bad process!

And be sure to read about UCM Gold Plating later in this article.

Metadata Marshlands

When it’s that easy to add new metadata fields, you gotta be on the lookout!

If you store Project Plans - you might like to add a project managers name, completion date and expense account number. But will those fields make sense in a vendor invoice? If users don't understand a purpose of a metadata field - they'll skip it, put wrong stuff in there or just type up some garbage - so the system lets them submit the form.

Check out these tips for successful metadata design - they are expensive to ignore...

Don't ask for all of your fields every time.

If they check in an employee record and you're asking them for PM name - guess what kind of name you'll get. It must make sense. So be sure to hide irrelevant fields with Content Server profiles or custom check in forms.

It’s also must be as quick and painless as possible. Business people are busy or, at least, they like to think that they are.

Ok... You’ve got the first three. Try guessing the other four will you?

Or you could simply stay tuned...

Happy Holidays!
D

Tuesday, July 19, 2011

Save time and wow your friends with this cool Dynamic Converter hack

If you ever wanted to add logic to the output of dynamic converter - this article will give you the best "gotcha" in a longest time. In the next few minutes I'll show you how to conditionally display parts of a dynamically converted word document - based on ... the query string parameters!

Yeah, you won't find this in the manual, but  if you think about it - its a really simple and natural thing to do....

Let’s imagine that you have a bunch of word documents that contain a summary and the full story (or English and French sections) and you only want to display the first sections in your  summary page, and full docs on the story page. And you don’t want to have to store your summary in a separate word document. 

Using just one document will avoid duplicated content and make it much easier and intuitive to update - all content in one place.

To show you exactly how to do it I've setup  a simple template with a region and inserted a dynamic converted word document in it. 

What I want to see happening is this:
  • When I don’t send anything on the query string or send "show=0" - I only want to see the summary or my "regular content" section (See screenshot below)




  • When I send "show=1" on the query string - I want to see my entire document (See screenshot below)



So how do I make my converted word document "that dynamic"?

Well, I can embed some java script in the document as hidden text but this is really messy and fragile. Contributors will have to look at this every day and will soon begin to hate you to a degree that actually affects your digestion system. Don’t do that!

So here's a better option. Let me give you a little hint - dynamic converter converts native application content to.... HCSTs!

Yes, you can simply use iDoc in your dynamic converter template!

Here's how:
  • In your word document create a new paragraph style. Formatting and the style name are not important for what we're trying to accomplish here
  • Apply your new style to the section that you want to dynamically show and hide
  • Save your document and check it into the Content Server.
  • Fire up your Dynamic converter Template Editor and click Element Setup on the right
  • Create a Dynamic converter element (on the Elements tab) and a new style (On the Styles tab)
  • Now match them up (Below is a screenshot showing you how you can map a Word Style called "Image Aligned Left" to a new element called imgAlignedLeft)




  • Go back to the Elements tab and select the element you've just created and mapped
  • Click Properties and go to HTML Tag tab
  • See screenshot below for a sample of how you can add iDoc script to hide your section based on the value from the query string!

Oh, but  what if you want to use other styles in your story and cannot apply your new style to an entire section?

Well, how about a pair of styles? Call the first one "Begin Body" and only specify a custom tag before the content. The other one will be the "End Body" and use the <$endif$> as its custom tag after the content




There  you have it

Really simple if you think about it! Using the if statement as a custom before tag for the element! That's it - entire solution fits in just 8 words :)

Hope you enjoyed this neat and powerful hack. And remember, if you ever need a hand with your UCM project, task at hand, training, support or simply an independent third party opinion - we're one email away. Just shoot us a quick note at contact at stellentExperts dot com. You'll be glad you did, just like a lot of  folks in these companies...

Oh, and we don’t have any sales people working here so after you do contact us - no one will be harassing you in the weeks to come - guaranteed!

Cheers
D




Tuesday, July 12, 2011

How to get 30% off The Oracle UCM Handbook....

If you still haven't claimed your copy of The Oracle UCM Handbook - now it may be the best time to do so. For a short time only Packs offers 30% off eBook and 20% off - any print book in their Oracle Series

Check it out at http://www.packtpub.com/article/50th-oracle-book-offer

Monday, July 4, 2011

Content Server design flaw discovered: "Sometimes it takes a Big Boss to approve a workflow"

Last week I've got an email form a senior developer, forwarded by our client in Europe. The guy that shortly after found a major design flaw in Content Server workflow engine! 

They wanted to have a user's manager approve their content, so they simply added a user information field called Manager:



Sounds like a simple and intuitive solution, right?

Yep. And they've created a token

<$wfAddUser(getUserValue("uManager"), "user")$>

and added this "Manager Approval" step to the workflow.

Now what they found is this: The manager did receive email notification and the were able to see the workflow, but they couldn’t approve or reject!

So he was asking me why....

I told him that only the Big Boss can approve the workflow and if he sets the user's manager value to himself - the guy will be able to approve :) He laughed but did try to prove his point...

And he was shocked to see that....

It worked like magic!

So did we discover a design flaw? A piece of code somewhere in Content Server that let’s you approve the workflow if there's no manager higher then you and you're your own boss?

Uh.. Not really.

You see, what Eric didn’t consider is the fact that the token is re-evaluated every time. When the item goes into the workflow, notification is sent to the manager of the guy who submitted the item. All good! But once the manager arrives to approve the item - the token is evaluated again! Guess why the person with the Manager set to themselves can approve the item?

Solution?

Well, if you're set on having the Manager specified in the User Attribute, write this value to a workflow variable or an extended metadata value and add users to the step based on that. This way you know that the value won't change when approver is there to act on the item.... Or simply have a dropdown of approvers on the check in form (let’s say, you name the filed xWfApprover) and use that content metadata field in your token instead:

<$wfAddUser(xWfApprover, "user")$>

Guess what? Everything's working as designed....

Monday, April 18, 2011

Slashing manual input with Oracle Document Capture

If you missed my Oracle Capture talk at Collaborate 11 in Orlando this year - here's the slide deck and the whitepaper. Actually, the whitepaper is almost as good as the session itself.... Almost!

Here are the slides: 

And here's abstract:
If you ever wondered what kind of business impact you can achieve – by relieving users from having to fill in all these fields on the check-in form that make them cringe, this session (and this whitepaper) may literally bring home hundreds of thousands of dollars ... and get your business people dancing with joy! On April 12 I've presented a live session showing how using Oracle Capture can virtually eliminate dreaded manual input, skyrocket the quality of your content and explode user productivity.

Enjoy!

Wednesday, February 16, 2011

What's new in 11g ... seriously!

I was trying to avoid posting this for a while. UCM 11g has been around for almost a year now and its "new" features are now very familiar... Never the less, there's still a boat load of wrong information and plain old BS flying around on the subject.

So if you too want to discover exactly what's new in UCM 11g... and want to skip the 20 min of searching for it - here comes the link:

http://download.oracle.com/docs/cd/E17904_01/doc.1111/e10792/whatsnew.htm

Give it a quick read. Even if you aren't planning to upgrade yet... you may be shocked how much myth vs reality you've really heard

Cheers
D

Friday, February 4, 2011

Check me out in Oracle Magazine

A buddy just reminded me... I didn't get around to brag about it for some time... but yes, its true. Come check me out in Oracle Magazine: http://www.oracle.com/technetwork/issue-archive/2010/10-nov/o60peer-176064.html 

As Published In
Cheers
Dmitri

Monday, January 24, 2011

Changing the maximum lengths of core metadata fields in Content Server

This has came up in almost every UCM engagement we undertook in the last several years... And chances are - you might be scratching your head about it too... or you’ve given your business folks one of these "No can do" responses, that are so effective for draining their confidence in both - Oracle UCM and you personally.

So, without any further introduction - here's the trick that will help you make these core fields, such content title, security role, account and many other standard metadata fields - longer - to accommodate your business model and your requirements.... and re-gain that confidence and even score some points :)

This will also resolve the archive import issues such as "Content item was not successfully checked in. The Title may not exceed 80 characters" ... or AD/LDAP integration issues - when the roles or accounts you're getting from your LDAP provider are longer then 35 characters, the maximum length of the Role and Account fields.

And the answer is simply this: connect to your database with administrative privileges and alter the lengths of the Title, Role, Account or another standard metadata filed you need to be longer then it is. You'll need to restart the Content Server for the changes to take effect.

For instance, to change the maximum length of Content Server Security Role, you'll need to alter RoleDefinition table and change the length of the dRoleName field.

If Oracle is your database - use the following SQL statement: 

DEV_OCS.RoleDefinition modify (dDocTitle varchar(255) not null)

Where DEV_OCS is your Content Server schema name.... I'm, sure you've got the idea...

The Title field is referenced in Revisions, ArchiveHistory, WorkflowHistory and ProblemReports.

To be on a safe side and make sure you haven't missed a table or two, generate SQL (DDL) for all of the Content Server tables and search this file for your field - for instance, dDocTitle, dRoleName or dDocAccount.

Just one note of caution. Changing the length of content type, security group or account may affect performance! Proceed with caution.