Less is more: improving by reducing REST calls.

One of the challenges when building an application that uses the Content and Experience Cloud Delivery API is improving the performance by reducing the number of API calls that the client application has to make.   The normal flow is to search for items, and then iterate over the number of items to get to […]

Content and Experience Cloud ContentSDK: npm package

The 18.3.5 release of Content and Experience Cloud includes full support for the Delivery REST API. The REST API is documented. Next to the REST API is a lightweight JavaScript wrapper around this API released. This wrapper is delivered as a minified JavaScript file as well as an NPM package. This package is not available […]

Using Content & Experience Cloud content in a React app.

In this blog I will introduce an integration pattern to download content from Content & Experience Cloud and use that ‘off-line’. By off-line I mean that the content is downloaded before the application is built and is used statically as part of the application instead of dynamically calling the Content & Experience Cloud REST API. This blog […]

Using Content and Experience Cloud with your Oracle Intelligent Bots chatbot

In this blog I will show how you can use the content items from Content and Experience Cloud in your Oracle Intelligent Bots chatbot. Why By using Content and Experience Cloud you can have a dedicated team working on the content with the appropriate business tools to manage the content lifecycle, next to the group that […]

Content & Experience Cloud CaaS REST API: reading

In this blog article I will introduce you to the Oracle Content & Experience Content as a Service REST API. In this blog I will discuss the most used read operations. In a following blogs I will introduce writing content items. This blog discusses a non-public API. The API might change without warning. A Content as […]

Auto-mounting disk on Oracle Public Cloud Compute nodes

In the process of getting your Oracle Public Cloud Compute nodes ready for some real work you often need to attach additional disks to enlarge your disk capacity. The blog shows how you can easily format and mount these disks with a script that is activated through Linux’ SystemD. After you have orchestrated your nodes […]

Optimizing EhCache configuration for WebCenter Sites

In this blog article I would like to share my ideas and strategies that I have used on how to configure WebCenter Sites’ page, pagelet and inCache. I will discuss several trade-offs in configuring the cache. I would not go into detail on ticket caching for CAS. This blog expects that you have a good […]

WebCenter Sites and back-end integration via front-end app and REST

In this blog article I’ll show how to use WebCenter Sites’ Insite Editing capabilities to drop a modern simple JavaScript based application on a web page. This allows web editors to place, remove and possibly style the JavaScript applications without help from the development team (after the initial single setup phase). The web techniques used in […]

Exporting rendered assets from WebCenter Sites

In this blog post I explain how you can publish rendered assets from WebCenter Sites into other systems. This allows assets to be exported in a rendered form, so they can be consumed by external systems, like Oracle Commerce or a Content Distribution Network (CDN). The initial focus of this work was to improve the […]

Integrating back-end services with WebCenter Sites using a lightweight MVC framework

Introduction Many customers want to use Sites as a ‘thin’ rendering framework and mix web content with back-end applications. An example of such a back-end service might be a application that exposes its interface through a REST API. In this blog I explore a pattern to expose the interaction with such a API through Sites. […]

Calling the Render tags from Groovy Templates

The WebCenter Sites API does not have a full Java API for the Render tags. Creating a URL for a page or a blob in a Groovy element is not straight forward. Also calling another Template from a Groovy element or any java code, requires a bridge API. In this article we’ll explorer that API. […]

Lookup up a translated asset with Groovy elements

In our continued exploration of Groovy as an alternative to traditional JSP element to implement the rendering business logic, we step today into multi-dimensionable assets. Or to put it more simply: how do I look up a translated asset in Groovy. The example makes use of the FirstSiteII sample site assets. The assetids reference that […]

Using groovy elements to redirect, set content-type at runtime and set HTTP status codes

With JSP elements it has been difficult to change the HTTP response header at runtime. Though it has been possible to set the Content-Type per SiteCalalog entries, it was not possible to set this dynamically at run time. Now with support for Groovy as a language for WCS Elements it is much easier to implement […]

WebCenter Sites Cluster deployment with a single war

The default installation method for WebCenter Sites in deployments with a large number of cluster nodes  is far from ideal. The installation program requires that each cluster node has its own WAR and its own ContentServer installation directory. This leads to issues around manageability and clusterability of the web application. In this blog I present […]

Sites Page Caching, Remote SatelliteServer, Round-Trips and render tags

As many of you know SatelliteServer comes in two variants: Co-Resident SatelliteServer and Remote SatelliteServer. In this blog I will explain how they differ from a Page Caching perspective, and how that related to ContentServer (Sites) Page Caching. There are also two page fragment caching models in Sites, one is called ContentServer page cache and […]

Sites Vanity URLs and error handling

Recently I worked with a customer that is using WebCenter Sites with the new Vanity URLs feature from version They reported that when a request was initiated for a resource that was not defined, Sites would respond with a 404 response status, but the error handler as defined in the web application was not […]

Single CAS Web Application in a Cluster

Sharing of a single CAS web application is a cluster can be done by externalizing the host.name property in a system property.