About the Alfresco Developer Tutorial Series

The “Alfresco Developer” series of tutorials is aimed at developers new to Alfresco who need an overview of the main customization points. The series uses a single business case as an example that covers many different technical aspects of Alfresco. Each tutorial takes you through hands-on customizations, step-by-step, and includes ready-to-build source code so you can follow along using your own local installation.

Much of the information can be found in the official Alfresco documentation, Alfresco’s wiki, in the forums, in Jira, and, of course, in the source–my goal was to pull it together into a cohesive, step-by-step story.

New articles may be added to the series over time. The articles currently in the series are shown below in a rough recommended order of progression:

Getting Started with the Alfresco Maven SDK, Updated April, 2017.

This tutorial shows you how to use the Alfresco Maven SDK to create projects that produce AMPs (Alfresco Module Packages) for both the repository tier and the Alfresco Share tier. AMPs are the recommended best practice for deploying customizations to your Alfresco installation. The Alfresco Maven SDK supersedes the old Ant-based SDK.

Working with Custom Content Types, June, 2007. Updated April, 2017.

This tutorial shows how to extend Alfresco with your own content model, how to configure Alfresco Share to create content that uses your custom content model, and how to use the OpenCMIS API and the CMIS Query Language to create, query, and delete content in your Alfresco repository.

This tutorial introduces the fictitious “SomeCo” company that is planning on using Alfresco for both document management and web content management. SomeCo is going to use Alfresco to manage the authoring process around whitepapers which are subsequently published to their web site. The remaining articles in the series build on the SomeCo example.

“Developing Custom Actions”, January, 2007. Updated April, 2017.

This tutorial builds on the custom content types tutorial. It shows how to create rule actions and UI actions.

“Implementing Custom Behaviors”, September, 2007. Updated April, 2017.

This tutorial builds on the custom content types tutorial by adding support to the content model for user-contributed ratings of whitepapers. The custom behavior is used to calculate the average rating for each piece of rated content.

“Intro to the Web Script Framework”, October, 2007. Updated April, 2017.

The intent of the tutorial is to walk through some hands-on examples using Alfresco’s Web Script Framework. The tutorial shows how to use Web Scripts to create a RESTful API for creating user-contributed ratings.

“Creating Custom Advanced Workflows in Alfresco”, February, 2012. Updated April, 2017.

The tutorial starts by describing high-level workflow concepts and steps for implementing advanced workflows in Alfresco using Activiti and then dives into the details by walking you through an example.

The example extends the “SomeCo Whitepapers” story from earlier articles in the Alfresco Developer series by implementing a business process to enable SomeCo’s engineering team, marketing team, and third-party partners to review whitepapers before being published to the SomeCo web site.

The integration of third-party partners is handled through email–recipients simply click a link to approve or reject the workflow task. The link invokes web scripts to signal the workflow to take the appropriate path in the process.

“Getting Started with CMIS”, November, 2009.

The article first takes you through an overview of the specification. Then, I do several examples. The examples start out using curl to make GET, PUT, POST, and DELETE calls against Alfresco to perform CRUD functions on folders, documents, and relationships in the repository.

Once you’ve felt both the joy and the pain of talking directly to the CMIS AtomPub Binding, I take you through some very short examples using JavaScript and Java. For Java I show Apache Abdera, Apache Chemistry, and the Apache Chemistry TCK.

You might also be interested in “Getting Started with CMIS” on SlideShare.

Source Code

The source code for these tutorials resides on GitHub.


All of the articles in the series are licensed under the Creative Common Attribution-Share Alike 2.5/3.0 License.


Many of you have provided feedback on specific articles or the series as a whole via comments on this blog, in person, or via email. Regardless of the method, feedback is welcome and encouraged.

Alfresco Developer Guide

The response to the Alfresco Developer Series was so positive, I decided to take it one step further. I used several of these tutorials as the starting point for a book which was published in 2008. Most of the material has been re-worked although there is some duplication. The actions and behaviors material changed the most. The book is called Alfresco Developer Guide and is available from Packt Publishing and other book stores. All of my blog posts related to the book are categorized under Alfresco Book. All resources related to the book have been centrally indexed on the Alfresco Developer Guide page.

The second editions of these tutorials and the 2014 updates were written after the book was published.


These are old versions of the tutorials and are no longer being actively maintained.

“Working with Custom Content Types”, June, 2007.

“Working with Custom Content Types, 2nd Edition”, January, 2012. Updated for Alfresco Share and CMIS.

“Developing custom actions”, January, 2007.

“Developing custom actions, 2nd Edition”, January, 2012. Updated for Alfresco Share.

“Implementing custom behaviors”, September, 2007.

“Intro to the Web Script Framework”, October, 2007.

“Advanced Workflows”, November, 2007. Covers jBPM and Alfresco Explorer

“Advanced Workflows, 2nd Edition”, February, 2012. Covers Activiti and Alfresco Share

If you are running the 2nd Edition Advanced Workflows tutorial against Alfresco Community Edition 4.x or higher, please use this code instead of what is linked in the PDF.