<< New Features in openCRX v2.9 >>

In addition, there are various technical enhancements, "under the hood" features if you want:

Customer Care Wizard

A new wizard that supports the most important use cases for customer care:

  • Search account
  • Show activities overview
  • Create new activity
  • Perform activity follow up

Customer Care Wizard

Permissions must be granted by the segment admin for the users to show activities and activity creators:

  • Grant permission for creator on form 'Search Contact'
  • Grant permission for creator on form 'Contact'
  • Grant permission for process state:
    name=CustomerCareWizard:activityProcess/id/processState/[:* | id]

The wizard can be launched on:

  • Activity group: in this case 'Contact.Search' searches within the reporting contacts of the activities of the activity group.
  • Account: in this case 'Contact.Search' searches within the account members.
  • User home: in this case 'Contact.Search' searches within all contacts.


GUI Element-Level Security

GUI element-level security allows to set show and edit permissions for the following GUI elements:

  • Fields
  • Field groups
  • Menu items / operations
  • Grids

Permissions are defined per Role. One or more role can be assigned to a user's principal. Roles are created by the segment administrator in Security policies > Roles. Segment administrators (e.g. admin-Standard) can then easily view and manage permissions with the new wizard Manage GUI Permissions:

Wizard Manage GUI Permissions


Enhanced Business Processes

The openCRX business process engine has received a major boost with openCRX v2.9.0. The most important enhancements are the following ones:

  • Business Process Definition with SCXML (see Wikipeida or Apache Commons)
  • Business Processes Importer (imports SCXML)
  • Business Process Exporter (produces SCXML - see example process)
  • Nested Activity Processes - it is now possible to nest activity processes (no limitation) with the help of Sub Activity Transitions (see UML class diagram for details)

Activity Process
Activity Process

The new wizard "Business Process Manager" assists users in managing instances of complex/nested activity processes. The wizard can be started from any activity and it will collect all other activities that belong to the same process instance and display them in a visualization of the activity process. It is possible to create new sub activities with a single click and adding follow-ups to existing activities can also be done right within the wizard:

Business Process Manager


Wizards for BulkCreateActivity and BulkActivityFollowUp

These two new wizards enable users to create activities with a bulk operation (e.g. to create a campaign) and perform bulk follow ups:

  • BulkCreateActivity wizard:
    Wizard for bulk activity creation based on a "Saved search - Account". A typical use-case for this wizard is to create an activity for each account which is member of a campaign (defined by the "Saved search - Account").
  • BulkActivityFollowUp wizard:
    The wizard performs bulk follow ups on a set of activities. The wizard is launched on an existing activity which serves as template for selecting the activities to process by assigned activity groups and process state.


Contract Groups, Contract Creators, new Contract Types

The openCRX Model was enhanced in a major way to support generic types of contracts, sales volume contracts, etc. Also, similar to Actiivty Creators and Activity Groups, there are now Contract Creators (to create contracts) and Contract Groups (to group/classify contracts) available.

Here are the most important UML models (click on the thumbnails to see larger versions of the class diagrams):

Contract Creator Contract Creator
Contract Group Contract Group
Generic Contract Generic Contract
Sales Volume Contract Sales Volume Contract
Sales Contract Sales Contract
Sales Order Sales Order


Reporting and Output Management

Use the existing method exportItem() to export/render data. Overriding Exporter.exportItem() allows the implementation of custom-specific rendering. As an example you can look at the openCRX Sample project, where the method exportItem() is implemented in the class org.opencrx.sample.backend.Exporter.


Grid Actions

Default Grid Actions

It is now possible to add custom-specific actions to the grid menu 'Actions'. The following default actions are added for openCRX:

  • Export --> XML
  • Export --> XLS (Excel Sheet)

The above actions either export the current grid page or the selected object(s).


Move Address, Merge Address

The new operation move address allows users to move an existing address to a new target account and update the following address references:

  • E-Mail sender
  • E-Mail recipients
  • Address group members

The operation performs the following steps:

  • clone source address to target account if it does not already exist
  • update references
  • disable source address

