Change Logs

These change logs document all relevant changes for the Apama product.

The following types of change are included:

  • Feature - New features which are generally available.
  • Preview - Features which are in Public Preview and not yet generally available.
  • Improvement - Small improvements.
  • Announcement - Deprecations, removals or important UI changes.
  • API change - Breaking changes in the APIs.

For a tabular summary of currently deprecated features and also of recent removals, please see Deprecations and removals.

This section covers changes for the current release only. For information about 10.15 see the 10.15 Change Logs, and for information about earlier releases please see Pre-10.15 Release Notes.

Displaying all changes since the previous release


Apama Docker images now use a Debian base image

All Docker images are now based on Debian 12. Support for RedHat (including UBI) images is removed and only the images for Debian will be provided. See Docker images for more details.

The Docker images have been restructured to focus on the needs of Cumulocity users. Only the following three images are provided:

  • apama/apama-correlator - The image for creating microservices for use with Cumulocity, if you need a Java JRE or Python.
  • apama/apama-correlator-minimal - A small image that contains only Apama with no Java or Python.
  • apama/apama-builder - Apama build and test tools for deploying and testing projects to be used with the apama-correlator and apama-minimal images in a multi-stage Docker build.

The following images are discontinued:

  • apama/apama-cumulocity-jre - replaced by apama/apama-correlator.
  • apama/apama-cumulocity-builder - replaced by apama/apama-builder.
  • apama/apama-correlator-suite - no longer supported.
  • apama/apama-builder-suite - no longer supported.

Full details about the available images are available in the AWS Gallery.

ARMv8 (64-bit) support added; ARMv7HF (32-bit) support discontinued

Support for 64-bit ARMv8 has been added. The ARMv8 offering has full feature parity with our x86-64 offering. For instance, unlike our former 32-bit ARM offering, it has access to developer tooling like apama_project and engine_deploy.

Apama no longer provides packages for 32-bit ARMv7HF.

Change to the correlator's time formatting library

The third party library used for date and time formatting from EPL and Analytics Builder applications has been upgraded to the latest version, which may result in some minor behaviour changes to date/time formatting behaviour. The main change is that the abbreviation for September in the en_GB and en_AU locales was changed from Sep to Sept.

In addition, since the package uses the 2022e version of the timezone database, the TimeZone constant CIUDAD_JUAREZ for “America/Ciudad_Juarez” was removed and some changes to Mexico’s daylight savings time are reverted.

Correlator no longer uses a license file

The Correlator no longer requires a license file, and will ignore any license file passed to it. The previous restrictions on memory, CPU and other capabilities related to the license file are no longer enforced. See https://cumulocity.com/docs/legal-notices/license-terms-and-conditions/ for the legal terms for use for Apama.

As a result of this change, the --license and -l correlator arguments are now ignored, along with the equivalent options in YAML configuration and PySys tests. It is recommended to remove references to these options from your application.

The Prometheus sag_apama_correlator_licensedata metric is retained for compatibility purposes (although labels relating to persistence and queries have been removed), and it is recommended to remove use of this metric. The com.apama.correlator.Component.getLicenseMode EPL action in the Management bundle is deprecated and should no longer be used.

Correlator now uses the jemalloc memory allocator in all cases

Jemalloc is now the sole memory allocator, as support for TBB has been dropped in this version. Consequently, custom allocator configurations using LD_PRELOAD and AP_ALLOCATOR are no longer supported.

Correlator plug-in APIs for C++ now use C++23 standards

The Apama C++ APIs now require a C++23-compatible compiler. Debian 12 is packaged with GCC 12.2. User should build with the -std=c++23 flag to work with Apama C++ APIs.

Eclipse development environment replaced by Visual Studio Code

As part of the ongoing modernization of our developer experience this release no longer provides an Eclipse-based development environment for Apama.

Instead, we recommend using the community-maintained Apama Extension for Visual Studio Code.

There are also community-supported editor syntax files for editors such as Vim and Emacs.

