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
/v1/health-checkREST method (no authentication needed). The result is included in the response and theconfiguration.logfile. For more informationn, see the Swagger UI.
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). |
| SQC | Validate URL and connectivity (ping). Get the project information. |
| Tableau | Validate URL, username, password, site, workbook, and a new workbook. Try signing in. |
| 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": "Tableau",
"status": "ERROR",
"projectInfo": null,
"errorCount": 1,
"warningCount": 1,
"errors": [
"Host velcom2-bi1.workfusion.com:443 is NOT reachable"
],
"warnings": [
"Tableau:Automation is not configured. You should specify following parameter(s): tableau.automation.host,tableau.automation.username,tableau.automation.password"
],
"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. |
| Tableau | Warning | Tableau secure properties for Dashboard and Automation do not match. Dashboard reports might not be displayed. Check that secure properties match as follows:
|
| Tableau | Warning | Tableau: Automation is not configured. Specify the following parameters: tableau.automation.host, tableau.automation.username, tableau.automation.password |
| 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. |