Skip to main content
Version: 10.3.2

Configure health checks

As a central orchestration component, Control Tower is preconfigured to validate its own configuration and collect configuration check data from connected components.

Trigger validation

  • By default, validation runs during Tomcat startup. The result is available in the catalina.out and configuration.log files. To disable it, set health.check.startup.enabled=false in the workfusion.properties.
  • The validation status can be retrieved using the /v1/health-check REST method (no authentication needed). The result is included in the response and the configuration.log file. For more informationn, see the Swagger UI.

Validation checks

ComponentValidation
Control Tower database (DB)Validate DB connection and changelog version.
Secret Management ServiceCheck required fields for SMS (serverApi, platformId, safe, and so on), client certificate, and keypass.
LDAP authenticationValidate URL, bind DN, bind password, user and group base directories, and user/group filters.
Single Sign-On authenticationVerify service provider identifier, username attribute, and SP metadata file. Additionally, check the SignOn and LogOut service locations in the metadata file.
Crowd licensesEnsure configured licenses are available.
S3 storageValidate access with default and additional keys.
Nexus repositoryCheck URL, password, and connectivity via ping. Attempt to retrieve an artifact list.
Mail serverValidate URL and port. Perform a connectivity test (ping).
OCRValidate URL, JWT issuer, and secret. See Perform OCR health check.
RPA Bot ManagerCheck URL, connectivity (ping), and access.
AutoMLValidate URL and connectivity (ping).
ImageMagickVerify the installed version, if applicable.
GhostscriptVerify the installed version, if applicable.
Health check status example in the JSON format
{
"name": "Control Tower",
"status": "OK",
"projectInfo": {
"version": "10.0.0-SNAPSHOT",
"path": "develop",
"revision": "eb21349b8ee31d36fb535dd2d97f4f01a32a3bab",
"shortRevision": "eb21349b"
},
"errorCount": 0,
"warningCount": 0,
"errors": [

],
"warnings": [

],
"infos": [

],
"components": [
{
"name": "Secret Management Service",
"status": "OK",
"projectInfo": {
"version": "1.1.0.1",
"path": "release/1.1.0.1",
"revision": "8b2cabc9836ed7bba3b8bc0d4a927b8660a46f77",
"shortRevision": "8b2cabc9"
},
"errorCount": 0,
"warningCount": 0,
"errors": [

],
"warnings": [

],
"infos": [

],
"components": [

]
},
{
"name": "Control Tower Database",
"status": "OK",
"projectInfo": null,
"errorCount": 0,
"warningCount": 0,
"errors": [

],
"warnings": [

],
"infos": [

],
"components": [

]
},
{
"name": "OCR",
"status": "OK",
"projectInfo": null,
"errorCount": 0,
"warningCount": 0,
"errors": [

],
"warnings": [

],
"infos": [

],
"components": [

]
},
{
"name": "ImageMagick",
"status": "WARN",
"projectInfo": null,
"errorCount": 0,
"warningCount": 1,
"errors": [

],
"warnings": [
"The ImageMagick image conversion library is not found. The OCR pre-processing step cannot be executed correctly. Please, set up the ImageMagick library"
],
"infos": [

],
"components": [

]
},
{
"name": "Ghostscript",
"status": "OK",
"projectInfo": {
"version": "GPL Ghostscript 9.07 (2013-02-14)",
"path": null,
"revision": null,
"shortRevision": null
},
"errorCount": 0,
"warningCount": 0,
"errors": [

],
"warnings": [

],
"infos": [

],
"components": [

]
},
{
"name": "AUTOML-SERVICES",
"status": "OK",
"projectInfo": null,
"errorCount": 0,
"warningCount": 0,
"errors": [

],
"warnings": [

],
"infos": [

],
"components": [

]
},
{
"name": "RPA Bot Manager",
"status": "ERROR",
"projectInfo": null,
"errorCount": 1,
"warningCount": 0,
"errors": [
"Error during check RPA Bot Manager. java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $"
],
"warnings": [

],
"infos": [

],
"components": [

]
},
{
"name": "SQC",
"status": "OK",
"projectInfo": {
"version": "10.0.0.2-SNAPSHOT",
"path": "develop",
"revision": "a82efe4065ef9b05fdb22b3304c1503418687c45",
"shortRevision": null
},
"errorCount": 0,
"warningCount": 0,
"errors": [

],
"warnings": [

],
"infos": [

],
"components": [

]
},
{
"name": "Crowd Licenses",
"status": "OK",
"projectInfo": null,
"errorCount": 0,
"warningCount": 0,
"errors": [

],
"warnings": [

],
"infos": [

],
"components": [

]
},
{
"name": "Mail Server",
"status": "OK",
"projectInfo": null,
"errorCount": 0,
"warningCount": 0,
"errors": [

],
"warnings": [

],
"infos": [

],
"components": [

]
},
{
"name": "S3 Storage",
"status": "OK",
"projectInfo": null,
"errorCount": 0,
"warningCount": 0,
"errors": [

],
"warnings": [

],
"infos": [

],
"components": [

]
},
{
"name": "Single Sign On Authentication",
"status": "OK",
"projectInfo": null,
"errorCount": 0,
"warningCount": 0,
"errors": [

],
"warnings": [

],
"infos": [
"Single Sign On Authentication is not enabled. Use following parameter for enabling: wf.sso.saml.enable"
],
"components": [

]
},
{
"name": "Nexus repository",
"status": "OK",
"projectInfo": null,
"errorCount": 0,
"warningCount": 0,
"errors": [

],
"warnings": [

],
"infos": [
"Found 0 artifact(s) in the Nexus repository. https://velcom2-int1.workfusion.com:443/nexus/"
],
"components": [

]
},
{
"name": "LDAP Authentication",
"status": "OK",
"projectInfo": null,
"errorCount": 0,
"warningCount": 0,
"errors": [

],
"warnings": [

],
"infos": [
"LDAP Authentication is not enabled. Use following parameter for enabling: ldap.enabled"
],
"components": [

]
}
]
}

