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.
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.
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:
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.
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.