Page tree
Skip to end of metadata
Go to start of metadata

Version warning

The content below is for Apache Syncope <= 1.2 - for later versions the Reference Guide is available.


You can create new (and modify existing) template messages to customize the body of notification messages. This can be achieved by creating and / or modifying the notification e-mail template files.

Template files

Templates are defined by their name.

Each template is made up of a couple of files:

  • the rich-text HTML variant (with extension .html.vm)
  • the plain text variant (with extension .txt.vm)

For example, the default optin template is defined by:

  • optin.html.vm
  • optin.txt.vm

Template location

Assuming you have generated and built your own project, existing templates (including the default optin template) are located under


You need to create your own template files (or copy existing to modify) under


Template format

Template files are interpreted using the Velocity engine; check the language reference.

Besides standard expressions, you can use the following Syncope-specific variables:

  • user
    UserTO instance representing the subject of the current notification
  • syncopeConf
    Map<String, String> containing all defined configurations as <key, value> - see how to manage these items
  • recipients
    list of UserTO instances for all the actual recipients of the current notification e-mail
  • events
    list of String containing all the events that could have triggered the current notification

Apache Syncope >= 1.1.5

New Syncope-specific variable were added:

  • type
    type of event being notified
  • category
    category (String) of event being notified
  • subcategory
    subcategory (String) of event being notified
  • event
    event (String) that actually triggered the current notification 
  • condition
    condition (success or failure) under which this notification was sent

Notifications can be related to RESTful method invocation that actually changed an entity (user, role, resource, ...). In this case, additional variables are available:

  • before
    entity value (Object) before actual modification took place 
  • input
    RESTful method arguments (Object[])
  • output 
    entity value (Object) returned by RESTful method

Sample expressions

Attribute value
#foreach($membership in $user.getMemberships())
  • No labels