Teneo Developers

Technology and deployment

Teneo Manager

Log Archive Import

In Teneo 7.2, the Log Data Manager is removed and the functionalities previously available there are moved mainly to Teneo Studio while Teneo Manager now includes the option to import files into a Log Archive.
The import is available when selecting Log Archives in the left-side menu, where - when log archives are configured - the admin user can now import log files and see the information known from the retired Log Data Manager, for example, the configuration of the log archive, the status, pending files, imported sessions and failed items together with the errors table.

Note that due to the removal of the Log Data Manager, various of the Teneo APIs are changed/updated, please see more in the APIs section further below.

Audit logs

Redundant Inquire messages related to Log Archives and Log Data Sources flooding the audit log have lead to a change in Inquire's poll for Log Data Sources and Log Archives which will now be performed every minute.

Teneo Inquire

Work has been performed to avoid concurrent creation of key spaces and indices in clustered setups of Teneo Inquire.

Tech Stack

  • Ubuntu is updated to version 22.04 due to CVE-2021-4048
  • MariaDB is updated to version 10.6.12, also see below
  • LDAP SDK updated to version 6.0.6 due to CVE-2018-1000134
  • Java is raised to version 11.0.17 to fix a vulnerability with Javadoc jQuery

See complete list of Dependencies


For the Teneo 7.2 release, the MariaDB version is updated which has the following implications:

  • MariaDB version changed from 10.3.13 to 10.6.12
  • List of dependencies to install manually changed to socat, libpmem1
  • Name of galera dependency changed to galera-4... (from galera3...)
  • The list of MariaDB dependencies changed to this:
    • galera-4_26.4.14-ubu2204_amd64.deb
    • libmariadb3_10.6.12%2bmaria~ubu2204_amd64.deb
    • mariadb-client-10.6_10.6.12%2bmaria~ubu2204_amd64.deb
    • mariadb-client-core-10.6_10.6.12%2bmaria~ubu2204_amd64.deb
    • mariadb-client_10.6.12%2bmaria~ubu2204_all.deb
    • mariadb-common_10.6.12%2bmaria~ubu2204_all.deb
    • mariadb-server-10.6_10.6.12%2bmaria~ubu2204_amd64.deb
    • mariadb-server-core-10.6_10.6.12%2bmaria~ubu2204_amd64.deb
    • mariadb-server_10.6.12%2bmaria~ubu2204_all.deb
    • mysql-common_10.6.12%2bmaria~ubu2204_all.deb


Studio API

A number of changes comes to the Studio API in Teneo 7.2; new contexts are added for Libraries, Language Objects and Entities each with a number of endpoints for their handling, the folder context is expanded with more endpoints and a list of new endpoints added in the context of Log Data Source allowing to handle augmenters (adorners and aggregators), saved results, test TQL and Groovy queries and so forth and so forth.
Below, please find a table summarizing the changes in the Studio API, and - as always - more details of each endpoint can be found in the Studio REST API swagger document.

