The technology and architecture that powers the dotCMS open source java web content management system.

Enterprise Simplicity

dotCMS has been built using the category-leading technologies that shape modern enterprise and java development.  Our guiding philosophy is that building content driven web sites, portals, intranets and mobile apps in a CMS should not be a difficult process.  Learning curves should be shallow, concepts should be simple and abstractions should be minimized.  This understandability is at the heart of the dotCMS system and the ease of use for developers, coupled with our J2EE enterprise stack makes even complex integrations surprisingly painless. What takes weeks in other systems takes days or even hours in dotCMS.

Open Source Transparency (with available Enterprise Licensing)

As fellow developers, code transparency is as important to us as it is to you.  To this point, the dotCMS codebase is available on github @  Additionally, dotCMS development and support teams use github to communicate features, issues and to manage the software development process in general giving clear visibility into what is happening with the core codebase.

Content as a Service (CaaS) or RESTful Content made easy

All content is manageable and accessible via REST apis. For example, OTB, the content you are reading can be accessed via the standard REST API as either JSON or XML.

Using the REST apis, dotCMS can provide a headless content repository and single-sourced content can be created, searched and reused by multiple external systems.


In dotCMS, all content is indexed in real time by Elasticsearch. Content can be queried and displayed by any number of properties or values. Uploaded files and file content are all full text-indexed and made searchable as well.  The dotCMS Elasticsearch implementation allows for easy faceting, aggregations, suggestions and even geolocation based queries of content and these queries can be performed when rendering pages or via the RESTful interfaces.

Scale Horizontally

dotCMS is composed of multiple services that can be scaled independently of each other.  For example, dotCMS provides a multi-tier cache implementation that can hook into Redis to offload site caching to a series of Redis servers.  The search and indexing layer provided by Elasticsearch can be scaled independently and even made accessible for remote systems to query.  And most importantly, the rendering layer can be driven by a large scale cluster of dotCMS servers or by servers that are running in a shared nothing configuration. 

Plugin and Extend

Osgi, Spring MVC, Angular, React, Jersey, RESTful, Gradle, Elasticsearch, Lucene, Hibernate.  Workflow Actions, REST Endpoints, Content Event Hooks, Rules Engine, Custom Portlets, Viewtools, URLRewrites, Cronjobs.  dotCMS robust plugin architecture makes extending and customizing the platform easy.  OSGi plugins (dynamic) can be deployed at runtime published across environments.   Static plugins are used to manage configuration and to literally override and extend any file, class, feature or function of the dotCMS.  The dotCMS plugin architecture helps you to separate customizations from the core codebase and maintain a clear path when upgrading dotCMS between versions.

Database Independent

Because dotCMS abstracts away all data access, the resulting code is extremely portable across databases. Databases that dotCMS currently support include Oracle, PostgreSQL, SQL Server, MySQL and H2 (recommended only for testing).