To create, manage and deploy Apama projects, you can continue to use the command line tools apama_project and engine_deploy.

As a result of the removal of Eclipse, engine_deploy no longer officially supports use of Eclipse .deploy launch configuration files in an Apama project directory, or passing a .deploy file to engine_deploy on the command line. The behavior of engine_deploy with an Apama directory containing such files is undefined and may change without notice; it is recommended to remove such files and add a YAML configuration file for any correlator startup arguments that are required.

Java upgraded to version 17

This release of Apama comes with Java 17 instead of Java 11. All Java code executed within the correlator is now executed with Java 17, so if you have any custom EPL plug-ins or connectivity plug-ins you should recompile them with Java 17 and test that they are still working as expected.

See online resources such as the JDK release notes for detailed information about breaking changes and new features in Java 17. Some applications may be affected by breaking changes such as the different locale data provided in this version of Java, or may require updates to third party library dependencies, but we expect that in most cases Apama plug-ins will continue to work without changes.

Mapper Codec offers new configuration option

The Mapper Codec now supports a new configuration option to ensure rules are not applied to control messages. New option ignoreControlMessages defaults to false. For more details, see The Mapper codec connectivity plug-in.

MQTT Service support for Cumulocity Notifications 2.0

The Cumulocity Notifications 2.0 connectivity bundle now has support for connecting to Cumulocity MQTT Service. This allows handling of device-native messages sent to the MQTT Service within EPL and Cumulocity EPL Apps. For more details see Cumulocity MQTT Service.

Note: The Cumulocity MQTT Service feature is currently in private preview. If you would like to have it enabled for your tenant or read more documentation about it, please contact Cumulocity IoT Operations.

Removed Apama Ant macros (apama-macros.xml)

The Apama macros for Ant (apama-macros.xml) are removed.

Modern deployments of Apama can usually be performed by simply running the correlator with an appropriate YAML configuration. See Deploying Apama applications with a YAML configuration file. For more advanced cases, we recommend writing a Python script (or a shell script) that uses the Apama command line tools.

Removed connectivity to Distributed MemoryStore, JMS, Kafka, R, MATLAB, IAF, ADBC

Several legacy connectivity features are removed:

  • The Apama “IAF” framework is removed. Any custom codec or transport plug-ins built with it should be rewritten as connectivity plug-ins.
  • The Apama “ADBC” database connector is removed. Write an EPL plug-in if you need to connect to a JDBC data source.
  • The (IAF-based) file adapters (JMultiFileTransport and JFileTransport) are removed. Write an EPL plug-in if you need to access the file system.
  • Distributed MemoryStore is removed, including the Terracotta and BigMemory drivers, the com.apama.correlator.memstore Java API and the --distMemStoreConfig correlator command line option. APIs such as Store.prepareDistributed, Table.subscribeRowChanged and RowChanged that were only used by distributed MemoryStore are also removed. The in-memory and file-based MemoryStore EPL APIs are unaffected.
  • Correlator-integrated JMS support is removed, including the --jmsConfig correlator command line option. If you need to connect to JMS, consider writing a connectivity plug-in.
  • The Universal Messaging connectivity plug-in is removed. If you need to communicate with Universal Messaging, the MQTT connectivity plug-in could be used.
  • The Kafka connectivity plug-in is removed. If you need to connect to Kafka, write a connectivity plug-in covering the features of Kafka that you require.
  • The EPL plug-in for “R” is removed. It is recommended instead to write EPL Python plug-ins for statistical computing use cases previously covered by the R support, making use of the large ecosystem of third-party Python libraries.
  • The EPL plug-in for MATLAB(R) is removed. It is recommended instead to write EPL Python plug-ins for statistical computing use cases previously covered by the MATLAB support, making use of the large ecosystem of third-party Python libraries.

If you have projects from an earlier version of Apama that depend on any of the removed bundles, please use The apama_project tool from your old installation of Apama to remove these bundles before upgrading.