ContextNew endpointComment
entitiesNewPOST entities/{solutionId}Create an Entity
NewGET entities/{solutionId}/{entityId}Get an Entity
NewPUT entities/{solutionId}/{entityId}Update an Entity
NewDELETE entities/{solutionId}/{entityId}Delete an Entity
NewGET entities/headers/{solutionId}Get headers of all Entities
NewGET entities/{solutionId}/{entityId}/{version}Get a specific version of an Entity
flowsNewDELETE flows/{solutionId}/{flowId}Deletes the specified Flow
foldersNewGET folders/{solutionId}Returns the root folder
NewPOST folders/{solutionId}Create a folder
NewGET folders/{solutionId}/{folderId}Returns a folder
NewPUT folders/{solutionId}/{folderId}Updates a folder
NewDELETE folders/{solutionId}/{folderId}Deletes a folder
NewGET folders/{solutionId}/{folderId}/{version}Returns a folder version
language-objectsNewPOST language-objects/{solutionId}Create a Language Object
NewGET language-objects/{solutionId}/{languageObjectId}Get a Language Object
NewPUT language-objects/{solutionId}/{languageObjectId}Update a Language Object
NewDELETE language-objects/{solutionId}/{languageObjectId}Delete a Language Object
NewGET language-objects/headers/{solutionId}Get headers of all Language Objects
NewGET language-objects/{solutionId}/{languageObjectId}/{version}Get a specific version of a Language Object
librariesNewPOST libraries/export/begin/{solutionId}Starts export of a library
NewPOST libraries/beginStarts import of a library
NewGET libraries/{libraryId}/{libraryVersion}Returns a library
NewDELETE libraries/{libraryId}/{libraryVersion}Deletes a library
NewGET libraries/assignments/{libraryId}/{libraryVersion}Gets a list of the solutions with the specified library assigned
NewGET libraries/entity/{libraryId}/{libraryVersion}/{entityId}Gets an entity from the library
NewGET libraries/export/result/{taskId}Gets the file of a library export task
NewGET libraries/folder/{libraryId}/{libraryVersion}Returns the root folder of a library
NewGET libraries/folder/{libraryId}/{libraryVersion}/{folderId}Returns a folder from a library
NewGET libraries/language-object/{libraryId}/{libraryVersion}/{languageObjectId}Gets a language object from a library
NewGET librariesReturns a list of libraries, optionally the language can be specified
NewGET libraries/solution/{solutionId}Returns the list of libraries assigned to the specified solution
NewPUT libraries/solution/{solutionId}Updates the list of libraries assigned to the specified solution
NewGET libraries/solution/{solutionId}/{version}Returns the list of libraries assigned to the specified solution at a specified version
log-data-sourcesNewGET log-data-sources/saved-results/{logDataSourceId}Lists all saved results for the Log Data Source
NewPOST log-data-sources/saved-results/{logDataSourceId}Creates a saved result in the specified Log Data Source
NewPUT log-data-sources/saved-results/{logDataSourceId}/{savedResultId}Updates the specified saved results in the Log Data Source
NewDELETE log-data-sources/saved-results/{logDataSourceId}/{savedResultId}Deletes the specified saved result from the Log Data Source
NewGET log-data-sources/saved-results/export/{logDataSourceId}/{savedResultId}Exports the saved result from the Log Data Source to the specified format ('json' or 'csv')
NewGET log-data-sources/saved-results/export-package/{logDataSourceId}Exports all saved results in json from the Log Data Source, packaged in a zip file
NewGET log-data-sourcesGets the list of Log Data Sources
NewGET log-data-sources/{solutionId}Gets a list of Log Data Sources in the specified solution
NewPOST log-data-sources/link/{solutionId}/{logDataSourceId}Links the Log Data Source to the specified solution
NewPOST log-data-sources/unlink/{solutionId}/{logDataSourceId}Unlinks the Log Data Source from a specific solution
NewPOST log-data-sources/overview/begin/{logDataSourceId}Starts the task to obtain the overview of the Log Data Source
NewGET log-data-sources/overview/result/{taskId}Gets the result of the data overview task
NewGET log-data-sources/access-roles/{logDataSourceId}Gets current user's access roles for the specified Log Data Source
NewPOST log-data-sources/augmenters/import/begin/{logDataSourceId}Starts a task to import augmenters contained in a zip file
NewGET log-data-sources/augmenters/import/result/{taskId}Gets the result of the augmenters import task
NewGET log-data-sources/augmenters/export/{logDataSourceId}Exports all augmenters in a zip file
NewGET log-data-sources/augmenters/overview/{logDataSourceId}Gets the data overview
NewPOST log-data-sources/adorners/test/tql/{logDataSourceId}Tests a TQL adorner
NewPOST log-data-sources/adorners/test/groovy/{logDataSourceId}Tests a Groovy adorner
NewGET log-data-sources/adorners/{logDataSourceId}Gets all adorners
NewPOST log-data-sources/adorners/{logDataSourceId}Creates an action to add a new adorner
NewGET log-data-sources/adorners/{logDataSourceId}/{adornerId}Gets the specified adorner
NewPUT log-data-sources/adorners/{logDataSourceId}/{adornerId}Creates an action to update the specified adorner
NewDELETE log-data-sources/adorners/{logDataSourceId}/{adornerId}Deletes the specified adorner
NewPOST log-data-sources/adorners/enable/{logDataSourceId}/{adornerId}Creates an action to enable the specified adorner
NewPOST log-data-sources/adorners/disable/{logDataSourceId}/{adornerId}Creates an action to disable the specified adorner
NewGET log-data-sources/aggregators/buckets/{logDataSourceId}Lists aggregator buckets
NewPOST log-data-sources/aggregators/test/tql/{logDataSourceId}Tests a TQL aggregator
NewPOST log-data-sources/aggregators/test/groovy/{logDataSourceId}Tests a Groovy aggregator
NewGET log-data-sources/aggregators/{logDataSourceId}Gets all aggregators
NewPOST log-data-sources/aggregators/{logDataSourceId}Creates an action to add a new aggregator
NewGET log-data-sources/aggregators/{logDataSourceId}/{aggregatorId}Gets the specified aggregator
NewPUT log-data-sources/aggregators/{logDataSourceId}/{aggregatorId}Creates an action to update the specified aggregator
NewDELETE log-data-sources/aggregators/{logDataSourceId}/{aggregatorId}Deletes the specified aggregator
NewPOST log-data-sources/aggregators/enable/{logDataSourceId}/{aggregatorId}Creates an action to enable the specified aggregator
NewPOST log-data-sources/aggregators/disable/{logDataSourceId}/{aggregatorId}Creates an action to disable the specified aggregator
NewGET log-data-sources/actions/{logDataSourceId}Gets all actions
NewPOST log-data-sources/actions/{logDataSourceId}Creates an action
NewDELETE log-data-sources/actions/{logDataSourceId}Deletes all waiting actions
NewGET log-data-sources/actions/{logDataSourceId}/{actionId}Gets the specified action
NewPUT log-data-sources/actions/{logDataSourceId}/{actionId}Updates the specified action
NewDELETE log-data-sources/actions/{logDataSourceId}/{actionId}Delete the specified waiting action
NewPOST log-data-sources/actions/perform/{logDataSourceId}/{actionId}Performs execution of a specified augmenter action
NewPOST log-data-sources/actions/perform/{logDataSourceId}Performs execution of all waiting augmenter actions
NewPOST log-data-sources/synchronization/begin/{logDataSourceId}Starts the synchronization task and polls the status
NewPOST log-data-sources/synchronization/cancel/{logDataSourceId}Cancel the synchronization of the Log Data Source
NewGET log-data-sources/errors/{logDataSourceId}Gets the synchronization errors in the Log Data Source
NewDELETE log-data-sources/errors/{logDataSourceId}Deletes the synchronization errors in the Log Data Source
NewGET log-data-sources/status/{logDataSourceId}Gets the current status of the Log Data Source
NewPOST log-data-sources/clear/{logDataSourceId}Deletes the content of the specified Log Data Source
NewGET log-data-sources/weeks/{logDataSourceId}Gets the weeks of the Log Data Source
NewGET log-data-sources/revisions/{logDataSourceId}Gets all solution revisions; New error codes: LOG_DATA_SOURCE_EMPTY, LOG_DATA_SOURCE_UNAUTHORIZE