Similarly, the new operation merge address allows users to udpate references pointing to a source address (to be disabled) and let them reference a new target address.


Address Authority

This new attribute enables you to assign addresses to "authority" accounts. Think of the authority of an address as an account that "manages" or "owns" the respective address, e.g. the employer assigning e-mail addresses out of a particular domain to individual employees, etc. Even though such an e-mail address "is assigned to" to the respective employee, the employee doesn't really own this e-mail address (e.g. if an employee moves on to a different employer the previous employer (the "authority") will disable the employee's e-mail address.

Similarly, there are plenty of use cases for telephone numbers, postal addresses, etc.


The new grid [Assigned Addresses] available on all accounts lists all addresses that reference the current account as authority. Hence, it is very easy for an authority to manage such addresses:




Starting with openCRX v2.9.0 you can set reminders on any openCRX object. The simplest reminder works like an alarm that goes off at a certain time and (depending on your subscriptions) creates an alert, sends e-mail message, posts a twitter message or takes any other action that is available. It is possible to define repeating reminders with arbitrary intervals:


With Actions > Set Reminder you can start a wizard that helps you create simple alarm-type reminders.


Search Criteria for Group Membership

It is now possible (without defining SQL queries) to create account and/or address filters that select accounts/addresses based on an existing account membership, e.g. in oder to select all employees of a company or all e-mail addresses of members of a particular account group, etc.:

Account Membership


Indexer Support for MS Office Open XML File Formats

The openCRX Indexer now supports MS Office Open XML File Formats, e.g.

... in addition to the many already supported file formats:


Wizard DB copy

This new wizard can be invoked as root administrator (admin-Root). It allows to copy data from a source database instance to a target database instance. It provides the same functionality as the command-line version.

With this wizard you can - for example - copy all your data from a MySQL database to a PostgreSQL database directly from the openCRX GUI:

DB copy wizard


Wizard DB schema validate/upgrade

The wizard can be invoked as root administrator (admin-Root). It allows to create, validate, upgrade and migrate an openCRX database. The database can either be specified by its JNDI name or by a JDBC connection URL.

DB  schema wizard

Validation performs the following checks:

  • Test existence of tables
  • Test columns of all tables (missing / extra columns)
  • Test existence of views
  • Test existence of indexes
  • Test existence of sequences
  • Test existence of preference entries (missing / extra entries)

Fix allows to fix the reported issues:

  • Creation of tables
  • Creation of missing columns
  • Creation/replacement of views
  • Creation of indexes
  • Creation of sequences
  • Creation/replacement of preference entries

Fix never never drops or removes any database objects or rows. So you never loose data. However, because fix may modify your schema it is recommended to backup before upgrading / fixing a database. It is possible to run fix on an empty database schema. In this case all tables, views, indexes and sequences are created.

Known issues:

  • In some cases the CREATE OR REPLACE VIEW statements may fail for several reasons (table with the same name exists, non-compatible column types, etc.). In this case it is recommended to remove all views and run fix. It recreates all views.


openCRX Server Installer with Apache TomEE