Removed DataView Service, Scenario Service and MemoryStore exposeMemoryView

The bundles for the “DataView Service” and “Scenario Service” are now removed, along with the associated EPL files:

  • ScenarioService.mon
  • MemoryStoreScenarioImpl.mon
  • DataViewService_Interface.mon (and related DataViewService_*.mon files)

If you have projects that depend on these bundles from an earlier version of Apama, please use The apama_project tool to remove the dependency using your old installation of Apama before upgrading.

The MemoryStore feature that allowed a table to be exposed as a DataView/Scenario instance is also removed, along with the com.apama.memorystore.ForwardMemoryStoreUpdatesTo event. Therefore an exception will be thrown when attempting to set the exposeMemoryView or exposePersistentView options in the MemoryStore Schema event. The MemoryStore bundle no longer depends on the ScenarioService bundle.

The Scenario Browser user interface for visualizing Scenario and DataView instances is also removed.

Removed Deprecated Environment Variables

This release removes the following legacy apama_env variables that are no longer relevant:

  • APAMA_CORRELATOR_HOME
  • APAMA_MANAGEMENT_HOME
  • APAMA_DEV_HOME
  • APAMA_PDE_HOME
  • APAMA_COMMON_JRE
  • APAMA_LIBRARY_VERSION
  • APAMA_PLATFORM

These variables were unused in the current architecture and are now removed for clarity and maintainability.

Removed Java, C++ and .NET APIs including Engine Client and Scenario Service

This release removes several public APIs that were historically used for managing correlators and sending/receiving events:

  • The Java APIs for Engine Client, Engine Management, Event Service, Scenario Service, Generic Management. This includes the com.apama.engine, com.apama.event, com.apama.net, com.apama.util and com.apama.services packages.
  • The C++ Engine Client API. This includes the com::apama::event and com::apama::engine namespaces, engine_client_cpp.hpp and client_status_names.hpp.
  • The C++ threading primitives for old C++ compilers in sag_connectivity_threading.h. Instead, use C++ standard library features such as std::thread, std::lock_guard/std::unique_lock/std::mutex and std::counting_semaphore. If you were relying on this header file to transitively include standard headers such as <unistd.h> (which defines close()), <pthread.h>, <semaphore.h>, or <signal.h> you can fix any compiler errors by adding #include for these directly.
  • The C++ APIs related to the IAF including AP_Logger.h, AP_TimestampSet.h and NormalisedEvent.h.
  • The entire .NET API, including Engine Client, Event Service and Scenario Service.

Instead of these APIs, modern application should use the Command Line Tools for management tasks, and connectivity plug-ins such as the HTTP client/server or the Cumulocity plug-in for sending and receiving events.

Removed manual generation of jmon-jar.xml and @Application annotation

The @com.apama.jmon.annotation.Application annotation used for Java EPL plug-ins is deprecated, and replaced by an identical annotation with a more suitable name: com.apama.epl.plugin.annotation.ApplicationJar. Please update your Java EPL plug-in code.

In addition, it used to be necessary to create a META-INF/jmon-jar.xml file when using Java EPL plug-ins, either manually, or by running the com.apama.jmon.annotation.DirectoryProcessor or com.apama.jmon.annotation.JarProcessor command line tools (possibly from within an Ant task such as <annotate-jar>), which generated this file from annotations such as @Application or @EPLPlugin.

A Java annotation processor has been added which will now generate the required XML file automatically from the annotations during compilation, so additional steps are no longer necessary. Therefore:

  • If you were using the DirectoryProcessor or JarProcessor tools to generate jmon-jar.xml you should remove them. To ease migration these tools are not removed, but no longer perform any action when executed.
  • If you were supplying the jmon-jar.xml file manually, you should remove this and instead add the @ApplicationJar and @EPLPlugin annotations to your Java source files to supply the same information.
  • In the unlikely situation that you already have the annotations in your Java source but were also explicitly adding a jmon-jar.xml file to the jar file, you may in some cases encounter errors such as duplicate entry: META-INF/jmon-jar.xml in which case removing the jmon-jar.xml will solve the problem.