Studio Client

The following new methods related to Log Data Sources are added to the Studio Client, find more details in the Studio Client Javadoc.

New methods

Inquire API

The Inquire API comes with several changes and updates in the Teneo 7.2 release; the changes are listed in the below table and - as usual - the complete swagger documentation of the Inquire API can be found here.

Note that the following contexts are renamed in the 7.2 release:

  • client-data is renamed to saved-results, and
  • engine to solutions.
ContextOld endpointNew endpointComment
ImportRemovedGET import/log-archives
NewGET import/log-archives/overview/{logArchiveId}Gets the Log Archive's overview of sessions per year-week
ChangedPOST import/log-archives/{logarchiveId}POST import/log-archives/start/{logArchiveId}FormParam changed from logDirectory to serverPath
ChangedGET import/log-archives/{logArchiveId}/statusGET import/log-archives/status/{logArchiveId}New return model: LogArchiveStatus
ChangedPOST import/log-archives/{logArchiveId}/stopPOST import/log-archives/stop/{logArchiveId}
ChangedGET import/log-archives/{logArchiveId}/errorsGET import/log-archives/errors/{logArchiveId}
ChangedDELETE import/log-archives/{logArchiveId}/errorsDELETE import/log-archives/errors/{logArchiveId}New return model: List<LogArchiveError>
ChangedGET import/log-archives/{logArchiveId}/errors/{sessionId}GET import/log-archives/errors/{logArchiveId}/{sessionId}
ChangedDELETE import/ldss/{lds}POST import/{ldss}/clear/{lds}
ChangedGET import/ldss/{lds}/statusGET import/ldss/status/{lds}Returns LogDataSourceStatus
ChangedGET import/ldss/{lds}/countGET import/ldss/count/{lds}
RemovedGET import/ldss
RemovedGET import/ldss/{lds}
ChangedGET import/ldss/{lds}/weeksGET import/ldss/weeks/{lds}Returns LogDataSourceWeeks
ChangedPOST import/ldss/{lds}/runPOST import/ldss/begin/{lds}
ChangedPOST import/ldss/{lds}/stopPOST import/ldss/cancel/{lds}
ChangedDELETE import/ldss/{lds}/errorsDELETE import/ldss/errors/{lds}
ChangedGET import/ldss/{lds}/errorsGET import/ldss/errors/{lds}
Client dataRENAMEDclient-datasaved-resultsthe context client-data is renamed to saved-results
Saved resultsChangedGET client-data/{lds}GET saved-results/{lds}New return type List<SavedResult>
ChangedGET client-data/{lds}/delete/{id}DELETE saved-results/{lds}/{savedResultId}
RemovedPOST client-data/{lds}/{id}
ChangedPOST client-data/{lds}/save/{id}POST saved-results/{lds}/{savedResultId}
RemovedGET client-data/{lds}/exists/{id}
NewPUT saved-results/{lds}/{savedResultId}Updates the specified result in the specified Log Data Source
ChangedGET client-data/{lds}/export/{id}GET saved-results/export/{lds}/{savedResultId}
ChangedGET client-data/{lds}/export-packageGET saved-results/export-package/{lds}
engineRENAMEDenginesolutionsthe context engine is renamed to solutions
solutionsChangedGET engine/{lds}/deleteDELETE solutions/{lds}/{solutionName}
ChangedGET engine/{lds}GET solutions/{lds}
ChangedPUT engine/{lds}/{solutionName}PUT solutions/{lds}/{solutionName}
ChangedPOST engine/{lds}/{solutionName}POST solutions/{lds}/{solutionName}
dataChangedGET data/{lds}/overviewGET data/overview/{lds}Endpoint renamed; New return type LogDataSourceOverview
RemovedGET data/aliases
augmentersChangedGET augmenters/{lds}/overviewGET augmenters/overview/{lds}Please see Get augmenters overview below
ChangedGET augmenters/{lds}/exportGET augmenters/export/{lds}
ChangedPOST augmenters/{lds}/importPOST augmenters/import/{lds}Please see Import augmenters from ZIP file below
ChangedPOST augmenters/{lds}/actions/{id}POST augmenters/actions/{lds}
NewPUT augmenters/actions/{lds}/{actionId}Updates an action
ChangedGET augmenters/{lds}/actions/listGET augmenters/actions/{lds}
ChangedGET augmenters/{lds}/actions/{id}GET augmenters/actions/{lds}/{actionId}
ChangedDELETE augmenters/{lds}/actionsDELETE augmenters/actions/{lds}
ChangedDELETE augmenters/{lds}/actions/{id}DELETE augmenters/actions/{lds}/{actionId}
ChangedGET augmenters/{lds}/actions/performPOST augmenters/actions/perform/{lds}
ChangedGET augmenters/{lds}/actions/perform/{id}POST augmenters/actions/perform/{lds}/{actionId}
ChangedGET augmenters/{lds}/revisions/{week}GET augmenters/revisions/{lds}The week parameter has been removed
ChangedPOST augmenters/{lds}/aggregators/test/tqlPOST augmenters/aggregators/test/tql/{lds}
ChangedPOST augmenters/{lds}/aggregators/test/groovyPOST augmenters/aggregators/test/groovy/{lds}
ChangedGET augmenters/{lds}/aggregators/listGET augmenters/aggregators/{lds}
ChangedGET augmenters/{lds}/aggregators/{id}GET augmenters/aggregators/{lds}/{aggregatorId}
ChangedPOST augmenters/{lds}/aggregatorsPOST augmenters/aggregators/{lds}
NewPUT augmenters/aggregators/{lds}/{aggregatorId}Updates an aggregator
ChangedPOST augmenters/{lds}/aggregators/{id}/enablePOST augmenters/aggregators/enable/{lds}/{aggregatorId}
NewPOST augmenters/aggregators/disable/{lds}/{aggregatorId}Disables an aggregator
ChangedDELETE augmenters/{lds}/aggregators/{id}DELETE augmenters/aggregators/{lds}/{aggregatorId}
ChangedGET augmenters/{lds}/aggregators/bucketsGET augmenters/aggregators/buckets/{lds}
ChangedGET augmenters/{lds}/adorners/listGET augmenters/adorners/{lds}
ChangedGET augmenters/{lds}/adorners/{id}GET augmenters/adorners/{lds}/{adornerId}
ChangedDELETE augmenters/{lds}/adorners/{id}DELETE augmenters/adorners/{lds}/{adornerId}
ChangedPOST augmenters/{lds}/adorners/{id}/enablePOST augmenters/adorners/enable/{lds}/{adornerId}
NewPOST augmenters/adorners/disable/{lds}/{adornerId}Disables an adorner
NewPUT augmenters/adorners/{lds}/{adornerId}Updates an adorner
ChangedPOST augmenters/{lds}/adornersPOST augmenters/adorners/{lds}
ChangedPOST augmenters/{lds}/adorners/test/tqlPOST augmenters/adorners/test/tql/{lds}
ChangedPOST augmenters/{lds}/adorners/test/groovyPOST augmenters/adorners/test/groovy/{lds}
authChangedGET auth/delegatedGET auth/login/delegated
ChangedGET auth/delegated/notificationGET auth/login/delegated/notification
tqlChangedGET tql/{lds}/metadataGET tql/metadata/{lds}