Health check messages

The section lists health check messages received via API.

Control Tower

Component nameMessage typeMessage text
AUTOML-SERVICESErrorThe base automation URL is empty. Define the secure automl.services.endpoint properties.
GeneralError%component_name is not responding. Check if it is accessible via the URL.
Database connectionErrorDatabase validation failed. Error: %s. Use 'liquibase validate' to see details.
Database connectionErrorDatabase validation failed. %s change sets have not been applied. Use 'liquibase status' to see details.
Database connectionErrorImpossible to call the stored procedure. Ensure that the ct.datasource.username Control Tower user has appropriate permissions.
Database connectionErrorFailed to connect to the database. Reason: %s (an error from the MS SQL driver).
NexusErrorThe Nexus repository username or password is empty. Define the secure nexus.user and nexus.password properties.
NexusInfoFound %number artifacts in the Nexus repository: nexus.url
OCRErrorThe OCR URL is empty. Define the ocr.api.base_url property.
OCRWarningThe JWT issuer or secret is not set. Define the secure jwt.issuer and jwt.secret properties to enable correct operation of the ocr plugin.
S3WarningThe secure s3.access-key or s3.secret-key properties are not set. The S3 file storage might be not accessible. Define the secure s3.access-key or s3.secret-key property.
SSOErrorError parsing the Identity Provider (IdP) metadata file %wf.sso.SSO.idp.file.metadata for Single Sign-On authentication. %Error message%
SSOErrorThe Service Provider ID property is not set for Single Sign-On. Define the secure wf.sso.SSO.sp.metadata property.
SSOErrorThe secure username attribute property is not defined for Single Sign-On. Define the secure wf.sso.SSO.username.attribute=username property. If you do not have the username attribute, contact your Security Administrator.
SSOErrorThe Identity Provider (IdP) metadata file does not exist for Single Sign-On. Request the IdP metadata file from your Security Administrator and copy it to the configured path: %wf.sso.SSO.idp.file.metadata.
LDAPErrorUser and group base directories for the LDAP server are not set. Define the ldap.group.base and ldap.user.base properties for searching users and groups.
LDAPErrorUser or group filters for the LDAP server are not set. Define the ldap.user.filter and ldap.group.filter filters for searching users and groups.
LDAPErrorThe user filter for the LDAP server is not set. Define the ldap.user.filter property for searching users.
LDAPWarningUser groups are not found on the LDAP server. Users cannot log in. Set up the ldap.group.base or ldap.group.filter properties correctly.
LDAPInfoCredentials for the LDAP server system user are not set. Define the secure ldap.bind.password or ldap.bind.dn properties.
LDAPErrorError loading user groups from the LDAP server. Check the ldap.server.url, ldap.bind.dn, and ldap.bind.password secure connection properties.
LDAPErrorThe URL property for the LDAP server is not set. Define the secure ldap.server.url property.
LDAPErrorThe LDAP server URL %URL is invalid. Define the secure ldap.server.url property correctly.
LDAPInfoLDAP integration without groups or roles is enabled.
LDAPInfoLDAP integration with groups is enabled
ImageMagickWarningThe ImageMagick image conversion library is not found. The OCR pre-processing step cannot be executed correctly. Set up the ImageMagick library.
GhostScriptWarningThe GhostScript image conversion library is not found. The OCR pre-processing step cannot be executed correctly. Set up the GhostScript library.