In all cases, make sure that when you create the JAR package you include all files from the Java compilation output (including the XML file under META-INF/*).

See Writing EPL plug-ins in Java for more information about the annotations.

Removed PySys extensions for Docker (apama.docker)

The PySys helper classes provided by Apama for interacting with Docker are removed. This includes apama.docker.apamadocker, apama.docker.framework and apama.docker.kubernetes which might be used in some PySys-based testcases. Instead, consider using one of the third party libraries or SDKs that support working with Docker and Kubernetes from Python code.

Removed Queries, JMON and Dashboards

This release removes the following legacy functionality:

  • Apama queries (that is, .qry files) are removed. Rewrite any queries-based application using Analytics Builder or EPL.
  • Apama’s in-process API for Java (JMon) is removed. It is recommend that you now use EPL plug-ins written in Java instead of JMon applications. The JMon migration guide in our Tech Community will help you to port your JMon applications.
  • Apama dashboards are now removed.

Removed support for persistent EPL monitors

The EPL feature of “persistent” monitors and the correlator persistence feature are now removed. This also includes the com.apama.memorystore.Store.prepareCorrelatorPersistent API, the com.apama.correlator.Persistence event, and correlator command line options such as -P, -XrecoveryTime, and -noDatabaseInReplayLog. The associated Prometheus and engine_watch statistics have also been removed.

Users of persistent EPL are recommended to instead write EPL to explicitly store any required application state either in the Cumulocity platform, using explicit MemoryStore storage on disk, or by writing a custom EPL plug-in.

The persistent keyword, and onBeginRecovery() and onConcludeRecovery() actions should no longer be used in EPL applications. The behavior of code that uses these is undefined and may change without notice.

The EPL memory profiler output no longer has a column named Persistent.

Removed third party jars and Logger and TimestampSet classes potentially used by Java plugins

Several third party Java libraries have been removed from the installation /lib directory. A few of these jars were also included on the classpath of the Apama correlator (since they were in the ap-util.jar manifest), and therefore it is possible your EPL or connectivity plug-ins could be implicitly relying on them. These jars are related to XML serialization, and support for using the Log4j v1 API:

  • jaxb-api.jar
  • jaxb-osgi.jar
  • javax.activation.jar
  • log4j-1.2-api.jar

If you were using the version of these jars included implicitly, you now need to provide your own copy and add it to the classpath of your plug-ins.

The com.apama.util.Logger class is no longer permitted for use in customer plug-ins, and any plug-ins using it should be changed to use the SLF4J logger instead. For example: private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger("plugins.MyPlugin");.

The com.apama.util.TimestampSet class has been removed; since this was primarily used for IAF plugins, no replacement is provided.

Support for Debian replaces installation packages for Windows, RedHat and Ubuntu

In this release, Apama focuses its OS support on Debian 12. As a result, Apama packages for Windows and other Linux distributions, such as Red Hat (including UBI) and Ubuntu, are no longer provided. Consequently, no zip or tar.gz files are provided. Additionally, the “Docker packaging kit” which allowed the creation of custom images containing Apama using a Dockerfile provided by Apama has been removed.

In most cases the (Debian-based) Docker images should be used. For cases where it is necessary to install Apama onto an existing machine, a Debian package repository is provided. For information about development environments for Apama, see the note about the development environment changes.

The Docker images listed below are equivalent to the corresponding new installation packages.

Docker image Installation Package
apama/apama-correlator apama-server with recommended dependencies
apama/apama-correlator-minimal apama-server without recommended dependencies
apama/apama-builder apama-dev

In addition, the apama meta-package is supplied to install all Apama components together.

The Apama directory layout has also been updated to reflect these changes. It is now located at /opt/cumulocity/Apama, replacing the previous path /opt/softwareag/Apama.