Endpoint Get augmenters overview

Old endpointNew endpoint
GET augmenters/{lds}/overviewGET augmenters/overview/{lds}

Old response format


2+- adorners
3|   \- {}
4|      +- String (adorner id)
5|      |   \- {}
6|      |      +- name=(string)
7|      |      +- NotApplied=(number, optional)
8|      |      +- total=(long)
9|      |      +- (string key)=(number count) (progress data)
10|      |      +- ... (more progress data)
11|      +- String (adornerid)
12|          \- {}
13|             +- ...
14\- aggregators
15    \- {}
16       +- String (aggregator id)
17       |   \- {}
18       |      +- name=(string)
19       |      +- NotApplied=(number, optional)
20       |      +- total=(long)
21       |      +- (string key)=(number count) (progress data)
22       |      +- ... (more progress data)
23       +- String (aggregator id)
24           \- {}
25              +- ...

New response format (com.artisol.teneo.inquire.api.models.AugmentersOverview)

Properties formerly named dynamically have been moved into objects with fixed property names.


2+- adorners
3|   +- {}
4|   |  +- id=(string)
5|   |  +- name=(string)
6|   |  +- notApplied=(number)
7|   |  +- total=(number)
8|   |  \- applied
9|   |     +- {}
10|   |     |  +- version=(string)
11|   |     |  +- count=(number)
12|   |     +- {}
13|   |        +- ...
14|   +- {}
15|   |  +- ...
16|   ...
17\- aggregators
18    +- {}
19    |  +- id=(string)
20    |  +- name=(string)
21    |  +- notApplied=(number)
22    |  +- total=(long)
23    |  \- applied
24    |     +- {}
25    |     |  +- version=(string)
26    |     |  +- count=(number)
27    |     +- {}
28    |        +- ...
29    +- {}
30    |  +- ...
31    ...

Endpoint Import augmenters from ZIP file

Old URL pathNew URL path
POST augmenters/{ldsName}/importPOST augmenters/import/{ldsName}

Old response format

{} 2+- String ([type] name [, id]) = String (success or error message) 3 ...

New response format (List<com.artisol.teneo.inquire.api.models.AugmenterImportResult>)

The freely formatted property values have been split into properties with fixed names.


2+- {}
3|  +- id=(String)
4|  +- name=(String)
5|  +- type=(String, "adorner" or "aggregator")
6|  +- status=(String, "ok" or "failure")
7|  \- message=(String, set if status==failure)
8+- {}
9|  +- ...

Inquire Client

For the Inquire Client, the Teneo 7.2 release also brings updates. This includes that all methods are now within their sub contexts' classes, being this a general change of the client. Further, there is now a single client handling import and query server types.

Also note that in the Inquire Client a new methods is added to the QueryPoller object returned by client methods that submit TQL queries: QueryPoller.poll(int timeout) (timeout in seconds). It's a variant of the existing method QueryPoller.poll() (no parameter).

Old methodNew methodComment
ChangedsaveResultscreateSavedResultReturns the created Saved Result
NewupdateSavedResultReturns the updated Saved Result
NewloadSavedResultsgetSavedResultsReturns the list of Saved Results
RenamedeleteSavedResultsdeleteSavedResultRenamed, note "Result" in singular
RENAMEDgetDataOverviewgetLogDataSourceOverviewChanged return model from Map<String, Long> to LogDataSourceOverview
NewgetLogDataSourceStatusReturns a LogDataSourceStatus object
NewgetLogArchiveOverviewReturns the LogArchiveOverview model
NewgetAugmentersOverviewReturns an AugmentersOverview object with overview data for all existing adorners and aggregators
ChangedstartImportReturns void
ChangedcancelImportReturns void
NewcreateAdornerReturns the Id of the created adorner action
NewupdateAdornerReturns the Id of the created adorner action
NewcreateAggregatorReturns the Id of the created aggregator action
NewupdateAggregatorReturns the Id of the created aggregator action
NewgetAdornerReturns the adorner model
NewgetAggregatorReturn the aggregator model
ChangedgetAggregatorsReturns list of aggregator models
ChangedgetAdornersReturns list of adorner models
NewenableAdornerReturns the Id of the created adorner action
NewdisableAdornerReturns the Id of the created adorner action
NewenableAggregatorReturns the Id of the created aggregator action
NewdisableAggregatorReturns the Id of the created aggregator action
NewdeleteAdornerReturns the Id of the created adorner action
NewdeleteAggregatorReturns the Id of the created aggregator action
NewgetActionReturns the action model
ChangedgetActionsReturns list of augmenter actions
NewperformActionExecutes a waiting action; returns a list of warning messages
NewperformActionsExecutes all waiting actions; returns a list of warning messages
NewimportAugmentersReturns a list of import results, one per augmenter
NewexportAugmentersReturns an input stream containing the zip data
NewgetSolutionRevisionsReturns all available solution revisions for the specified Log Data Source
NewlistAggregatorBucketsReturns a list of bucket info objects
NewtestTqlAdornerReturns the test result data
NewtestGroovyAdornerReturns the test result data
NewtestTqlAggregatorReturns the test result data
NewtestGroovyAggregatorReturns the test result data
NewgetLogDataSourceWeeksReturns the weeks of the Log Data Source
ChangedgetErrorsgetErrorListReturns a list of errors of the last session synchronization
ChangedpublishSolutionpublishSolutionPUT when override==true, POST when override==false; returns true if the solution successfully uploaded, otherwise false.
RENAMEDenginesolutionsMoved LDS to be the first parameter in method listSolutions, publishSolution, and deleteSolution

Inquire Groovy Client

Old methodsNew methods

Manager API and client

All classes in the Java module manager-api are moved from package com.artisol.teneo.manager to package com.artisol.teneo.manager.api.


There is a new property in Teneo Manager which enables the setting of CORS origin headers for each client connection. The setting can be found in the Edit screen for each client, from the OAuth2 > Client Management Screen. The default value is allow all origins (*).

KI Resolutions

DescriptionKnown Issue
Fix of "File Resources on recycle bin being lost after Studio upgrade" has been implemented for 7.2; note that the KI still persists on 7.1 and that the workaround described in the Known Issue should still be followed for upgrades to 7.1.KI-678