Apache TomEE, pronounced "Tommy", is an all-Apache stack aimed at Java EE 6 Web Profile certification where Tomcat is top dog (more information about Apache TomEE is available from

The new openCRX Server installer includes Apache TomEE so that the whole installation process can be completed in one go and there is no more need to deal with a Tomcat installer.

RunAs Permissions

The AccessControl plug-in supports runAs permissions. runAs permissions allow to run object access operations (read, update, delete) under a different principal than the requesting principal. This feature allows users to define deputies for certain use cases, e.g. a user can allow an assistant to manage his/her calendar.

Two different formats are supported:

  • object:authority/object path@runAsPrincipal
    e.g. 'object:org.opencrx.kernel.activity1/activityTracker/{id}@user1'
    The meaning of this permission is: "run the object access operation for the specified object as user1'.
    An object permission defined for an activity creator implies runAs permissions for all activities created with this creator.
  • groupMembership:authority/group path@runAsPrincipal
    e.g. 'groupMembership:org.opencrx.kernel.activity1/activityTracker/{id}@user1'
    The meaning of this permission is: "in case the object is member of the specified group, run the object access operation as user1".

Permissions are created as follows:

  • Login as segment admin
  • Navigate to Security Policy > Privileges
  • Create a new privilege and set name to the permission name,
    e.g. 'object:org.opencrx.kernel.activity1/activityTracker/{id}@user1'
  • Create a new role or select an existing one
  • Create a new permission and set the name to the permission name,
    e.g. 'object:org.opencrx.kernel.activity1/activityTracker/{id}@user1'. Set action to 'runAs'.
  • Assign to role to a principal

The AccessControl plug-in handles runAs permissions as follows:

  • object: In case the XRI of the accessed object matches the permission's path pattern, the object access operation is run as the principal specified by the permission.
  • groupMembership: In case the accessed object is member of a group where the XRI of the group matches the permission's path pattern, the object access operation is run as the principal specified by the permission. groupMembership currently only works for activities / activity groups.


Extended OpenCRX Object

Many more objects than in previous openCRX versions are now full-blown openCRX objects:

  • ActivityEffortEstimate
  • ActivityGroupAssignment
  • ActivityParty
  • CalendarDay
  • PriceModifier
  • ProductConfiguration
  • ProductConfigurationTypeSet
  • ProductReference
  • ResourceAssignment
  • Vote

The advantages are manifold, including user-specified attributes (i.e. no need to extend the UML model and the database to beef up standard objects with your own attributes; "adding" a new attribute to an OpenCRX Object is a matter of customizing only).


Mapping of E-Mail Recipients / Attendees

Unknown e-mail recipients were mapped to the generic e-mail address "UNKNOWN" in previous versions of openCRX. Starting with openCRX v2.9, an e-mail address object is created for such recipients and then assigned to the segment administrator. The address can be moved with Move Address to the proper account at a later time.

Additionally, there is also an enhanced ICAL mapping of attendees. The new attribute emailHint was added to AbstractActivity party. The hint allows to have multiple activity parties pointing to the same account. The hint serves as e-mail address selector in case the account has multiple e-mail addresses. The ICAL import sets the hint field for each imported ATTENDEE, whereas the ICAL exporter/mapper uses the hint to generate the ATTENDEEs.

When importing an ICAL and the e-mail address of an ATTENDEE is unknown, an e-mail address object is created for such attendees and then assigned to the segment administrator.


Lightning's Meeting Attendee Status NON-PARTICIPANT

We newly map the status code NON-PARTICIPANT, which is used by Lightning (Mozilla Calendar Project) to indicate that a meeting participant was removed, to the openCRX status code "N/A". This ensures, that it is possible to "remove" attendees from an event directly in Lightning without actually "deleting" such attendees in openCRX..


Enhanced VCARD Importer

The openCRX VCARD importer was enhanced so that it accepts mime types and file extensions. It is also possible to import minimalistic VCARDs. Some of these enhancements were propagated to other importers as well.


Persistence Configuration

The openCRX persistence configuration was moved to

  • src/jar/opencrx-resources.jar/META-INF/
  • src/jar/opencrx-resources.jar/

The table prefs_preferences is not required anymore.


Code Reload on-the-fly

New codes can be reloaded on-the-fly, i.e. it is not required to restart openCRX anymore.


GridMoveUpObjectAction, GridMoveDownObjectAction

The new grid actions allow you to change the position of values for multi-valued, ordered reference features (e.g. you can now change the ordering of contracts referenced by an activity):



Support for OpenJDK

It is now possible to run openCRX with OpenJDK (required is at least v1.6.0_23).

OpenJDK is an open-source implementation of the Java Platform, Standard Edition.


New Language: xx_YY

openCRX is already available in many languages and more of them are in the pipeline. At this time we do not know yet which additional languages will be ready for inclusion in this openCRX release, but any news will be posted without delay. If you want to contribute and are ready to translate a bunch of strings into a new language, .