Introduction to Alfresco Extensions

Showing results for 
Search instead for 
Did you mean: 

Introduction to Alfresco Extensions

Alfresco Employee
2 0 2,852

Alfresco Extensions - Introduction

The Alfresco product, including the platform repository, built in workflow engine, and the Share user interface, contains a number of so called Extension Points that can be used to customize the product to fit your domain.

Platform Extensions

Extending the platform repository is a fundamental part of any content management project, and in most cases it starts with designing and deploying a custom content model suited to a specific domain. Custom REST APIs and processes are then developed to make use of this domain specific content model.

The following list summarizes the available extension points on the Alfresco Platform/Repository side:

Content Model - describe custom metadata/properties

Data Lists - describe custom metadata/properties as lists

Actions - perform custom actions on content

Workflow - process content in a workflow

Web scripts - create custom REST APIs

Behaviors / policies - perform an action based on an event such as ‘create content’

Bootstrap content - one-off load of content into the repository

Permissions (Custom Roles) - create custom roles

MIME Types - register custom MIME Types

Content Stores - custom content stores, such as a database

Audit Log - custom auditing applications

Metadata Extractors - custom metadata/properties extraction

Admin Console Component - extend the sysadmin console

Content Transformers (and Renditions) - create custom content transformations

Scheduled jobs - execute an action on a schedule

Authentication - create custom authentications mechanisms

Subsystems - plug-in functionality that can be turned on/off, with its own Spring context

Module Components - implement custom functionality as a module, will be loaded when AMP or JAR module is loaded

Ratings - basis for rating functionality, create custom rating schemes

Form Processors - implement custom form processing

Form Processor Filters - intercept the form processing and add metadata/properties

Patches - do something (action, database update etc) once, and log the result

JavaScript root objects - custom JavaScript root objects to be used in actions, workflow, REST API

For more information about platform extensions, including an architecture overview see the online documentation.

Share Extensions

Going hand-in-hand with the platform extensions are the user interface customizations. The custom content models, REST APIs, and processes all need some form of custom user interface.

The following list summarizes the available extension points on the Alfresco Share/UI side:

Share Configuration - configure forms for custom metadata and workflow, no coding

Form Controls - add custom form controls to display some specific metadata/property

Form Field Validation Handlers - custom field validation code

Evaluators - evaluators to control visibility of different parts of the UI

Site Presets - control what is displayed on an Alfresco Share site’s dashboard by default

Share Themes - custom Share themes, style the UI for company standards

Document Library - add custom actions, views, templates etc, to support custom content model

Surf Extension Modules - deploy customizations in a way that can be turned on/off during runtime

Surf Web Scripts - UI side REST APIs

Surf Web Script JavaScript Root Objects - custom JavaScript root objects to be used in custom REST API

Surf Pages - deprecated way of adding custom pages

Surf Dashlets - deprecated way of adding custom dashlets to site and user dashboards

Surf Widgets - adding custom UI components

Aikau Menus - add menus

Aikau Pages - add pages

Aikau Dashlets - add dashlets to site and user dashboards

Aikau Widgets - add components to be used in pages and dashlets

Modifying OOTB Surf Pages - modify out-of-the-box pages

Modifying OOTB Surf Dashlets - modify out-of-the-box dashlets

Modifying OOTB Surf Widgets - modify out-of-the-box components

Modifying OOTB Aikau Pages - modify out-of-the-box pages

Modifying OOTB Aikau Dashlets - modify out-of-the-box dashlets

Modifying OOTB Aikau Widgets - modify out-of-the-box components

Modifying OOTB Surf Web Scripts - customize out-of-the-box REST APIs

For more information about share extensions, including an architecture overview, see the online documentation.


A platform integration is any remote service, application, or client that talks to the Alfresco repository remotely over HTTP.

In most cases you would build your extensions on top of the platform application or the Share user interface. However, there are use cases that does not fit the embedded extension approach very well, and where the remote integration approach makes more sense:

  • Enterprise Application Integration (EAI): providing existing enterprise applications with content management functionality - for example, a CRM system that needs to store and retrieve documents in a central repository
  • WCM integration: providing files and images to a web content management system
  • Mashup: a web application that uses content from many different sources and that also needs to display some file and folder information
  • Custom UIs: this is the use case when the Share UI deviates too much from what the solution requires, so it makes more sense to build a new content management client from scratch
  • Mobile clients: such as iOS and Android applications that manage content


The REST API lets you access content in an on-premise Alfresco repository, and in Alfresco cloud, from your own applications. The API is RESTful, which means each call is an HTTP request, so you don't even need a programming language to try it out. You can just type a URL address in a web browser.

The REST API consists of two parts, the CMIS REST API, which lets you manage and access folders and files in the repository, and the Alfresco REST API, which lets you manage Alfresco-specific features such as ratings and comments, that are not covered by the CMIS standard.

  • Use the CMIS REST API to manage files and folders and their generic properties in the repository. For example, if you want to read, write, modify, create, or delete a file, then this is the API you use.
  • Use the Alfresco REST API to manipulate Alfresco content features that are not part of the CMIS specification. Ratings and comments are two examples of such features, and you can find a full list here.

The quickest way to get started is to use our online REST API Explorer, based on the OpenAPI initiative. It gives you full documentation for each endpoint, and a “Try it out!” button so you can use each method.