Support for documents with schema definitions

document1: DocumentSchema. Document::documentSchema is a reference to a
DocumentSchema containing the schema definition of the document.
It describes the data stored in Document::cmsMeta:
Examples:

* Document::cmsMeta contains the document's meta-data in JSON notation. Then
the schema definition is a JSON schema (http://json-schema.org)

* Document::cmsMeta contains the document's meta-data in XML notation. Then
the schema-definition is an XML schema.

In order to support efficient storage and fast queries the column type
OOCKE1_DOCUMENT.cms_meta can be set (manually) to a native database type.
E.g. when using PostgreSQL, the column type of cms_meta can be changed to
jsonb. As a consequence only JSON-compliant data can then be stored in
Document::cmsMeta. JSON queries are then supported and have then the form:
thereExistsCmsMeta().like("(?j){\"x\":2}").

Script-based importer- and exporter tasks

BPI: RunExportAction. The RunExportAction allows to invoke ExporterTask::runExport()
with a GET request. The parameters param0..param9 are supplied as URL parameters.
The request pattern is
xri://@openmdx*org.opencrx.application.bpi1/provider/:*/segment/:*/exporter/:*/file/:*
The last component is ignored by RunExportAction. However, it should denote a file name
where the extension matches the mime type of the returned file, e.g. test.csv if the
exporter returns as CSV formatted file.

The RunExportAction simplifies client programming. E.g. an R program can download and
parse the file as follows:

workflow1: ImporterTask / ExporterTask. The new classes allow to configure
script-based importer and exporter tasks. ImporterTask:runImport() invokes
the method runImport() of the configured script. runImport() has the
following signature:

Various bug fixes and stability enhancements

SQL Server: SEQUENCE support. The helper _SEQ tables are replace by
SQL server sequences (for more information see
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-sequence-transact-sql).
The following database tables must be migrated to a corresponding database sequence:
* OOCKE1_ACTIVITY_NUMBER_SEQ
* OOCKE1_POSITION_NUMBER_SEQ

CardDAV Servlet Unrecoverable Exception (picture of account defined, but media missing). If an
account's picture attribute is set, but the referenced media is not available (e.g. because it
was deleted) the caldav servlet throws an exception that breaks/aborts the sync process -
depending on the caldav client it's not possible to sync at all anymore until the account is
either fixed or removed from the collection.

Depot: Improvements

The module depot1 comes with a set of new features which support use-cases for
enterprise accounting and depot management:

Aggregated depot reports: they allow to aggregate depot reports at
level depot groups. The transient class AggregatedDepotReportItem aggregates
the DepotReportItems of all depots of a given depot group (recursively).

Web components: Replace JSP by web components

The standard GUI can easily extended wizards. Now, wizards can be implemented
using the latest web technologies. The new directory layout allows a wizard
to be implemented with a web framework of your choice. E.g. the typical layout
of a Polymer wizard looks like:

Database: Improved database tools and schema management

DbSchemaUtils now support custom extensions of the database schema. All
schema scripts META-INF/dbschema-add.sql are loaded and applied to
the core schema. This allows to use the standard DbSchema wizard to manage
and upgrade the database schema without additional administrative tasks.

Self-service password reset

Self-service password reset. The API is extended by the operation UserHome::requestPasswordReset() which

sends (by an alert) a reset and a cancel password reset URL to the user

resets the password to "{RESET}resetToken"

This way:

a base64 hash is stored of the token (and not the token itself)

