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.)
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.htmor.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 withx(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
- Introduction to the Idoc Script Custom Scripting Language — Oracle WebCenter Content documentation
- Oracle WebCenter Content Idoc Script Reference Guide
- Oracle Buys Stellent (press release, 2006)
- IntraNet Solutions Changes Name to Stellent (Gilbane, 2001)
- Oracle WebCenter Content 14c (14.1.2.0.0) Release Notes
Timeline
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.