Skip to content
CMO & CTO
CMO & CTO

Closing the Bridge Between Marketing and Technology, By Luis Fernandez

  • Digital Experience
    • Experience Strategy
    • Experience-Driven Commerce
    • Multi-Channel Experience
    • Personalization & Targeting
    • SEO & Performance
    • User Journey & Behavior
  • Marketing Technologies
    • Analytics & Measurement
    • Content Management Systems
    • Customer Data Platforms
    • Digital Asset Management
    • Marketing Automation
    • MarTech Stack & Strategy
    • Technology Buying & ROI
  • Software Engineering
    • Software Engineering
    • Software Architecture
    • General Software
    • Development Practices
    • Productivity & Workflow
    • Code
    • Engineering Management
    • Business of Software
    • Code
    • Digital Transformation
    • Systems Thinking
    • Technical Implementation
  • About
CMO & CTO

Closing the Bridge Between Marketing and Technology, By Luis Fernandez

Customizing Alfresco Workflows: Practical Notes

Posted on June 24, 2015 By Luis Fernandez

I still remember the Friday when a simple approval stalled right before a product launch. Everyone blamed the server. The real issue was a missing property in the workflow model that the task form expected. One tiny mismatch and the whole queue froze. That night taught me this: Alfresco workflows are forgiving until they are not. If you are customizing, you need a clear map of models, forms, and process variables. With that map, a stuck instance becomes a quick fix. Without it, you are in the dark poking at logs while people refresh Share every five minutes.

Practical notes for customizing Alfresco workflows

Start with language. Your content model and your process variables should tell the same story. Keep property names consistent and readable across your BPMN, your model XML, and your forms. If your task needs a due date, define it once, with one name, then reuse that name in the form config and in service tasks. Map business fields to aspects on the document rather than stuffing everything into the process instance. This keeps history clean and future friendly. Add constraints for enums and dates so validation happens before people click Complete. Save booleans for flags that truly control flow. And please, do not overload the package node with random properties. That way lies confusion.

Share is where users live, so invest there. Use share-config-custom to shape start forms and task forms. Keep forms short and dependable and reserve conditionals for things that really change the decision. If two groups use the same task, split the form into tabs with clear labels and help text. Try not to hide required fields behind clever rules. For outcomes, align button labels with sequence flows in your BPMN. Users read buttons. The engine reads your expressions. Keep both in sync. If you need extra routing, add a simple decision task rather than cramming logic into a script field. It is easier to debug a visible step than a clever trick buried in a form evaluator.

Pick the right place for automation. Small glue belongs in JavaScript listeners in the repository. Heavy lifting and external services belong in Java delegates. A quick filename tweak or an aspect toggle is fine in script. A payment call or a CRM update should not run inside the same transaction as your task completion. Use a queue or call out with retry. For emails, keep your Freemarker templates in the Data Dictionary so content people can tweak copy without deploying. Timers are your friend for SLAs. A boundary timer that triggers an escalated path is usually better than a nightly job that scans for late tasks. Fewer moving parts, clearer intent.

Stay close to the engine. The Activiti BPMN modeler exported from your favorite editor should marry well with Alfresco, but keep an eye on names. Every field you reference in an expression must exist at runtime. Loggers help. Turn up org.alfresco.repo.workflow and org.activiti when testing. Keep versions of your process key and do not overwrite a live definition with a silent change. If you must change a running process, add a new version and let old instances finish naturally. In dev, use the Node Browser to peek at variables and the workflow console to cancel zombie instances. It beats guessing. A simple test process with one user task and one script task can save hours on the real one.

Security deserves its own pass. Assignment is more than picking a person. Swimlanes and candidate groups can mirror your LDAP groups, but be careful when groups shift. Favor group assignment with claim rather than pushing every task straight to a person. It keeps work visible and avoids dead ends when someone leaves. For content permissions, change roles on the document as it moves through key steps rather than opening everything at start. A reviewer does not always need write access. Use aspects for state and permissions for control. Keep your email messages short and clear and link directly to the task. People act faster when the path is one click and the form loads with only what they need.

Summary

Customizing Alfresco workflows pays off when you treat the system as a set of small agreements. The model agrees with the forms. The forms agree with the BPMN. The BPMN agrees with the logs and the way people actually work. Keep names consistent. Put the right code in the right layer. Use timers for predictable escalations and templates for friendly messages. Version your processes and watch your variables. If something stalls, check the form config first, then the model, then the workflow instance. Most surprises come from a missing property or a mismatched name. Ship a small workflow, learn, then add the fancy parts. That Friday night, the fix was one property and a restart. It should not have taken hours. Yours will not if you keep these notes close.

Content Management Systems Marketing Technologies Software Engineering Technical Implementation

Post navigation

Previous post
Next post
  • Digital Experience (94)
    • Experience Strategy (19)
    • Experience-Driven Commerce (5)
    • Multi-Channel Experience (9)
    • Personalization & Targeting (21)
    • SEO & Performance (10)
  • Marketing Technologies (92)
    • Analytics & Measurement (14)
    • Content Management Systems (45)
    • Customer Data Platforms (4)
    • Digital Asset Management (8)
    • Marketing Automation (6)
    • MarTech Stack & Strategy (10)
    • Technology Buying & ROI (3)
  • Software Engineering (310)
    • Business of Software (20)
    • Code (30)
    • Development Practices (52)
    • Digital Transformation (21)
    • Engineering Management (25)
    • General Software (82)
    • Productivity & Workflow (30)
    • Software Architecture (85)
    • Technical Implementation (23)
  • 2025 (12)
  • 2024 (8)
  • 2023 (18)
  • 2022 (13)
  • 2021 (3)
  • 2020 (8)
  • 2019 (8)
  • 2018 (23)
  • 2017 (17)
  • 2016 (40)
  • 2015 (37)
  • 2014 (25)
  • 2013 (28)
  • 2012 (24)
  • 2011 (30)
  • 2010 (42)
  • 2009 (25)
  • 2008 (13)
  • 2007 (33)
  • 2006 (26)

Ab Testing Adobe Adobe Analytics Adobe Target AEM agile-methodologies Analytics architecture-patterns CDP CMS coding-practices content-marketing Content Supply Chain Conversion Optimization Core Web Vitals customer-education Customer Data Platform Customer Experience Customer Journey DAM Data Layer Data Unification documentation DXP Individualization java Martech metrics mobile-development Mobile First Multichannel Omnichannel Personalization product-strategy project-management Responsive Design Search Engine Optimization Segmentation seo spring Targeting Tracking user-experience User Journey web-development

©2025 CMO & CTO | WordPress Theme by SuperbThemes