GhostScript is a secondary tool used for OCR. You can ignore this warning if OCR or GhostScript capabilites are not used by the designated Business Process.

LicenseWarningThe %s license is inactive. Manual Tasks are not possible to publish with this license.
LicenseErrorThe problem with the %s license (%s) occurred. Error: %s
RPAWarningThe RPA Bot Manager host is empty. Define the rpa.bot.manager.base.url property.

Workspace

Component nameMessage typeMessage text
LDAP authenticationErrorUser and group base directories for the LDAP server are not set. Define ldap.group.base and ldap.user.base for searching users and groups.
SSOErrorThe Identity Provider (IdP) metadata file does not exist for Single Sign On. Request the IdP metadata file from your Security Administrator and copy it to the configured path: %ws.sso.SSO.idp.file.metadata.
SSOErrorThe Service Provider ID property is not defined for Single Sign-On. Define the secure ws.sso.SSO.sp.metadata property.
SSOErrorThe secure username attribute property is not defined for Single Sign-On. Define the secure ws.sso.SSO.username=mail attribute property. If you do not have a username attribute, contact your Security Administrator.
SSOErrorThe Identity Provider (IdP) metadata file does not exist for Single Sign-On. Request the IdP metadata file from your Security Administrator and copy it to the configured path: %ws.sso.SSO.idp.file.metadata.
SSOErrorError parsing the Identity Provider metadata file.
LDAPErrorUser and group base directories for the LDAP server are not set. Define the ldap.group.base and ldap.user.base properties for searching users and groups.
LDAPErrorError loading user groups from the LDAP server. Check the ws.secure.ldap.server.url, ws.secure.ldap.bind.dn, and ws.secure.ldap.bind.password secure connection properties.
LDAPErrorUser and group base directories for the LDAP server are not set. Define the ldap.group.base and ldap.user.base properties for searching users and groups.
LDAPInfoCredentials for the LDAP server system user are not set. Define the ws.secure.ldap.bind.password or ws.secure.ldap.bind.dn secure properties.
LDAPWarnOne or more groups are not found on the LDAP server. Set up the ldap.group.base or ldap.group.filter properties correctly.
LDAPErrorUser groups defined in the application properties are not found on the LDAP server. Users cannot log in. Set up the ldap.group.base or ldap.group.filter properties correctly.
LDAPErrorUser or group filters for the LDAP server are not set. Define the ldap.user.filter and ldap.group.filter filters for searching user and group properties.
LDAPErrorThe user filter for the LDAP server is not set. Define the ldap.user.filter filter for searching users.
Database connectionErrorDatabase validation failed. Error: %s. Use 'liquibase validate' to see details.
Database connectionErrorDatabase validation failed. %s change sets have not been applied. Use 'liquibase status' to see details.
Database connectionErrorA database connection error occurred. Check the database endpoint, security settings, and connections limits.
Database connectionErrorA database access error occurred. Check that the ws.datasource.username or ws.datasource.password secure database credentials are correct.
Database connectionErrorA database access error occurred. The connection to the database does not exist.

OCR

Component nameIssue typeMessage text
Microsoft SQL ServerError

MS SQL check failed: + e.getMessage()

Possible causes:

  • OCR could not connect to Microsoft SQL Server.
  • Microsoft SQL Server is down.
  • The Microsoft SQL Server node is not reachable from OCR REST.
  • The OCR service is not operational.

Remedy:

Ensure that:

  1. Microsoft SQL Server is running.
  2. The network between Microsoft SQL Server node and OCR REST node is operational.
S3Error

Failed to load a file: + e.getMessage()

Possible causes:

  • S3 is not reachable from OCR REST.
  • The OCR service is not operational.

Remedy:

Ensure that S3 is running.

S3Error

Save operation failed during a storage test: + e.getMessage()

Possible causes:

  • S3 or MS SQL (depending on the active profile in the configuration) is not reachable from OCR REST.
  • The connection is not configured correctly.
  • MS SQL is down.
  • The OCR service is not operational.

Remedy:

Ensure that:

  1. S3 is running.
  2. The connection is configured properly.
RabbitMQError

Receive operation failed during an MQ test: ", e

Possible causes:

  • RabbitMQ or MS SQL (depending on the active profile in the configuration) is not reachable from OCR REST or OCR Worker.
  • RabbitMQ or MS SQL is down.
  • The OCR Worker is down.
  • The OCR service is not operational.

Remedy:

Ensure that:

  1. RabbitMQ or MS SQL is running.
  2. The network between the RabbitMQ or MS SQL node and the OCR REST node is operational.
RabbitMQError

Invalid message payload was received. expected='" + expectedPayload + "' actual='" + actual + "'"

Possible causes:

  • An incompatible version of the OCR Worker is deployed.
  • The Message Queue for the health check has incorrect custom configurations.
  • The OCR service is not operational.

Remedy:

Ensure that:

  1. The version is compatible if the OCR Worker is deployed.
  2. The OCR Worker is running and correctly connected to RabbitMQ.
  3. The Message Queue for the health check is configured properly and is consistent between OCR REST and OCR Worker.
RabbitMQError

No message was received during MQ testing. expected='" + expectedPayload + "'. Workers may not be handling messages in MQ.".

Possible causes:

  • RabbitMQ or MS SQL (depending on the active profile in the configuration) is not reachable from the OCR Worker.
  • The OCR Worker is not operational.
  • An incorrect version of the OCR Worker is deployed.
  • The Message Queue for the health check has incorrect custom configurations.
  • The OCR service is not operational.

Remedy:

Ensure that:

  1. RabbitMQ or MS SQL is running.
  2. The OCR Worker is running and has the correct connection settings for RabbitMQ or MS SQL.
  3. The Message Queue for the health check is configured properly and is consistent between OCR REST and OCR Worker.
RabbitMQErrorFailed to send a message to RabbitMQ. Ensure that RabbitMQ is running.
OCR WorkerErrorNo reports from OCR Workers are found, or reports have expired. Check the number of running OCR Workers. If fewer than required, start additional OCR Workers.
OCR WorkerError

The number of Workers without errors is below the error threshold: " + counts[3])

Possible causes:

  • MS SQL is not reachable from OCR Workers.
  • OCR Workers are not operational.
  • The OCR service might handle the requests slowly or be non-operational.
OCR WorkerWarningThe number of operational OCR Workers is below the warning threshold: " + okCount
OCR WorkerInfoThe number of operational OCR Workers: " + okCount
OCR WorkerError

OCR Worker reports exceeded the expiration threshold (" + errorTtl + " seconds): "Ensure that OCR Workers are running and can access MS SQL.

LicenseInfoRemaining number of pages to be processed under the current OCR license: + volumeRemaining
LicenseWarningRemaining pages to be processed under the current license are below the warning threshold: + volumeRemaining. Contact the WorkFusion support team to obtain a new license.
LicenseWarningYour OCR license is about to expire. Less than 10% of pages remain. You will need to purchase a new license to continue using OCR.
LicenseErrorYour OCR license has expired. You have to purchase a new license to continue using OCR.
LicenseErrorThe OCR license is not found. Ensure that the OCR license is activated.
LicenseError

Failed to load the OCR license. Check the access permissions.