Skip to main content

Hello everyone,

In this sprint, we have added a health check endpoint and a button to return to the application. We have also fixed the EML file preview.

You can read more about Indicium's features in the Indicium user manual .

We will keep you updated regularly about Indicium's progress.

 

About Indicium

Two types of the Thinkwise Indicium Application Tier are available:

  • Indicium: for use with the Universal GUI and via APIs. This version uses the full range of Indicium functionality.
    Download Indicium release 2023.3.11 here.

  • Indicium Basic: for use with the Windows GUI and Mobile GUI. This basic version does not support features such as system flows and OpenID.
    There is no Indicium Basic release 2023.3.11.

 

Contents

 

Breaking

File extension whitelist will also apply to downloads and previews

Indicium

The file extension whitelist that can be configured on storage configurations will now also apply to downloads and previews, instead of just uploads. This can be a breaking change if your storage location already contained files that are outside of your configured whitelist. If this is the case, then we recommend either expanding the whitelist or removing that file.

For icons that are stored in the application model in the Software Factory and Intelligent Application Manager, only the following file extensions are allowed: .svg, .png, .jpg, .jpeg, .gif and .bmp. If you are using another file type as an icon for your application, please let us and postpone the installation of this version of Indicium.

 

Indicium - New

Return to the application button

Indicium new

We have added a new button to the Indicium root page: Return to the application. This button will make it easier to go to the application from the root page.

The value of this redirect button can be set in the appsettings.json. In most cases, you would set this to the URL of the Universal GUI. This way the button will redirect the user back to the Universal GUI.

"LoginOptions":
{
"ApplicationRedirectURL": "<your value>"
}
Return to the application from the root page

 

Health check endpoint

Indicium Community idea Application administrator new

We have added a /health endpoint that can be used by monitoring software to periodically check the status of Indicium.

The endpoint can be accessed anonymously. If Indicium has been started successfully, it will return one of the following responses:

200 OK
{
"status": "Healthy"
}
200 OK
{
"status": "Degraded"
}
503 Service Unavailable
{
"status": "Unhealthy"
}
  • A "Healthy" status indicates that Indicium is running as expected as far as the health checks can determine.
  • A "Degraded" status indicates that the connection to the meta source (IAM) works as expected, but one or more application connections are having issues.
  • An "Unhealthy" status indicates that Indicium's connection to the meta source is having issues.

Use in Developer mode

Developer mode

The endpoint returns more information if accessed by a user who has been assigned Developer mode access in IAM. For example, a basic result when everything is healthy:

200 OK
{
"status": "Healthy",
"reports": {
"meta_source": {
"status": "Healthy",
"description": "Status of the connection to the meta source database.",
"duration": 78.8475,
"data": {
"assembly_version": "0.0.0.0",
"result_loaded_from_cache": false,
"sub_reports": {
"iam_connection": {
"status": "Healthy",
"description": "Connection to IAM was successful.",
"data": {}
},
"version": {
"status": "Healthy",
"description": "The metasource version of the database and the one that Indicium started with are the same.",
"data": {
"expected_version": "2023.2.13",
"current_version": "2023.2.13"
}
},
"time_difference": {
"status": "Healthy",
"description": "The time difference between the server Indicium is running on and the database server must be less than 20 seconds.",
"data": {}
}
}
}
},
"application": {
"status": "Healthy",
"description": "Connection status of each application that is currently active in IAM.",
"duration": 168.6951,
"data": {
"sub_reports": {
"itst": {
"status": "Healthy",
"description": "Connection status to the database of application itst.",
"data": {
"application_id": 52,
"application_alias": "itst",
"model_id": "INDICIUM_INTEGRATION_TEST",
"model_version": "MAIN",
"result_loaded_from_cache": false,
"cache_result_expiration": "2023-09-26T15:48:33.9810801Z"
}
},
"sf": {
"status": "Healthy",
"description": "Connection status to the database of application sf.",
"data": {
"application_id": 64,
"application_alias": "sf",
"model_id": "SQLSERVER_SF",
"model_version": "2023.2.13",
"result_loaded_from_cache": false,
"cache_result_expiration": "2023-09-26T15:48:34.0123615Z"
}
}
}
}
}
}
}

