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.outandconfiguration.logfiles. To disable it, sethealth.check.startup.enabled=falsein theworkfusion.properties. - The validation status can be retrieved using the
health-checkREST method (no authentication needed). The result is included in the response and theconfiguration.logfile.
The complete collection of WorkFusion REST API endpoints is available in WorkFusion's Swagger API specification. To access the specification, log in to your Work.AI Control Tower instance and use the following URL:
https://your-instance.workfusion.com/workfusion/api/swagger-ui.html
Validation checks
| Component | Validation |
|---|---|
| Control Tower database (DB) | Validate DB connection and changelog version. |
| Secret Management Service | Check required fields for SMS (serverApi, platformId, safe, and so on), client certificate, and keypass. |
| LDAP authentication | Validate URL, bind DN, bind password, user and group base directories, and user/group filters. |
| Single Sign-On authentication | Verify service provider identifier, username attribute, and SP metadata file. Additionally, check the SignOn and LogOut service locations in the metadata file. |
| Crowd licenses | Ensure configured licenses are available. |
| S3 storage | Validate access with default and additional keys. |
| Nexus repository | Check URL, password, and connectivity via ping. Attempt to retrieve an artifact list. |
| Mail server | Validate URL and port. Perform a connectivity test (ping). |
| OCR | Validate URL, JWT issuer, and secret. See Perform OCR health check. |
| RPA Bot Manager | Check URL, connectivity (ping), and access. |
| AutoML | Validate URL and connectivity (ping). |
| ImageMagick | Verify the installed version, if applicable. |
| Ghostscript | Verify 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 name | Message type | Message text |
|---|---|---|
| AUTOML-SERVICES | Error | The base automation URL is empty. Define the secure automl.services.endpoint properties. |
| General | Error | %component_name is not responding. Check if it is accessible via the URL. |
| Database connection | Error | Database validation failed. Error: %s. Use 'liquibase validate' to see details. |
| Database connection | Error | Database validation failed. %s change sets have not been applied. Use 'liquibase status' to see details. |
| Database connection | Error | Impossible to call the stored procedure. Ensure that the ct.datasource.username Control Tower user has appropriate permissions. |
| Database connection | Error | Failed to connect to the database. Reason: %s (an error from the MS SQL driver). |
| Nexus | Error | The Nexus repository username or password is empty. Define the secure nexus.user and nexus.password properties. |
| Nexus | Info | Found %number artifacts in the Nexus repository: nexus.url |
| OCR | Error | The OCR URL is empty. Define the ocr.api.base_url property. |
| OCR | Warning | The JWT issuer or secret is not set. Define the secure jwt.issuer and jwt.secret properties to enable correct operation of the ocr plugin. |
| S3 | Warning | The 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. |
| SSO | Error | Error parsing the Identity Provider (IdP) metadata file %wf.sso.SSO.idp.file.metadata for Single Sign-On authentication. %Error message% |
| SSO | Error | The Service Provider ID property is not set for Single Sign-On. Define the secure wf.sso.SSO.sp.metadata property. |
| SSO | Error | The 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. |
| SSO | Error | The 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. |
| LDAP | Error | User 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. |
| LDAP | Error | User 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. |
| LDAP | Error | The user filter for the LDAP server is not set. Define the ldap.user.filter property for searching users. |
| LDAP | Warning | User groups are not found on the LDAP server. Users cannot log in. Set up the ldap.group.base or ldap.group.filter properties correctly. |
| LDAP | Info | Credentials for the LDAP server system user are not set. Define the secure ldap.bind.password or ldap.bind.dn properties. |
| LDAP | Error | Error loading user groups from the LDAP server. Check the ldap.server.url, ldap.bind.dn, and ldap.bind.password secure connection properties. |
| LDAP | Error | The URL property for the LDAP server is not set. Define the secure ldap.server.url property. |
| LDAP | Error | The LDAP server URL %URL is invalid. Define the secure ldap.server.url property correctly. |
| LDAP | Info | LDAP integration without groups or roles is enabled. |
| LDAP | Info | LDAP integration with groups is enabled |
| ImageMagick | Warning | The ImageMagick image conversion library is not found. The OCR pre-processing step cannot be executed correctly. Set up the ImageMagick library. |
| GhostScript | Warning | The 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. |
| License | Warning | The %s license is inactive. Manual Tasks are not possible to publish with this license. |
| License | Error | The problem with the %s license (%s) occurred. Error: %s |
| RPA | Warning | The RPA Bot Manager host is empty. Define the rpa.bot.manager.base.url property. |
Workspace
| Component name | Message type | Message text |
|---|---|---|
| LDAP authentication | Error | User and group base directories for the LDAP server are not set. Define ldap.group.base and ldap.user.base for searching users and groups. |
| SSO | Error | The 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. |
| SSO | Error | The Service Provider ID property is not defined for Single Sign-On. Define the secure ws.sso.SSO.sp.metadata property. |
| SSO | Error | The 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. |
| SSO | Error | The 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. |
| SSO | Error | Error parsing the Identity Provider metadata file. |
| LDAP | Error | User 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. |
| LDAP | Error | Error 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. |
| LDAP | Error | User 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. |
| LDAP | Info | Credentials for the LDAP server system user are not set. Define the ws.secure.ldap.bind.password or ws.secure.ldap.bind.dn secure properties. |
| LDAP | Warn | One or more groups are not found on the LDAP server. Set up the ldap.group.base or ldap.group.filter properties correctly. |
| LDAP | Error | User 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. |
| LDAP | Error | User 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. |
| LDAP | Error | The user filter for the LDAP server is not set. Define the ldap.user.filter filter for searching users. |
| Database connection | Error | Database validation failed. Error: %s. Use 'liquibase validate' to see details. |
| Database connection | Error | Database validation failed. %s change sets have not been applied. Use 'liquibase status' to see details. |
| Database connection | Error | A database connection error occurred. Check the database endpoint, security settings, and connections limits. |
| Database connection | Error | A database access error occurred. Check that the ws.datasource.username or ws.datasource.password secure database credentials are correct. |
| Database connection | Error | A database access error occurred. The connection to the database does not exist. |
OCR
| Component name | Issue type | Message text |
|---|---|---|
| Microsoft SQL Server | Error | MS SQL check failed: + Possible causes:
Remedy: Ensure that:
|
| S3 | Error | Failed to load a file: + Possible causes:
Remedy: Ensure that S3 is running. |
| S3 | Error | Save operation failed during a storage test: + Possible causes:
Remedy: Ensure that:
|
| RabbitMQ | Error | Receive operation failed during an MQ test: Possible causes:
Remedy: Ensure that:
|
| RabbitMQ | Error | Invalid message payload was received. expected='" + expectedPayload + "' actual='" + actual + "'" Possible causes:
Remedy: Ensure that:
|
| RabbitMQ | Error | No message was received during MQ testing. expected='" + expectedPayload + "'. Workers may not be handling messages in MQ.". Possible causes:
Remedy: Ensure that:
|
| RabbitMQ | Error | Failed to send a message to RabbitMQ. Ensure that RabbitMQ is running. |
| OCR Worker | Error | No 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 Worker | Error | The number of Workers without errors is below the error threshold: Possible causes:
|
| OCR Worker | Warning | The number of operational OCR Workers is below the warning threshold: " + okCount |
| OCR Worker | Info | The number of operational OCR Workers: " + okCount |
| OCR Worker | Error | OCR Worker reports exceeded the expiration threshold ( |
| License | Info | Remaining number of pages to be processed under the current OCR license: + volumeRemaining |
| License | Warning | Remaining pages to be processed under the current license are below the warning threshold: + volumeRemaining. Contact the WorkFusion support team to obtain a new license. |
| License | Warning | Your OCR license is about to expire. Less than 10% of pages remain. You will need to purchase a new license to continue using OCR. |
| License | Error | Your OCR license has expired. You have to purchase a new license to continue using OCR. |
| License | Error | The OCR license is not found. Ensure that the OCR license is activated. |
| License | Error | Failed to load the OCR license. Check the access permissions. |