How to Touch All Items in a WCM Library

Posted on Oct 3, 2013 (last modified May 7, 2021)

WebSphere Portal LogoOccasionally, you may find yourself with the need to “touch” (force a SAVE operation) on every item in a given WCM library. For example, we recently had some environmental issues that left us with a pretty large sum of taxonomy categories that did not syndicate. After recreating the syndicator/subscriber pair, we could get individual categories to syndicate by “touching” them on the source server. But there were far too many to touch by hand. Before you go running towards the API to build a custom utility for such a task, consider first, the RefreshAllItems module.

The RefreshAllItems module was introduced in APAR PK31637, which goes all the way back to IBM WebSphere Portal and IBM Web Content Manager 6.0.0.1. Once it is configured for use, it is invoked by hitting a specific URL that tells the WCM servlet to fire the module on a given library. The URL looks like this:

http://<serverName>:<serverPort>/wps/wcm/connect?MOD=RefreshAllItems[&library=<libName>][&preserve_dates=true]

In addition to forcing many items to syndicate because they’ve been touched, this module can help fix referential integrity issues (which are less and less common as you migrate up from WebSphere Portal 6 into successive versions, by the way). At one point in time, for example, IBM released a fix that stores WCM content in a new, performance-enhanced format. Legacy content is only converted to the new format when it is saved. So, this module provides a way to sweep an entire library and “upgrade” the legacy content.

Now, I know I don’t have to tell you not to execute a utility like this in a production system during peak hours. By nature, it’s going to use up some CPU and then, consequently, fill up quite a bit of syndication bandwidth (depending on your library size).

Until next time, enjoy your work and evolve the Web!