Est. 1996 Intermediate

Idoc Script (IdocScript)

A proprietary server-side template and scripting language used to customize the presentation and behavior of Oracle WebCenter Content (formerly Stellent Content Server).

Created by IntraNet Solutions (later Stellent, Inc.)

Paradigm Template-based, server-side scripting; procedural
Typing Dynamic, weak (largely string-based)
First Appeared 1996
Latest Version Bundled with Oracle WebCenter Content 14c (14.1.2.0.0, 2024)

Idoc Script (commonly written IdocScript) is a proprietary, server-side template and scripting language used to customize Oracle WebCenter Content — the enterprise content management system that began life as the Stellent Content Server. It is the glue that turns the platform’s stored documents and metadata into the HTML pages users see, and it is the primary language administrators and developers use to tailor the system’s look, feel, and behavior. Page elements written in Idoc Script are evaluated on the server after a browser request arrives but before the response is returned, so the user only ever receives finished HTML.

History & Origins

Idoc Script is inseparable from the product it customizes. The Content Server originated with IntraNet Solutions, Inc., a Minnesota company that built intranet and document-management software in the mid-1990s. Copyright notices on Content Server documentation reach back to 1996, which places the emergence of the product — and the template language embedded in it — in that era. (The exact first release of the language as a named feature is not precisely documented, so 1996 is best read as the approximate origin of the surrounding product.)

The “Idoc” in the name is a nod to the system’s internal heritage: the Content Server’s plumbing is pervasively branded Intradoc — configuration files such as intradoc.cfg, the IntradocDir directory, the IdcCommand utility, and the IDC communication protocol all share this lineage. “Idoc” is effectively shorthand for Intra-doc.

Over the years the product was renamed several times:

  • IntraNet Solutions rebranded itself Stellent, Inc. in 2001, marketing the content-management product under the Xpedio name.
  • Oracle acquired Stellent in a deal announced in November 2006 (valued at roughly US$440 million).
  • The technology was absorbed into Oracle Fusion Middleware as Oracle Universal Content Management (UCM), and later rebranded again as Oracle WebCenter Content.

Through every rename, Idoc Script remained the customization language at the heart of the platform.

Design Philosophy

Idoc Script is not a general-purpose programming language. It is a template language designed for one job: producing content-management pages on the server. Its design reflects that narrow focus:

  • Server-side evaluation. Scripts run on the Content Server, never in the browser, giving them direct access to the document repository, metadata, and the request’s data context.
  • Embedded in markup. Idoc Script is interleaved with HTML rather than written as standalone programs. Code is wrapped in <$ … $> delimiters and sits inside resource files (typically .htm or .idoc).
  • Data-context driven. Much of what a script does is read from and write to the DataBinder — a request-scoped container of local data, environment settings, and ResultSets (tabular query results). Variable lookups follow a defined search order through these stores.
  • Convention over declaration. Variables are not declared; naming conventions carry meaning instead. Database columns are prefixed with d (dDocTitle, dDocAuthor), custom metadata fields with x (xDepartment), and configuration variables are typically capitalized.

Key Features

Idoc Script offers the building blocks expected of a template language, oriented around the Content Server’s data model.

Variables and output

<!-- Output a metadata field -->
<$dDocTitle$>

<!-- Assign and reference local variables -->
<$a = 1, b = 2$>
<$myTotal = a + b$>
<$myTotal$>

By default an assignment also prints its result; the exec keyword suppresses output of an expression when only the side effect is wanted.

Conditionals

<$if xDepartment$>
    <td><$xDepartment$></td>
<$elseif isReady$>
    <td>Pending</td>
<$else$>
    <td>Department is not defined.</td>
<$endif$>

Loops over ResultSets

Iterating a query’s ResultSet is one of the most common patterns, used to render search results and listings:

<$loop SearchResults$>
    <tr>
        <td><$SearchResults.dDocTitle$></td>
        <td><$SearchResults.dDocAuthor$></td>
    </tr>
<$endloop$>

A counting loopwhile form is also available:

<$count = 0$>
<$loopwhile count < 10$>
    <$count = count + 2$>
<$endloop$>

Includes and resource overrides

Reusable fragments are defined with <@dynamichtml@> and pulled in with include. Components can override a standard include and still call the previous definition via the super keyword — the mechanism behind much of the platform’s customization model:

<@dynamichtml my_resource@>
    <$include super.my_resource$>
    <!-- additional/override markup here -->
