Connect with TEAM at Collaborate14 in Las Vegas

April 1, 2014

Las Vegas, NV – Venetian and Sands Expo Center

April 7th – April 11th

Want to learn how to deliver enterprise video inside WebCenter Portal and retain ownership of your content?

Want to learn how to utilize the digital asset management power of WebCenter Content with ATG Web Commerce?

Want to find low-cost, fast ROI implementations of WebCenter solutions?

Resolve all the questions you have about Oracle WebCenter and Enterprise Content Management by joining TEAM at  Collaborate 2014 in Las Vegas, NV. April 7th-11th. Stop by our booth #1348 on Main Street for our product demonstrations, talk with our WebCenter Experts, and be sure to catch our customer presentation from Faribault Foods:


Session: 724 

Title: Solving Enterprise Content Management for Small Business: Faribault Foods

Time: Wed, Apr 09, 2014 (02:00 PM – 03:00 PM)  

Level 3, San Polo 3502


For scheduled times and locations look here.

Collaborate 2014

April 7th-11th

Venetian and Sands Expo Center

Las Vegas, NV

Set up a time to speak with members of TEAM at Collaborate.


WebCenter CK Editor Customization – WebCenter Portal

February 18, 2014

By: Andreja Sambolec – Application Consultant

For creating new blogs or wikis, the WebCenter CK Editor (text editor) is used. Using CK Editor we have options to edit text, add tables, embed images and videos…

In this demonstration we are going to embed video.

You can edit the HTML and add the <iframe> component, but it will be deleted after saving changes or switching between tabs.

To avoid this, we customized the task-flow which contains this editor.

The page fragment we changed is

We figured that the problem is caused by the converter added to <rte:editor> component so we deleted it (No other problems arise because of those changes):

<rte:editor id=”rte value=”#{pageFlowScope.rte.HTMLTextArea}”
converter=”#{pageFlowScope.rte.HTMLConverter}” />

Next we wanted to have an icon for embedding videos to enhance and simplify the user experience.


When a user clicks on the icon a list of videos will be displayed inside of a dialog box:


When a user clicks on the OK button, the video should be added as part of the iframe in the editor.

The Tag Library used for this component is rte-taglib.jar, we need change this library.

Changed files are:

  • ckeditor.js (add new plugin){init:function(m){m.addCommand(‘video’, new a.dialogCommand(‘video’));m.ui.addButton(‘Video’,{,icon:this.path+’images/video_qualifier.png’,command:’video’});a.dialog.add(‘video’, this.path + ‘dialogs/video.js’);}};j.add(‘video’,;

  • config.js (declare a new plugin):

config.extraPlugins = ‘wclinkexist,wclinknew,wcimage,video,snippet,tools’; config.toolbar_WC = [ …. ['WCLinkExist','WCLinkNew','WCImage','Video','-'], …. ];

  • Lang/en.js (new labels for the video plugin)


video : ‘Embed Video’,

videodialog :


title                   : ‘Select video’,



To display the video dialog, we created a new plugin and added it to the plugins folder


‘video’ folder contains two subfolders: ‘images’ folder (contains icon image to open the dialog  box) and ‘dialog’ folder (contains dialog.js file with logic to display videos and create <iframe>  in the editor when closing the dialog box)

Now to add some content inside of the dialog box and pass some value to the editor, you can check the source of other plugins as help (I used the Colordialog plugin).

This is the code snippet to add <iframe> in the editor when the user clicks on the OK button:

var dialog = this,

data = {},

iframe = c.createElement( ‘iframe’ ),

div = c.createElement(‘div’);

obj.commitContent( data );

div.setAttribute(‘class’, ‘video’);

iframe.setAttribute( ‘src’, ‘urlValue’);

iframe.setAttribute( ‘width’, ’620′ );

iframe.setAttribute( ‘width’, ’349′ );

iframe.setAttribute( ‘frameborder’, ’0′);



This was done in WebCenter Portal but is compatible with and, as well.

If you have any questions, or would like to talk to someone from TEAM, contact us!

TEAM integrates ATG/Endeca with WebCenter Content – For the best commerce experience

February 5, 2014



To schedule a personal demonstration – contact us!

WebCenter Portal – Access to WC Spaces Services over REST running on Oracle VM from your Mobile Application

December 18, 2013

By: Andreja Sambolec – Application Consultant

Developing ADF Mobile application – accessing WC services running on VM

If you are using the Oracle SOA Suite/BPM Suite VirtualBox Appliance (Pre-Built Developer VM for Oracle VM VirtualBox) and want to start developing an ADF Mobile application accessing WC Spaces REST services running on this VM, you have to make sure:

  • Your mobile device and local machine have access to the same wireless network
  • NAT is selected as the available network mode on your VM


  • To check Port Forwarding


Now you can access WebCenter Spaces from your mobile device or from your local machine using IP address of your local machine:

In your ADF Mobile application, create a new connection:


If you want use programmatic approach for Spaces REST Service invocation, use the following:

RestServiceAdapter restServiceAdapter = Model.createRestServiceAdapter();
String theUsername = “weblogic”;
String thePassword = “welcome1″;
String userPassword = theUsername + “:” + thePassword;
String encoding = new sun.misc.BASE64Encoder().encode(userPassword.getBytes());
restServiceAdapter.addRequestProperty(“Authorization”, “Basic ” + encoding);
restServiceAdapter.addRequestProperty(“Accept”, “application/json; charset=UTF-8″);
restServiceAdapter.addRequestProperty(“Content-Type”, “application/json; charset=UTF-8″);



try {


} catch (Exception e) {



Using ADB tool and command adb logcat, you can see the part of the response as a result of the command System.out.println(restServiceAdapter.send(“”)):


After the above verification of access to WebCenter Spaces REST Services you can continue with development.

Running into trouble? Want to have a chat with members from TEAM? Contact us here.

DevOps and Content Management

December 11, 2013

By: Raoul Miller – Enterprise Architect

You may have been hearing a lot about DevOps recently and are wondering what it is and whether it’s something applicable to WebCenter or any other form of Content Management technology.

Like many other recent technology concepts, the actual definition is somewhat fluid but the name comes from the conjunction of development and operations.  The idea being that developers, testers and IT staff (operations) need to work much more closely together to accelerate release cycles and make the technical side of the business much more responsive to customer demands and changing markets. The Wikipedia page on DevOps gives some of the history of the concept and provides these helpful illustrations of what it entails:


Figure 1: DevOps within IT groups

figure 2Figure 2: Agile vs. Waterfall methodology and change cycles

As figure 2 shows, the main idea is that a DevOps approach to software development and management is a direct analog to the agile project approach – in that technical staff can be much more responsive and can lower overall project risk when making rapid small changes rather than infrequent major changes.  The key here is that agility and responsiveness (achieved through automation and aligning the different groups within IT) is a clear competitive advantage in the current dynamic and evolving business environment.  This is why so many large software companies are now using or testing this approach.

So far, so good – but how does this relate to Content Management and how is this different from what you have been doing for many years?  To answer the former, the goal of a Content Management team working in a DevOps setting is to make frequent changes to meet customer demands.  Obviously this must be done cautiously and professionally and within the bounds of the system.  Modifying the metadata and security models within a document management system is not something to be done lightly; while changing user profiles, adding new dropdown choices, updating the UI are all perfect candidates for rapid release cycles in response to user feedback.  A records management system (due to its strict audit controls and external compliance obligations) may gain less from a DevOps approach than a customer experience management system which needs to evolve rapidly to meet changing needs.  So, like so many useful concepts in our evolving world, IT professionals must choose which systems are best suited to the new approach and which tools and aspects of DevOps are suitable to be adopted by their teams and their business.

How is this different from what you’ve been doing? Looking at release and update cycles in a different way and on different time scales forces changes in standard operating procedures.  And this is one of the great advances.  Increased agility and increased pace of release has made the use of automated configuration and deployment tools much more prevalent.  WebCenter has always been scriptable and able to be installed using scripts for many years. But there are now a number of extremely useful tools that allow DevOps teams to manage these processes much more repeatedly and rapidly (essential for consistency between environments and successful loads).

Steve O’Grady of Redmonk wrote an excellent post last week on the relative popularity of the major configuration management tools.  Puppet and Chef are currently the leaders in the space with Ansible and Salt following closely behind and quickly catching up.  All four are open source platforms with enterprise editions and support available.  I’ve worked most directly with Puppet and Chef, and in both cases the additional features available to enterprise users are definitely worth the investment.  Detailed description of how and when to use these configuration management tools is beyond the scope of this post, but I encourage you to download and check out the various applications and versions and find one that works best for you:

There are links to the community versions of each application on the various company pages too.

IBM has a helpful landing page on the topic; regrettably Oracle seems to be a little behind the curve relative to IBM, although there was an article in the Oracle Architect magazine earlier in the year and some internal blog posters are getting up to speed.  Enterprise Manager / Grid Control, especially in 12c versions, does have some of the automation features discussed above, but is in no way a substitute for Puppet or Chef.

My interest in this area was piqued through the excellent writing of the various Redmonk staff and I highly recommend their blog posts and conferences. The applicability of these technologies to Oracle and WebCenter in particular was clearly illustrated by the work of Oracle ACE Edwin Biemond here, here and here.  He is clearly the expert in this field.

Have more questions? Want to have a chat with someone from TEAM? Contact us here.

Press Release: TEAM Informatics appointed as one of three on the New Zealand cross-government ICT panel for the provision of Enterprise Content Management-as-a-Service.

November 26, 2013

WELLINGTON, New Zealand, Nov. 26, 2013

TEAM Informatics, partnering with local New Zealand based IS Company Asparona, today announced that it has been appointed to a panel of suppliers to provide content, records, collaboration and library services to New Zealand government agencies. Known as “ContentWorX”, the service supports the Government ICT Strategy and Action Plan to 2017 enabling content centric solutions “on-demand” and delivered as a managed service offering.

The contract gives TEAM Asparona the opportunity to provide Enterprise Content Management-as-a-Service (“ECMS”) across a broad base of content centric solutions to eligible New Zealand government public and state sector agencies as well as a number of approved non public sector eligible agencies.

TEAM Informatics brings its global experience and domain expertise in ECMS complimented by Asparona’s local presence and managed service capability. The TEAM Asparona ContentWorX service allows for unparalleled access to an enterprise grade portfolio of Oracle ECMS products on a per user per month basis.

“TEAM Informatics is pleased to be selected to participate as a panel member to deliver ContentWorX “Content-as-a-Service” to government agencies throughout New Zealand” said Craig Hampson, Director – TEAM Informatics, New Zealand and Australia. “Together with our partner Asparona, we look forward to providing a seamless agency user experience across a broad range of content business use cases with a managed solution by TEAM Asparona, powered by Oracle.” continued Hampson.

“Asparona looks forward to continuing our relationship with TEAM Informatics in delivering and supporting a comprehensive service catalogue for “Content-as-a-Service” to New Zealand government agencies” said Asparona’s Ian Rogers.

For more information on the TEAM Asparona ContentWorX service visit:

About TEAM Informatics

TEAM Informatics (New Zealand) is part of TEAM Informatics Inc. (“TEAM”) – an employee-owned, Minnesota-based software products and systems integration firm with a global customer base. TEAM was formed over 10 years ago and has experienced a sustained aggressive growth rate.

TEAM is an Oracle software reseller and a global member of the Oracle Partner Network, specialising in areas such as WebCenter Content and WebCenter Portal. Offerings include professional services, managed services, enterprise and development support and an expanding set of content centric add-on products. In addition, TEAM is a Google Enterprise Partner and reseller for the Google Search technologies.

For more information about TEAM Informatics visit: Follow us: @TEAManz

About Asparona

Asparona, acquired by Deloitte New Zealand in August 2013, is the leading implementer of Oracle technology in New Zealand (by scale and implementation base) and also runs a managed service and application support business.  In addition, Asparona delivers all Oracle training courses in New Zealand.  Asparona employs people in Auckland and Wellington and is part of the Deloitte group of companies.

For more information about Asparona visit:

About Oracle

Oracle engineers hardware and software to work together in the cloud and in your data centre. For more information about Oracle (NYSE:ORCL), visit:

Oracle and Java are registered trademarks of Oracle and/or its affiliates.

Media Contact: Craig Hampson, TEAM Informatics Pty Ltd, +64 4 385 4130 / +61 1300 TEAM ANZ,

SOURCE TEAM Informatics Pty Ltd

Oracle WebCenter Suite & Microsoft Office 365 – Understanding the Differences

November 21, 2013

By: Raoul Miller – Enterprise Architect

Improving collaboration and content management are important goals for many organizations today and the choice of products to help is wide.  Understanding the differences between the different platforms and vendors is very important for anyone looking to start an initiative in order for them to get the best value for their investment.  TEAM is a long-term Oracle partner, but is also a Microsoft partner so we are well-positioned to help clients decipher the differences between the two sets of products and decide what is best for their organization – now and in the future. Click here or the picture below to be taken to a comparison paper of the features  of Oracle WebCenter and MS365.


Changing Menus in WebCenter Content 11g

November 19, 2013

By: Dwayne Parkinson – Solution Architect

For those of you coming from the land of 10g, you get to add yet another piece of information to the scrap heap that is “obsolete technical stuff I know.”  Specifically, how to modify the menu structure in WebCenter Content has been changed in 11g.  All of those NavBuilder tricks you know can rest in peace alongside your Perl and REXX programming skills.  In this article I will cover how the new navigation model works in much more depth than is currently available in documentation or on the web.


In general, the way navigation works now is that you add a few files to a component which contain menu information then enable the component.  The files make use of the new Data Include capabilities in 11g to append your menu entries to the default menu entries that are delivered with the system.

Four Steps to a Customized Menu

STEP 1: Add a Component
For this example we’ll add a new component, but if you already have a custom component that is used in your business, you can certainly skip this step and just add the menu resources to your existing component.

From the Component Wizard select Options and then Add

On the next screen we will fill in the name of the new component, leave the other fields at the default and then click OK.


(For more info on how to access and use the Component Wizard see

Once the component is created, we can begin adding the menu resources.  The first resource we’ll add is CoreMenuItems.  We will choose an HTML include/String resource as the type of resource definition.


On the next screen check the Data Include box.  This will change to the Data Include screen, which should look something like the one shown below.  If the default text doesn’t appear, don’t worry.  We have to replace it all anyway.


STEP 2: Create CoreMenuItems
CoreMenuItems is one of two resources you will most likely use to modify navigation.  It contains a list of menu items.  These are merely definitions of a menu item and aren’t meant to show where in the menu structure a menu item may exist.  If you are only rearranging the existing menu structure you won’t need this file, but assuming you want to add a menu item this file is necessary.

When creating these files keep in mind that the values in your file will load last and if you have the same name as one of the system values, your menu item will override the system value (discussed shortly).  For now, let’s create a few menu items so we can show some of the flexibility of this new navigation model.  Below is a screen shot of a sample menu item resource.  Let’s look at it in close detail.


Name: this must be CoreMenuItems and the case must match exactly.  Remember you’re appending to a resource that’s already out there.

In the editor, the first line identifies the column headings in the CoreMenuItems and it must be there.  Specifically the columns are:

  • ID – A unique identifier for your menu item.  This ID is used throughout the other files to refer to this specific menu item definition.
  • LABEL – This is the text that will appear on the menu
  • LINKTYPE – There are six pre-defined link types, however if needed, you can create your own link types by modifying std_compute_menu_link or navigation_modify_rset_menu_items.
    • CGI – This is used when executing content server services and contains everything after the http CGI path.  In other words, it starts with IdcService=
    • WEB – This is used when accessing the web viewable data on the content server and begins after the http web root which in most cases begins after myserver:16200/cs/ in the URL.
    • ADMIN – this is like CGI in that it executes a service using an http CGI path except it is used to execute services on the admin server using that servers CGI path.
    • JavaScript – executes a javascript
    • Enterprise – I haven’t tested this, but according to the documentation it is similar to CGI and ADMIN and appears to only be used when there are proxied servers and you wish to execute a service from the http enterprise CGI path.
    • External – this is used to access external websites.
    • LINKDATA – This is the data that corresponds to the link type.
      • CGI – the IdcService call to execute.
      • WEB – the path to the resource on the content server.
      • ADMIN – the IdcService call to execute.
      • JavaScript – the Javascript command to execute.
      • Enterprise – the IdcService call to execute.
      • External – the website address.  You must include the http:// in the address.

The next three lines (MYMENU_1, MYMENU_2, MYMENU_3) define menu heading items that have no actions.  These will simply be menu headings that are used to display a sub-menu.  Notice that there’s no LinkType or LinkData.

Finally the last six lines are menu action items that will perform various tasks.  There are examples of each type of link except Enterprise.  Notice also that THING_2 is a search and we include an Idoc Script  reference to <$UserName$>.  Idoc Script can be used throughout the menus.

STEP 3: Define CoreMenuItemRelationships
CoreMenuItemRelations is used to define where within the menu structure a specific menu item exists.  As with CoreMenuItems, we will be extending and potentially overriding the values that come with the system.  However, the very first thing we must know is that there are three default menus that ship with content server.  They are not so cleverly named, MENU_A, MENU_B and MENU_C and located as shown below





The CoreMenuItemRelationships describes the relationship of menu items within the content server.  The sample below shows how the menus above were created.  Let’s take a closer look at this information.


The <?commatable mergeKey=”primaryKey”?> line is very important and required to make the information merge correctly to the system default menu information.

The parentid, id and loadOrder specify the ID of the parent menu item and the child menu item as they are defined in the CoreMenuItems.  The load order determines the location on the menu.

As you can see, we add MYMENU1 to MENU_A which results in the My First Menu being added to the MENU_A navigation bar.  A load order of 500 is used  to ensure that the entry shows up at the end.  Shown farther down you can see that the same menu item can be used on multiple menus.  The final menus look like this.


It’s important to know that MENU_C is different than the other two menus in that it will only display a single item.  It is intended for invoking action on the content server, rather than displaying a menu.  If a menu item with no LinkType and LinkData (like MYMENU1) is attached to MENU_C, any corresponding menu items won’t be displayed.

STEP 4: Enable the Component
The final step is to enable the component and restart your content server.  If your menus don’t work as expected or the content server fails to start, there is most likely a typo in one of the files.

Additional Capabilities

Override Default Menus - The key to overriding the default menus is to first find where they are.  The menus are in the std_nav.idoc which is located in the \ucm\idc\resources\core\idoc folder within the WebCenter Content server instance.  Searching for CoreMenuItems and CoreMenuItemRelationships within this file will provide information about how the menus are constructed.

In our example we’re going to move My Subscriptions from the default location to the top of the My Content Server menu.


Searching the std_nav.idoc, we find the following line defines the MY_SUBSCRIPTTIONS menu item.

menu11And we further notice that the first entry in the MY_CONTENT menu has a load order of 10.  To move MY_SUBSCRIPTIONS so it’s first in the menu we simply override the load order by adding the entry to our custom component as shown below.


The result of adding that line is that the My Subscriptions item will be moved to the top of the menu.


Add Security & Other Flags via CoreMenuItemsFlags
In the new menu model, adding basic security and performing some systematic checks is fairly easy.  In our example, we may want to have one of the menus with administrative options only show up for system administrators.

As we’ve done before, we return to our component and add another include.  This time we add a CoreMenuItemsFlags include as shown below.


This  is fairly straight forward.  Supply a menu item ID and then assign some flags.  The flags are separated by a colon.  As shown above, MYMENU1 is disabled for everyone other than administrators and is not visible when not logged in.


If you’re like me this makes you ask two questions:  where are the flags defined and what happens if I need to add security that isn’t provided by these flags?

The answer to the first question is that these flags are all defined in the std_nav.idoc document previously referenced but I’ve included them below for ease:

  • isTopMenusOnly: Menu item is only shown in the Top Menus layout.
  • isTraysOnly: Menu item is only shown in the Trays layout.
  • isLoggedIn: Menu item is only shown to users who are logged in.
  • isAnonymous: Menu item is only shown to users who are not logged in.
  • isAllowIntranetUsers: Menu item is only shown if <$isAllowIntranetUsers$> is true.
  • isSelfRegistration: Menu item is only shown if self-registration is enabled.
  • isProxiedServer: Menu item is only shown if <$#env.IsProxiedServer$> is true.
  • isContributor:  Menu item is only shown if user is a contributor.
  • isAdminAtLeastOneGroup: Menu item is only shown if user is an admin of one or more groups.
  • isSubAdminOrSysManager: Menu item is only shown if the user is a subadmin or sysmanager.
  • isAdmin: Menu item is only shown if the user is an administrator.
  • isSubAdmin: Menu item is only shown if the user is a subadmin.
  • isSysManager: Menu item is only shown if the user is a sysmanager.
  • isContentRefineryPresent: Menu item is only shown if there is a content refinery present.
  • isDynamicConverterEnabled: Menu item is only shown if dynamic converter is enabled.
  • isJspServerEnabled: Menu item is only shown if JSP server is enabled.
  • hasIndexAdminActions: Menu item is only shown if there are index admin actions.
  • hasCollaboration: Menu item is only shown if collaboration is enabled.
  • hasDownloadBundle: Menu item is only shown if bundles are available for download.
  • isGroup: Menu item is a group.  This means that the item itself is not visible but any items with this item as the parent will be grouped together.
  • targetTop: Sets this menu item’s target as “_top”.
  • targetBlank: Sets this menu item’s target as “_blank”.
  • isIdcTokenRequired: Menu item calls a non-scriptable service and thus needs to provide the idcToken.

The second question is answered below.

Add Customized Security

The question often comes up of what to do about the menu items that aren’t covered by the default security flags above.  For example, a very common request is to constrain a menu or option to only those folks who have a specific role.  There are two ways to do this.  The first is a bit of a hack, but I’m not too proud to tell you about it.

As you’ll recall, when we were creating menu items I mentioned that Idoc Script can be used throughout the menus, so a simple way to restrict menus or menu items to specific roles is to add  Idoc Script right into the menu files like this:


It’s not the “best” way to do the job but it will work in a pinch.  For those who are seeking a more elegant solution, the best option is to add your own flags to the CoreMenuItemsFlags include.

The first step to adding your own flag is to add an entry to the flags CoreMenuItemsFlags include and type in whatever you want for a flag name.  For example if you are using records management you may want to make a flag called isRMAAdmin and use that to limit certain menu items to those folks who have rmaadmin roles.  In our case we’re going to add the flag to MYMENU1 as shown below.


It’s worth noting that the colon serves as a logical AND, so as you add flags to your content server you are building flexibility into your menu items and may have several flags that are distinct to your implementation, for example:

MYMENU1, hasHumanResources: hasITAdmin:isContributor:isRMAAdmin
MYMENU2, hasITAdmin:isVP

In cases where you need to do a logical OR you will need to create a flag that performs the OR logic like Oracle did with isSubAdminOrSysManager.

As you’ve probably guessed, there aren’t magic elves that interpret your newly created flag and just make it work behind the scenes.  You will have to extend the base functionality of the content server by extending the navigation_filter_rset_menu_item include as shown below.  NOTE: this is the same resource that you can override to create custom link types, but we won’t go into that here.


The first line of the code includes the existing version of the navigation_filter_rset_menu_item include.  The next lines check to see if the flag matches isRMAAdmin and the user does NOT have a role of rmaadmin.  If those conditions are met, the row is deleted from the menu.  This effectively removes the menu.  Obviously any Idoc Script can be used here to determine whether a menu row should be deleted, so you have tremendous flexibility.


We covered much of what the menu system has to offer, but there is more.  Everything that has been covered above is included in the MyMenu sample component that is available with this blog.  Perhaps the best additional resource for exploring the WebCenter menu system capabilities is through a sample component available from Oracle.  The component is available for download here: and it contains documentation and samples in addition to those we’ve provided.  Between the sample component included with this blog and the Oracle example you should have much of what you need to make excellent use of the flexible new WebCenter navigation model.

For more customization help with your WebCenter implementation, contact us today! 

TEAM Quick Tip: Using ADF and The jQuery.dotdotdot Plugin

October 29, 2013

By: Andreja Sambolec - Application Consultant

ellipses picThis blog will provide instructions on how to use the jQuery.dotdotdot plugin together with ADF Faces using JDeveloper The purpose of the plugin is to cut the text and show ellipsis to indicate that there is more text than currently visible. It’s also possible to add the “read more” link and put it AFTER the ellipsis.


You can find more information about this plugin and download it from

In our project we are using this plugin to cut the text and show ‘read-more’ link. The main problem was the “read-more” link didn’t work using af:commandLink. The purpose of the link in our case was to navigate to some other page. To get this to work we had to use a combination of an HTML link and ADF command link. The HTML link was used to show the link on the page and simulate the click on the ADF command link to perform navigation (this could also be a backing bean action call).

The implementation steps were:

1.  Download jQuery library and jQuery.dotdotdot plugin.

2.  Save the libraries into the public-html/lib folder:


3.  Add those libraries as resources on the page (inside of af:document):

<af:resource type=”javascript” source=”/lib/jquery-1.10.2.min.js”/>
<af:resource type=”javascript” source=”/lib/jquery.dotdotdot.min.js”/>

4. Add component containing the content and link:

<af:panelGroupLayout id=”pgl1″ clientComponent=”true”>

<div id=”dotid” class=”dotcontent” style=”height:132px;overflow:hidden;”>

<af:panelGroupLayout  clientComponent=”true” id=”pgl2″>

 <af:outputText value=”Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry’s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry’s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.”  clientComponent=”true” id=”ot1″/>


<a id=”rm-link” class=”rm-link” onclick=”readMoreContent()” style=”cursor:pointer;color:#688FCF;”> Read  More</a>



5. Add ADF invisible command link which will perform the navigation:


<af:commandLink text=”Read more invisible” action=”details”

styleClass=”rm-invisible” clientComponent=”true”
id=”rm-invisible” visible=”false”/>


6. Create javascript function to call dotdotdot plugin and simulate click on ADF command link:

<af:resource type=”javascript”>

function Dot() {
$(“.rm-invisible“).on(‘simulate_click’, function () {


$(“.dotcontent“).dotdotdot( {

after : “a.rm-link“, callback : hideLinkIfNoTruncationAlert, watch: “window”


//it’s executed after dotdotdot function to hide the link if text is not cut
function hideLinkIfNoTruncationAlert(isTruncated, origContent) {

 if (!isTruncated) {

 $(‘.rm-link‘, this).remove();


//simulate click on ADF link to execute navigation

 function readMoreContent() {




7. Add af:clientListener to af:document to call the function after the page is loaded:

<af:clientListener type=”load” method=”Dot”/>

If you need to cut some text inside of the page fragment, you also need to add af:clientListener to the parent page.  Alternatively you can set ControllerClass, which implements the RegionController interface, to the pageDef file and call the javascript function from the refreshRegion method.

Now you can use the jQuery.dotdotdot plugin together with ADF Faces using JDeveloper Cutting the text and showing the ellipsis to indicate that there is more text can really clean up your pages. Using a “read more” link provides another form of navigation to direct your visitors to content faster. For more information on ADF and other WebCenter questions, please reach out to us!

Expanding your RM capabilities with Early Case Assessment, Enhanced Legal Hold and File Plan Management

September 24, 2013

By: Raoul Miller – Enterprise Architect

public-recordsTEAM has successfully deployed many WebCenter Records projects but we find that some clients or potential clients need more capabilities than the core product provides.  Recently we were working with a large international financial organization and it became clear during our scoping that Oracle’s Records Management solution would need to be integrated with other capabilities in order to meet their requirements.

WebCenter Records (WCR) is an excellent solution for managing content in-place within the WebCenter Content repository using the supported adapters but it is not designed to provide some of the additional features that might be used by in-house counsel preparing for litigation.  Additionally, although WCR has the capability to manage a very complex set of file plans and retention schedules it is not designed to manage the legal reasoning behind a given policy.

exterro logoWe looked at and spoke with a wide range of application vendors in the space and selected two that could both fill those gaps in the product offering and also integrate easily with the existing WebCenter and adapter footprint.  To expand WebCenter’s capabilities into the realm of litigation management, enhanced legal hold and early case assessment we chose Exterro and their Fusion suite of applications.  Integration was straightforward as Exterro had already created a proof of concept connector from their Fusion Legal Hold dashboard to a WebCenter Content (or Records) repository.  This allowed all the other aspects of their Fusion suite to interact with WCR seamlessly and offered a wide range of additional litigation management and legal hold capabilities that are outside the scope of the DoD 5015 certified WCR application.  Another set of capabilities offered by


Exterro is their early case assessment (ECA) Zeta platform which allows for analysis of content in-place before it is ingested or managed explicitly by the system (on desktops or remote file servers, for instance).  This decreases costs and complexity in the long term and gives records managers and counsel access to data when they need it.

fontis logo

The other substantial contribution to the solution was provided by Fontis’ Open Retention Manager (ORM).  Although WCR has very robust file plan and retention schedule capabilities, it is not designed with an interface to manage and update the legal basis for these classifications and schedules. Fontis fills that gap with legal research that proposes plans and schedules and provides all the citations for those recommendations.  ORM then manages these retention schedules on an ongoing basis and makes (and justifies) updates as required.  This is an extremely useful set of functions and particularly important for organizations in litigious environments or with complex international obligations and exposure.

Integration of these two sets of products was very straightforward – Exterro shares a similar deployment platform to WebCenter and had already developed a RESTful integration with WebCenter Content to designate repositories as non-custodial data sources.  TEAM is working actively with Exterro and Oracle Product Management to enhance and expand that integration for other clients.  For the Fontis integration, we chose a much looser coupling approach, with their ORM user interface remaining independent (for the limited set of users who required access to it) and export of file plans and retention schedules in XML. These exported file plans and retention and disposition schedules would be imported automatically to WCR using a simple translation component.  Ongoing schedule changes would be managed through workflow within WebCenter to ensure a full audit trail and chain of responsibility.

We are proud that we were able to design a complex solution to meet the broad Information Governance requirements of a large international organization by bringing together and integrating best-of-breed solutions from three different vendors.  We are committed to continuing this innovation and developing custom solutions to meet the complex demands of all our clients around the world.  If you would like to find out more or discuss your own content and information management challenges, contact us via the website, email or connect with us at Oracle Open World this week.


Get every new post delivered to your Inbox.

Join 51 other followers