The account is locked because a login is impossible (a base64 encoded password hash never generates the prefix {RESET}

changePassword() accepts the token with the {RESET} prefix as old password

The three wizards PasswordResetCancel.jsp, PasswordResetConfirm.jsp and RequestPasswordReset.jsp implement the logic on the GUI side:

The reset password process is started by calling the wizard RequestPasswordReset.jsp. If required, a link to the wizard can addded to login-note.html. The wizard presents an input field whereas the user has to enter its fully qualified ID, e.g. guest@CRX/Standard. Custom-specific help and descriptions go to request-password-reset-note.html. The wizard invokes the operation UserHome::requestPasswordReset() which sends out the reset and cancel password URLs and locks the user account.

The reset password URL points to the wizard PasswordResetConfirm.jsp which allows to reset the password.

The cancel password URL points to the wizard PasswordResetCancel.jsp which invalidates the reset token. It resets the password to a 20 char random value. This way the user home stays locked until the reset password process is completed successfully.

JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language. Read on at http://www.json.org/.

Swagger is a simple yet powerful representation of your RESTful API. With the largest ecosystem of API tooling on the planet, thousands of developers are supporting Swagger in almost every modern programming language and deployment environment. With a Swagger-enabled API, you get interactive documentation, client SDK generation and discoverability. Read on at http://swagger.io/.

Ready for the cloud

openCRX is now ready for the cloud. openCRX v3.0 comes with a dockerfile which allows you to install and deploy openCRX in a few minutes on docker-compliant cloud services.

Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications. Consisting of Docker Engine, a portable, lightweight runtime and packaging tool, and Docker Hub, a cloud service for sharing applications and automating workflows, Docker enables apps to be quickly assembled from components and eliminates the friction between development, QA, and production environments. As a result, IT can ship faster and run the same app, unchanged, on laptops, data center VMs, and any cloud.. Read on at https://www.docker.com/.

Other

Many bug fixes and performance improvements. As a consequence, the interfaces of some backend plug-in classes have been changed. The upgrade to version v3.0 requires some adaption of your code in case you have implemented custom-specific backend logic.

Responsive HTML5/Ajax-GUI

A new generic and extremely powerful and feature-rich HTML5/Ajax-GUI (built with the Bootstrap framework) that works on any device. This AJAX-enabled HTML5-GUI supports a wide range of modern browsers, including Chrome, Firefox, Opera, Safari, IE, etc. and it supports any device including mobile devices (iPhone, iPad, Android-based devices, etc.).

MailWorkflow supports external sendmail command

In addition to the already supported JavaMail openCRX newly supports external sendmail commands.
sendmail has several advantages over
JavaMail in high-end environments. sendmail is used by the MailWorkflow
if the system property -Dorg.opencrx.usesendmail.{provider.name} is set
to true, e.g.

-Dorg.opencrx.usesendmail.CRX=true

In this case JavaMail resources must not be configured anymore in web.xml and
the application.server. mail.jar must still be deployed as it is required to construct
RFC822-compliant MimeMessages.

DocumentExporter workflow

The DocumentExporter workflow allows to export document
folders to the file system. A document folder is exported if
a DocumentFolderShare exists for this folder. DocumentFolderShares
can be managed manually with the standard GUI.

Store Media on the file system

It is now possible to store the content of objects
of type org:opencrx:kernel:document1:Media on the file system. The option is activated
with the system property

-Dorg.opencrx.mediadir.{provider.name}={mediadir.name}

The DbSchemaWizard supports the following new functions to manage and migrate existing
media objects in case the option -Dorg.opencrx.mediadir is turned on:

Validate Media: lists all media objects which do not have a corresponding media file
on the file system. These media objects are subject to migration.

Migrate Media to FS: migrate media objects from database to file system, i.e. media
objects stored in OOCKE1_MEDIA.content are exported to the file system. The location
of the media file corresponds to the media object's XRI. This operation is idempotent,
i.e. can be run multiple times (typically in combination with Validate Media). After
successful migration the column OOCKE1_MEDIA.content can be cleared with the SQL
statement UPDATE OOCKE1_MEDIA set content = null;

Migrate Media to DB: Reads all media files on mediadir and stores the content in the
corresponding media object (column OOCKE1_MEDIA.content).

This new feature can reduce the load on your DBMS in a major way (e.g. easy backup of media/blobs with rsync that does not generated any DB-load).

Auto-update of addresses

If authority is set, postal and e-mail addresses
are updated automtically in case the matching authority's addresses changes. With this new feature it is easy to keep addresses of employees of an organization in sync with the organization's address, etc.

The operation checkForAutoUpdate() allows to check whether a given address
qualifies for auto-update.

Web Calendar "CalDavZAP"

Unified Edit / New Object

Unifie edit and new object. The "New..." object form allows to lookup
(with auto-completer) existing objects. If an object is selected, the form
is pre-filled with the selected object values. After editing the form, the
user can then choose either to "Create" (a new) or "Save" (the existing) object.
If no existing object is selected, the user can only choose "Create".

Document Filters

The same "filter pattern" already available for accounts, activities and products is now also available for documents: it is now possible to create filters for documents (Saved Searches). Furthermore, such document filters can be used in SyncFeeds and exported to WebDAV clients.

Cascading Code Fields

Custom Queries in Grids

The search form displays an
additional search field in case PortalExtension.getQuery() returns a non-null query for
the feature 'grid.getReferencedTypeName() + ":" + identity'. openCRX/core contains an implementation for activities:

GUI: Support for IE8, IE9, IE10

Workflow Structuring and Monitoring

Workflows feature a new grid [Pending / Completed Workflows] showing their processes. The list of processes can be filtered and/or sorted by various attributes like execution stage, started at, last execution, etc.:

The workflow handler creates near real-time progress reports. Furthermore, if a process has child processes, these child processes can be monitored as well:

The throughput of the workflow handler has been increased dramatically with the introduction of concurrent execution of atomic workflows.

Bulk Activity and Follow-up Creation

New wizards and workflows support the creation of large numbers of activities and follow-ups. The creation is performed in the background without blocking the GUI. The monitoring of running processes is supported with new wizards and the new workflow structuring and monitoring feature.

For example, an e-mail campaign can be created with the following steps:

create a saved search for accounts (or e-mail addresses) or start with a group of accounts/addresses

create e-mail activities with the bulk wizard based on an e-mail template (placeholders are supported, it is also possible to create a few test activities only to verify layout/etc.

perform follow-ups "Assign" and "Send as mail" with the bulk wizard; optionally you can specify execution date/time in the futur

Support for openCRX remote clients with minimal set of JARs

Refactoring (Wizards, Business-Logic, Backend Optimization)

Wizards were cleaned up by extracting the business-logic and moving it to Java classes. In addition to cleaning up the code lots of optimizations and also bug fixes were done. The openCRX backend was also cleaned up and various optimizations were applied to the code.

openCRX Server Installer (TomEE 1.6, IzPack 5)

The openCRX installer is not based on IzPack 5 (fixes for example freeze issues during the installation process on Windows 7 64bit). Also, openCRX v2.11.0 runs in the latest snapshot of servlet container Apache TomEE 1.6.

XMPP (Jabber) Notifier

Similar to the already existing e-mail and Twitter notifiers, the XMPP (Jabber) notifier can send your openCRX alerts to your personal Jabber account. Supported are all major servers like Google Talk, Jabber.org, etc.

File Browser

The openCRX File Browser comes in handy if you need to fetch log files from your server, e.g. in a hosted environment without easy access by other means. For security reasons the file browser is available to the admin-Root only.

Timers

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

With Actions > Set Timer you can start a wizard that helps you create simple alarm-type timers:

Support for Outlook MSG-Format (including X.500 Addresses)

The Wizard Upload E-Mail now supports the Microsoft-specific MSG-format (including X.500 addresses). It is now possible to import e-mail messages that were saved as files from most e-mail clients (including Thunderbird and Outlook). Of course, it is still possible to import e-mails with IMAP.

New and Enhanced Wizards

openCRX v2.10 comes with many new or enhanced wizards:

Bulk Create Activity Wizard

This wizard can be started from any account group, address group, saved search for accounts or addresses. It facilitates the creation of bulk activities like sending out a newsletter to lots of recipients, setting up phone calls to a target group, etc.
The wizard support the creation of test activities.

Bulk Activity Follow-Up 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.

Business Process Manager Wizard

The enhanced 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:

Create Contact

This wizard makes it easy to create new contacts and link them to other accounts, etc.

Create Legal Entity

This wizard makes it easy to create new legal entity and link them to other accounts, etc.

Upload Document

Wizard to assist in uploading documents to the openCRX document provider:

Upload E-Mail, Upload Media

Similarly, these wizards make it easy to upload e-mails, files, images, etc.

Fetch E-Mail

With this wizard you can connect to a mailbox (POP3, POP3S, IMAP, IMAPS) and
retrieve messages that are then imported into openCRX...

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:

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

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:

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

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.

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:

Reminders

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

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:

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.

...

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 http://openejb.apache.org/apache-tomee.html).

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.

Support for OpenJDK

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,
please enable JavaScript to view e-mail address.

WebDAV

openCRX features a new WebDAV servlet. Once a user has created a Document Profile he/she can connect to openCRX with any WebDAV client to manage documents (including revisions, etc.).

Most Linux distributions support WebDAV out of the box (e.g. Dolphin is a great WebDAV client on Kubuntu, Nautilus works just fine with the Gnome desktop - you might have to install the davfs2 package...), on Windows you might want to use a third-party tool like BitKinex to avoid the quirky implementation of Microsoft's web folders. On the iPhone you might want to look at the Notebooks App.

CardDAV

E-Mail Import with Auto Assign

We taught the openCRX E-Mail importer a few new tricks to facilitate the use of openCRX for E-Mail support. Details of how this new feature works will be available in the openCRX Admin guide once it is available.

Extension Sales Volume Budgets

SalesVolumeBudget is a subclass of Budget which allows to define sales volume
budgets and targets and to collect sales volume contributions.

SalesVolumeBudget allows to define a sales volume target for a set of
accounts in different roles. Supported roles are: customer, sales rep
and broker. The operation assignBudgets() on contracts and contract
positions allows to automatically identify and assign the matching
budgets to contract positions. The operation SalesVolumeBudget.recalcBudget()
iterates all contract positions with an assignment to the invoked
budget. The contract positions are then matched to budget positions
(product and currency / uom must match). In case of a match the
contract position acts as contribution to the budget position which
results in the creation of a simple booking on the assigned depot position.
The contribution type allows to define how the contribution is
calculated: either based on the contract position's quantity or one
of the base amount, amount, discount amount or price per unit values.

Twitter

Configure twitter accounts and timelines on various openCRX objects
such as user homes, accounts, activities, and products. The openCRX Admin Guide contains information about the implementation and configuration of the openCRX Twitter adapter.

IMAP IDLE

The openCRX IMAP servlet now also supports IMAP IDLE, an IMAP feature described in RFC 2177 that allows a client to indicate to the server that it is ready to accept real-time notifications. This comes in quite handy if you have an Android phone and want to receive real-time notifications of new openCRX alerts.

CopyDB with Provider change

Workspaces (GUI Extension)

Workspaces enable you to organize your work any way you like, e.g. based on workflows or thematically. It is easy to create workspaces for contact management, bug tracking and support, etc. Workspaces are managed by the segment admin.

A new left-pane holds the workspace-level dashboard. The
global workspace-level dashboard works like the (horizontal) object-level dashboard:
* dashlets can be added removed by admin or user
* dashlets can be shared by admin by prefixing the label with a *

Activity Replication

Activity replication is supported as follows:
Activities linked with the link type 'is replica of' or 'is replica of
(obfuscated)' are updated whenever the original activity is modified.
The method Activities.replicateActivity() allows to control the
replication at attribute-level. By default, attributes are
replicated as follows:

In case activityLinkType is 'is replica of':

name

description

detailedDescription

misc1

misc2

misc3

location

scheduledStart

scheduledEnd

actualStart

actualEnd

dueBy

priority

In case activityLink type is 'is replica of (obfuscated):

name (from activityLink.name)

description (from activityLink.description)

scheduledStart

scheduledEnd

actualStart

actualEnd

dueBy

priority

Upon creation of new activities the creation of replica can be
controlled with the method Activities.getActivityReplicationDescrs().
E.g. a custom-specific extension of getActivityReplicationDescrs() can
replicate activities created with the creator 'guest~Home~Meetings' with
the creator 'guest~Private~Meetings' and obfuscate the replica.

Shop Front End

We implemented an adapter that can connect to PrestaShop instances and imports all the relevant data (customers, products, prices, orders, etc.) into openCRX - click on the following image below and give it a try (if you register and enter orders, you will be able to find the respective data on the openCRX demo server):

AirSync Server - Enhancements like support for Android 2.2 (Froyo)

AirSync Server - OTA Synchronization openCRX ⇔ Mobile Phones / PDAs

You should consider the openCRX AirSync Server if you don't have an MS Exchange Server or if you intend to get rid of it. With the openCRX AirSync ServerMobile phones and PDAs featuring ActiveSync (i.e. all Windows Mobile devices, all Android devices, Apple's iPhone, RIM's BlackBerry, and most phones by Nokia, SonyEricsson, LG, Samsung, Motorola, etc.) can connect directly to openCRX (acting as an ActiveSync server) to synchronize E-Mails, Contacts and Calendars. If required, you can still synchronize MS Outlook with your mobile phone / PDA. On the other hand, you should probably have a look at the combo Mozilla Thunderbird / Lightning (runs on both Windows and Linux!) which is an excellent Open Source alternative to MS Outlook.

If you don't have an MS Exchange Server or intend to get rid of it, see what openCRX AirSync Server can do for you - various clients (MS Outlook, Thunderbird, Mozilla Calendar, ...) and devices (iPhone, Android-based devices, Windows Mobile devices, ...) can connect directly to openCRX.

AirSync Server - OTA Synchronization openCRX ⇔ Mobile Phones / PDAs

You should consider the openCRX AirSync Server if you don't have an MS Exchange Server or if you intend to get rid of it. With the openCRX AirSync ServerMobile phones and PDAs featuring ActiveSync (i.e. all Windows Mobile devices, all Android devices, Apple's iPhone, RIM's BlackBerry, and most phones by Nokia, SonyEricsson, LG, Samsung, Motorola, etc.) can connect directly to openCRX (acting as an ActiveSync server) to synchronize E-Mails, Contacts and Calendars. If required, you can still synchronize MS Outlook with your mobile phone / PDA. On the other hand, you should probably have a look at the combo Mozilla Thunderbird / Lightning (runs on both Windows and Linux!) which is an excellent Open Source alternative to MS Outlook.

Support for Eclipse Modeling Framework EMF

The EMF project is a modeling framework and code generation facility for building tools and other applications based on a structured data model. From a model specification described in XMI, EMF provides tools and runtime support to produce a set of Java classes for the model, along with a set of adapter classes that enable viewing and command-based editing of the model, and a basic editor (see http://www.eclipse.org/modeling/emf/ for more informationen).

Support for Java 6

Support for HSQLDB v2.0

As far as openCRX is concerned, the performance of HSQLDB 2 is roughly on par with PostgreSQL for smaller data sets, i.e. more than sufficient for lots of use cases. Bitrock installers for openCRX v2.6 include HSQLDB v2.0 as the default database engine.