The meta_source report contains data about the connection to the meta source that has been configured for this Indicium instance.

  • The assembly_version property contains the full product version of Indicium itself according to the assembly file, for example, "2023.2.13.0-ga9a28b0-0".
  • The agent_id contains the ID that this Indicium instance communicates towards IAM to facilitate agent services such as system flows.
    • It is only present if the Agent:Enabled setting in the Indicium configuration has been set to true.
  • The result_loaded_from_cache property indicates whether or not the current request used a cached result for the entire check.
    • All checks are always performed, even if the endpoint is accessed anonymously.
    • To prevent checks from hitting the database too often, a caching mechanism has been added for some checks.
    • The duration of the cache time can be changed; see the configuration options further below.
  • The sub_reports property contains more information about each sub-check that was done to determine the status of the meta_source check.
    • iam_connection checks if Indicium can still connect to the meta-source database.
    • version checks if the version of the meta-source still matches the one that Indicium found when first starting up.
    • time_difference checks if the time difference between the system clock of the server Indicium is running on does not deviate too much from what the database server reports. If the difference is too great, features such as system flow scheduling might experience issues.
    • If any of these checks report "Unhealthy", there is something wrong with Indicium, and it might need to be restarted in order to continue providing service.

The application report contains data about the connection status to each currently available application within the meta-source.

  • Each sub-report is about an application of which the connection was checked.
  • The ID of the sub-report is either the application's alias or if the alias is not set, the ID of the application.
  • Each sub-report contains the following data properties:
    • The application_id - the ID of the application that was checked.
    • The application_alias - the alias of the application that was checked.
    • The model_id of the application.
    • The model_version of the application.
    • The result_loaded_from_cache property indicates whether this result was currently loaded from the cache.
    • The cache_result_expiration property contains a UTC timestamp indicating when the cached result expires, and the connection will be checked once more.
      • The "Healthy" and "Unhealthy" statuses have different cache durations. Both can be changed in the configuration of Indicium; see the configuration example further below.
  • The sub-reports will indicate either a "Healthy" or "Unhealthy" status. However, the main status of this report will indicate "Degraded" in case one of the applications indicates an "Unhealthy" status. The reason for this is that an application connection failing does not necessarily indicate that the entire Indicium service is running incorrectly. Furthermore, some monitoring software on Azure, for example, will attempt to restart Indicium if the health endpoint returns an HTTP status code outside the 200 range. Since an "Unhealthy" status returns a 503 Service Unavailable response code, this would be the case. However, a restart probably will not fix the issue in case of an application connection failure. Therefore, we return a "Degraded" health status instead to indicate that something is still wrong, but the service will not be restarted because a "Degraded" status also returns a 200 OK HTTP response code.

Below are the configuration options that are available for the health checks and their default values:

{
"HealthCheck": {
"MetaSource": {
"CacheDurationInSeconds": 60
},
"Application": {
"Enabled": true,
"Include": ],
"Exclude": b],
"CacheDurationInSeconds": {
"Healthy": 300,
"Unhealthy": 60
}
}
}
}
  • HealthCheck:MetaSource:CacheDurationInSeconds controls the cache duration of the entire meta source check result.
    • The default value is 60 seconds (1 minute).
  • HealthCheck:Application:Enabled controls whether the application connection check is enabled.
    • The default value is true.
    • If set to false, a report is still added, but it will always return "Healthy".
  • HealthCheck:Application:Include can be used to only perform the application connection check on the provided application aliases/IDs.
    • By default, all active applications are included.
    • If you set this value to e "sf", "example", "96" ], for example, only the connection to these applications will be checked:
      • Alias: sf
      • Alias: example
      • ID: 96
  • HealthCheck:Application:Exclude can be used to exclude certain applications by alias/ID from the check.
    • By default, no applications are excluded
    • Setting this value to o "example", "96" ], for example, would cause these applications to be excluded from the check.
    • This setting gets applied after "Include", so combining the two examples above would result in only the following application connection being checked:
      • Alias: sf
  • HealthCheck:Application:CacheDurationInSeconds:Healthy can be used to control the cache duration of each application connection result that reports a "Healthy" status.
    • The default value is 300 seconds (5 minutes).
    • The minimum value that can be configured is 10 seconds.
  • HealthCheck:Application:CacheDurationInSeconds:Unhealthy can be used to control the cache duration of each application connection result that reports an "Unhealthy" status.
    • The default value is 60 seconds (1 minute).
    • The minimum value that can be configured is 10 seconds.

Community link 

 

Fixed

Fixed non-HTML EML file preview

Indicium fix

We have fixed a problem that prevented previewing .eml files (emails) that have plain text bodies instead of HTML bodies. We have also fixed a related issue where in some cases the file size of attachments would not be displayed correctly. They would erroneously show 0 bytes.

 

Questions or suggestions?

Questions or suggestions about the release notes? Let us know in the Thinkwise Community!