<@end@>

Built-in functions

Idoc Script ships with a large library of global functions for string comparison and manipulation, date formatting, ResultSet inspection, and more — for example strEquals(), dateCurrent(), getValue(), and isTrue(). These functions, combined with the metadata and ResultSet model, let templates make presentation decisions without round-tripping to other code.

Evolution

The language itself has evolved conservatively, prioritizing backward compatibility across decades of customer deployments. Some changes are visible in the documentation’s own history — for instance, the exec keyword was once required to suppress the output of any variable assignment but is now needed only to suppress the output of an expression. As the platform added dynamic server-page formats (.hcsp, .hcst, .hcsf), Idoc Script gained an alternate <!--$ … --> comment-style syntax for use inside HTML-validated pages, alongside its traditional <$ … $> form.

The far larger evolution has been in the surrounding product: from Stellent Content Server, through Oracle Universal Content Management, to Oracle WebCenter Content, whose most recent release is 14c (14.1.2.0.0), made available in 2024 for both on-premises installation and the Oracle Cloud Infrastructure Marketplace. Idoc Script has remained the customization language across all of these generations.

Current Relevance

Idoc Script is a living legacy language. It is not something developers choose for new projects in the abstract; rather, anyone who administers or customizes Oracle WebCenter Content inevitably writes it. Because thousands of organizations adopted Stellent and Oracle UCM/WebCenter Content over the past quarter-century — and because content-management migrations are slow, careful affairs — a substantial body of Idoc Script remains in production, and Oracle continues to ship and document the language with each release.

A specialist ecosystem grew up around it: integration partners (such as Fishbowl Solutions), books like Brian Huff’s The Definitive Guide to Stellent Content Server Development, and a community of consultants who maintain Content Server “components” built largely from Idoc Script resource files.

Why It Matters

Idoc Script is a representative example of a vendor-specific template language — one of the many domain-bound scripting dialects that enterprise platforms grew in the 1990s and 2000s to let customers customize behavior without modifying the core product. It belongs to the same broad family as other server-side template languages, but its tight coupling to the Content Server’s DataBinder, ResultSets, and metadata conventions makes it inseparable from its host. For the large installed base of Oracle WebCenter Content, Idoc Script is not a historical curiosity but the everyday language of customization, and it stands as a reminder of how much working software is written in languages that exist to serve a single product.


Sources & Further Reading

Timeline

1995
IntraNet Solutions, Inc. is, by most accounts, established around this time in Eden Prairie, Minnesota, building intranet and document-management software (sources vary slightly on the exact founding year)
1996
The Content Server product line and its Idoc Script template language take shape; Stellent/IntraNet copyright notices on Content Server documentation date back to this year
2001
IntraNet Solutions renames itself Stellent, Inc.; the content-management product is marketed under the Xpedio name
2006
Oracle announces (November 2) its acquisition of Stellent via a cash tender offer of $13.50 per share, valued at approximately US$440 million; the deal closed by the end of the year
2007
Following the close of the acquisition, Stellent technology is folded into Oracle Fusion Middleware and rebranded as Oracle Universal Content Management (UCM) around this time
2011
Around the Oracle 11g release wave, the platform is rebranded again as Oracle WebCenter Content, while Idoc Script remains its customization language
2024
Oracle WebCenter Content 14c (14.1.2.0.0) is released for on-premises deployment and the OCI Marketplace, continuing to use Idoc Script

Notable Uses & Legacy

Oracle WebCenter Content

Idoc Script is the native language for customizing Oracle's enterprise content management platform, controlling everything from page templates and check-in forms to workflow messages and configuration.

Enterprise document & records management

The original Content Server use case: Idoc Script renders search-result listings, content profiles, and metadata-driven pages for organizations managing large document repositories.

Content Server components

Customizations are packaged as 'components' whose resource files (.htm/.idoc) are written largely in Idoc Script; integration partners such as Fishbowl Solutions built a business around these add-ons.

Government & public sector

Stellent and later Oracle UCM deployments were adopted by public-sector bodies (for example Los Angeles County) for records and document management, with Idoc Script driving the user-facing pages.

Large-enterprise content portals

Stellent's published customer base included firms such as Procter & Gamble and Merrill Lynch; Idoc Script powered the branded, content-driven interfaces of such deployments.

Running Today

Run examples using the official Docker image:

docker pull
Last updated: